如何解决 0-1 多(约束/维)背包问题?

时间:2021-06-19 15:34:07

标签: java python algorithm knapsack-problem

我有 5 个袋子和 200 件有值的物品。问题是每件物品在不同的袋子上都有不同的重量,而且所有的袋子都有不同的容量。

For bag example:
Bag 1 capacity = 500
Bag 2 capacity = 200
etc....

For item example:
Item 1 weight for = bag1:50, bag2:70, bag3:15 etc...
Item 2 weight for = bag1:1, bag2: 90, ......
etc....

每个包内必须有相同的物品。所以如果我把item 1放到bag1里,我就得把那个item放到其他包里,所以任何包的容量都不能通过。 我怎样才能找到这些袋子里可以装的最大价值的物品?我应该搜索什么或如何解决?我研究了很多,但找不到不稳定的解决方案或代码。

此处是带有约束的示例数据:

num of knapsacks = 2
knapsack1 capacity = 600
knapsack2 capacity = 500
num of items = 28

values of each item:
1898 440 22507 270 14148 3100 4650 30800 615 4975 1160 4225 510 11880 479 440 490 330 110 560 24355 2885 11748 4550 750 3720 1950 10500

item weights for knapsack1 (in same order with item values)
45 0 85 150 65 95 30 0 170 0 40 25 20 0 0 25 0 0 25 0 165 0 85 0 0 0 0 100

item weights for knapsack2
30 20 125 5 80 25 35 73 12 15 15 40 5 10 10 12 10 9 0 20 60 40 50 36 49 40 19 150

满足样本数据的项集为:

Sum of values = 138821
Values: 1898 22507 14148 3100 4650 30800 4975 11880 490 24355 11748 4550 3720

0 个答案:

没有答案
相关问题