为一组3D矩形项找到最佳3D盒尺寸

时间:2012-04-11 20:47:48

标签: algorithm optimization shipping calculus

当我说方框时,我说的是装运箱。

我有一些随机大小的小物品,我需要尽可能少地装箱。 我需要知道哪种盒子尺寸是最佳的。

  • 所有项目均为rectangular prisms
  • 很容易排除太大而无法容纳的商品的包装盒尺寸。
  • 我知道盒子尺寸(它们是我有库存的可用盒子尺寸)
  • 项目可以水平或垂直放置,而不是对角线。
  • 可以使用所需数量的盒子。目标是使用尽可能少的盒子。
  • 可以使用多个盒子大小来最佳地适合不同大小的物品。

有哪些算法可以让我计算出我需要用于最佳空间使用的盒子大小? 将大多数项目放入尽可能少的框中。

可用的盒子尺寸来自我现有的库存。例如,您可以创建有限数量的组合盒尺寸。

2 个答案:

答案 0 :(得分:7)

这是Bin packing problem的概括,意思是NP-Hard。

要想看到这一点,想象所有的箱子和包装都有相同的宽度和高度,另外所有的箱子(但不是包裹)都有相同的长度。然后它是一个一维问题:我们有大小为V的箱子,大小为a 1 的包裹, 2 ,..., n < /子>。这个简化的案例正是Bin-packing问题。因此,快速解决您的问题可以为我们提供快速的垃圾箱包装解决方案,因此您的问题至少同样困难;因为bin-packing是NP-Hard,所以你的问题也是如此。


虽然有一些近似算法可用;例如,很容易证明简单的first-fit算法(将每个项目放在它适合的第一个bin中)绝不会比最佳解决方案的2倍差。

类似的“First Fit Decreasing”算法(按降序对项目进行排序,然后将每个项目放入适合的第一个bin中)甚至更好,保证在约25%的范围内最佳解决方案。另外还有一个稍微复杂的算法MFFD,它保证在20%左右。

当然,只有7个盒子,你总是可以蛮力解决问题。这将需要大约7个 n 步骤(其中n是项目数),因此这个解决方案是不可行的,有十几个项目。< / p>

答案 1 :(得分:2)

您已经描述了knapsack problem的变体。查看wikipedia article以获取有关问题解决方案的更多详细信息。