【问题标题】:Cut optimisation algorithm切割优化算法
【发布时间】:2011-05-20 15:00:57
【问题描述】:

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

【问题讨论】:

    标签: algorithm optimization cut


    【解决方案1】:

    这听起来就像stock cutting problem,这非常难!最好的解决方案使用线性规划(通常基于单纯形法)和列生成(即使经过多年的约束求解研究项目我觉得没有能力给出一个半体面的解释)。简而言之,您不会想在 Actionscript 中尝试这种方法。因此,无论您做什么实施,除了小问题之外,您不应该期望在任何事情上都能取得好的结果。

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

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      当我想为我工作的木工公司做同样的事情时,我很难找到例子。问题本身是 NP 难的,因此您需要使用近似算法,如第一次拟合或最佳拟合算法。 搜索二维装箱算法。我找到的那个,你将面板从大到小排序,然后按顺序将它们添加到工作表中,放入第一个适合的垃圾箱。抱歉,无论如何我都没有代码,它在 vb.net 中。

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • @MarioPetrovic:对于不包含链接的帖子,这是一个奇怪的评论理由。我猜你的意思是答案建议搜索某些东西,这有点像一个链接,但实际上没有包含链接?
      • 我猜它应该是一个评论作为评论。我的坏
      • @MarioPetrovic 这个问题本身应该在询问软件建议时结束。
      • 是的,这是有道理的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2015-04-28
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多