一、背包问题简介

1【背包问题】
背包问题(Knapsack problem)是一种组合优化的NP完全问题。
问题描述为:给定一组物品,每种物品都有自己的重量weight和价格value,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。
2【0-1背包问题】
对每个物品i 只有 装入/不装入背包 两种情况。
我们有n种物品,物品j的重量为wj,价格为pj。
我们假定所有物品的重量和价格都是非负的。背包所能承受的最大重量为W。
如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题。
令V(i,j)表示前i个物品中能够装入容量为j的背包中的物品价值最大值,则可得到动态规划函数:
V(i,0) = V(0,j)=0; //把前i个物品装入容量为0的背包 和 把0个物品装入容量为j的背包,价值均为0
V(i,j) = V(i-1,j) j<wi //如果第i个物品的重量大于背包容量wi>j,则装入前i个物品得到的最大价值和装入前i-1个物品得到的最大价值相同,即物品i不装入背包
V(i,j) = max{ V(i-1,j),V(i-1,j-wi)+vi } j>wi // 1.如果把第i个物品装入背包,则背包中物品的价值=把前i-1个物品装入容量为j-wi背包中的价值加上第i个物品的价值vi; 2. 如果第i个物品没有装入背包,则背包中价值=前i-1个物品装入容量为j的背包中所取得的价值。 取二者中价值较大者。
step 1:只装入前1个物品,确定各种情况下的背包能够得到的最大价值;
step 2:只装人前2个物品,确定各种情况下的背包能够得到的最大价值;.
step n:…
最后V(n,C)便是容量为C的背包中装入n个物品时取得的最大价值。
为了得到V(n,C) 需想前推到V(n-1,C)。如果V(n,C)>V(n-1,C),则第n个物品装入背包,前n-1个物品装入容量为C-wn的背包中;否则,第n个物品没有被装入背包,前n-1个物品被装入容量为C的背包中。
直到确定第一个物品是否被装入背包中。
得到:
当 V(i,j)= V(i-1,j), xi = 0;
当 V(i,j) > V(i-1,j), xi = 1,j = j-wi;

二、离散粒子群算法简介

1 什么是离散粒子群算法?
普通粒子群算法(Particle Swarm Optimization Algorithm,PSO)的粒子初始位置、更新速度都是连续函数,与之对应,位置和速度更新均为离散值的算法是离散PSO算法(Discrete Particle Swarm Optimization Algorithm, DPSO);
一般就是在跟新粒子位置后,对粒子进行离散点处理;
比如:你的粒子的离散点是0到9的整数。那么对每个粒子更新位置后,比如是在(0,1)范围内的随机数。那么就(0,0.1)范围令其值为0;(0.1,0.2)范围令其值为1;…(0.9.1)范围令其值为9。当然初始位置值也需要这样处理。参考

2 什么是离散二进制粒子群算法?
离散二进制粒子群算法(Discrete Binary Particle Swarm Optimization Algorithm, BPSO)最初由J.Kennedy和R.C.Eberhart在1997年设计;
PSO主要优化连续实值问题,BPSO主要优化离散空间约束问题;
BPSO是在离散粒子群算法基础上,约定位置向量、速度向量均由0、1值构成;
BPSO有很强全局搜索能力,但不能收敛于全局最优值,且随着算法迭代搜索随机性越来越强,缺乏后期的局部搜索能力;

3 离散二进制粒子群算法步骤




4 实验步骤
参考:离散二进制粒子群算法分析
第一步:确定测试的基准函数;
第二步:测试某个粒子的平均速度迭代变化,某个粒子取1的平均概率迭代变化;某个粒子改变概率迭代变化;某个粒子到最优粒子距离的迭代变化;
第三步:提出改进的粒子群算法,改进点为概率函数;按照第二步进行实验;
第四步:提出改进的基于遗传算法的二进制PSO算法;进行显著性分析,测试最小平均适应度值和标准方差;

三、部分源代码

