算法|Python实现多维背包问题MKP算法(1)——动态多维背包

问题描述 MKP多维背包问题,特殊的背包问题,是著名的整数规划问题。要求从多个限制条件中选出满足所有条件的最佳组合,并计算出最优价值。
解题思路 对一个属性进行不超过限制条件的选择(即01背包问题的列出可能性),最后求多个属性的交集,在交集中找到最大价值即可。
代码实现 创建输入文本
输入数据:(第一行第一个是商品个数,第二个是属性个数,第三个是计算出的最优价值;第二行是6个商品每一个的价值;第三行到倒数第二行是属性;最后一行是限制条件,最后一行第一个数是第一个属性的限制条件,第二是第二个属性的限制条件,以此类推,数据格式如下,不要有多余的空格或者空行。)
6 10 3800
100 600 1200 2400 500 2000
8 12 13 64 22 41
8 12 13 75 22 41
3 6 4 18 6 4
5 10 8 32 6 12
5 13 8 42 6 20
5 13 8 48 6 20
0 0 0 0 8 0
3 0 4 0 8 0
3 2 4 0 8 4
3 2 4 8 8 4
80 96 20 36 44 48 10 18 22 24
输出数据:
商品的个数为: 6 属性的个数为: 10
价值分别为: [100.0, 600.0, 1200.0, 2400.0, 500.0, 2000.0]
选择第 2 个商品 | 选择第 3 个商品 | 选择第 6 个商品 |
最大价值为 3800.0 元

import pandas #需要导入库 import numpy #需要导入库 import time start = time.time()class MKP_Object: def allPossibility(restrict,attribute, nums): #寻找满足限制条件的组合 parameter1 = [[]] element = [] for i in range(nums): parameter2 = [] for j in parameter1: element=j+[i] if sum(attribute[element])

【算法|Python实现多维背包问题MKP算法(1)——动态多维背包】该算法借鉴了同学思路,我修改了大部分算法以及数据结构,修改成了自己的思路。如有想法请在评论区发表,一起交流学习

    推荐阅读