
运筹学上机实践报告.docx
13页运筹学实验报告姓名:学号:班级:采矿1103教师:(一) 实验目的(1) 学会安装并使用Lingo软件(2) 利用Lingo求解一般线性,运输,一般整数和分派问题(二) 实验设备(1) 计算机(2) Lingo 软件(三) 实验步骤(1) 打开已经安装Lingo软件的计算机,进入Lingo(2) 建立数学模型和Lingo语言(3) 输入完Lingo语言后运行得出求解结果LINGO是用来求解线性和非线性规 化问题的简易工具LINGO内置了一种建立最优化模型的语言,可以简便地表达 大规模问题,利用LINGO高效的求解器可快速求解并分析结果当在windows 下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下在主窗口内的标题为LINGO Model - LINGO1的窗口是LINGO的默认 模型窗口,建立的模型都都要在该窗口内编码实现下面是以一般线性,运输, 一般整数和分派问题为例进行实验的具体操作步骤:A:一般线性规划问题数学模型课本31页例11) 求解线性规划: Minz=-3x1+x2+x3x1 - 2x2 + x3<=11 -4x1 + x2 + 2x3>=3 -2x1 + x3=1x1,x2,x3>=0 打开lingo输入 min=-3*x1+x2+x3; x1-2*x2+x3<=11;-4*x1+x2+2*x3>=3; -2*x1+x3=1;End如图所示:然后按工具条的按钮运行出现如下的界面,也即是运行的结果和所求的解:结果分析:却ongo运行的结果界面可以得到最优解*(x1,x2,x3)T=(4,1,9)最优目标函数z=-2.到此运用lingo解决了一般线性规划问题B:运输问题数学模型(课如页例1)例1 某公司有三个生产同类产品的加工厂(产地生产的产品由四个销售点(销地) 出售,各加工厂的生产量,各销售点的销售量(假设单位均为吨)以及各个加工厂到各 销售点的单位运价(他)是如下表,问产品如何调运才能使总运费最小?产销B1B2B3B4产量A14124118A2210395A38511611销量776724运用lingo软件,编制程序的程序解发点4收点的运输问题:Model:Sets:Xiao/1..4/:s;Chan/1..3/:h;Link(chan,xiao):x,y;EndesetsData:Y=4 12 4 112 10 3 98 5 11 6H=8 5 11;S=4 7 6 7;EnddataMin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j);@for(chan(i):@sum(xiao(j):x(i,j))=h(i);此 时 lingo 的 框 内 如 下 所 示Global optiiEal solution found.Objective value:Infeasibilities:Total 3olver iterations:122.0000O.OOQO7AVariaEileValueReduced Costst1)4.Q000000.000000st2}7.0000000.000000st3}6.0000000.000000stA)7.0000000.000000Ht1)S.0000000.000000Ht2)5.0000000.000000—Ht3}12.000000.000000X(1.I)0.0000000.000000X(1.2}0.0000002.000000X(1.3}6.0000000.000000X(L4}2.00Q000O.0QOO0QX(1)4.0000000.000000X(2}0.0000002.000000X(3}0.Q000001.000000X(4】1.000000Q.0QOO0OX(3.1)0.0000009.000000X(3.2}7.000000Q.0QOO0OX(3r3}0.Q0000012.Q000QTX(MJ7 ・ UUUUUUU ・ UUUUUQX(3)0.00000012.00000X(4).0000000.000000Y(L1).0000000.000000Y(L2)12.000000.000000Y(L3)4.0000000.000000Y(LW11.000000.000000Y(2 /1)2.0000000.000000Y(2,2)10.000000.000000Y(2,3)3.0000000.000000Y(2 ,目)9.0000000.000000Y(3,1)8.0000000.000000Y(3)5.0000000.000000Y(3.3)11.00000a.ooooooY(4)€.0000000.000000RowSlack or SurplusDaial Price1122.0000-1.00000020.0000000.00000030.000000-fi.00000040.0000000.00000050.000000-7.000000结果:由long o运行的结果界面可以得到该运输问题的最优运输方案为运B3;运2 吨至B4,由入2运4吨至B1,运1吨至B4,由A3运吨7至B2,运4吨至B4,此时对应的的目 标函数值为2=6X4+2X11+4X2+1X9+7X5+4X6+122(到此lingo软件已经解决了运输问题。
C: 一般整数规划问题数学模型(课本20页习题.2)用lingo软件解决如下的整数规划问题:Maxz=4x1+3x23x1+4x2<=124x1+2x2<=9X1,x2>=0X1,x2为整数打开lingo输入如下程序:Model:Max=4*x1+3*x2;3*x1+4*x2<=12;4*x1+2*x2<=9;@gin(x1);@gin(x2);End此时ling的框内如下所示:回 UNGO 11.0 - UNGO Model - LJNGO1 |「面~十*|File Edit UNGO Window Help口同日阊 jc|龟|禽 9辰|工|昏|秘|亶|别■[区|冒回昌 @|峻11? LINGO Model - LINGO1model:ir.ax =4frxl+3*x2;3*xl+4*x2<=12;4*xl+2*x2<=9;®gin(xl);@gin(x2);End ||For Help, press Fl ~[NUMr[ ~\MOD \ 加 1$ Col 5 | 9然后按工具条的旦按钮运行出现如下的界面,也即是运行的结果和所求的解:结果分析:却ongo运行的结果界面可以得到此整数规划的最优解1,乂2=2此时的最 优解:Z=10到此运用lingo软件已经解决了一般整数问题。
D:分派问题数学模型(课本 14页例6)例6 有五个工人,要分派他们分别完成工作,每人做各项工作所消耗的时间如下表 所示,问应分派哪个人去完成哪项工作,可以使总的消耗时间最小?工人工作ABCDE甲56845乙34661丙55798丁67576戊74628打开lingo输入如下程序:Model:!5个工人,5个工作的分配问题,设甲,乙,丙,丁,戊五个工人分,别用,4,表示;Sets:workers/1..5/;Jobs/A..E/;Links(workers,job):cost,volume;Endsets!目标函数;Min=@sum(links:cost*volume);!每个工人只能有一份工作;@for(job(j):volume(i,j))=1;);!每份工作只能有一个工人@for(jobs(j):@sum(workers(i):volume(i,j));Data:Cost=5 6 8 4 53 4 6 6 15 5 7 9 86 7 5 7 67 4 6 2 8;EnddataEnd此时ling的框内如下所示:然后按工具条的按钮运行出现如下的界面,也即是运行的结果和所求的解:Global optimal solution found.18.000000.0000007Objective value:Infeasibilities:Total solver iterations:VariableValueReduced CostCOST( 1, A)5.0000000.000000COST( 1, B)6.0000000.000000COST( 1, C)8.0000000.000000COST( 1, D)4.0000000.000000COST( lf E)5.0000000.000000COST( 2Z A)3.0000000.000000COST( 2Z B)4.0000000.000000COST( 2Z C)6.0000000.000000COST( 2Z D)6.0000000.000000COST( 2f E)1.0000000.000000COST( 3Z A)5.0000000.000000COST( 3Z B)5.0000000.000000COST( 3Z C)7.0000000.000000COST( 3Z D)9.0000000.000000COST( 3, E)8.0000000.000000COST( 4, A)6.0000000.000000COST( 4, B)7.0000000.000000COST( 4, 。












