用模拟退火算法或者遗传算法解决TSP问题程序_第1页
用模拟退火算法或者遗传算法解决TSP问题程序_第2页
用模拟退火算法或者遗传算法解决TSP问题程序_第3页
用模拟退火算法或者遗传算法解决TSP问题程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用模拟退火算法、遗传算法(或蚁群算法)求解10城市的TSP(旅行商)问题,计算旅行封闭的最短旅行距离。解:用遗传算法解决TSP问题,首先需要确定城市个数及城市间的距离,随机产生城市序列作为一个个体,确定目标函数,通过遗传算法的复制、交叉、变异求出最优解。目标函数fx=i=0ndi,i+1+d(n,0)适应度函数Fx= -fx+Cmax fxCmax0 f(x)Cmax遗传算法的步骤为复制+交叉+变异=新一代遗传算法主程序:DG=0.9; MAXDD=100; ZQDX=150;Pc=0.7; Pm=0.01; ZQ=0 118 1272 2567 1653 2097 1425 1177 394

2、7 1574 118 0 1253 2511 1633 2077 1369 1157 3961 1518 1272 1253 0 1462 380 1490 821 856 3660 385 2567 2511 1462 0 922 2335 1562 2165 3995 933 1653 1633 380 922 0 1700 1041 1135 3870 456 2097 2077 1490 2335 1700 0 2311 920 2170 1920 1425 1369 821 1562 1041 2311 0 1420 4290 626 1177 1157 856 2165 1135

3、920 1420 0 2870 1290 3947 3961 3660 3995 3870 2170 4290 2870 0 4090 1574 1518 385 993 456 1920 626 1290 4090 0; D=size(ZQ,1);EE=CSHZQ(ZQDX,D);disp(初始种群中的一个随机值:)SCXL(EE(1,:);RTH=XLCD(ZQ,EE(1,:);disp(总距离:);disp(num2str(RTH);Q=0;OV=XLCD(ZQ,EE); POV=min(OV);while (QMAXDD) OV=XLCD(ZQ,EE); POV=min(OV); SY

4、D=SHYD(OV); XZ=XUANZE(EE,SYD,DG); XZ=JIAOC(XZ,Pc); XZ=BY(XZ,Pm); XZ=NZ(XZ,ZQ); EE=CCZ(EE,XZ,OV); Q=Q+1;endOV=XLCD(ZQ,EE); minOV,minInd=min(OV);disp(最优解:)p=SCXL(EE(minInd(1),:);disp(总距离:);disp(num2str(OV(minInd(1);初始化全局变量:function EE=CSHZQ(ZQDX,D)EE=zeros(ZQDX,D);for (i=1: ZQDX)EE(i,:)=randperm(D); e

5、nd适应度函数:function SYD=SHYD(len)SYD=1./len;选择程序:function XZ=XUANZE(EE,SYD,DG)ZQDX =size(EE,1);NSel=max(floor(ZQDX *DG+.5),2);ChrIx=sus(SYD,NSel);XZ=EE(ChrIx,:);function NewChrIx=sus(SYD,Nsel)Nind,ans=size(SYD);cumfit=cumsum(SYD);trials=cumfit(Nind)/Nsel*(rand+(0:Nsel-1);Mf=cumfit(:,ones(1,Nsel);Mt=tri

6、als(:,ones(1,Nind);NewChrIx,ans=find(MtMf &zeros(1,Nsel);Mf(1:Nind-1,:)=rand) XZ(i,:),XZ(i+1,:)=ICS(XZ(i,:),XZ(i+1,:); endendICS函数function a,b=ICS(a,b)L=length(a);r1=randsrc(1,1,1:L);r2=randsrc(1,1,1:L);if r1=r2 a0=a;b0=b; s=min(r1,r2); e=max(r1,r2); for i=s:e a1=a;b1=b; a(i)=b0(i); b(i)=a0(i); x=fi

7、nd(a=a(i); y=find(b=b(i); i1=x(x=i); i2=y(y=i); if isempty(i1) a(i1)=a1(i); end if isempty(i2) b(i2)=b1(i); end endend变异:function XZ=BY(XZ,Pm)NSel,L=size(XZ);for (i=1:NSel) if (Pm=rand) R=randperm(L); XZ(i,R(1:2)=XZ(i,R(2:-1:1); endend进化逆转:function XZ=NZ(XZ,ZQ)row,col=size(XZ);OV=XLCD(ZQ,XZ);XZ1=XZ;for i=1:row r1=randsrc(1,1,1:col); r2=randsrc(1,1,1:col); mininverse=min(r1,r2); maxinverse=max(r1,r2);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论