xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-05
  • 語言: Matlab
  • 標(biāo)簽:

資源簡介

matlab蟻群算法解決背包問題,c代碼步驟編寫,目標(biāo)函數(shù)為價(jià)值比

資源截圖

代碼片段和文件信息

%蟻群算法求解背包問題(相當(dāng)于50只螞蟻每只背了一個(gè)背包)
clear?all;%清除所有變量
close?all;%清圖
clc;%清屏
m=50;%螞蟻個(gè)數(shù)
Alpha=1;%信息素重要程度參數(shù)
Beta=5;%啟發(fā)式因子重要程度參數(shù)
Rho=0.1;%信息素蒸發(fā)系數(shù)
G=200;%最大迭代次數(shù)
Q=1;%信息素增加強(qiáng)度系數(shù)(螞蟻循環(huán)一周或一個(gè)過程在經(jīng)過的路徑上所釋放的信息量總量)
c=[98?92?95?70?72?70?83?80?65?25?50?55?40?48?50?32?22?60?30?32?40?38?35?32?25?28?30?22?50?30?45?30?60?50?20?65?20?25?30?10?56?50?30?20?15?10?8?5?3?1?];%初始化物品質(zhì)量
value=[300?318?298?192?180?180?265?242?160?138?155?130?125?122?120?118?115?110?105?101?100?100?98?96?95?90?88?82?80?77?75?73?72?70?69?66?65?63?60?58?20?25?15?10?20?10?7?5?2?2];%初始化物品價(jià)值
m1=1000;%總重量約束值
C=[value;c]‘;%50x2
%第一步:變量初始化
n=size(C1);%物品數(shù)量50
Eta=C(:1)./C(:2);%Eta為啟發(fā)因子,價(jià)值密度50x1
Tau=ones(n1);%Tau為信息素矩陣初始時(shí)刻各物品上的信息量相等即為const50x1
Tabu=zeros(mn);%存儲(chǔ)螞蟻遍歷過的物品50x50
flag=zeros(mn);%標(biāo)識(shí)表存儲(chǔ)裝載的物品50x50
count=zeros(m1);%螞蟻裝載的物品個(gè)數(shù)50x1
NC=1;%迭代計(jì)數(shù)器
R_best=zeros(Gn);%各代最佳裝載方案200x50
L_best=inf.*ones(G1);%各代最大價(jià)值200x1
Wsum=zeros(m1);%存儲(chǔ)已裝載的重量50x1
while?NC<=G
????%第二步:將m只螞蟻放到n個(gè)物品上
????Randpos=[];
????for?i=1:(ceil(m/n))
????????Randpos=[Randposrandperm(n)];
????end
????Tabu(:1)=(Randpos(11:m))‘;%第一列為50螞蟻初始物品
????count=count+1;%背包物品數(shù)+1
????flag(:1)=Tabu(:1);
????Wsum=Wsum+C(flag(:1)2);%每個(gè)背包所裝物品總重量
????%第三步:m只螞蟻按概率函數(shù)選擇下一個(gè)物品,完成各自的周游
????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
???????????%計(jì)算待選物品的概率分布
????????????for?k=1:length(J)
????????????????P(k)=(Tau(J(k))^Alpha)*(Eta(J(k))^Beta);
????????????end
????????????P=P/(sum(P));
????????????%按概率原則選取下一個(gè)物體
????????????Pcum=cumsum(P);%相當(dāng)于輪盤賭
????????????Select=find(Pcum>=rand);
????????????to_visit=J(Select(1));
????????????Tabu(ij)=to_visit;%將下一個(gè)物品放入禁忌表
????????????%判斷此物體能否放入包中
????????????Wsum(i)=Wsum(i)+C(to_visit2);
????????????if?Wsum(i)<=m1
????????????????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%計(jì)算50只螞蟻中每只螞蟻所背物品最大價(jià)值
????????R=flag(i:);
????????for?j=1:count(i)????????????
????????????L(i)=L(i)+C(R(j)1);
????????end
????end
????L_best(NC)=max(L);%找出50只螞蟻所背物品最大價(jià)值
????maxValue=max(L);
????pos=find(L==L_best(NC));%找出50只螞蟻所背物品最大價(jià)值方案
????R_best(NC:)=flag(pos(1):);
????NC=NC+1;
????%第五步:更新信息素
????Delta_Tau=zeros(n1);%初始時(shí)刻信息素增量為0
????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);
????flag=zeros(mn);
????count=zeros(m1);
????Wsum=zeros(m1);??
end
%第七步:輸出結(jié)果
Pos=find(L_best==max(L_best));
Shortest_Route=R_best(Pos(1):);
Best_Rout

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3676??2017-06-26?17:09??ac.m

評(píng)論

共有 條評(píng)論

相關(guān)資源