我正在开展一个生产铝挤压切割清单的项目。
铝挤压件的长度为5米。
我有一个较小长度的列表,需要从5米长的铝挤压件中切割出来。
较小的长度需要按照从5米长的铝挤压产生最少量的切割废料的顺序进行切割。
目前我按照这样的方式订购切割清单,通常首先切割最长的较长长度,最后切割较短的较短长度。这条规则的例外是,如果较短的长度不适合5米长的铝挤压件的剩余长度,我会使用最长的较短长度。
这似乎产生了非常有效(非常少的切割废料)切割清单,并且不需要很长时间来计算。然而,我想,即使切割清单非常有效,它也不一定是最效率。
有没有人知道如何计算最有效的切割清单,可以在合理的时间内计算出来?
编辑:感谢您的答案,我将继续使用“贪婪”的方法,因为它似乎做得非常好(完成任何人类尝试创建有效的切割清单)并且速度非常快。 / p>答案 0 :(得分:13)
这是一个有效解决的经典难题。您描述的算法听起来像Greedy Algorithm。请查看此Wikipedia文章以获取更多信息:The Cutting Stock Problem
答案 1 :(得分:5)
我担心这个问题没有具体的想法 - 但是你可以看一下'genetic algorithm'(这会像 那样)......
将长度按随机顺序放置,并根据与理想解决方案的匹配程度给出该分数(假设0%浪费)。
然后,迭代地对订单进行随机更改并重新评分。如果得分较高,则抛弃结果。如果分数较低,请保留并将其用作下次计算的基础。继续前进,直到你的分数在可接受的范围内。
答案 2 :(得分:3)
您所描述的内容确实归类为Cutting Stock问题,如Wheelie所述,而不是Bin Packing问题,因为您尝试尽量减少浪费(剩余时间的总和)而不是使用的挤压数量。
这两个问题都很难解决,但你提到的“最适合”的算法(使用适合当前挤压的最长“小长度”)可能会给你非常好的答案,复杂度非常低
答案 3 :(得分:2)
答案 4 :(得分:1)
这是一个有趣的问题,因为我认为它取决于你生产的每个长度的数量。如果它们的数量相同,你可以将每个不同的长度放到一个5米的挤压上,那么你就有了最佳的解决方案。
然而,如果它们并非全部适合一个挤压,那么你就会遇到更大的问题。为了保持每个长度的切割量相同,您需要计算在一个挤出物上可以装入多少长度(不一定按顺序),然后按顺序进行每次挤出。
答案 5 :(得分:1)
我一直在努力解决这个问题(问题的长度是6米)问题。
我正在研究的解决方案有点难看,但我不满足于你的解决方案。让我解释一下:
库存量 5米
需要缩小尺寸(每个1个):
** 3,5
1
1,5 **
您的解决方案:
3,5 |浪费0,5 1
1,5 ,剩余3,5以上
看到问题?
我正在研究的解决方案 - >蛮力
1 - 测试每种可能的解决方案
2 - 按他们的浪费订购解决方案
3 - 选择最佳解决方案
4 - 从“Universe”中删除解决方案中的项目
5 - 转到1
我知道这很费时间(但我需要1小时30分才能吃午饭......所以...... :))
我真的需要最佳解决方案(我在excel中手工制作最佳解决方案(+ - ))不仅仅因为我很苛刻而且产品也不便宜。
如果有人有一个更好的解决方案我会喜欢它