《5LINGOWINDOWS命令》由会员分享,可在线阅读,更多相关《5LINGOWINDOWS命令(32页珍藏版)》请在金锄头文库上搜索。
1、1.11.1 新建(新建(NewNew)选用“新建”命令、单击“新建”按钮或直接按F2键可创建一个新的“Model”窗口,输入所要求解的模型。1.21.2 打开(打开(OpenOpen)选用“打开”命令、单击“打开”按钮或直接按F3键可打开一个已经存在的文本文件。此文件可能是Model文件。1.31.3 保存保存(Save)(Save)选用“保存”命令、单击“保存”按钮或直接按F4键保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。1.41.4 另存另存为(Save As(Save As) )选用“另存为”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在
2、“另存为”对话框中输入的文件名。利用这种方法可将任何窗口的内容如模型、求解结果或命令保存为文件。1.51.5 关关闭(CloseClose)选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。若此窗口是新建窗口或已经改变了当前文件的内容,将提示是否想要保存改变后的内容。5 LINGO WINDOWS 命令命令5.1 5.1 文件菜文件菜单(File MenuFile Menu)1.61.6打印打印(Print)(Print) 选用“打印” (Print)命令、单击“打印”按钮或直接按F7键可将当前活动窗口中的内容发送到打印机。1.71.7打印打印设置置(Print Setup(Prin
3、t Setup) ) 选用“打印设置”命令或直接按F8键可将文件输出到指定打印机。1.81.8打印打印预览(Print Preview)(Print Preview) 选用“打印预览”命令或直接按Shift+F8键可进行打印预览。1.91.9输出到日志文件出到日志文件(Log Output(Log Output) ) 选用“Log Output”命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。1.101.10提交提交LINGOLINGO命令脚本文件命令脚本文件(Take Commands(Take Commands) ) 选用“Take Comm
4、ands”命令或直接按F11键可将命令脚本 (command script)文件提交给系统进程来运行。1.111.11引入引入LINGOLINGO文件文件(Import Lingo File(Import Lingo File) ) 选用“Import Lingo File”命令或直接按F12键可打开LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。1.121.12退出(退出(ExitExit) 选用“Exit”命令或直接按F10键可以退出LINGO系统。2.12.1 恢复恢复(Undo)(Undo)选用“恢复”(Undo)命令或按Ctrl+Z组合键,将
5、撤销上次操作、恢复至其前状态。2.22.2 剪切剪切(Cut)(Cut)选用“剪切”(Cut)命令或按Ctrl+X组合键可将当前选中的内容剪切至剪贴板中。2.32.3 复制复制(Copy)(Copy)选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组合键可将当前选中的内容复制到剪贴板中。2.42.4 粘粘贴(Paste)(Paste)选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V组合键可将粘贴板中的当前内容复制到当前插入点的位置。2.52.5特定粘特定粘贴.(Paste SpecialPaste Special)与上面命令不同,它可用于剪贴板中的内容不是文本的情
6、形。2.62.6 全全选(Select All)(Select All)选用“Select All”命令或按Ctrl+A组合键可选定当前窗口中的所有内容。2.72.7 匹配小括号匹配小括号(Match Parenthesis)(Match Parenthesis)选用“Match Parenthesis”命令、单击“Match Parenthesis”按钮或按Ctrl+P组合键可为当前选中的开括号查找匹配的闭括号。2.82.8 粘粘贴函数函数(Paste Function)(Paste Function)选用“Paste Function”命令可以将内部函数粘贴到当前插入点。5.2 编辑菜单编
7、辑菜单 (Edit Menu)3.13.1 求解模型(求解模型(SloveSlove)选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可将当前模型送入内存求解3.23.2 求解求解结果(果(SolutionSolution)选用“Solution”命令、单击“Solution”按钮或直接按Ctrl+O组合键可打开求解结果对话框。可指定查看当前内存中求解结果的那些内容3.33.3 查看(看(LookLook)选用“Look”命令或直接按Ctrl+L组合键可查看全部的或选中的模型文本内容3.43.4 灵敏性分析(灵敏性分析(RangeRange,Ctrl+RCtrl+R)产生当前模型
8、的灵敏性分析报告:研究当目标函数的费用系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,默认是不激活。为激活灵敏性分析,运行LINGO|Options,选择General Solver Tab,在Dual Computations列表框中,选择Prices and Ranges选项。灵敏性分析耗费相当多求解时间,因此速度很关键时,没必要激活。5.3 LINGO 菜单菜单简单举例:简单举例:例例5.15.1某家具公司制造书桌、餐桌、椅子,所用资源有三种:木料、木工、漆工。生产数据如下表所示:每个书桌每个餐桌
9、每个椅子现有资源总数 木 料8单位 6单位 1单位48单位 漆 工4单位 2单位 1.5单位20单位 木 工2单位1.5单位 0.5单位8单位 成品单价 60单位 30单位 20单位若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES、CHAIRS分别表示三种产品生产量,建立LP模型max=60*desks+30*tables+20*chairs;8*desks+6*tables+chairs=48;4*desks+2*tables+1.5*chairs=20;2*desks+1.5*tables+.5*chairs=8;tables=5;求解这个模型,
10、并激活灵敏性分析。查看报告窗口(Reports Window),结果如下:Globaloptimalsolutionfoundatiteration:33次迭代后得到全局最优解Objectivevalue:280.0000最优目标函数值:280VariableValueReducedCostDESKS2.0000000.000000TABLES0.0000005.000000CHAIRS8.0000000.000000最优解中变量值:2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。desks、chairs基变量(非0),tables非基变量(0)ReducedC
11、ost:最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。基变量reducedcost=0,非基变量Xj,相应reducedcost值表示Xj增加一个单位时目标函数减少(增加)的量max(min)型问题。本例中:tables的reducedcost=5,表示当非基变量tables值从0变为1时(此时假定其他非基变量保持不变,但为满足约束条件,基变量显然会发生变化),最优目标函数值=280-5=275。 RowSlackorSurplusDualPrice1280.00001.000000224.000000.00000030.00000010.0000040.0
12、0000010.0000055.0000000.000000Slack(松弛:小于等于)orSurplus(剩余:大于等于):松驰变量值(即约束离相等差多少)第1行松驰变量=280(行一表示目标函数,行二对应第一个约束)第2行松驰变量=24第3行松驰变量=0第4行松驰变量=0第5行松驰变量=5RowSlackorSurplusDualPrice1280.00001.000000224.000000.00000030.00000010.0000040.00000010.0000055.0000000.000000DUALPRICE(对偶价格):对应约束有微小变动时,目标函数的变化率。输出结果中对
13、应每一约束有一个对偶价格。若其值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加(减少)p个单位max(min)型问题。显然,若在最优解处约束正好取等号(即“紧约束”,又称有效约束或起作用约束),对偶价格值才可能不是0。本例中:第3、4行是紧约束,对应对偶价格值为10,表示当紧约束3)4DESKS+2TABLES+1.5CHAIRS=20变为3)4DESKS+2TABLES+1.5CHAIRS=21时,目标函数值=280+10=290。第4行类似。对非紧约束(如第2、5行是非紧约束),DUALPRICE=0,表示对应约束中不等式右端项的微小扰动不影响目标函数。有时,分析DUALP
14、RICE,也可对产生不可行问题原因有所了解灵敏度分析(最优解不变的前提下,目标函数系数的变化范围):Rangesinwhichthebasisisunchanged:ObjectiveCoefficientRangesCurrentAllowableAllowableVariableCoefficientIncreaseDecreaseDESKS60.0000020.04.0TABLES30.000005.0INFINITYCHAIRS20.000002.55.0目标函数中DESKS变量原来的费用系数为60,允许增加(AllowableIncrease)=20、允许减少(AllowableDe
15、crease)=4,说明当它在60-4,60+20=56,80范围变化时,最优基保持不变。TABLES、CHAIRS变量,可类似解释。由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。RighthandSideRangesRowCurrentAllowableAllowableRHSIncreaseDecrease248.00000INFINITY24.0320.000004.04.048.0000002.01.33333355.000000INFINITY5.0第2行约束中右端项(
16、RightHandSide,简写为RHS)原来为48,当它在48-24,48+=24,范围变化时,最优基保持不变。第3、4、5行可类似解释。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。灵敏性分析结果表示的是最优基保持不变的系数范围。由此,也可进一步确定当目标函数的费用系数和约束右端项发生小的变化时,最优基和最优解、最优值如何变化。例例5.2 5.2 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在
17、加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1) 若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶? 2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3) 由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?代码:max=72*x1+64*x2;x1+x2=50;12*x1+8*x2=480;3*x11的正整数):N点求解 Barrier: 障碍法 (即内点法)4.
18、1 命令行窗口(命令行窗口(Open Command Window)选用“Open Command Window”命令或直接按Ctrl+1可打开命令行窗口。在命令行窗口中可获得命令行界面,在“:”提示符后可以输入命令行命令。4.2 状态窗口(状态窗口(Status Window)选用“Status Window”命令或直接按Ctrl+2可打开LINGO的求解状态窗口。若在编译期间没有表达错误,则LINGO将调用适当的求解器来求解模型。当求解器开始运行时,会显示如下的求解器状态窗口(LINGO Solver Status)。5.4 窗口菜单(窗口菜单(Windows Menu) 求解器状态窗口对
19、监视求解器进展和模型大小有用。它提供了一个中断求解器按钮(Interrupt Solver),点击它会导致LINGO在下一次迭代时停止求解。 绝大多数情况下,系统能够交还和报告到目前为止的最好解。一个例外是线性规划模型,返回的解无意义,应该被忽略。但这并不是一个问题,因为线性规划通常求解速度很快,很少需要中断。注意:在中断求解器后,必须小心解释当前解,因为这些解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是无价值。 在中断求解器按钮的右边的是关闭按钮(Close)。点击它可以关闭求解器状态窗口,不过可在任何时间通过选择Windows|Status Window再重新打开。 在中
20、断求解器按钮的左下角是标记为更新时间间隔(Update Interval)域。系统将根据该域指示的时间(以秒为单位)为周期更新求解器状态窗口。可以随意设置该域,若设置为0将导致更长的求解时间系统在更新的时间会超过求解模型的时间。变量框(Variables)Total显示当前模型全部变量数,Nonlinear显示其中非线性变量数,Integers显示其中整数变量数。非线性变量是指它至少处于某一个约束中的非线性关系中。例如,对约束X+Y=100;X和Y都是线性变量。对约束X*Y=100;X和Y的关系是二次的,所以X和Y都是非线性变量。对约束X*X+Y=100;X是二次方是非线性的,Y虽与X构成二次
21、关系,但与X*X这个整体是一次的,因此Y是线性变量。被计数变量不包括LINGO确定为定值的变量。例如:X=1;X+Y=3;这里X是1,由此可得Y是2,所以X和Y都是定值,模型中的X和Y都用1和2代换掉。约束(Constraints)框 Total显示当前模型扩展后的全部约束数,Nonlinear显示其中的非线性约束数。非线性约束是该约束中至少有一个非线性变量。如果一个约束中的所有变量都是定值,那么该约束就被剔除出模型(该约束为真),不计入约束总数中。非零(Nonzeroes)框 Total显示当前模型中全部非零系数的数目,Nonlinear显示其中的非线性变量系数的数目。内存使用(Genera
22、tor Memory Used,单位:K)框显示当前模型在内存中使用的内存量。可以通过使用LINGO|Options命令修改模型的最大内存使用量。已运行时间(Elapsed Runtime)框显示求解模型到目前所用的时间,它可能受到系统中别的应用程序的影响。显示当前模型求解器的运行状态。域的含义如下。域名含义可能的显示Model Class 当前模型的类型(请参阅本书第1章) LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示IP,以PI开头表示PIP) State 当前解的状态 Global Optimum, Local Optimum, Feas
23、ible, Infeasible(不可行), Unbounded(无界), Interrupted(中断), Undetermined(未确定) Objective 当前解的目标函数值 实数 Infeasibility 当前约束不满足的总量(不是不满足的约束的个数) 实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界形式给出的约束) Iterations 目前为止的迭代次数 非负整数 求解器状态(Solver Status)框扩展求解器状态(Extended Solver Status)框 显示几个特殊求解器的运行状态。包括分枝定界求解器(Branch-and- Bound
24、Solver)、全局求解器(Global Solver)、多初始点求解器(Multistart Solver)。该框中的域仅当这些求解器运行时才会更新。域的含义如下。域名含义可能的显示Solver Type 使用的特殊求解程序 B-and-B (分枝定界法) Global (全局最优求解) Multistart(用多个初始点求解) Best Obj 目前为止找到的可行解的最佳目标函数值 实数 Obj Bound 目标函数值的界 实数 Steps 特殊求解程序当前运行步数:分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序)非负整数 Active 有效步数 非负整数 其余几个命令都是对窗口的排列,这里不作介绍,试一试便知。5.1 帮助主题(帮助主题(Help Menu)选用“Help Menu”可打开LINGO的帮助文件。5.2 关于关于LINGO(About Lingo)关于当前LINGO的版本信息等。5.5 帮助菜单帮助菜单(Help Menu)