机械下料中的套料优化问题|整数规划|python|scipy|
- 线性规划(LP)中的决策变量为整数的问题称为整数规划(Integer Linear Programming,ILP)
下料优化的问题描述
一家机械厂要生产120套钢架,每套要用长2.9m、2.1m和1.5m的型钢各一根。已知原料长为7.4m,问应该如何下料最经济?
规格(m) | 所需件数 |
---|---|
2.9 | 120 |
2.1 | 120 |
1.5 | 120 |
问题分析:
在定长为7.4m的原料上裁剪3种不同长度的钢材,可以分析出8种不同的下料方案:
下料尺寸 | A | B | C | D | E | F | G | H |
---|---|---|---|---|---|---|---|---|
2.9m(根) | 1 | 2 | 0 | 1 | 0 | 1 | 0 | 0 |
2.1m(根) | 0 | 0 | 2 | 2 | 1 | 1 | 3 | 0 |
1.5m(根) | 3 | 1 | 2 | 0 | 3 | 1 | 0 | 4 |
余料m | 0 | 0.1 | 0.2 | 0.3 | 0.8 | 0.9 | 1.1 | 1.4 |
该问题即求如何规划使用这8中方案,使得满足120套钢架的制造要求,且方案最经济。
需要搞清楚下料优化问题的目标是什么?是使剩余的料头最少,还是所需原材料数量最少?注意过量生产也是浪费。
首先以残余的材料最少为目标。
设 x i x_i xi表示第 i i i种下料方案利用的原料数量,则该问题的目标是总浪费最小 Z = 0.1 x 2 + 0.2 x 3 + 0.3 x 4 + 0.8 x 5 + 0.9 x 6 + 1.1 x 7 + 1.4 x 8 Z=0.1x_2+0.2x_3+0.3x_4+0.8x_5+0.9x_6+1.1x_7+1.4x_8 Z=0.1x2+0.2x3+0.3x4+0.8x5+0.9x6+1.1x7+1.4x8,同时还需满足以下约束条件:
- 2.9m规格钢材数量: x 1 + 2 x 2 + x 4 + x 6 ≥ 120 x_1+2x_2+x_4+x_6 \geq 120 x1+2x2+x4+x6≥120;
- 2.1m规格钢材数量: 2 x 3 + 2 x 4 + x 5 + x 6 + 3 x 7 ≥ 120 2x_3+2x_4+x_5+x_6+3x_7 \geq 120 2x3+2x4+x5+x6+3x7≥120;
- 1.5m规格钢材数量: 3 x 1 + x 2 + 2 x 3 + 3 x 5 + x 6 + 4 x 8 ≥ 120 3x_1+x_2+2x_3+3x_5+x_6+4x_8 \geq 120 3x1+x2+2x3+3x5+x6+4x8≥120;
- 非负约束: x i ≥ 0 x_i \geq 0 xi≥0且为整数;
数据建模:
在本例中,数学模型如下:
m i n Z = 0.1 x 2 + 0.2 x 3 + 0.3 x 4 + 0.8 x 5 + 0.9 x 6 + 1.1 x 7 + 1.4