lingo操作介绍
LINGO使用说明比较简单

LINGO使用说明比较简单
第九步,分析和优化结果。
优化模型求解完成后,你可以通过结果显
示区中的结果表格和图表来分析和优化结果。
LINGO还提供了一些分析工具,如灵敏度分析和场景分析,帮助你深入理解模型的行为和性能。
第十步,保存和导出结果。
在 LINGO 中,你可以保存整个优化模型
及其求解结果,以供将来使用。
通过点击菜单栏中的“文件”选项,选择“保存”或“导出”,就可以将模型和结果保存为不同的文件格式,如LINGO模型文件(.lng)、Excel 文件(.xls)或文本文件(.txt)。
通过上述十个步骤,你可以使用LINGO软件完成一个优化模型的建立、求解和分析。
当然,LINGO还具备其他高级功能和应用,如混合整数规划、随机规划和非线性规划等,可以根据你的具体需求进行进一步学习和应用。
LINGO使用手册和官方网站上有更多详细的说明和案例,可以帮助你更好
地使用和理解LINGO软件。
lingo操作介绍

lingo操作介绍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。
LINGO操作

"Interrupted"(中断)Undetermined"(未确定)
Objective Infeasibility
当前解的目标函数值
实数
当前约束不满足的总 实数(即使该值=0,当前解也可能不可行,因为 量(不是不满足的约 这个量中没有考虑用上下界形式给出的约束) 束的个数)ations
3.3 扩展求解器状态(Extended Solver Status)框
显示LINGO中几个特殊求解器的运行状态。包括分枝定界求解器(Branchand- Bound Solver)、全局求解器(GlobalSolver)和多初始点求解器 (Multistart Solver)。
Active
非负整数
3.4 LINGO的报告窗口
“Global optimal solution found at iteration: 2”表示2次迭代后得到 全局最优解。 “Objective value:”表示最优目 标值 “Value”给出最优解中各变量的 值 “Slack or Surplus”给出松驰变 量的值 “Reduced Cost”列出最优单纯 形表中判别数所在行的变量的系 数,表示当变量有微小变动时, 目标函数的变化率。 “DUAL PRICE”(对偶价格)表 示当对应约束有微小变动时, 目 标函数的变化率
4.综合举例
例:如何在LINGO中求 解如下的LP问题: 在模型窗口中输入如下代 码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的求解 按钮即可。
LINGO教程(基本语法)

LINGO软件的基本使用方法 软件的基本使用方法
1
LINGO 教 程
内容提要
1. LINGO入门 入门 2.在LINGO中使用集合 在 中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 的主要菜单命令 5. LINGO命令窗口 命令窗口
2
LINGO 教 程
1. LINGO入门 入门 2.在LINGO中使用集合 在 中使用集合 3. 运算符和函数 1. LINGO入门 入门 4. LINGO的主要菜单命令 的主要菜单命令 5. LINGO命令窗口 命令窗口
选择菜单命令 “File|Open(F3)”, , 可以看到 “打开文 对话框。 件”对话框。 (如 图)
①
6
L LINGO中使用LINDO模型 中使用LINDO
②
打开“ 打开“EXAM0201.LTX”文件 (如下图) 文件 如下图)
选择“LINGO|Solve 选择“ (Ctrl+S)”来运行这 ) 个程序( 个程序(运行状态窗口 如右图) 如右图)
通过菜单 “WINDOW| Status Window”看到状态窗 口,可看到最佳目标值 “Best Obj”与问题的上界 “Obj Bound”已经是一样的, 当前解的最大利润与这两个 值非常接近,是计算误差引 起的。如果采用全局最优求 解程序(后面介绍),可以验 证它就是全局最优解。
18
LINGO 教 程
9
• Elapsed Runtime (hh:mm:ss) 求解花费的时间) (求解花费的时间)
• 运行状态窗口
LINGO 教 程 当前模型的类型 :LP,QP,ILP,IQP,PILP, , , , , , PIQP,NLP,INLP,PINLP (以I开头表示 , , , 开头表示 IP,以PI开头表示 开头表示PIP) , 开头表示 ) 当前解的状态 : "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行 不可行), 不可行 "Unbounded“(无界 无界), 无界 "Interrupted“(中断 中断), 中断 "Undetermined“(未确定 未确定) 未确定 当前约束不满足的总量(不是不 当前约束不满足的总量 不是不 满足的约束的个数):实数 实数( 满足的约束的个数 实数(即使 该值=0,当前解也可能不可行, 该值 ,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束) 命令形式给出的约束)
LINGO使用说明(比较简单)

