资源描述:
《模拟退火算法matlab源程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、function[MinD,BestPath]=MainAneal(CityPosition,pn)function[MinD,BestPath]=MainAneal2(CityPosition,pn)%此题以中国31省会城市的最短旅行路径为例,给出TSP问题的模拟退火程序%CityPosition_31=[13042312;36391315;41772244;37121399;34881535;33261556;...%32381229;41961044;4312??790;4386??570;30071
2、970;25621756;...%27881491;23811676;1332??695;37151678;39182179;40612370;...%37802212;36762578;40292838;42632931;34291908;35072376;...%33942643;34393201;29353240;31403550;25452357;27782826;23702975];%T0=clockglobalpathp2D;[m,n]=size(CityPosition);%生成初始解空间,这
3、样可以比逐步分配空间运行快一些TracePath=zeros(1e3,m);Distance=inf*zeros(1,1e3);D=sqrt((CityPosition(:,ones(1,m))-CityPosition(:,ones(1,m))').^2+(CityPosition(:,2*ones(1,m))-CityPosition(:,2*ones(1,m))').^2);%将城市的坐标矩阵转换为邻接矩阵(城市间距离矩阵)fori=1:pnpath(i,:)=randperm(m);%构造一个初始可
4、行解endt=zeros(1,pn);p2=zeros(1,m);iter_max=100;%input('请输入固定温度下最大迭代次数iter_max=');m_max=5;%input('请输入固定温度下目标函数值允许的最大连续未改进次数m_nax=');%如果考虑到降温初期新解被吸收概率较大,容易陷入局部最优%而随着降温的进行新解被吸收的概率逐渐减少,又难以跳出局限%人为的使初期iter_max,m_max较小,然后使之随温度降低而逐步增大,可能%会收到到比较好的效果T=1e5;N=1;tau=1e-
5、5;%input('请输入最低温度tau=');%nn=ceil(log10(tau/T)/log10(0.9));while??T>=tau%&m_num6、enbluth,Teller,Teller)过程:%用任意启发式算法在path的领域N(path)中找出新的更优解forlocatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennight
7、camei=1:pnLen1(i)=sum([D(path(i,1:m-1)+m*(path(i,2:m)-1))D(path(i,m)+m*(path(i,1)-1))]);%计算一次行遍所有城市的总路程[path2(i,:)]=ChangePath2(path(i,:),m);%更新路线Len2(i)=sum([D(path2(i,1:m-1)+m*(path2(i,2:m)-1))D(path2(i,m)+m*(path2(i,1)-1))]);end%Len1%Len2%ifLen2-Len1<0
8、
9、exp((Len1-Len2)/(T))>randR=rand(1,pn);%Len2-Len110、exp((Len1-Len2)/(T))>Riffind((Len2-Len111、exp((Len1-Len2)/(T))>R)~=0)path(find((Len2-Len112、exp((Len1-Len2)/(T))>R)~=0),:)=path2(find((Len2-Len113、exp((Len1-