tsp 选边 matlab,【转载】蚁群算法TSP(旅行商问题)通用matlab程序
%按概率原則選取下一個城市Pcum=cumsum(P);Select=find(Pcum>=rand);to_visit=J(Select(1));Tabu(i,j)=to_visit;endendif?NC>=2Tabu(1,:)=R_best(NC-1,:);end%%第四步:記錄本次迭代最佳路線L=zeros(m,1);for?i=1:mR=Tabu(i,:);for?j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1));endL(i)=L(i)+D(R(1),R(n));endL_best(NC)=min(L);pos=find(L==L_best(NC));R_best(NC,:)=Tabu(pos(1),:);L_ave(NC)=mean(L);NC=NC+1%%第五步:更新信息素Delta_Tau=zeros(n,n);for?i=1:mfor?j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);endDelta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);endTau=(1-Rho).*Tau+Delta_Tau;%%第六步:禁忌表清零Tabu=zeros(m,n);end%%第七步:輸出結果Pos=find(L_best==min(L_best));Shortest_Route=R_best(Pos(1),:)Shortest_Length=L_best(Pos(1))subplot(1,2,1)DrawRoute(C,Shortest_Route)subplot(1,2,2)plot(L_best)hold?onplot(L_ave)function?DrawRoute(C,R)%%=========================================================================%%?DrawRoute.m%%?畫路線圖的子函數%%-------------------------------------------------------------------------%%?C?Coordinate?節點坐標,由一個N×2的矩陣存儲%%?R?Route?路線%%===================================================================N=length(R);scatter(C(:,1),C(:,2));hold?onplot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)])hold?onfor?ii=2:Nplot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)])hold?onend設置初始參數如下:m=31;Alpha=1;Beta=5;Rho=0.1;NC_max=200;Q=100;31城市坐標為:1304?23123639?13154177?22443712?13993488?15353326?15563238?12294196?10044312?7904386?5703007?19702562?17562788?14912381?16761332?6953715?16783918?21794061?23703780?22123676?25784029?28384263?29313429?19083507?23673394?26433439?32012935?32403140?35502545?23572778?28262370?2975運行后得到15602的巡游路徑,路線圖和收斂曲線如下
總結
以上是生活随笔為你收集整理的tsp 选边 matlab,【转载】蚁群算法TSP(旅行商问题)通用matlab程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: magento邮件使用php,Magen
- 下一篇: matlab人脸追踪,求大神帮助我这个菜