沙河市论坛

首页 » 问答 » 灌水 » Lingo的典型应用举例研究76839
TUhjnbcbe - 2020/7/2 12:56:00
北京哪个医院可彻底治愈白癜风

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


此为规划模型,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));!限制为变量


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是变量;


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


@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).

1
查看完整版本: Lingo的典型应用举例研究76839