资源简介

求解背包问题的离散粒子群算法程序,采用0-1二进制编码,可以直接运行!

资源截图

代码片段和文件信息

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;%粒子的维数
xSize=20;%种群数  
MaxIt=30;%最大迭代次数
c1=2;
c2=2;%定义加速因子
w=0.8;%定义惯性因子
%%
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 fx

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2014  2012-10-15 16:41  ls_PSO.m

评论

共有 条评论