模拟退火算法及禁忌搜索算法的matlab源程序(共6页).doc





《模拟退火算法及禁忌搜索算法的matlab源程序(共6页).doc》由会员分享,可在线阅读,更多相关《模拟退火算法及禁忌搜索算法的matlab源程序(共6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上% 模拟退火算法源程序% 此题以中国31省会城市的最短旅行路径为例:% clear;clc;function MinD,BestPath=MainAneal(pn)% CityPosition存储的为每个城市的二维坐标x和y;CityPosition=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;
2、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;figure(1);plot(CityPosition(:,1),CityPosition(:,2),o)m=size(CityPosition,1);%城市的数目%D = sqrt(CityPosition(:,ones(1,m) - CityPosition(:,ones(1,m).2
3、+ . (CityPosition(:,2*ones(1,m) - CityPosition(:,2*ones(1,m).2);path=zeros(pn,m);for i=1:pn path(i,:)=randperm(m); enditer_max=100;%im_max=5;% Len1=zeros(1,pn);Len2=zeros(1,pn);path2=zeros(pn,m);t=zeros(1,pn);T=1e5; tau=1e-5;N=1;while T=tau iter_num=1; m_num=1; while m_numm_max & iter_numiter_max fo
4、r i=1:pn Len1(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 R=rand(1,pn); if find(Len2-Len1R)=0) path(find(Len2-Len1R)=0),:)=path2(find(Len2-Len1R)=0),:); %
5、#ok Len1(find(Len2-Len1R)=0)=Len2(find(Len2-Len1R)=0); TempMinD,TempIndex=min(Len1); TracePath(N,:)=path(TempIndex,:); %#ok Distance(N)=TempMinD; %#ok N=N+1; else m_num=m_num+1; endend iter_num=iter_num+1; T=T*0.9;endMinD,Index=min(Distance);BestPath=TracePath(Index,:);%disp(MinD)%画出路线图figure(2);plo
6、t(CityPosition(BestPath(1:end-1),1),CityPosition(BestPath(1:end-1),2),r*-);function p2=ChangePath2(p1,CityNum)while(1) R=unidrnd(CityNum,1,2); if abs(R(1)-R(2) 0 break; endendI=R(1);J=R(2);if IJ p2(1:I)=p1(1:I); p2(I+1:J)=p1(J:-1:I+1); p2(J+1:CityNum)=p1(J+1:CityNum);else p2(1:J-1)=p1(1:J-1); p2(J:I
7、+1)=p1(I+1:-1:J); p2(I:CityNum)=p1(I:CityNum);end% 禁忌搜索算法解决TSP问题 %此题以中国31省会城市的最短旅行路径为例:%禁忌搜索是对局部领域搜索的一种扩展,是一种全局逐步寻优算法,搜索过程可以接受劣解,有较强的爬山能力.领域结构对收敛性有很大影响。function BestShortcut,theMinDistance=TabuSearchclear;clc;Clist=1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;3238 1229;. 4196 1044;431
8、2 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;CityNum=size(Clist,1);%TSP问题的规模,即城市数目dislist=zeros(CityNum); for i=1:C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 退火 算法 禁忌 搜索 matlab 源程序

限制150内