【0-1背包】二进制灰狼算法解决0-1背包问题【Matlab】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、0-1背包问题
- 1、问题描述
- 2、数学模型
- 二 、二进制灰狼算法
- 1、引言
- 2、算法改进
- 3、数学模型
- 4、算法流程
- 三、源代码
- 四、运行结果
- 五、备注
一、0-1背包问题
1、问题描述
背包问题早在 1978 年由 M. Ralph 和 H. Martin 提出,是一种组合优化类的 NP(Non-deterministic Polynomial)难解问题,简单来说,就是解决如何将有限的空间更高效地利用起来,即将不同价值和体积的物品装入背包中,从而使背包所载物品价值最大的问题。在包括 0-1 背包问题、完全背包问题及多重背包问题的三类背包问题中,0-1 背包问题自提出就受到众多学者的广泛关注。
对于 0-1 背包问题的解法,就其计算复杂度来看,可以大致分为三类:传统算法如动态规划法、贪心算法、分支界定法及回溯法等;启发式算法如和声搜索算法、化学反应算法和预期效率算法等;另一种就是群智能优化算法,如差分进化算法、粒子群算法和遗传算法等都被应用于求解 0-1 背包问题中。对比来看,传统算法虽然可以得到精确解,但是无法解决因物品种类增加而形成的组合爆炸问题,启发式算法时间复杂度相对传统算法低些,但较难得到精确解,仍无法满足需求,而群智能算法的兴起有效地解决了这类问题,这类算法克服了传统算法与启发式算法存在的一些不足,提高了问题的求解精度与优化方案。
0-1 背包问题作为经典的组合优化问题,它旨在寻找背包容积限制下物品价值达到最大的物品装载方案。0-1 背包问题目前已被应用于组合数学的优化、快递物流配送、企业规划等诸多领域。解决了此类问题,可以帮助人们高效地解决同类生活实际问题,进而提高人类的生存能力,是十分有意义的,随着问题复杂度的增加以及规模的扩大,对于其求解方法有着较高的要求,传统方法暴露出更多的局限性,因此,找到一种求解此类问题的高效的解决方法,就变得十分有意义。
2、数学模型
经典 0-1 背包问题的主要思路:有很多待选择的不同物品,每种物品都有自己的体积和价值,选择其中的部分放入背包,而背包的承受量和每一物品的体积及价值已知,问如何选择,才能使得在限定的总容量内,物品的总价值最高。通过描述建立如下的模型:这里假设背包容积为C,有m 个物品待选择,其中第i个物品的体积为wi,价值为pi,xi=1表示物品被装入背包中,xi=0表示物品不装入背包中,其中 i=i,2,3…m。这样问题就可以描述如下:
二 、二进制灰狼算法
1、引言
灰狼算法在连续灰太狼优化(CGWO)中,狼不断地改变它们在空间中的位置。在一些特殊的问题,如0-1背包问题的解决方案被限制在二进制{0,1}值,这激发了一个特殊版本的GWO。
在bGWO中,任何给定的解都是二进制形式的,所有的解都位于超立方体的角上。根据CGWO原理更新给定狼的位置。
2、算法改进
在二进制灰狼算法中,引入了传递函数(sigmod函数)。利用传递函数将朝向前三个最佳解的各个步骤进行二值化,然后在三个基本移动之间执行随机交叉以找到更新的二值灰太狼位置。[1]
3、数学模型
1)x1、x2、x3的结算
x1为α在二进制中的位置矢量,bstepα为二进制步长,可利用公式2计算
cstepα为α的连续值步长,可用公式3计算。
其中,公式3中的A1、Dα为连续灰狼算法中的A1、Dα。
ps:x2、x3的计算方式与x1相同。
公式1
公式2
公式3
4、算法流程
三、源代码
clear all
clcNIND=100; % 种群数
MAXGEN=500; % 最大迭代次数
V=[44,46,90,72,91,40,75,35,8,54,78,40,77,15,61,17,75,29,75,63];%物品价值
W=[92,4,43,83,84,68,92,82,6,44,32,18,56,83,25,96,70,48,14,58];
C=878;%物品重量
N=length(V);%物品个数
afa=3;惩罚函数
t=0;循环次数
FC=0;方差
while t<30
[Best_score,Best_pos,GWO_cg_curve]=bGWO1(NIND,MAXGEN,N,W,C,V,afa);
display(['第',num2str(t+1),'次循环,价值为' ,num2str(Best_score)]);
t=t+1;
mean(t,1)=Best_score;
end
Best_score=sum(mean)/t;
for x=1:tFC=FC+(mean(x,1)-Best_score)^2;
end
FC=sqrt(FC);display(['最大值: ', num2str(max(mean))]);display(['最小值: ', num2str(min(mean))]);display(['平均值: ', num2str(Best_score)]);display(['方差: ', num2str(FC)]);
四、运行结果
最大值: 1024最小值: 1024平均值: 1024方差: 0
对OR-Library中9个算例进行测试的结果如下:
五、备注
完整代码或者代写添加QQ437651208
[1] Sa A , Pa B . Binary butterfly optimization approaches for feature selection - ScienceDirect[J]. Expert Systems with Applications, 2019, 116:147-160.
【0-1背包】二进制灰狼算法解决0-1背包问题【Matlab】相关推荐
- 【选址问题】二进制灰狼算法解决无容量选址问题【Matlab】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.无容量设施选址问题 1.问题描述 2.数学模型 二.二进制灰狼算法 1.引言 2.算法改进 3.数学模型 4.算法流程 ...
- 【算法】模拟退火算法解决TSP问题的matlab实现
[算法]模拟退火算法解决TSP问题的matlab实现 参考文章: (1)[算法]模拟退火算法解决TSP问题的matlab实现 (2)https://www.cnblogs.com/wenyehoush ...
- 【MVO TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab灰狼算法求解旅行商问题[含Matlab源码 1327期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
- 【SVM分类】基于灰狼算法优化SVM实现数据分类matlab源码
一.神经网络-支持向量机 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能 ...
- 分支限界法 01背包c语言,算法笔记分支限界法01背包问题
<算法笔记分支限界法01背包问题>由会员分享,可在线阅读,更多相关<算法笔记分支限界法01背包问题(12页珍藏版)>请在人人文库网上搜索. 1.问题描述给定n种物品和一背包.物 ...
- 【优化求解】基于灰狼算法求解多目标问题matlab代码
1 简介 灰狼群体具有严格的社会支配等级且其等级划分呈金字塔形式,在捕捉猎物时,灰狼是通过相交流共享的体制来模拟的.其他智能算法类似的是,每一个可能解都由每头灰狼的位置来对应.种群的发展需要不断地更新 ...
- 【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码
1 简介 布谷鸟搜索(Cuckoo Search, CS)算法是 2009 年 Xin-She Yang 与 Susash Deb 提出的一种新型的启发算法[61].算法灵感来源于一些布谷鸟种属(Cu ...
- 八数码问题matlab实现,用A*算法解决八数码问题 MATLAB
代码: bashuma.m function []=bashuma global e; %open表计数 global i; %close表计数 global m; %循环次数计数 a=0;b=0;n ...
- 【优化求解】基于无序灰狼算法求解多目标问题matlab代码
1 简介 Mirjalili 等人提出了一种新的群体智能算法---灰狼优化算法(GWO),并通过多个基准测试函数进行测试,从结果上验证了该算法的可行性,通过对比,GWO 算法已被证明在算法对函数求解精 ...
最新文章
- TSS详解 ——《x86汇编语言:从实模式到保护模式》读书笔记33
- php中bc,php中BC高精确度函数库
- 在div中显示html_HTML基础知识之DIV
- JavaScript数组sort方法(数组排序)
- 记一次 .NET游戏站程序的 CPU 爆高分析
- [导入]ASP.NET 配置节架构
- python依赖注入_什么是依赖注入?
- wps一直显示正在备份怎么办_笔记本电脑显示器一直闪动怎么办
- LINUX-iostat命令讲解
- 【中文分词】结构化感知器SP
- 图片选择器ImagePicker
- 清华大学和ubc计算机哪个好,2021世界大学排名出炉!多大进前20!清华UBC并列!...
- 深入理解CatBoost
- MT6573芯片资料集锦MT6575入门手册 V0.2
- 【20200207】【lyk】TJOI2019 唱、跳、rap、篮球题解
- 自学英语最有效的方法
- C语言:上机编程题集
- [笔记]深入解析Windows操作系统《三》系统机制
- 【嵌入式1】Ubuntu系统下运行C语言程序以及用Makefile方式编程
- 最近组织游泳社的体会
热门文章
- python 高斯约当消元法求逆矩阵
- Support for the experimental syntax 'decorators-legacy' isn't currently enabled 异常解决
- GWA2吉娃兔升級基於事件驅動的緩存處理模塊
- K8S 之 Pod定义梳理
- buu-[ACTF新生赛2020]Universe_final_answer
- python画气泡图(4个象限)
- 微信小程序的开发与原理
- EXCEL文件打开缓慢的问题解决
- 正交设计 python算法_人人都可以掌握的正交试验设计测试用例方法
- 精品资源,某宝买的 9000 条语音素材