Lingo的典型应用举例研究

时间:2022-08-21 02:13:05

Lingo的典型应用举例研究

摘 要: Lingo可以用来求解很多规划问题,也可以用来求解方程组等,是数学建模比赛常用的数学软件。本文通过三个案例介绍Lingo的典型应用,说明了在数学实验课中加入Lingo内容的作用。

关键词: Lingo 典型应用 数学实验

Lingo可以用来求解各种规划问题,也可以用来求解方程组等,在经济管理方面有广泛应用,也是全国大学生数学建模比赛中经常用到的数学软件。在数学实验课中可以适当加入Lingo软件的内容,让学生认识到可以利用Lingo解决自己专业课程中的一些问题,下面以三个案例说明Lingo的典型应用。

1.下料问题

下料问题是Lingo应用中一类比较常见的问题,一维下料问题:设需要n种材料A1,A2,…,An,数量分别为bj,对一件固定长的原材料可以得出m种不同切割方法,下面举例说明用Lingo求解下料问题的方法。

例:某新型原材料每根长55厘米,现需要切割成三种长度的材料,长度分别为31厘米,21厘米,12厘米,数量分别为1000,2000,4000根,求最优的下料方式,使所需该新型原材料的总根数最少。

解:下料方式见表1:

表1 不同下料方式

设五种不同截法的根数分别为x1,x2,x3,x4,x5,建立模型:

min z=

s.t.x+≥1000,x+2x+x≥2000,2x+x+2x+4x≥4000,x≥0,i=1,2,…,5.

Lingo程序:

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

x1+x2>1000;

x1+2*x3+x4>2000;

2*x2+x3+2*x4+4*x5>4000;

@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);

运行结果为:共用料2250根,其中解法二1000根,截法三1000根,截法五250根。

2.指派问题

设有n项任务需分配给n个工人去做,每个工人做一项任务,由于各工人的工作效率不相同,所以完成同一任务所需时间也不同,设工人i完成任务j所需时间为Cij,问如何安排任务,能使完成所有任务所用时间总数最少?我们可以用Lingo求解,举例如下。

例:由A、B、C、D、E五个工人去完成a、b、c、d、e五个任务,每人完成一个任务,而且每个任务只能由一个人去完成,五个人分别完成各个任务所需时间如表2所示,请合理安排任务,使得总时间最少。

表1 各人完成各个任务所需时间

解:建立数学模型:min= xc

s.t. x=1 i=1,…,5x=1 j=1,…,5x=0或1 i,j=1,…,5

此为0-1规划模型,lingo程序如下:

model:

sets:

gongren/g1..g5/;

renwu/r1..r5/;

links(gongren,renwu):d,x;

endsets

data:

d=9 12 7 11 9

8 6 10 9 12

7 4 3 5 8

4 6 7 5 11

9 5 8 11 8;

enddata

min=@sum(links:d*x);

@for(gongren (i):@sum(renwu(j):x(i,j))=1);

@for(renwu(j):@sum(gongren(i):x(i,j))=1);

@for(links:@bin(x));!限制为0-1变量

End

运行程序得x13,x22,x34,x41,x55等于1,其他变量都等于0,代表工人A完成任务c,B完成任务b,C完成任务d,D完成任务a,E完成任务e。目标函数值为30。

3.装箱问题

装箱问题是应用广泛的优化问题,例如,用箱子装运货物,我们总是想用最少的箱子装完货物。装箱问题可以描述为:设箱子长为d,货物长为wi(wi

例3:已知有60个货物,其中12个长5.1米,12个长2.7米,12个长2.6米,剩下24个长2.3米,货箱长10米。请计算最少要多少个货箱才能把60个货物全部装进货箱。

解:用Lingo编程如下:

MODEL:

sets:

hw/h1..h60/:h; hx/V1..v60/:Y; LINKS(hw,hx):X;

ENDSETS

DATA:

h=5.1,5.1,5.1,5.1,5.1,5.1,5.1,5.1,5.1,5.1,5.1,5.1,

2.7,2.7,2.7,2.7,2.7,2.7,2.7,2.7,2.7,2.7,2.7,2.7,

2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,

2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,

2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3;

ENDDATA

MIN=@SUM(hx(I):Y(I));

d=10; !C是箱子长度;

@for(hx:@bin(Y)); !限制Y是0-1变量;

@for(LINKS:@bin(X)); !限制X是0-1变量;

@FOR(hw(I):@SUM(hx(J):X(I,J))=1);

!每个物品只能放入一个箱子;

@FOR(hx(J):@SUM(hw(I):h(I)*X(I,J))<=d*Y(J));

!每个箱子内物品的总长度不超过箱子长度;

END

运行程序得结果为18,即为Lingo找到的最优解。

通过以上案例我们可以看出,利用Lingo软件可以解决一些典型应用问题,对于学生学习专业课程大有帮助。在全国大学生数学建模竞赛中也有很多赛题可以用Lingo求解,为此,我们在数学实验课中有必要介绍Lingo软件的应用。

参考文献:

[1]袁新生.Lingo和Excel在数学建模中的应用[M].北京:科学出版社,2007,01.

[2]谢金星.优化建模与LINDO/LINGO软件[M].北京:清华大学出版社,2005,07.

[3]瞿勇.LINGO软件在数学建模中的典型应用举例[J].计算机光盘软件与应用,2014(05).

上一篇:谈数学解题中发掘隐含条件的若干途径 下一篇:多元函数的极值与最值