【问题标题】:Finding the optimal 3D box sizes for a group of 3D rectangular items为一组 3D 矩形项目寻找最佳 3D 盒子大小
【发布时间】:2012-04-11 20:47:47
【问题描述】:

当我说箱子时,我指的是运输箱。

我有一些随机大小的小物品,我需要将它们装入尽可能少的盒子中。 我需要知道最佳的盒子尺寸。

  • 所有项目都是rectangular prisms
  • 对于太大而无法容纳的商品,可以轻松排除盒子尺寸。
  • 我知道盒子尺寸(它们是我有库存的可用盒子尺寸)
  • 项目可以水平或垂直放置,而不是对角线。
  • 可以使用任意数量的盒子。目标是使用尽可能少的盒子。
  • 可以使用多种尺寸的盒子来最佳地适应不同尺寸的物品。

有什么算法可以让我计算出我需要用于优化空间使用的盒子大小? 将最多的物品放入尽可能少的盒子中。

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

【问题讨论】:

  • 所以这只涉及2个维度?长度和宽度?
  • 这听起来类似于Knapsack,即NP-Complete。您可以查看近似 Knapsack 的算法,看看是否可以根据您的需要调整算法。
  • @FrancisP 立方,长度、宽度和高度。我不知道立方矩形形状的技术词。
  • @FrancisP 这个词就是直角棱镜。我编辑了它。
  • 那么你是怎么解决这个问题的?他们是否有任何现成的类或 PHP 代码?任何的想法?自己写一个需要好几天!

标签: algorithm optimization shipping calculus


【解决方案1】:

这是Bin packing problem 的概括,意味着它是NP-Hard。

要看到这一点,假设所有箱子和包裹都具有相同的宽度和高度,并且所有箱子(但不是包裹)都具有相同的长度。那么这是一个一维问题:我们有大小为 V 的 bin,大小为 a1、a2、...、an。这种简化的情况正是装箱问题。因此,快速解决您的问题为我们提供了快速解决装箱问题,因此您的问题至少同样困难;并且由于 bin-packing 是 NP-Hard,所以您的问题也是如此。


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

类似的“First Fit Decreasing”算法(按降序对项目进行排序,然后将每个项目放入它适合的第一个 bin) 更好,保证在大约 25% 以内最优解。还有另一种稍微复杂一点的算法,称为MFFD,它保证在大约 20% 以内。

当然,只有 7 个盒子,您总是可以暴力破解解决方案。这将需要大约 7n 个步骤(其中n 是项目数),所以这个解决方案对于十几个左右的项目是不可行的。

【讨论】:

  • 我的问题是我将选择的垃圾箱大小部分取决于物品的总体积。示例:与许多小型 USPS 统一费率箱相比,在大 UPS 箱中发送许多小物品更便宜。即随着总体积的增加,通常最好使用更大的垃圾箱。
  • @unixman83:-_- 问题提到将物品放入最少的盒子中,它没有说明价值。不过,我想您会发现您的新问题是对 Knapsack 的概括,因此您仍然无法找到最佳解决方案:\ 尝试查找一些 Knapsack 近似值。
  • 是的。感谢您回答我遇到的空间拟合问题。这绝对是一个帮助。
【解决方案2】:

您描述了knapsack problem 的变体。查看wikipedia article,了解更多关于解决问题的方法的详细信息,而不是此处提供的信息。

【讨论】:

  • 成为“背包问题的变体”并不意味着它是 NP 完全的。
  • 嘿,我没说它是NP完成的!但是你可以写整本关于这个主题的书,我不想用 100 字或更少的字来总结。
  • 这个答案不值得 0 分。当然它没有回答我问的问题。但这可能是我面临的问题的更完整的答案。
猜你喜欢
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多