我有以下算法问题:
根据客户订单描述不同长度的多种木材,精度为小数点后2位。 例如:2 * 1,50; 2 * 0,50(需要4根木材,2根长度为1,50米,2根长度为0.50米)。
库存中的木材数量不限,但固定长度分别为2,3,4和5米。 客户订单中的木材需要从库存的横梁上切割下来。切割本身具有0厚度作为理想化。 任何光束长度>客户订单中不可能有5,00米。
目标是在完成客户订单后最大限度地减少木材浪费。如果有多种解决方案,浪费最少,那么最少量的解决方案就是最佳解决方案。
在上面提到的客户订单示例中,人们将从库存中取出两块2,00米的木材,并在0.5和1.5米的块中切割它们。 因此,算法会产生浪费= 0,有2次削减。
Example 1:
Customer order: 2 * 1,50 ; 2 * 0,50
Output:
Total waste: 0
Total cuts: 2
2,00 --> 1,50 ; 0,50 waste 0
2,00 --> 1,50 ; 0,50 waste 0
Example 2:
Customer order: 2 * 2,48 ; 1 * 2,68 ; 2 * 3,12 ; 1 * 1,32; 2 * 1,33 ; 1 * 1,34
Output:
Total waste: 1,80
Total cuts: 7
4,00 --> 1,33 ; 1,33 ; 1,34 waste 0
4,00 --> 2,68 ; 1,32 waste 0
4,00 --> 3,12 ; waste 0,88
4,00 --> 3,12 ; waste 0,88
5,00 --> 2,48 ; 2,48 waste 0,04
对于客户订单中给定数量的梁,蛮力方法的性能非常差。
有人想要一个好的算法方法吗? 关于大复杂性的任何想法?