问题描述 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)——动态多维背包】该算法借鉴了同学思路,我修改了大部分算法以及数据结构,修改成了自己的思路。如有想法请在评论区发表,一起交流学习
推荐阅读
- 机器学习|机器学习----支持向量机 (Support Vector Machine,SVM)算法原理及python实现
- 人工智能|机器学习方法之支持向量机(Support Vector Machine,SVM)
- 机器学习|《python机器学习基础教程》笔记(第2章监督学习)(第2部分)
- Python创造新事物|用Python制作我的核酸检测日历
- django|py214-基于Python+django的网购平台购物商城
- 数学建模算法|2022国赛数学建模思路算法分析—XGboost
- 数学建模算法|2022国赛数学建模思路算法案例k—means聚类分析
- 数学建模算法|2022国赛数学建模思路案例分析—因子分析
- 数学建模比赛|2022华为杯研究生数学建模赛题思路分析