1.2 菜单介绍1.2.1 File1 New新建一个窗口, 当你执行这个命令时, 会出现如下对话框:你可以在对话框中选择你想要建立的类型. 类型如下:1)扩展名为(*.lg4)LG4格式是LINGO4.0的版本,是在Windows下最主要的储存文件格式, 这种格式支持字体格式, 自定义格式以及动态连接, LG4以二进制格式存储, 所以不能被其它的应用软件直接读取.2)扩展名为(*.lng)LNG是捷便的存储方式,是4.0版本前的标准文件格式,为了与前版本的兼容,所以还一直在用,LNG文件是以ASCII形式存储的,所以能被支持文本文件的应用程序读取.该格式不支持多种字体.3)扩展名为(*.ltd)LTD是数据文件, 可以从@FILE函数导入数据,@FILE函数只能读取文本文件,所以所有的LTD文件是以ASCII形式存储, 也不支持多种字体.4)扩展名为(*.ltf)LTF是LINGO的调试文件格式, 也是以ASCII格式存储,能直接被LINGO的File|Take command执行.2 Log Output输出文本文件,可以将随后原输出到报告窗口的内容输出到文本中. 该命令与Maple 中的writeto命令非常相似.在Maple中输入如下:> x:=sin(5.);writeto("c://maple.txt");y:=x+1:print(x,y);print(x);> y;> writeto(terminal);> y;执行菜单中的Edit|Excute|Worksheet, 按钮,窗口重新显示如下:> x:=sin(5.);writeto("c://maple.txt");y:=x+1:print(x,y);print(x);x:=-.9589242747> y;> writeto(terminal);> y;0.4010757253而在C盘的maple.txt文件的内容为:-.9589242747, .0410757253-.9589242747.0410757253从中可以知道,用了writeto(filename)命令以后把结果输出到filename 中. 直到碰到writeto(terminal)命令时,才重新在工作窗口中显示.当你点击菜单File|Log Output时,系统出现保存对话框,系统就会将命令窗口中的输出结果保存到指定的文件中.3 Import LINDO File该命令是用来导入LINDO软件保存的LINDO文件(*.LTX)格式. 只要在LINGO中导入LINDO文件格式, LINGO系统自动将该文件转化为LINGO可执行语句.1.2.2 Edit1 Paste Function用该命令可以在当前点插入LINGO的内部函数,2 Select Fonts设置字体类型, 字体大小,字体颜色.1.2.3 LINGO1 Solve用solve命令对当前窗口中的模型求解, 该命令只对report script窗口起作用, 不能对数据窗口求解.当你对一个模型进行求解, LINGO首先检查该模型的语句格式是否正确, 如果LINGO 发现在语句中存在错误, 将会出现类似于如下的对话框:在上图的Error Text框中, LINGO提示发生语句错误的行数及该行的内容. 在通常情况下, LINGO系统能很好的指出错误, 但是有时也会提供错误的信息.如果在编译的过程中没有语法的错误, LINGO将调用适当的内部函数对模型进行优化求解. 假如我们在工作窗口输入如下内容:点击菜单LINGO|SOLVE,或者点击工具栏,将会在屏幕上显示LINGO解的状态窗口(Solver Status Windows):该状态窗口用于跟踪整个求解过程, 下面我们将详细的描写该窗口中的一些主要的内容.1)按钮在解的状态窗口提供了两个按钮, 一个为关闭按钮(Close), 另一个是打断(interrupt Solver)求解按钮,该按钮的作用是阻止LINGO求解下一个迭代. 在线性模型中,LINGO 一般能给出优化解(除整数规划时没有整数解),如果这线性模型被打断了,LINGO返回的将是无意义的, 应该被忽略的值.注意:如果你按了interrupt solver这个按钮, 解的情况是这样的:•毫无疑问这不是最优解;•解可能不能全部满足约束条件;•如果这个是线性模型,这个解毫无意义.2)文本框在该窗口中有一个文本框, 该文本框的作用是更新状态窗口的相隔时间, 单位为秒, 在默认时为2秒.3)状态窗口(Solver Status Box)状态窗口的详细的介绍如下:其中一旦LINGO处理完成该模型, 建立一个包括该模型解的报告(Solve Report)窗口. 你可以通过拉窗口的滚动条, 检查该窗口内部的内容. 该窗口如下:第一:Solution Report告诉我们求该模型迭带的次数是0次;第二:该目标函数的最大值是1.285714;第三:取到最优值时变量X、Y分别为1.142857、0.1428571.我们用数学软件Maple来验证该结果:> with(simplex):maximize( x+y, {4*x+3*y <= 5, 3*x+4*y <= 4 } );> evalf(%);比较LINGO与Maple所求的结果, 完全一致.在Solution Report中还包括The Reduced Costs, Slack or Surplus, Dual Price栏.Reduced Cost:假设X的reduce cost值为10,则X系数加上10时,求优化模型变量取值不变. 例如下模型:MAX = 4.0 * TOM + 3.0 * DICK +2.0 *HARRY;2.5 * TOM +3.1 *HARRY <= 5;2.0 * TOM + 0.7 * DICK +0.4 *HARRY <= 1;求解得到solution report如下:Global optimal solution found at iteration: 0Objective value: 10.57143Variable Value Reduced CostTOM 2.000000 0.000000DICK 0.8571429 0.000000HARRY 0.000000 3.611429Row Slack or Surplus Dual Price1 10.57143 1.0000002 0.000000 1.2571433 0.000000 4.285714该解中变量HARRY的Reduced Cost为3.611429,现在我们把HARRY前的系数加2,得到的新模型如下:MAX = 4.0 * TOM + 3.0 * DICK +4.0 *HARRY;2.5 * TOM +3.1 *HARRY <= 5;2.0 * TOM + 0.7 * DICK +0.4 *HARRY <= 1;再求解得到solution report如下:Global optimal solution found at iteration: 0Objective value: 10.57143Variable Value Reduced CostTOM 2.000000 0.000000DICK 0.8571429 0.000000HARRY 0.000000 1.611429Row Slack or Surplus Dual Price1 10.57143 1.0000002 0.000000 1.2571433 0.000000 4.285714变量TOM、DICK的取值没有变化分别为 2.000000、0.8571429. 从变量HARRY的Reduced Cost中看到从原来得3.611429到现在得1.611429差为2. 如果如果系数变化在Reduced Cost内, 优化取值不变.Slack or Surplus(小于:松弛,大于:过剩):如果满足约束条件, 则该值是左右差的绝对值.如果不满足约束条件, 则该值为负数.如果该值为0, 说明两边相等.例2 模型如下:Max = 3 * X + 4 * Y;X <= 40;Y <= 60;X + Y <= 80;解该模型,得到的Solution Report 如下:Global optimal solution found at iteration: 0Objective value: 300.0000Variable Value Reduced CostX 20.00000 0.000000Y 60.00000 0.000000Row Slack or Surplus Dual Price1 300.0000 1.0000002 20.00000 0.0000003 0.000000 1.0000004 0.000000 3.000000把X=20.00000,Y=60.00000代入目标函数和约束条件:1 Max=300; 3002 20<=40; 203 60<=60; 04 20+60<=80; 0Dual Price:如果该行右边数值加1,就得到优化模型相应的加上该行的Dual Price或减去该行的Dual Price。
举例如下:在例2中第4行的Dual Price为3,现在我们在第4行的右边加上1等到如下模型:Max = 3 * X + 4 * Y;X <= 40;Y <= 60;X + Y <= 81;(本来是80)解该模型,得到的Solution Report 如下:Global optimal solution found at iteration: 2Objective value: 303.0000Variable Value Reduced CostX 21.00000 0.000000Y 60.00000 0.000000Row Slack or Surplus Dual Price1 303.0000 1.0000002 19.00000 0.0000003 0.000000 1.0000004 0.000000 3.000000Objective value值从300增加到303。
2 Range点击Range命令在当前模型中会产生一个Range report 窗口,在该窗口中有两段分别是,Objective Coefficient Ranges(目标函数系数范围)和Righthand Side Ranges (约束条件右边的范围)在例2模型下,产生的range report 窗口内容如下:Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable All owableVariable Coefficient Increase De creaseX 3.000000 1.000000 3. 000000Y 4.000000 INFINITY 1. 000000Righthand Side RangesRow Current Allowable All owableRHS Increase De crease2 40.00000 INFINITY 20 .000003 60.00000 20.00000 20 .000004 80.00000 20.00000 20. 00000Objective Coefficient Ranges:在Objective Coefficient Ranges中的第一列为目标函数的变量名称,第二列为对应变量名的系数,第三列是系数可增加的最大范围,第四列是系数可减少的最大范围.改变目标函数的变量系数(在给定的范围内),不改变优化求解中变量的取值.Right-hand Side Ranges:在Right-hand Side Ranges中的第一列为row的名称,第二列是常数项或者是右边的值. 第三列是该模型的右边最多可以加的量,第四列是该模型的右边最多可以减的量. 我们可以回想,在solution report中有Dual Price列,在右边加1(1必须不大于Righthand Side Ranges中,Allowable Increase对应的值),就得到优化模型相应的加上该行的Dual Price或减去该行的Dual Price.3 Options该菜单中包含绝大部分的LINGO参数,可设置的tabs内容如下:•Interface,•General Solver,•Linear Solver,•Nonlinear Solver,•Integer Pre-Solver•Integer Solver, and•Global Solver.在Interface的tabs面中可以控制LINGO系统的界面(包括是否显示工具栏, 界面的大小),输出形式(Terse Output)以及默认的文件格式. 其它的tabs内容可以参考帮助文件.4 Model Statistics统计该模型的信息,包括行数、变量数、约束条件数等等;在如下模型中:model:max=2* x1+3*x2;x1+2*x2+x3=8;4*x1+x4=16;4*x2+x5=12;end执行LINGO|Model Statistics后得到如下:Rows= 4 Vars= 2 No. integer vars= 0 ( all are linear)Nonzeros= 9 Constraint nonz= 4( 1 are +- 1) Density= 0Smallest and largest elements in abs value= 1.00000 16.0000No. < : 3 No. =: 0 No. > : 0, Obj= MAX, GUBs <= 2Single cols= 0其中Single cols表示松弛变量;现在我们在上面模型中添加三个松弛变量,模型变为:model:max=2*x1+3*x2+0*x3+0*x4+0*x5;x1+2*x2+x3=8;4*x1+x4=16;4*x2+x5=12;end执行LINGO|Model Statistics后得到如下:Rows= 4 Vars= 5 No. integer vars= 0 ( all are linear)Nonzeros= 12 Constraint nonz= 7( 4 are +- 1) Density= 0 Smallest and largest elements in abs value= 1.00000 16.0000 No. < : 0 No. =: 3 No. > : 0, Obj= MAX, GUBs <= 2 Single cols= 3Single cols 由原来的0变到3.§1 LINGO快速入门当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。