用模拟退火算法或者遗传算法解决TSP问题程序
更新时间:2024-06-29 03:01:01 阅读量: 综合文库 文档下载
用模拟退火算法、遗传算法(或蚁群算法)求解10城市的TSP(旅行商)问题,计算旅行封闭的最短旅行距离。
解:用遗传算法解决TSP问题,首先需要确定城市个数及城市间的距离,随机产生城市序列作为一个个体,确定目标函数,通过遗传算法的复制、交叉、变异求出最优解。
目标函数f x = ????=0?? ??,??+1 +??(??,0)
??? ?? +???????? ?? ?? ???????适应度函数F x =
0 ??(??)≥????????
遗传算法的步骤为
复制+交叉+变异=新一代
遗传算法主程序:
DG=0.9; MAXDD=100; ZQDX=150; Pc=0.7; Pm=0.01;
ZQ=[0 118 1272 2567 1653 2097 1425 1177 3947 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 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 (Q Q=Q+1; end OV=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); end 适应度函数: 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=trials(:,ones(1,Nind))'; [NewChrIx,ans]=find(Mt function XZ=JIAOC(XZ,Pc) NSel=size(XZ,1); for (i=1:2:NSel-mod(NSel,2)) if (Pc>=rand) [XZ(i,:),XZ(i+1,:)]=ICS(XZ(i,:),XZ(i+1,:)); end end ICS函数 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=find(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 end end 变异: 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)); end end 进化逆转: 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]); XZ1(1,mininverse:maxinverse)=XZ1(i,maxinverse:-1:mininverse); end OV1=XLCD(ZQ,XZ1); index=OV1 XZ(index,:)=XZ(index,:); 得到新一代: function EE=CCZ(EE,XZ,OV) ZQDX =size(EE,1); NSel=size(XZ,1); [TobjV,index]=sort(OV); EE=[EE(index(1: ZQDX -NSel),:);XZ]; 计算线路长度: function len=XLCD(ZQ,EE) [row,col]=size(ZQ); ZQDX =size(EE,1); len=zeros(ZQDX,1); for (i=1: ZQDX) p=[EE(i,:) EE(i,1)]; i1=p(1:end-1); i2=p(2:end); len(i,1)=sum(ZQ ((i1-1)*col+i2)); end 输出线路长度: function p=SCXL(R) R=[R,R(1)]; N=length(R); p=num2str(R(1)); for (i=2:N) p=[p,'->',num2str(R(i))]; end disp(p)
- 2009中西部家居博览会总体策划
- 2009 Revit 1级工程师学生用
- 天津地铁建设工程试验检测机构管理办法(TJDT-ZY-AQ-29)
- 新四年级数学暑期班第七次教案
- 机械制造企业隐患排查治理检查表 - 图文
- 2008届全国百套高考数学模拟试题分类汇编-103概率与统计解答题 -
- 职场健身防病试题及答案
- Excel操作技巧大全II - --数据输入和编辑技巧
- 南开大学2018春季《行政管理学》离线作业考核答案
- 2015年医师定考简易程序试卷及答案
- 新《预算法》对行政事业单位预算管理的挑战解读
- 轴的课件
- 电动汽车充电桩设计 毕业论文
- 必修2、选修2-1、1-1期末模拟试题2
- 桌面远程运维管理系统实施-可行性研究报告120306
- 西气东输水土保持工程工作总结 - 图文
- 正宁县基本县情及经济社会发展情况简介
- SATWE参数设置(巨详细)
- 儒家法思想研究综述
- 生活家政服务电子商务平台建设运营整合方案书【审报完稿】
- 算法
- 退火
- 遗传
- 或者
- 模拟
- 解决
- 程序
- 问题
- TSP
- 2014-2019年中国莱卡布产业发展前景及供需格局预测报告
- 2018年高考浙江卷第9题(平面向量)-2018年高考数学经典题分析及针
- 2017年高考新课标卷理数试题解析(解析版) - 图文
- 机电一体化的发展趋势
- 七年级(下)课内语段阅读训练完
- Mplayer源码分析2
- 2015年行政执法人员法律知识考试复习题及答案
- 2015-2016学年鲁教版英语七年级上学期期中教学质量检测试题word
- 软件实训心得体会
- 中草药在肉牛养殖疾病防治中的应用
- 人力师201711一级理论和技能真题试卷和答案
- 华为时间管理培训资料
- 高中生物课时提升作业(一) - 图文
- 一位老业务的158条经验手记(doc+7)
- 氯丁(丁二烯路线)项目可行性研究报告(发改立项备案+2013年最
- 部编版小学二年级下册语文七单元第19课:《大象的耳朵》导学案(
- 西洞镇小城镇规划项目文本】
- 社区预防医学试题及答案
- 2014教科版科学四年级上册第一单元试卷
- 经皮椎体后凸成形术论文(48)