Algorithm 割优化算法

Algorithm 割优化算法,algorithm,optimization,cut,Algorithm,Optimization,Cut,我和我在大学的一些朋友被分配了一项实际任务,即开发一个网络应用程序,用于优化从某种材料上切割矩形零件。类似于列表中的应用程序,但更简单。基本上,我感兴趣的是,在互联网上是否有这种优化算法的源代码。我计划使用AdobeFlex框架开发这个应用程序。编程部分将在ofc的Actionscript 3中完成。然而,我怀疑这种语言是否有任何优化示例。可能有一些java、C++、C语言、Ruby或Python和其他更流行的语言,但是我只需要在As中重写它。所以,如果有人知道任何适合我的免费libs或算法代码

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

当我想为我工作的木工公司做同样的事情时,我很难找到例子。这个问题本身是NP难的,所以你需要使用近似算法,比如第一次拟合或最佳拟合算法。
搜索二维装箱算法。我找到的那个,你把面板从大到小排序,然后按顺序把它们放进第一个合适的箱子。很抱歉,我身上没有代码,而且它在vb.net中也没有。

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

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

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

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

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

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

希望这有帮助