钢管下料问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
钢管下料问题1
某钢管零售商从钢管厂进货,将钢管按照顾客要求的长度进行切割,称为下料。
假定进货时得到的原料钢管长度都是19m。
1)现有一客户需要50根长4m、20根长6m和15根长8m的钢管。
应如何下料最节省?
2)零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本。
所以该零售商规定采用的不同切割模式不能超过3种。
此外。
该客户除需要1)中的3种钢管外,还要10根长5m的钢管。
应如何下料最节省?
基本假设:
问题1)用xi表示按照表3第i种模式(i=1,2,…,7)切割的原料钢管的根数,若以切割后剩余的总余料量最小为目标,则按照表3最后一列可得
minZ1 = 3x1+x2+3x3+3x4+x5+x6+3x7 (1)
若以切割原料钢管的总根数最少为目标,则有
表3 钢管下料问题1)的合理切割模式
模式4m钢管根数6m钢管根数8m钢管根数余料/m
1 4 0 0 3
2 3 1 0 1
3 2 0 1 3
4 1 2 0 3
5 1 1 1 1
6 0 3 0 1
7 0 0 2 2
MinZ2 = x1+x2+x3+x4+x5+x6+x7 (2)
约束条件为客户的需求,按照表3应有
4x1+3x2+2x3+x4+x5 ≥ 50 (3)
x2+2x4+x5+3x6 ≥ 20 (4)
x3+x5+2x7 ≥ 15 (5)
最后,切割的原料钢管的根数xi显然应当是非负整数(用Z表示整数集合,Z+表示非负整数集合):
xi ∈Z+ ,i=1,2,…,7 (6)
于是,问题1)归结为在约束条件(3)~(6)下,使目标(1)或目标(2)达到最小。
显然这是线性整数规划模型。
问题2)如果按照问题1)的办法处理,首先要通过枚举法确定哪些切割模式是合理的,并从中选出不超过3种模式。
而由于需求的钢管规格增加到4种,所以枚举法的工作量较大。
下面介绍一种带有普遍性的方法,可以同时确定切割模式和切割数量。
同问题1)一样,只使用合理的切割模式,其余料不应大于3m(因为客户需要的钢管最小尺寸为4m,而本题中参数都是整数)。
由于不同切割模式不能超过3种,可以用用xi表示按照第i种模式(i=1,2,3)切割的原料钢管的根数。
又设使用第i种切割模式下每根原料钢管生产长4m、5m、6m和8m的钢管数量分别为r1i,r2i,r3i,r4i。
仅以使用的原料总根数最少为目标,即
Min x1+x2+x3 (7)
满足客户需求的约束条件为
r11x1+r12x2+r13x3 ≥ 50 (8)
r21x1+r22x2+r23x3 ≥ 10 (9)
r31x1+r32x2+r33x3 ≥ 20 (10)
r41x1+r42x2+r43x3 ≥ 15 (11)
每一种切割模式必须可行、合理,所以每根原料钢管的成品量不能超过19m,也不能少于16m(余料不能大于3m),于是
16≤4r11+5r21+6r31+8r41 ≤19 (12)
16≤4r12+5r22+6r32+8r42 ≤19 (13)
16≤4r13+5r23+6r33+8r43 ≤19 (14)
最后,加上非负整数约束:
xi,rji ∈Z+ ,i=1,2,3, j=1,2,3,4 (15)
于是,问题2)归结为在在约束条件(8)~(15)下,求xi和r1i,r2i,r3i,r4i(i=1,2,3)使目标(7)达到最小。
显然这是线性整数规划模型。
用LINGO求解整数规划
钢管下料问题(1)的求解
将式(1),式(3)~(6)构成的线性整数规划模型输入LINDO如下:
min 3x1+x2+3x3+3x4+x5+x6+3x7
s.t
4x1+3x2+2x3+x4+x5>=50
x2+2x4+x5+3x6>=20
x3+x5+2x7>=15
END
gin7
求解可以得到最优解如下:
OBJECTIVE FUNCTION VALUE
1) 27.00000
VARIABLE VALUE REDUCED COST
X1 0.000000 3.000000
X2 12.000000 1.000000
X3 0.000000 3.000000
X4 0.000000 3.000000
X5 15.000000 1.000000
X6 0.000000 1.000000
X7 0.000000 3.000000
即按照模式2切割12根原料钢管,按照模式5切割15根原料钢管,共27根,总余料量27m。
显然,在总余料量最小的目标下,最优解将是使用余料尽可能小的切割模式(模式2和模式5的余料为1m),这会导致切割原料钢管的总根数较多。
将式(2)~(6)构成的线性整数规划模型输入LINDO求解,可以得到最优解如下:
OBJECTIVE FUNCTION VALUE
1) 25.00000
VARIABLE VALUE REDUCED COST
X1 0.000000 1.000000
X2 15.000000 1.000000
X3 0.000000 1.000000
X4 0.000000 1.000000
X5 5.000000 1.000000
X6 0.000000 1.000000
X7 5.000000 1.000000
即按照模式2切割15根原料钢管,按照模式5切割5根原料钢管,按照模式7切割5根原料钢管,共25根,总余料量35m。
与上面得到的结果相比,总余料量增加了8m,但是所用的原料钢管的总根数减少了2根,在余料没有什么用途的情况下,通常选择总根数最少为目标。
钢管下料问题(2)的求解
非线性整数规划模型(7)~(15)虽然用LINGO软件可以直接求解,但为了减少运行时间,可以增加一些显然的约束条件,从而缩小可行解的搜索范围。
例如,由于3种切割模式的排列顺序是无关要紧的,所以不妨增加以下约束:
x1≥x2≥x3 (16)
又如,注意到所需原料钢管的总根数有明显的上界和下界。
首先,原料钢管的根数不可能少于
(根)。
其次,考虑一种非常特殊的生产计划:第一种切割模式下只生产4m钢管,一根原料钢管切割成4根4m钢管,为满足50根4m钢管的需求,需要13根原料钢管;第二种切割模式下只生产5m,6m钢管,一根原料钢管切割成1根5m钢管和2根6m钢管,为满足10根5m和20根6m钢管的需求,需要10根原料钢管;第三种切割模式下只生产8m钢管,一根原料钢管切割成2根8m钢管,为满足15根8m钢管的需求,需要8根原料钢管。
于是满足要求的这种生产计划共需要13+10+8=31根原料钢管,这就得到了最优解的一个上界,所以可增加以下约束:
26≤x1+x2+x3≤31 (17)
将式(7)~(17)构成的模型输入LINGO如下:
model:
min=x1+x2+x3;
r11*x1+r12*x2+r13*x3>=50;;
r21*x1+r22*x2+r23*x3>=10;
r31*x1+r32*x2+r33*x3>=20;
r41*x1+r42*x2+r43*x3>=15;
4*r11+5*r21+6*r31+8*r41<=19;
4*r12+5*r22+6*r32+8*r42<=19;
4*r13+5*r23+6*r33+8*r43<=19;
4*r11+5*r21+6*r31+8*r41>=16;
4*r12+5*r22+6*r32+8*r42>=16;
4*r13+5*r23+6*r33+8*r43>=16;
x1+x2+x3>=26;
x1+x2+x3<=31;
x1>=x2;
x2>=x3;
@gin(x1);@gin(x2);@gin(x3);
@gin(r11);@gin(r12);@gin(r13);
@gin(r21);@gin(r22);@gin(r23);
@gin(r31);@gin(r32);@gin(r33);
@gin(r41);@gin(r42);@gin(r43);
end
得到输出如下:
Local optimal solution found at iteration: 12211
Objective value: 28.00000
Variable Value Reduced Cost
X1 10.00000 0.000000
X2 10.00000 2.000000
X3 8.000000 1.000000
r11 3.000000 0.000000
r12 2.000000 0.000000
r13 0.000000 0.000000
r21 0.000000 0.000000
r22 1.000000 0.000000
r23 0.000000 0.000000
r31 1.000000 0.000000
r32 1.000000 0.000000
r33 0.000000 0.000000
r41 0.000000 0.000000
r42 0.000000 0.000000
r43 2.000000 0.000000
即按照模式1,2,3分别切割10根,10根,8根原料钢管,使用原料钢管总根数为28根。
第一种切割模式下一根原料钢管切割成3根4m钢管和1根6m钢管;第二种切割模式下一根原料钢管切割成2根4m钢管,1根5m钢管和1根6m钢管;第三种切割模式下一根原料钢管切割成2根8m钢管。