切割优化算法

Var*_*ius 4 algorithm optimization cut

我和我的一些大学朋友被分配了一项实际任务,即开发用于优化从某种材料切割矩形零件的网络应用程序。类似于列表中的应用程序,但更简单。基本上,我对互联网上是否有此类优化算法的任何源代码感兴趣。我计划使用 Adob​​e Flex 框架开发该应用程序。编程部分将在 Actionscript 3, ofc 中完成。但是,我怀疑是否有针对此语言的任何优化示例。不过,可能有一些适用于 Java、C++、C#、Ruby 或 Python 以及其他更流行的语言(然后我只需要在 AS 中重写它)。所以,如果有人知道任何适合我的免费库或算法代码示例,我想听听您的建议。:)

Raf*_*afe 6

这听起来就像极其困难的库存切割问题 最好的解决方案使用线性编程(通常基于单纯形法)和列生成(即使在约束解决研究项目多年之后,我也觉得没有能力给出半体面的解释)。简而言之,您不会想在 Actionscript 中尝试这种方法;因此,无论你实施什么,除了小问题之外,你不应该指望得到好的结果。

那么,我能提供的最好建议是看看是否可以将源矩形切成条(每个您需要的最大矩形的宽度),然后在删除“头”矩形后细分每个条的剩余部分。

我建议使用分支定界作为优化策略。BnB 的工作原理是进行详尽的树搜索,跟踪迄今为止看到的最佳解决方案。当找到解决方案时,更新边界,然后回溯寻找下一个解决方案。每当您知道您的搜索将您带到一个分支,而您知道该分支无法带来比您找到的最佳解决方案更好的解决方案时,您可以在那时尽早回溯。

由于这些搜索树非常大,因此您可能希望对搜索设置时间限制,并尽最大努力返回。

希望这可以帮助。


cbr*_*nch 5

这对于您所需要的可能有点过分,但以下链接描述了一种可以为此类问题提供非常好的结果的方法:

http://www.intechopen.com/articles/show/title/a_greedy_algorithm_with_forward-looking_strategy

没有可用的代码,但算法描述得足够详细,实现起来并不难。我已经使用 C# 实现了这个(抱歉,无法共享该代码)并且对结果非常满意。


Kra*_*atz 2

当我想为我工作的木工公司做同样的事情时,我很难找到例子。该问题本身是 NP 困难的,因此您需要使用近似算法,例如首次拟合或最佳拟合算法。搜索 2d bin-packing 算法。我找到的,您将面板从大到小排序,然后按顺序将其添加到纸张中,放入第一个适合的箱子中。抱歉,我没有代码,而且它在 vb.net 中。