資源簡介
粒子群算法解決背包問題的MATLAB程序

代碼片段和文件信息
%0-1背包問題:對于n個體積為aj、價值分別為cj的物品,如何將它們裝入總體積為b的背包中,使得所選物品的總價值最大。
%n=10
%aj=[95?4?60?32?23?72?80?62?65?46]
%cj=[55?10?47?5?4?50?8?61?85?87]
%b=269
%
%
a=[95?4?60?32?23?72?80?62?65?46];%物品的體積
c=[55?10?47?5?4?50?8?61?85?87];%物品的價值
b=269;%背包的重量限制
%
%
%初始化程序:
Dim=10;%粒子的維數
xSize=20;%種群數??
MaxIt=30;%最大迭代次數
c1=0.7;
c2=0.7;%定義加速因子
w=0.8;%定義慣性因子
%
web?-browser?http://www.ilovematlab.cn/thread-12680-1-1.html
A=repmat(axSize1);%將a擴展成一個30*10的矩陣
C=repmat(cxSize1);%將c擴展成一個30*10的矩陣
x=round(rand(xSizeDim));%隨機取一個30*10的0/1矩陣作為粒子的初始位置
v=rand(xSizeDim);%粒子的初始速度
xbest=zeros(xSizeDim);%單個粒子的初始最佳位置
fxbest=zeros(xSize1);%xbest的適應度
gbest=zeros(1Dim);%粒子群的初始最佳位置
fgbest=0;%gbest的適應度
%
%
%粒子群最優位置和單個粒子最優位置的選定
%迭代循環算法:
iter=0;
while?iter ????iter=iter+1;
????fx=sum((C.*x)‘);%計算粒子群的適應度即背包內物品的價值
????sx=sum((A.*x)‘);%限制函數背包內物品的體積
????for?i=1:xSize
????????if?sx(i)>269
????????????fx(i)=0;%當被包內物品的體積超過限制時將期適應度設置為1
????????end
????end
????for?i=1:xSize
????????if?fxbest(i) ????????????fxbest(i)=fx(i);
????????????xbest(i:)=x(i:);%當粒子的適應度fx(i)大于其最佳適應度時fxbest(i)用其替代原來粒子的最佳適應度并記下此解
????????end
????end
????if?fgbest ????????[fgbestg]=max(fxbest);
????????gbest=xbest(g:);%當存在粒子的最佳適應度fxbest(g)大于種群的最佳適應度時用其替代原來種群的最佳適應度并記下此解
????end
????for?i=1:xSize
????????if?x(i:)==gbest
????????????x(i:)=round(rand(1Dim));%為防止算法陷入局部最優,若某個粒子的位置等于種群最佳位置,將對該粒子的位置重新初始化賦值
????????end
????end
????R1=rand(xSizeDim);
????R2=rand(xSizeDim);?
????v=v*w+c1*R1.*(xbest-x)+c2*R2.*(repmat(gbestxSize1)-x);%用速度迭代公式產生新的速度
????x=x+v;%更新粒子群的位置
????for?i=1:xSize
????????for?j=1:Dim
????????????if?x(ij)<0.5
????????????????x(ij)=0;
????????????else?x(ij)=1;
????????????end
????????end
????end%由于粒子的位置只有(01)兩種狀態此處以0.5為分界點對函數值進行離散化
end
%
%
fgbest
sgbest=sum((a.*gbest)‘)
gbest
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2291??2008-07-09?12:59??用PSO算法解決背包問題\beibaoPSO.m
?????文件??????44544??2008-07-09?13:00??用PSO算法解決背包問題\試驗報告.doc
?????目錄??????????0??2008-07-09?13:00??用PSO算法解決背包問題
?????文件????????122??2008-05-14?18:20??Matlab中文論壇--助努力的人完成畢業設計.url
?????文件???????3434??2008-05-15?08:26??使用幫助:新手必看.htm
-----------?---------??----------?-----??----
????????????????50391????????????????????5
評論
共有 條評論