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

資源簡介

MATLAB實現的人工螢火蟲群優化算法,解決背包問題

資源截圖

代碼片段和文件信息

%求解0-1背包問題的人工螢火蟲群優化算法
clc
clear?all

a=[94?4?60?32?23?72?80?62?65?46];%物品的體積
c=[55?10?47?5?4?50?8?61?85?87];%物品的價值
b=269;%背包的容量限制,背包能夠裝的物品體積或重量的最大值
%a、b、c的數據來自參考文獻
%%?
n=10;%螢火蟲的個數
Dim=size(a2);%處理問題的維數,與背包問題中物品的數量相同
iter_max=3;%最大迭代次數
runtime=1;

L0=5;%熒光素初值
R0=3;%動態決策域的初值
beta=0.08;%動態決策域的更新率
nt=5;%鄰域個數的閾值
s=0.03;%步長
gama=0.6;%熒光素更新率
rho=0.4;%熒光素消失率
t=2;%迭代次數初值

Rs=5;%可視范圍初值,感知范圍
Rd=zeros(niter_max);%生成一個n行iter_max列的矩陣,每一行代表一只螢火蟲在每一代的動態決策域
P=zeros(nniter_max);
L=zeros(niter_max);%生成一個n行iter_max列的矩陣,每一行代表一只螢火蟲在每一代的熒光素值
A=repmat(an1);%將矩陣a復制n×1塊,存儲物品的體積
C=repmat(cn1);%將矩陣c復制n×1塊存儲物品的價值
Nei=cell(niter_max);%記錄每只螢火蟲在每一次迭代時的鄰域

%隨機分配個體熒光素及動態決策域
for?i=1:n
????L(i1)=L0;%所有螢火蟲在算法迭代初期的初始熒光素值都是L0
????Rd(i1)=R0;%所有螢火蟲在算法迭代初期的初始動態決策域值都是R0
end



for?r=1:runtime
%第i個螢火蟲在t時刻的位置初始化
X=round(rand(nDim));%隨即取一個n×Dim的0-1矩陣作為螢火蟲的初始位置
?????????????????????%每一行代表一種背包裝物品的狀態,1代表對應物品裝入背包,0代表不裝入
%%??
tic;
final_fxbest=zeros(1t);
final_X=zeros(tDim);
while?t????
????%for?i=1:n
????????fX=sum((C.*X)‘);%計算每一個螢火蟲位置的適應度值,即背包內物品的價值
????????sX=sum((A.*X)‘);%限制函數,計算一個背包內所有物品的體積
????%end
????for?i=1:n
????????if?sX(i)>b%背包內物品的體積超過最大限制
????????????fX(i)=0;%當背包內物品的體積超過限制時,將其適應度值設置為1
????????end
????end
????for?i=1:n
????????L(it)=(1-rho)*L(i(t-1))+gama*fX(i);%熒光素更新公式
????end
????fX
????%位置移動規則
????for?i=1:n
????????for?j=1:n
????????????%如果X(j:)在X(i:)可視范圍內,并且X(j:)的熒光素值大于X(i:),
????????????%則X(j:)是X(i:)的一個鄰居,
????????????if(norm(X(j:)-X(i:))????????????????Nei{it}=[jNei{it}];%獲取鄰域Nei
????????????end
????????end
????end
????tempsum=zeros(1n);
????for?i=1:n
????????for?j=Nei{it}
????????????j
????????????%計算每只螢火蟲的鄰域內所有鄰居的熒光素之和
????????????tempsum(i)=L(jt)-L(it)+tempsum(i);
????????end
????end
????tempsum
????%移動概率的計算
????for?i=1:n
????????for?j=Nei{it}
????????????%路徑選擇概率公式,螢火蟲i選擇螢火蟲j并向其移動的概率
????????????P(ijt)=(L(jt)-L(it))/tempsum(i);
????????end
????end
????for?i=1:n
????????if?isempty(Nei{it})%如果螢火蟲i的鄰域為空
????????????%XX=X(i:);
????????????Rd(it+1)=min(Rsmax(0Rd(it)+beta*(nt-length(Nei{it}))));%決策域更新公式
????????else
????????????for?j=Nei{it}
????????????????if?P(ijt)==max(P(i:t))&&P(ijt)~=0
????????????????????SeJ=j;%選擇最好的移動方向
????????????????????%位置更新
????????????????????X(i:)=X(i:)+s.*(X(SeJ:)-X(i:))/norm(X(SeJ:)-X(i:));
????????????????????Rd(it+1)=min(Rsmax(0Rd(it)+beta*(nt-length(Nei{it}))));%決策域更新公式
????????????????end
????????????end
????????end
????????sxbest(i)=sum((a.*X(i:))‘);%存儲每一只螢火蟲對應背包內的物品總體積
????????fxbest(i)=sum((c.*X(i:))‘);%存儲每一只螢火蟲對應背包內的物品總價值
????end
????jieguo=zeros(1n);%臨時存儲運算結果
????for?i=1:n
????????%如果一只螢火蟲對應背包的體積在限制范圍之內,則視為有效,存儲在矩陣jieguo中
????????if?sxbest(i)????????????jieguo(i)=1;
????????else
????????????jieguo(i)=0;
????????????sxbest(i)=0;
????????????fxbest(i)=0;
????????????X(i:)=round(rand(1Dim));
????????end
????end
????%尋找ji

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

?????文件???????4221??2012-10-13?15:14??GSO_package.m

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

?????????????????4221????????????????????1


評論

共有 條評論