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

資源簡介

用matlab編寫的運用蟻群算法解決01背包問題,經測試,可用

資源截圖

代碼片段和文件信息

function?[R_bestL_bestL_aveShortest_RouteShortest_Length]=ACATSP(CNC_maxmAlphaBetaRhoQv)
%%=========================================================================
%%?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?=?size(C1);%n表示問題的規模(物體個數)

Eta?=?zeros(n1);%Eta為啟發因子
Eta?=?C(:1)./C(:2);

Tau?=?ones(n1);%Tau為信息素矩陣
Tabu?=?zeros(mn);%存儲螞蟻遍歷過的物體
flag?=?zeros(mn);%存儲裝載的物體
count?=?zeros(m1);%螞蟻裝載的物體個數
NC=1;%迭代計數器
R_best=zeros(NC_maxn);%各代最佳方案
L_best=inf.*ones(NC_max1);%各代最大價值
Wsum?=?zeros(m1);%存儲已裝載的重量

while?NC?<=?NC_max%停止條件之一:達到最大迭代次數
????
????%%第二步:將m只螞蟻隨機放到n個物體上
????Randpos=[];
????for?i?=?1:(ceil(m/n))
????????Randpos?=?[Randposrandperm(n)];
????end
????Tabu(:1)?=?(Randpos(11:m))‘;
????count?=?count+1;
????flag(:1)?=?Tabu(:1);
????
????Wsum?=?Wsum?+?C(flag(:1)2);????
????
????%%第三步: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(J(k))^Alpha)*(Eta(J(k))^Beta);
????????????end
????????????P?=?P/(sum(P));
????????????%按概率原則選取下一個物體
????????????Pcum?=?cumsum(P);
????????????Select?=?find(Pcum>=rand);
????????????to_visit?=?J(Select(1));
????????????Tabu(ij)?=?to_visit;
????????????
????????????%判斷此物體能否放入包中
????????????Wsum(i)?=?Wsum(i)?+?C(to_visit2);
????????????if?Wsum(i)?<=?v
????????????????count(i)?=?count(i)?+?1;
????????????????flag(icount(i))?=?Tabu(ij);
????????????else
????????????????Wsum(i)?=?Wsum(i)?-?C(to_visit2);
????????????end?????
????????end
????end

????%%第四步:記錄本次迭代最佳方案
????L?=?zeros(m1);
????for?i?=?1:m
????????R?=?flag(i:);
????????for?j?=?1:count(i)????????????
????????????L(i)?=?L(i)?+?C(R(j)1);
????????end
????end
????L_best(NC)?=?max(L);
????
????maxValue?=?max(L)
????
????pos?=?find(L==L_best(NC));
????R_best(NC:)?=?flag(pos(1):);
????NC=NC+1????
????
????%%第五步:更新信息素
????Delta_Tau?=?zeros(n1);
????for?i?=?1:m
????????for?j?=?1:count(i)
????????????Delta_Tau(flag(ij))?=?Delta_Tau(flag(ij))?+?C(flag(ij)1)*Q/L(i);
????????end
????end
????Tau?=?(1-Rho).*Tau?+?Delta_Tau;
????
????%%第六步:禁忌表清零
????Tabu=zeros(mn);

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

?????文件???????3609??2011-08-03?11:31??蟻群算法解決01背包問題\ACATSP.m

?????文件????????215??2011-08-02?18:55??蟻群算法解決01背包問題\test01_10.m

?????文件????????904??2011-08-03?11:15??蟻群算法解決01背包問題\test01_100.m

?????文件????????328??2011-08-02?18:53??蟻群算法解決01背包問題\test01_20.m

?????文件???????1697??2011-08-03?11:25??蟻群算法解決01背包問題\test01_200.m

?????文件???????2482??2011-08-03?11:33??蟻群算法解決01背包問題\test01_300.m

?????目錄??????????0??2011-08-19?18:42??蟻群算法解決01背包問題

?????文件????????154??2011-08-19?18:44??蟻群算法解決01背包問題\readme.txt

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

?????????????????9389????????????????????8


評論

共有 條評論