91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基本的matlab蟻群算法求解最短路徑問題,里面另附有初始數據

資源截圖

代碼片段和文件信息

function?[R_bestL_bestL_aveShortest_RouteShortest_Length]=ACATSP(DNC_maxmAlphaBetaRhoQ)
%%=========================================================================
%%?ACATSP.m
%%?Ant?Colony?Algorithm?for?Traveling?Salesman?Problem
%%?ChengAihuaPLA?Information?Engineering?UniversityZhengZhouChina
%%?Email:aihuacheng@gmail.com
%%?All?rights?reserved
%%-------------------------------------------------------------------------
%%?主要符號說明
%%?C?n個城市的坐標,n×2的矩陣
%%?NC_max?最大迭代次數
%%?m?螞蟻個數
%%?Alpha?表征信息素重要程度的參數
%%?Beta?表征啟發式因子重要程度的參數
%%?Rho?信息素蒸發系數
%%?Q?信息素增加強度系數
%%?R_best?各代最佳路線
%%?L_best?各代最佳路線的長度
%%=========================================================================

n=length(D);%n?為市個數
Eta=1./D;%Eta為啟發因子,這里設為距離的倒數
Tau=ones(nn);%Tau為信息素矩陣
Tabu=zeros(mn);%存儲并記錄路徑的生成
NC=1;%迭代計數器
R_best=zeros(NC_maxn);%各代最佳路線
L_best=inf.*ones(NC_max1);%各代最佳路線的長度
L_ave=zeros(NC_max1);%各代路線的平均長度

while?NC<=NC_max%停止條件之一:達到最大迭代次數
%%第二步:將m只螞蟻放到n個城市上
Randpos=[];
for?i=1:(ceil(m/n))
Randpos=[Randposrandperm(n)];
end
Tabu(:1)=(Randpos(11:m))‘;

%%第三步:m只螞蟻按概率函數選擇下一座城市,完成各自的周游
for?j=2:n
for?i=1:m
visited=Tabu(i1:(j-1));%已訪問的城市
J=zeros(1(n-j+1));%待訪問的城市
P=J;%待訪問城市的選擇概率分布
Jc=1;
for?k=1:n
if?length(find(visited==k))==0
J(Jc)=k;
Jc=Jc+1;
end
end
%下面計算待選城市的概率分布
for?k=1:length(J)
P(k)=(Tau(visited(end)J(k))^Alpha)*(Eta(visited(end)J(k))^Beta);
end
P=P/(sum(P));
%按概率原則選取下一個城市
Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));
Tabu(ij)=to_visit;
end
end
if?NC>=2
Tabu(1:)=R_best(NC-1:);
end

%%第四步:記錄本次迭代最佳路線
L=zeros(m1);
for?i=1:m
R=Tabu(i:);
for?j=1:(n-1)
L(i)=L(i)+D(R(j)R(j+1));
end
L(i)=L(i)+D(R(1)R(n));
end
L_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(nn);
for?i=1:m
for?j=1:(n-1)
Delta_Tau(Tabu(ij)Tabu(ij+1))=Delta_Tau(Tabu(ij)Tabu(ij+1))+Q/L(i);
end
Delta_Tau(Tabu(in)Tabu(i1))=Delta_Tau(Tabu(in)Tabu(i1))+Q/L(i);
end
Tau=(1-Rho).*Tau+Delta_Tau;

%%第六步:禁忌表清零
Tabu=zeros(mn);
end

%%第七步:輸出結果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1):)
Shortest_Length=L_best(Pos(1))
subplot(121)
subplot(122)
plot(L_best)
hold?on
plot(L_ave)



?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????????45??2007-09-29?00:44??蟻群算法\初始數據.txt

?????文件???????2585??2007-09-29?00:37??蟻群算法\蟻群算法(D為最短路矩陣).m

?????文件???????2151??2007-09-28?21:38??蟻群算法\蟻群過程文件\QACS蟻群算法.m

?????文件????????516??2007-09-28?21:23??蟻群算法\蟻群過程文件\蟻群算法.m

?????文件????????512??2007-09-28?21:36??蟻群算法\蟻群過程文件\蟻群算法.txt

?????文件???????3377??2007-09-28?23:09??蟻群算法\蟻群過程文件\蟻群算法1.m

?????文件???????2811??2000-01-01?03:14??蟻群算法\蟻群過程文件\蟻群算法(適合).asv

?????文件???????2765??2007-09-28?23:10??蟻群算法\蟻群過程文件\蟻群算法(適合).m

?????目錄??????????0??2008-10-21?10:52??蟻群算法\蟻群過程文件

?????目錄??????????0??2008-10-21?10:52??蟻群算法

?????文件????????183??2008-09-03?11:09??Matlab中文論壇--助努力的人完成畢業設計.url

?????文件???????3434??2008-05-15?08:26??使用幫助:新手必看.htm

-----------?---------??----------?-----??----

????????????????18379????????????????????12


評論

共有 條評論