@sum( xb1(j) : a(i,j)*x(j)) +c(i) <= b(i);
); 同时我们在E盘新建了一个名为DATA.XLS的EXCLE文件;关于 EXCLE的使用,这里不更多说明。需要指出的是‘ DA ’ , ‘ DB ’ , ‘ DC ’是EXCLE中对一系列单元格的命名,即先选中某个一维或多维单元格 区域,然后再在显示单元格行列坐标的文本框中写入对这个区域的命 名,再回车确认。这样就可以通过这个命名来控制访问EXCLE的数据 了。至于另一种操作方法请查找相关的help文件。 以上只是介绍了LINGO基本的知识,上面的程序未经调试,可能存 在一些问题!还有希望大家能尽可能使用help文件,在其中有着详细的 解答!
相应Lingo代码如下: @max( xb1( i ) : b( i )*c( i ) ) <=33 ;
同样MAX语句也可以用于多维变量。 4.MIN语句:
MIN语句的功能是从一组取值与下标有关的表达式中返回它们 的最小值。用法与MAX的相同。
三.EXCEL电子表格接口
在你解决一个模型的时候,或许会有大量的数据要整合到你的 代码中去,而这些数据大部分时候会被保存在电子表格中。而且 EXCEL也是用来处理你所得到的数据较好的一个选择。出于上述原
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗 口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将 被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的 窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实 现。 示例:求解线性规划问题:
LINGO基本教程(完整版)pdf

LINGO基本教程(完整版)pdf一、教学内容本节课我们使用的教材是《LINGO基本教程》,我们将学习第14章的内容。
第1章介绍LINGO软件的基本操作,包括界面的熟悉、模型的建立等;第2章学习线性规划模型的建立与求解;第3章讲解非线性规划模型的建立与求解;第4章介绍整数规划模型的建立与求解。
二、教学目标1. 学生能够熟练操作LINGO软件,建立和求解线性、非线性以及整数规划模型。
2. 学生能够理解线性、非线性以及整数规划的基本概念,并能够运用到实际问题中。
3. 学生通过学习LINGO基本教程,提高自己的逻辑思维能力和解决实际问题的能力。
三、教学难点与重点重点:熟练操作LINGO软件,建立和求解线性、非线性以及整数规划模型。
难点:理解线性、非线性以及整数规划的基本概念,以及如何将这些概念运用到实际问题中。
四、教具与学具准备教具:多媒体教学设备、投影仪、计算机。
学具:学生计算机、LINGO软件、教材《LINGO基本教程》。
五、教学过程1. 实践情景引入:以一个简单的线性规划问题为切入点,引导学生思考如何利用LINGO软件求解。
2. 讲解教材内容:分别讲解第14章的内容,包括LINGO软件的基本操作、线性规划模型的建立与求解、非线性规划模型的建立与求解以及整数规划模型的建立与求解。
3. 例题讲解:针对每个章节的内容,选择合适的例题进行讲解,让学生通过例题理解并掌握相关知识点。
4. 随堂练习:在每个章节讲解结束后,安排随堂练习,让学生通过练习巩固所学知识。
5. 课堂互动:鼓励学生提问,解答学生在学习过程中遇到的问题。
6. 板书设计:每个章节的重要知识点和操作步骤进行板书设计,方便学生复习。
7. 作业布置:布置与本节课内容相关的作业,巩固所学知识。
六、作业设计1. 作业题目:最大化问题:目标函数:Z = 2x1 + 3x2约束条件:x1 + x2 ≤ 62x1 + x2 ≤ 8x1, x2 ≥ 0最大化问题:目标函数:Z = x1^2 + x2^2约束条件:x1 + x2 ≤ 5x1^2 + x2^2 ≤ 10x1, x2 ≥ 0最大化问题:目标函数:Z = 3x1 + 2x2约束条件:x1 + x2 ≤ 42x1 + x2 ≤ 6x1, x2 均为整数2. 答案:(1)线性规划问题的解为:x1 = 2, x2 = 4(2)非线性规划问题的解为:x1 = 3, x2 = 2(3)整数规划问题的解为:x1 = 2, x2 = 2七、板书设计1. 第1章:LINGO软件的基本操作(1)界面的熟悉(2)模型的建立2. 第2章:线性规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解线性规划问题3. 第3章:非线性规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解非线性规划问题4. 第4章:整数规划模型的建立与求解(1)目标函数的定义(2)约束条件的设置(3)求解整数规划问题八、课后反思及拓展延伸本节课通过实践情景引入,使学生能够快速融入学习状态。
Lingo基本操作

