用LINGO求解整数规划的例子

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附1:用LINGO求解整数规划的例子。

某钢管零售商从钢管厂进货,将钢管按照顾客要求的长度进行切割,称为下料。假定进货时得到的原料钢管长度都是19m。

1)现有一客户需要50根长4m、20根长6m和15根长8m的钢管。应如何下料最节省?

2)零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本。所以该零售商规定采用的不同切割模式不能超过3种。此外。该客户除需要1)中的3种钢管外,还要10根长5m的钢管。应如何下料最节省?

问题分析:对于下料问题首先要确定采用哪些切割模式。所谓切割模式,是指按照顾客要求的长度在原料钢管上安排切割的一种组合。例如,我们可以将19m的钢管切割成3根长4m的钢管,余料为7m;或者将长19m的钢管切割成长4m、6m和8m的钢管各1根,余料为1m。显然,可行的切割模式是很多的。

其次,应当明确哪些切割模式是合理的。合理的切割模式通常还假设余料不应大于或等于客户需要钢管的最小尺寸。例如,可以将长19m的钢管切割成3根4m的钢管是可行的,但余料为7m,可进一步将7m的余料切割成4m钢管(余料为3m),或者将7m的余料切割成6m钢管(余料为1m)。经过简单的计算可知,问题1)的合理切割模式一共有7种,如表1所示:

于是问题转化为在满足客户需要的条件下,按照哪几种合理的模式,每种模式切割多少根原料钢管最为节省。而所谓节省,可以有两种标准,一是切割后剩余的总余料量最小,二是切割原料钢管的总根数最少。下面将对这两个目标分别讨论。

问题1)用x i表示按照表1第i种模式(i=1,2,…,7)切割的原料钢管的根数,若以切割后剩余的总余料量最小为目标,则按照表1最后一列可得

minZ1 = 3x1+x2+3x3+3x4+x5+x6+3x7

若以切割原料钢管的总根数最少为目标,则有

表1 钢管下料问题1)的合理切割模式

MinZ2 = x1+x2+x3+x4+x5+x6+x7

约束条件为客户的需求,按照表1应有

4x1+3x2+2x3+x4+x5≥ 50

x2+2x4+x5+3x6≥ 20

x3+x5+2x7≥ 15

最后,切割的原料钢管的根数x i显然应当是非负整数(用Z表示整数集合,Z+表示非负整数集合):x i∈ Z+,i=1,2,…,7

于是,问题1)归结为在约束条件下,使目标达到最小。显然这是线性整数规划模型。

问题2)如果按照问题1)的办法处理,首先要通过枚举法确定哪些切割模式是合理的,并从中选出不超过3种模式。而由于需求的钢管规格增加到4种,所以枚举法的工作量较大。下面介绍一种带有普遍性的方法,可以同时确定切割模式和切割数量。

同问题1)一样,只使用合理的切割模式,其余料不应大于3m(因为客户需要的钢管最小尺寸为4m,而本题中参数都是整数)。

由于不同切割模式不能超过3种,可以用用x i表示按照第i种模式(i=1,2,3)切割的原料钢管的根数。又设使用第i种切割模式下每根原料钢管生产长4m、5m、6m和8m的钢管数量分别为r1i,r2i,r3i,r4i。

仅以使用的原料总根数最少为目标,即

min x1+x2+x3

满足客户需求的约束条件为

r11x1+r12x2+r13x3≥ 50

r21x1+r22x2+r23x3≥ 10

r31x1+r32x2+r33x3≥ 20

r41x1+r42x2+r43x3≥ 15

每一种切割模式必须可行、合理,所以每根原料钢管的成品量不能超过19m,也不能少于16m(余料不能大于3m),于是

16≤4r11+5r21+6r31+8r41≤19

16≤4r12+5r22+6r32+8r42≤19

16≤4r13+5r23+6r33+8r43≤19

最后,加上非负整数约束:

x i,r ji∈ Z+,i=1,2,3, j=1,2,3,4

于是,问题2)归结为在在约束条件下,求x i和r1i,r2i,r3i,r4i(i=1,2,3)使目标达到最小。当然,这是一个整数非线性规划模型。

用LINGO求解整数规划

LINGO软件用于线性或非线性规划(无论是连续规划还是整数规划),因此包含了LINDO的功能。在LINGO中,所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用bin(x1)表示x1为0-1整数。

钢管下料问题1)的求解

以切割后剩余的总余料量最小为目标,建立LINGO模型:

min= 3*x1+x2+3*x3+3*x4+x5+x6+3*x7;

4*x1+3*x2+2*x3+x4+x5 >=50;

x2+2*x4+x5+3*x6 >= 20;

x3+x5+2*x7 >= 15;

@gin(x1);

@gin(x2);

@gin(x3);

求解可以得到最优解如下:

OBJECTIVE FUNCTION VALUE

1) 27.00000

VARIABLE V ALUE REDUCED COST

X10.000000 3.000000

X212.000000 1.000000

X30.000000 3.000000

X40.000000 3.000000

X515.000000 1.000000

X60.000000 1.000000

X70.000000 3.000000

即按照模式2切割12根原料钢管,按照模式5切割15根原料钢管,共27根,总余料量27m。显然,在总余料量最小的目标下,最优解将是使用余料尽可能小的切割模式(模式2和模式5的余料为1m),这会导致切割原料钢管的总根数较多。

以切割原料钢管的总根数最少为目标,建立LINGO模型:

min= x1+x2+x3+x4+x5+x6+x7;

4*x1+3*x2+2*x3+x4+x5 >=50;

x2+2*x4+x5+3*x6 >= 20;

x3+x5+2*x7 >= 15;

@gin(x1);

@gin(x2);

@gin(x3);

@gin(x4);

@gin(x5);

@gin(x6);

@gin(x7);

求解可以得到最优解如下:

OBJECTIVE FUNCTION VALUE

1) 25.00000

VARIABLE V ALUE REDUCED COST

X10.000000 1.000000

X215.000000 1.000000

X30.000000 1.000000

X40.000000 1.000000

X5 5.000000 1.000000

X60.000000 1.000000

X7 5.000000 1.000000

即按照模式2切割15根原料钢管,按照模式5切割5根原料钢管,按照模式7切割5根原料钢管,共25根,总余料量35m。与上面得到的结果相比,总余料量增加了8m,但是所用的原料钢管的总根数减少了2根,在余料没有什么用途的情况下,通常选择总根数最少为目标。

相关文档
最新文档