基于布谷鸟算法的背包问题求解

基于布谷鸟算法的背包问题求解


摘要:本文主要介绍利用布谷鸟算法对背包问题进行求解。

1.背包问题

背包问题的一般提法为:已知 n n n 个物品 s 1 , s 2 , . . . , s n s_1,s_2,...,s_n s1,s2,...,sn 的重量及其价值分别为 w j > 0 w_j >0 wj0 c j > 0 ( j = 1 , 2 , … , n ) c_j >0( j=1,2,…,n) cj0j1,2,,n背包的容量假设为 V > 0 V >0 V0?如何选择那些物品装入背包可使在背包的容量限制之内所装物品的总价值最大,引入变量 x j x_j xj
x j = { 1 , 物品放入背包 0 , 否则 (5) x_j=\begin{cases}1,物品放入背包\\ 0,否则\end{cases}\tag{5} xj={1,物品放入背包0,否则(5)
则该问题的数学模型为:
m a x ( ∑ j = 1 n ) c j x j (6) max(\sum_{j=1}^n)c_jx_j\tag{6} max(j=1n)cjxj(6)
约束条件:
{ ∑ j = 1 n w j x j ≤ V x j ∈ { 0 , 1 } , j = 1 , 2 , . . . , n (7) \begin{cases} \sum_{j=1}^nw_jx_j\leq V \\ x_j\in\{0,1\},j=1,2,...,n \end{cases} \tag{7} {j=1nwjxjVxj{0,1},j=1,2,...,n(7)

2.实验结果

背包问题的实验数据如下:

 C = [72,490,651,833,833,489,359,337,267,441,...
    70,934,467,661,220,329,440,774,595,98,424,...
    37,807,320,501,309,834,851,34,459,111,...
    253,159,858,793,145,651,856,400,...
    285,405,95,391,19,96,273,152,...
    473,448,231];
W = [438,754,699,587,789,...
    912,819,347,511,287,541,784,676,198,...
    572,914,988,4,355,569,144,272,531,...
    556,741,489,321,84,194,483,205,607,...
    399,747,118,651,806,9,607,121,...
   370,999,494,743,967,718,397,...
   589,193,369];
V = 11258;

布谷鸟算法原理请参考:https://blog.csdn.net/u011835903/article/details/108404684

dim = length(C);%维度
pop = 50;%种群数量
lb = 0;
ub = 1;
MaxIter = 500;%迭代次数
fobj = @(x) fun(x,C,W,V);%适应度函数
%优化算法求解

最终结果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.参考文献

[1]李超文,何正友,张海平,高辉.基于二进制粒子群算法的辐射状配电网故障定位[J].电力系统保护与控制,2009,37(07):35-39.

[1]马慧民,叶春明,张爽.二进制改进粒子群算法在背包问题中的应用[J].上海理工大学学报,2006(01):31-34.

5.Matlab

6.Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值