Lingo基本操作Lingo基本操作Lingo是⼀门主要求解⾮线性规划数学模型的编程软件,记得最初接触Lingo是在阅读⼀书,该书在第五章主要讲解使⽤Lingo来解决优化问题,也是在那个时候认识到了Lingo的强⼤之处。
Lingo的使⽤就好⽐解决⼀道简单的数学问题,⽽你只需要使⽤Lingo⽀持的编程规范给其提供充⾜的已知条件即可,之后会⾃动使⽤相关算法为您解答。
为了⽇后更加⽅便的查询Lingo相关知识,所以将Lingo的基本使⽤在此记录。
关于Lingo的下载及安装问题博主已做整理,可参考本篇教程1.1 算术运算符^:乘⽅*:乘/:除+:加-:减1.2 逻辑运算符在Lingo中,逻辑运算符主要⽤于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。
1.3 关系运算符= 、<= 、 >=2.1 标准数学函数符号说明#and#且,&#or#或,||#not#⾮,!#eq#等于,== #ne#不等于,!= #gt#⼤于,>#ge#⼤于等于,>= #lt#⼩于,<#le#⼩于等于,<=函数说明@abs(x)绝对值@sin(x)正弦值,采⽤弧度制@cos(x)余弦值@tan(x)正切@exp(x)指数,@log(x)⾃然对数@lgm(x)gamma函数的⾃然对数@sign(x)x<0返回-1,否则返回返回1@floor(x)取整@smax()取() 中的最⼤值@smin()取() 中的最⼩值2.2 集循环函数集循环函数⽤于遍历整个集,其基本语法如下:@function(setname[(set_index_list)[|conditional_qualifier]]:expression_list);@function相应于下⾯罗列的四个集循环函数之⼀;setname是要遍历的集;set_ index_list是集索引列表;conditional_qualifier是⽤来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier进⾏评价,若结果为真,则对该成员执⾏@function操作,否则跳过,继续执⾏下⼀次循环。
lingo入门教程

运送量为cij 。
2 6
2
2
MIN f
cij x j ai y j bi
1
j1 i1
2
s.t.
cij di , i 1, 2,L , 6
2
j 1
6
cij ej , j 1, 2
3
i 1
使用现有临时料场时,决策变量只有 c(ij 非负),所以这是LP模型;当为新
建料场选址时决策变量为
c ij
和
x j , y j,由于目标函数
f对
x ,y
j
j
是非线性的,
所以在新建料场时是NLP模型。先解NLP模型,而把现有临时料场的位置作
为初始解告诉LINGO。
本例中集合的概念
利用集合的概念,可以定义需求点DEMAND和供应点 SUPPLY两个集合,分别有6个和2个元素(下标)。但决 策变量(运送量) cij 与集合DEMAND和集合SUPPLY都 有关系的。该如何定义这样的属性?
输出结果: 运行菜单命令“LINGO|Solve”
最大利润=11077.5
最优整数解 X=(35,65)
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 •语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 •以感叹号开始的是说明语句(说明语句也需要以分号结束))。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。