工业分区问题

时间:2009-09-10 15:02:39

标签: algorithm optimization computer-science operations-research

我们正在谈论金属制品厂。有机器可以将较长的铁棒切割成较小的部件,这些部件后来用于制造各种产品。

例如,我要求生产以下长度和数量的条: 2件248mm, 5个1150毫米, 6个,2843毫米, 3个3621毫米。

这是分区输出。

在输入端我有(例如) 3条2500毫米, 2条5000毫米, 6条8000毫米 和3个10000毫米的棒。

我应该找到一种如何最佳地切割输入条的方法 - 切割后的其余部分(其余部分太小而不能使用)应该尽可能小。

我创建了算法,只需创建所有可能的组合,然后在其中选择最好的组合。代码有效,但只要输入和输出稍微大一些,计算就可以持续很长时间,所以我必须找到解决问题的新方法。

你有任何提示吗?

4 个答案:

答案 0 :(得分:5)

您的问题是运筹学中非常常见的问题。看着 Cutting stock problem。这个问题基本上是NP难的,因为你已经想到了自己。它不能很好地扩展。

如何解决?在能够找出模型之后,最好调用一些混合整数编程求解器。我以前使用过LPSolve 5.5

可能有一些简单的算法可以代码处理这个问题。当您需要添加作者未想到的一些辅助约束时,通常会出现这些算法的问题。 MIP求解器是更通用的工具。

答案 1 :(得分:4)

这称为可变大小的装箱问题。这是NP难,这意味着你的解决方案总是会因大输入而失败。本文here,遗憾的是我无法访问,解决了这个问题,并以金属切割行业为例。

答案 2 :(得分:1)

答案 3 :(得分:1)

看起来它类似于背包问题(知道真的很讨厌)我在NIST DADS(方便参考)上发现这比非ACM成员更容易获得Bin Packing