基本蟻群算法matlab

基本蟻群算法matlab

ID:39061534

大?。?1.32 KB

頁數(shù):5頁

時間:2019-06-24

基本蟻群算法matlab_第1頁
基本蟻群算法matlab_第2頁
基本蟻群算法matlab_第3頁
基本蟻群算法matlab_第4頁
基本蟻群算法matlab_第5頁
資源描述:

《基本蟻群算法matlab》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、基本蟻群算法matlab實現(xiàn)function[R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=AC(C,NC_Max,m,Alpha,Beta,Rho,Q)%%%%%%%%%%%%%%%%%%%主要符號說明%Cn個城市的坐標,n*2矩陣%NC_Max最大循環(huán)次數(shù)%%m螞蟻個數(shù)%Alpha信息素重要程度的參數(shù)%Beta能見度重要程度的參數(shù)%Rho信息素蒸發(fā)系數(shù)1-Rho為協(xié)同因子%Q信息素增加強度系數(shù)%R_best每次循環(huán)的最佳路線NC_Max*n%L_best每次循環(huán)的最短路徑NC_Max*1%

2、%%%%%=========================================%%%i,j表示邊k表示螞蟻%%%%%%第一步%變量初始化%%%%%%%%%%%%%%%%%%%n=size(C,1);%n表示問題的規(guī)模(城市的個數(shù))D=zeros(n,n);%D表示完全圖的距離的鄰接矩陣fori=1:nforj=1:nifi~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;elseD(i,j)=eps;%距離為很小的0,因為距離不能等于0endD(j,i)=D(i,j);%對稱矩陣,問

3、題是已經(jīng)知道是對稱了,這句還有必要嗎endendEta=1./D;%Eta為距離的倒數(shù),能見度%更改Eta是否可行,有待測試%Eta=100./(D+50-rem(fix(D),50));Trace=ones(n,n);%Trace為信息素矩陣,初始為1NC=1;R_best=zeros(NC_Max,n);%R_best為每次循環(huán)的最佳路線,初始化為0L_best=inf.*ones(NC_Max,1);%L_best為每次循環(huán)的最短路徑,初始化為無窮大Randpos=[];%Randpos存儲螞蟻的位置m*1fori=1:(ceil(m/n))%

4、ceil是向上取整Randpos=[Randpos,randperm(n)];endTabu=zeros(m,n);%Tabu為存儲每個螞蟻路徑,初始為0,同時也是清空禁忌表Tabu(:,1)=(Randpos(1,1:m))';%初始化禁忌表%%第二步將m只螞蟻放在n個城市上,初始化禁忌表%%%%%%%while(NC<=NC_Max)%第三步m只螞蟻按概率函數(shù)選擇下一座城市,完成各自的周游,進行一次循環(huán)%%%%%%%%%%%循環(huán)結(jié)構(gòu)為,每只螞蟻移動一條邊,共移動n-1條邊,最后一條邊為回來的一條邊f(xié)ori=2:n%一次循環(huán),m只螞蟻需進行n-1次

5、迭代fork=1:m%每只螞蟻都需選擇visited=Tabu(k,1:(i-1));%visited存儲第k只螞蟻已經(jīng)訪問過的城市,避免重復訪問,visited為行向量J=zeros(1,(n-i+1));%J為待訪問的城市,J為行向量P=J;%待訪問城市的選擇概率分布,設概率函數(shù)Ps=1;%將待訪問的城市存儲在J(s)forj=1:niflength(find(visited==j))==0%開始時置0J(s)=j;s=s+1;endend%將待訪問的城市存儲在J(s)%下面計算待選城市的概率分布forj=1:length(J)P(j)=(Tra

6、ce(visited(end),J(j))^Alpha)*(Eta(visited(end),J(j))^Beta);endP=P/(sum(P));%sum(P)是標量,作為除數(shù),矩陣除和數(shù)組除結(jié)果一樣%%%按概率原則選取下一個城市Pcum=cumsum(P);%cumsum,元素累加求和,累加和Select=find(Pcum>=rand);%%%這就是所謂的根據(jù)概率隨機選擇to_visit=J(Select(1));Tabu(k,i)=to_visit;%將選擇的城市to_visit插入禁忌表endend%%對Tabu進行賦值運算后,下一次保留

7、上一次的最好路線,故令Tabu(1,:)為最好路線%%%%%%%%%%%%%%%%ifNC>=2%%%%%%%%%%%%%%%%Tabu(1,:)=R_best(NC-1,:);%%%%%%%%%%%%%%%%end%%%%%%%%%第四步計算最短路徑和信息素的改變量%%%%%%%%%%%%%%%%%%L=zeros(m,1);%初始距離為0,m*1矩陣%計算每次螞蟻的距離fork=1:mR=Tabu(k,:);fori=1:(n-1)L(k)=L(k)+D(R(i),R(i+1));endL(k)=L(k)+D(R(n),R(1));endL_be

8、st(NC)=min(L);%第NC次循環(huán)的最短路徑%最佳路線pos=find(L==L_best(NC))

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。