2

我有一个令人头疼的问题,感觉类似于经典的垃圾箱包装问题,但我无法确定。任何帮助表示赞赏...

问题:

我有一组尺寸相同的产品,但有不同颜色的变体和不同的订单数量。

我可以以任何组合包装它们,但我只能拥有规定数量的不同内容的盒子。

我可以提供不同数量的每个盒子。最佳解决方案是超过请求数量的产品数量最少的解决方案。

示例:一个盒子可以装 4 件产品,我可以使用 2 种不同内容的盒子,我需要运送 100 * 红色、200 * 蓝色、300 * 绿色、400 * 黄色;

我不能装 25 盒红色、50 盒蓝色、75 盒绿色和 100 盒黄色,因为我只允许盒子里有 2 个不同的独特内容,这将是 4 个。

因此最佳解决方案是:

100盒1*红2*蓝1*黄

150盒2*绿色和2*黄色

在这个例子中,我已经完全满足了我的所有数量,因此零浪费。

假设订单只需要 395 黄色;上述解决方案会浪费 5 个黄色,但没有浪费更少的解决方案。产品浪费最少的解决方案是最好的。

4

1 回答 1

1

注意:不是算法答案。

使用蛮力。

给定这些类型,您可以(相当)轻松地检查您会得到多少浪费。

由于在每种类型中您只能有 4 个项目,并且只有两种类型,因此这里不同选项的数量是(4^4)^2(基于x=number_of_colours,y=number_of_items_in_typez=number_of_types, 我们有(x^y)^z)。

那么为什么不检查所有 65536 选项呢?他们中的大多数很容易被取消资格(每种颜色必须至少代表一次,等等)

编辑:由于实际问题的数量远远大于示例,因此此答案不再相关。我把它留在这里,以防有更好的想法出现。

于 2015-06-24T22:38:10.183 回答