三维箱包装算法

时间:2010-02-03 13:18:28

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

我遇到了三维装箱问题,目前正在进行一些初步研究,以确定哪些算法/启发式方法目前产生的效果最好。由于问题是NP难,我不希望在每种情况下找到最佳解决方案,但我想知道:

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

6 个答案:

答案 0 :(得分:6)

就现成的解决方案而言,请查看MAXLOADPRO装载卡车。它可以配置为加载任何矩形体积,但我还没有尝试过。一般来说,3d bin-packing问题会增加复杂性,即对象可以旋转到不同的位置,因此对于具有给定长度,宽度和高度的任何对象,您实际上必须创建表示每个位置的三个变量,但是您只使用一个解决方案。

一般来说,独立的MIP配方(或分支和绑定)对于2d或3d问题不能很好地工作,但是约束编程已经成功地为2d问题产生了精确的解决方案。看看这个abstract。在没有查看论文的情况下,我喜欢解决问题的分解方法,即您尝试最小化相同大小的二进制数。我没有看到很多关于3d问题的结果,但如果您发现任何可实现的结果,请告诉我们。

祝你好运!

答案 1 :(得分:3)

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

答案 2 :(得分:2)

来自wikipedia

  

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

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

答案 3 :(得分:1)

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

状态变量:

  1. 您打包并丢弃的物品。
  2. 容器中装满空间。
  3. 如果容器是平行六面体网格,并且项目“适合”网格的精确单元格,则可以使用三维数组来表示状态变量2.否则,您将不得不使用更复杂的数据结构。

    最佳启发式解算器

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

    进行实验的现成解决方案

    对不起,我甚至没有线索。

答案 4 :(得分:0)

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

虽然,因为你禁止轮换,你可以获得相当不错的结果。我建议更多地寻求一种先发制人的解决方案。

答案 5 :(得分:0)

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

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