失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】

【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】

时间:2021-11-18 01:51:21

相关推荐

【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】

一、获取代码方式

获取代码方式1:

完整代码已上传我的资源:【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】

获取代码方式2:

通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:

订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、TSP简介

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

TSP的数学模型

二、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

四、部分源代码

%%%%%%%%%%%%%%%%%%%%%%%%%遗传算法解决TSP问题%%%%%%%%%%%%%%%%%%%%%%%clear all; %清除所有变量close all; %清图clc; %清屏C=[1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;...3238 1229;4196 1044;4312 790;4386 570;3007 1970;2562 1756;...2788 1491;2381 1676;1332 695;3715 1678;3918 2179;4061 2370;...3780 2212;3676 2578;4029 2838;4263 2931;3429 1908;3507 2376;...3394 2643;3439 3201;2935 3240;3140 3550;2545 2357;2778 2826;...2370 2975]; %31个省会城市坐标N=size(C,1);%TSP问题的规模,即城市数目D=zeros(N); %任意两个城市距离间隔矩阵%%%%%%%%%%%%%%%%%%%%%求任意两个城市距离间隔矩阵%%%%%%%%%%%%%%%%%%%%%for i=1:Nfor j=1:ND(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;endendNP=200;%种群规模G=1000;%最大遗传代数f=zeros(NP,N); %用于存储种群F=[]; %种群更新中间存储for i=1:NPf(i,:)=randperm(N);%随机生成初始种群endR=f(1,:); %存储最优种群len=zeros(NP,1); %存储路径长度fitness=zeros(NP,1); %存储归一化适应值gen=0;%%%%%%%%%%%%%%%%%%%%%%%%%遗传算法循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%while gen<G%%%%%%%%%%%%%%%%%%%%%计算路径长度%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for i=1:NPlen(i,1)=D(f(i,N),f(i,1));for j=1:(N-1)len(i,1)=len(i,1)+D(f(i,j),f(i,j+1));endendmaxlen=max(len); %最长路径minlen=min(len); %最短路径%%%%%%%%%%%%%%%%%%%%%%%%%更新最短路径%%%%%%%%%%%%%%%%%%%%%%%%%%rr=find(len==minlen);R=f(rr(1,1),:);%%%%%%%%%%%%%%%%%%%%%计算归一化适应值%%%%%%%%%%%%%%%%%%%%%%%%%%for i=1:length(len)fitness(i,1)=(1-((len(i,1)-minlen)/(maxlen-minlen+0.001)));end%%%%%%%%%%%%%%%%%%%%%%%%%%选择操作%%%%%%%%%%%%%%%%%%%%%%%%%%%%%nn=0;for i=1:NPif fitness(i,1)>=randnn=nn+1;F(nn,:)=f(i,:);endend[aa,bb]=size(F);while aa<NPnnper=randperm(nn);A=F(nnper(1),:);B=F(nnper(2),:);%%%%%%%%%%%%%%%%%%%%%%%交叉操作%%%%%%%%%%%%%%%%%%%%%%%%%%%%W=ceil(N/10); %交叉点个数p=unidrnd(N-W+1);%随机选择交叉范围,从p到p+Wfor i=1:Wx=find(A==B(p+i-1));y=find(B==A(p+i-1));temp=A(p+i-1);A(p+i-1)=B(p+i-1); B(p+i-1)=temp;temp=A(x); A(x)=B(y); B(y)=temp;end%%%%%%%%%%%%%%%%%%%%%%%%%%变异操作%%%%%%%%%%%%%%%%%%%%%%%%%p1=floor(1+N*rand());p2=floor(1+N*rand());while p1==p2p1=floor(1+N*rand());p2=floor(1+N*rand());endtmp=A(p1); A(p1)=A(p2); A(p2)=tmp;tmp=B(p1); B(p1)=B(p2); B(p2)=tmp;F=[F;A;B];[aa,bb]=size(F);end

五、运行结果

六、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

如果觉得《【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。