MATLAB运筹优化——背包问题

本文介绍了使用MATLAB解决背包问题的两种方法:贪心算法和暴力枚举。贪心算法通过计算物品的价值密度进行排序选择,而暴力枚举则列举所有可能的物品组合。每种方法都提供了MATLAB实现的详细步骤和代码示例。
摘要由CSDN通过智能技术生成

贪心

算法步骤:
1、将物品的重量a(j),价值c(j) (j = 1 2 3 …n)存入向量a、c,输入背包允许的最大载重量b;
2、计算物品的价值密度向量p = c./a;
3、给出物品的编号向量k = 1:n;
4、对p进行降幂排列,并将a、c、k中的对应元素作相应的调整;
5、置背包中允许选入物品的最大质量S(0) = 0,置背包中允许选入物品的最大价值P(0) = 0;
6、对于i = 1 2 … n,做以下操作:
(1)、S = S(0) + a(i) ; P = P(0) + c(i)
(2)、 如果:S<= b,则:x(ki) = 1, S(0) = S, P(0) = P; 否则:x(ki) = 0
(x(ki)是判断当前物品是否装入背包的布尔变量)
7、输出入选物品总质量S(0),总价值P(0)以及入选物品的编号x。

matlab代码:

a = [55 1 45 10 40 20 30 22];   % 各物品的重量
c = [60 10 55 20 50 30 40 32];     % 个物品的价值
b = 110;                           % 背包最大载重量
p = c./a ;    
n = length(a);  % 物品的件数
k = 1 : n;    % 编号

% 按照降幂的顺序重新排序,并调整a c k p的位置
for i = 1:n-1
    max 
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值