[数学建模(三)]遗传算法与旅行商问题

clc,clear
sj=load(‘data3.txt‘) %加载敌方100 个目标的数据
x=sj(:,1);
y=sj(:,2);
d1=[70,40];
sj0=[d1;sj;d1];   %增加一个点[70,40]作为首尾
sj=sj0;
d=zeros(102); %距离矩阵d

% 通过向量化的方法计算距离矩阵
amount = size(sj,1);
dist_matrix = zeros(amount, amount);
coor_x_tmp1 = sj(:,1) * ones(1,amount);
coor_x_tmp2 = coor_x_tmp1‘;
coor_y_tmp1 = sj(:,2) * ones(1,amount);
coor_y_tmp2 = coor_y_tmp1‘;
dist_matrix = sqrt((coor_x_tmp1-coor_x_tmp2).^2 + (coor_y_tmp1-coor_y_tmp2).^2);  %存储各个城市之间距离的矩阵
d=dist_matrix;

%设置参数
L=102;
w=50;
dai=100;

%通过改良圈算法选取优良父代A
for k=1:w
  c=randperm(100);  %把1到100这些数随机打乱得到的一个数字序列
  c1=[1,c+1,102];   %头尾增加1,102
  flag=1;           %设置标志
  while flag>0
    flag=0;
    for m=1:L-3
       for n=m+2:L-1
         if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1))
           flag=1;
           c1(m+1:n)=c1(n:-1:m+1);
         end
       end
    end
  end
  J(k,c1)=1:102;    %产生了w个(50个)父代A
end

J=J/102;
J(:,1)=0;
J(:,102)=1;   %头尾分别为0,1,中间元素介于它们之间
rand(‘state‘,sum(clock));

%遗传算法实现过程
A=J;
for k=1:dai %产生0~1 间随机数列进行编码 dai=100
  B=A;
  c=randperm(w);

%1.交配产生子代B
  for i=1:2:w
    F=2+floor(100*rand(1));
    temp=B(c(i),F:102);       %两两配对
    B(c(i),F:102)=B(c(i+1),F:102);
    B(c(i+1),F:102)=temp;
  end

%2.变异产生子代C
  by=find(rand(1,w)<0.1);
  if length(by)==0
     by=floor(w*rand(1))+1;
  end
  C=A(by,:);
  L3=length(by);
  for j=1:L3
    bw=2+floor(100*rand(1,3));
    bw=sort(bw);
    C(j,:)=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]);
  end

  %3.在父代和子代中选择优良品种作为新的父代 G=[A;B;C];
  G=[A;B;C];
  TL=size(G,1);
  [dd,IX]=sort(G,2);temp(1:TL)=0;
  for j=1:TL
    for i=1:101
      temp(j)=temp(j)+d(IX(j,i),IX(j,i+1));
    end
  end
  [DZ,IZ]=sort(temp);   %从小到大
  A=G(IZ(1:w),:);       %选择优良的50个
end

path=IX(IZ(1),:)
long=DZ(1)
xx=sj0(path,1);yy=sj0(path,2);
plot(xx,yy,‘-o‘)
时间: 2024-10-06 23:34:01

[数学建模(三)]遗传算法与旅行商问题的相关文章

数学建模系列:遗传算法

