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