【问题标题】:3 dimensional bin packing algorithms3维装箱算法
【发布时间】:2011-01-12 14:54:12
【问题描述】:

我面临 3 维装箱问题,目前正在对哪些算法/启发式方法目前产生最佳结果进行一些初步研究。由于问题是 NP 难题,我不希望在每种情况下都能找到最佳解决方案,但我想知道:

1) 什么是最好的精确求解器?分支和绑定?使用合理的计算资源可以解决哪些问题实例大小?
2) 什么是最好的启发式求解器?
3) 有哪些现成的解决方案可以进行一些实验?

【问题讨论】:

  • 您是否将箱子装入箱形箱中?你可以旋转盒子以使它们适合吗?
  • Karpreduction,跳过未解决的步骤(“完美”)同构确实很棘手,我们可以
  • 无旋转。是的,我正在将盒子装在盒子形的箱子里。谢谢布拉德,我确实知道这个问题,但没有找到令人满意的答案或问题。
  • BK,我刚刚查看了我们的 MaxLoadPro 版本。您可以定义自己的“车辆”或“手提包”,不受任何预定义尺寸的限制。当然,该软件使用启发式,但它确实允许您在推荐解决方案后移动内容。

标签: algorithm language-agnostic mathematical-optimization np-hard bin-packing


【解决方案1】:

来自wikipedia

虽然these simple strategies 通常足够好,但已经证明了高效的近似算法可以在足够大的输入的最优解的任何固定百分比内解决装箱问题

这是他们为此提供的两个来源:

【讨论】:

  • 请注意,至少“1 + ε”论文是指一维装箱问题,而问题是关于 3 维装箱(我假设是箱子)。简单的策略可以简单地推广到三个维度;我不确定更复杂的。
  • “(我认为是盒子)” - 接近但不完全。我正在处理木桁架,它们被压在一起形成更大的横梁和形状。由于压制过程是生产中运行时间最长且成本最高的部分,因此问题是如何优化机器装载。
【解决方案2】:

就现成解决方案而言,请查看MAXLOADPRO 了解装载卡车的信息。它可能能够配置为加载任何矩形体积,但我还没有尝试过。通常,3d 装箱问题具有额外的复杂性,即对象可以旋转到不同的位置,因此对于具有给定长度、宽度和高度的任何对象,您实际上必须创建三个变量来表示每个位置,但您只能在解决方案。

一般来说,独立的 MIP 公式(或分支定界)不适用于 2d 或 3d 问题,但约束规划已成功地为 2d 问题生成精确解。看看这个abstract。在不看论文的情况下,我喜欢分解方法来解决您试图最小化相同大小的垃圾箱数量的问题。对于 3d 问题,我没有看到那么多结果,但如果您发现任何可以实现的结果,请告诉我们。

祝你好运!

【讨论】:

    【解决方案3】:

    您的问题类似于: 3d bin packing algorithm

    虽然,因为你不允许旋转,你可以获得相当好的结果。我建议更多地寻找 FIRST-FIT-DECREASING 解决方案。

    【讨论】:

      【解决方案4】:

      最佳精确求解器:使用dynamic programming

      状态变量:

      1. 您已打包并丢弃的物品。
      2. 容器中的空间已填满。

      如果容器是平行六面体网格,并且项目“适合”网格的精确单元格,则可以使用 3 维数组来表示状态变量 2。否则,您将不得不使用更复杂的数据结构。

      最佳启发式求解器

      我不知道。也许Variable Neighborhood Search。您的问题和时间表构建问题(我正在研究)之间有一些相似之处,因此相同的启发式方法可能对两者都有好处。

      进行实验的现成解决方案

      对不起,我一点头绪都没有。

      【讨论】:

      • 更复杂的数据结构的例子有哪些?
      【解决方案5】:

      我写了一个program 来测试三种不同的算法。这也是一个很好的信息来源:A Thousand Ways to Pack the Bin - A Practical Approach to Two-Dimensional Rectangle Bin Packing。它适用于二维矩形 bin,但您始终可以将其转换为 3D。

      【讨论】:

        【解决方案6】:

        3dbinpacking 是一种商业解决方案(不是算法),它通过漂亮的可视化公开一个 API 以供使用。它提供:

        • 单箱包装
        • 多箱包装
        • 寻找第三维度
        • 查找箱尺寸

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-31
          • 2013-10-11
          • 2013-02-03
          • 1970-01-01
          相关资源
          最近更新 更多