%%%%%%%%%%离散粒子群算法解决0-1背包问题%%%%%%%%%%%
%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%
clear all;                  %清除所有变量
close all;                  %清图
clc;                        %清屏
N=100;                     %群体粒子个数
D=10;                      %粒子维数
T=200;                     %最大迭代次数
c1=1.5;                    %学习因子1
c2=1.5;                    %学习因子2
Wmax=0.8;                  %惯性权重最大值
Wmin=0.4;                  %惯性权重最小值
Vmax=10;                   %速度最大值
Vmin=-10;                  %速度最小值
V = 300;                               %背包容量
C = [95,75,23,73,50,22,6,57,89,98];    %物品体积
W = [89,59,19,43,100,72,44,16,7,64];   %物品价值
afa = 2;                               %惩罚函数系数%%%%%%%%%初始化种群个体(限定位置和速度)%%%%%%%%%%
x=rand(N,D);           %随机获得二进制编码的初始种群
v=rand(N,D) * (Vmax-Vmin)+Vmin;
%%%%%%%%%%%初始化个体最优位置和最优值%%%%%%%%%%%%
p=x;
pbest=ones(N,1);
for i=1:Npbest(i)= func4(x(i,:),C,W,V,afa);
end
%%%%%%%%%%%%初始化全局最优位置和最优值%%%%%%%%%%%
g=ones(1,D);
gbest=eps;
for i=1:Nif(pbest(i)>gbest)g=p(i,:);gbest=pbest(i);end
end
gb=ones(1,T);
%%%%%%%按照公式依次迭代直到满足精度或者迭代次数%%%%%%%
for i=1:Tfor j=1:N%%%%%%更新个体最优位置和最优值%%%%%%%%%%%%%if (func4(x(j,:),C,W,V,afa)>pbest(j))p(j,:)=x(j,:);pbest(j)=func4(x(j,:),C,W,V,afa);end%%%%%%%%%%更新全局最优位置和最优值%%%%%%%%%if(pbest(j)>gbest)g=p(j,:);gbest=pbest(j);end%%%%%%%%%%计算动态惯性权重值%%%%%%%%%%%%%for ii=1:Dif (v(j,ii)>Vmax)  |  (v(j,ii)< Vmin)v(j,ii)=rand * (Vmax-Vmin)+Vmin;endend    vx(j,:)=1./(1+exp(-v(j,:)));for jj=1:Dif vx(j,jj)>randx(j,jj)=1;elsex(j,jj)=0;endend      end%%%%%%%%%%%%%记录历代全局最优值%%%%%%%%%%%%g                          %最优个体
figure
plot(gb)
xlabel('迭代次数');
ylabel('适应度值');
title('适应度进化曲线')

四、运行结果


五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

【背包问题】基于matlab离散粒子群算法求解0-1背包问题【含Matlab源码 1342期】相关推荐

  1. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  2. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  3. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  5. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  6. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  7. 【故障检测问题】基于matlab免疫算法求解故障检测问题【含Matlab源码 196期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[故障检测问题]基于matlab免疫算法求解故障检测问题[含Matlab源码 196期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. 显卡玩家の反击!矿难一个月,618集体大战黄牛“降价也不买”
  2. Spring,为内部方法新起一个事务,此处应有坑。
  3. cocos2dx 自定义动画
  4. [故障引起的故事]URL中带加号(+)的处理
  5. Supporting Python 3(支持python3)——为Python 3做准备
  6. Junit4集成到Maven工程
  7. 从高斯消元到矩阵的三角分解(LU)
  8. 【代码源 Div1 - 102】#323. 最长因子链(dp)
  9. 【转】你真的懂select Socket模型吗?
  10. vue基础之指令(内置指令,自定义指令,指令的生命周期函数)
  11. 计算机电磁泄露案例,电磁泄漏
  12. 服务器装系统不识别硬盘分区,安装系统无法识别分区解决方法
  13. 数据库设计5-逻辑结构设计
  14. 鼠标按下并移动事件的解决方案
  15. 【Python编程】《Python学习手册》思维导图
  16. java 8中Comparator.comparing和reversed
  17. python +appium实现原理_Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)...
  18. VaR 与 CVaR
  19. php soap https 登录 复杂请求 上海资信 金融p2p Error cannot find parameter faultstringFunction ' not found
  20. python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天)

热门文章

  1. 注意,更改团队所属业务部门用Update消息无效!
  2. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十)
  3. 最长回文子串(Longest Palindromic Substring)-DP问题
  4. 计算5的阶乘 5!的结果是?
  5. Ubuntu设置中文
  6. 2007以学习软件设计开始
  7. 20190801每日一句
  8. 181205每日一句
  9. unity UI 之text and image
  10. Atitit 学校模式之 天堂模式 目录 1.1. 宗旨,让学生们乐不思蜀 打造人间天堂 2 2. 组织结构 2 2.1. 娱乐事业部 2 2.2. 文艺事业部 2 2.3. 三大金山挖掘(教育 医