简介 遗传算法(Genetic Algorithms,GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化进制,在人工系统中实现特定目标而优化.遗传算法的实质是通过群体搜索技术,更具适者生存的原则逐代进化,最终得到最优解或准最优解.它必须做以下操作:初始群体的产生.求每一个体的适应度.根据适者生存的原则选择优良个体.被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因生成下一代群体,按此方法使群体逐代进化,直到满足进化终止条件. 生物

在数学建模中学MATLAB

为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137730824/article/details/39206823 对于任意文件夹的同一格式的图片的批量读取:http://blog.csdn.net/haizimin/article/details/39646595 关于MATLAB在微分/偏微分方程以及其他高等数学问题中的应用. 关于MATLAB在

第一次参加数学建模的感想(附报告) 2015-04-15

上周三,上完思修课后我和小组成员争分夺秒地赶制了数模竞赛的程序.刚完事儿不久,笔记本就没电了.中午去实验室插上电,又把报告赶了出来,下午打印好后交了上去. Deadline真是第一生产力. 数学建模很早就有所耳闻,感觉是非常有意思的一种比赛.据我前期了解,A题一般是连续的题,B题是离散的题,C题则是和其他学科综合性比较强的题.我们这次参加的是一个校级的预赛,但A.B题还是不会.A题是探讨红绿灯中黄灯的时长安排问题,听说需要用微分方程云云,吓尿了.B题看上去像是旅行商问题,按理说是我们计算机专业的

数学建模算法概括

目录 数学模型按数学方法分类 数学建模十大算法 建模思想 预测与预报 评价与决策 分类与判别 关联与因果 优化与控制 数学模型按数学方法分类 几何模型(球面积分,曲面积分) 分形理论(常用) 图论模型(优化类,规划类,决策类问题) 有一类线性规划类问题可用图论模型解决,最短路径 → 时间最短 or 路径最短 微分方程模型(预测人口增长,传热导热问题) 概率问题(彩票) 最优控制模型(药物疗效) 规划论模型(投资问题) 马氏链模型(概率模型) 前后不关联的概率模型 数学建模十大算法 蒙特卡罗算法

数学建模系列:模拟退火算法

引言 模拟退火算法基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性.模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优.模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI.生产调度.控制工程.机器学习.神经网络.信号处理等领域. 模拟退火算法是通过赋予搜

数学建模竞赛(国赛和美赛)经验分享

建模的经历 第一次参赛是在大一的暑假参加的国赛,当时和两个同学刚刚组队,我们也没有什么基础,结果可想而知:无奖.在经历了这一次国赛之后,大一时的两位队友也无心再参加,所以又重新找了两位队友.从此我们队伍成员便确认了下来.这两位分别是一名女生负责排版,一名男生负责建模:而我负责写程序.我们一起准备第二年的国赛,在这期间,我们学校决定自己组织一次建模比赛为国赛做铺垫.我们为了检验自己的学习成果,便参加了.凭借着很好的运气,我们拿了二等奖的好成绩.时间不久,便到了国赛.在国赛期间,我们每天熬夜熬到很晚

如何入门参加数学建模竞赛

1 网上资源 1.1 数学中国 可以去数学中国网站看看,在数学建模比赛的培训这一块做得很好的机构,如果自己有点银子,可以去参加他们的网上课程.另外他们有专门的数学建模群,群里面有很好关于数学建模的资料.而且这个机构自己也举办数学建模比赛,如果有时候可以在这里组队,直接参加比赛,累积一些经验,增长见识. 1.2 数学建模视频课程,现在网络上有一些比较好的关于数学建模比赛的视频资源,可以谷歌一下 1.3 网络上的一些关于数学建模的电子书,有时候你也不知道哪本书比较适合你,所以你可以先在网上找一些电子

数学建模需掌握的知识总纲

数学建模需要掌握许多知识,这里我列出总纲: 学建模中的算法 穷举法 神经网络 模拟退火 遗传算法 图论算法 蒙特卡洛算法 所需基础知识 高等数学 线性代数(矩阵加减乘除) 概率论与数理统计(概率论,参数估计,假设检验,回归分析) 评价 AHP模型(层次分析) 模糊评价 预测 分析场景 曲线拟合 模糊预测 神经网络 灰色理论 马尔科夫链 运筹 整数规划(分支界定法) 01规划 灵敏度分析 影子价格 概率统计 排队论 主成分分析法 回归分析法 曲线拟合 图论 动态规划 网络最大流 最小费用流 最短路

数学建模竞赛“爱你不容易,爱你不后悔”

2011年6月份高中毕业,就读本科,2013年暑假8月份,参加学校为期一个月的数学建模培训,然后9月份的第二个周末在东南大学参加为期三天的全国大学生数学建模竞赛,"意外"获得全国大学生数学建模竞赛二等奖:2015年6月份本科毕业,攻读硕士研究生,2016年暑假,因实习没有参加学校组织的数学建模培训,9月份的第三个周末在南京邮电大学参加为期4.5天的全国研究生数学建模竞赛,"如愿"获得全国研究生数学建模竞赛一等奖,随后在重庆大学参加"华为杯"第十三