資源簡介
求解背包問題的離散粒子群算法程序,采用0-1二進(jìn)制編碼,可以直接運行!
代碼片段和文件信息
clc;
clear;
%n=10
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;%粒子的維數(shù)
xSize=20;%種群數(shù)??
MaxIt=30;%最大迭代次數(shù)
c1=2;
c2=2;%定義加速因子
w=0.8;%定義慣性因子
%%
A=repmat(axSize1);%將a擴(kuò)展成一個30*10的矩陣
C=repmat(cxSize1);%將c擴(kuò)展成一個30*10的矩陣
x=round(rand(xSizeDim));%隨機(jī)取一個30*10的0/1矩陣作為粒子的初始位置
v=rand(xSizeDim);%粒子的初始速度
xbest=zeros(xSizeDim);%單個粒子的初始最佳位置
fxbest=zeros(xSize1);%xbest的適應(yīng)度
gbest=zeros(1Dim);%粒子群的初始最佳位置
fgbest=0;%gbest的適應(yīng)度
%粒子群最優(yōu)位置和單個粒子最優(yōu)位置的選定
%%?迭代循環(huán)算法:
iter=0;
while?iter ????iter=iter+1;
????fx=sum((C.*x)‘);%計算粒子群的適應(yīng)度即背包內(nèi)物品的價值
????sx=sum((A.*x)‘);%限制函數(shù)背包內(nèi)物品的體積
????for?i=1:xSize
????????if?sx(i)>269
????????????fx(i)=0;%當(dāng)被包內(nèi)物品的體積超過限制時將期適應(yīng)度設(shè)置為1
????????end
????end
????for?i=1:xSize
????????if?fx
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2014??2012-10-15?16:41??ls_PSO.m
評論
共有 條評論