LINGO教程-1-LINGO教程LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。§1LINGO快速入门当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。例1.1如何在LINGO中求解如下的LP问题:0,6002100350..32min212112121xxxxxxxtsxx在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2=350;LINGO教程-2-x1=100;2*x1+x2=600;然后点击工具条上的按钮即可。§2LINGOWINDOWS命令2.1文件菜单(FileMenu)(1)新建(New)从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2键可以创建一个新的“Model”窗口。在这个新的“Model”窗口中能够输入所要求解的模型。(2)打开(Open)从文件菜单中选用“打开”命令、单击“打开”按钮或直接按F3键可以打开一个已经存在的文本文件。这个文件可能是一个Model文件。(3)保存(Save)从文件菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。(4)另存为...(SaveAs...)从文件菜单中选用“另存为...”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为...”对话框中输入的文件名。利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。(5)关闭(Close)在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。(6)打印(Print)在文件菜单中选用“打印”(Print)命令、单击“打印”按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。(7)打印设置(PrintSetup...)在文件菜单中选用“打印设置...”命令或直接按F8键可以将文件输出到指定的打印机。(8)打印预览(PrintPreview)LINGO教程-3-在文件菜单中选用“打印预览...”命令或直接按Shift+F8键可以进行打印预览。(9)输出到日志文件(LogOutput...)从文件菜单中选用“LogOutput...”命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。(10)提交LINGO命令脚本文件(TakeCommands...)从文件菜单中选用“TakeCommands...”命令或直接按F11键就可以将LINGO命令脚本(commandscript)文件提交给系统进程来运行。(11)引入LINGO文件(ImportLingoFile...)从文件菜单中选用“ImportLingoFile...”命令或直接按F12键可以打开一个LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。(12)退出(Exit)从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统。2.2编辑菜单(EditMenu)1.恢复(Undo)从编辑菜单中选用“恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态。2.剪切(Cut)从编辑菜单中选用“剪切”(Cut)命令或按Ctrl+X组合键可以将当前选中的内容剪切至剪贴板中。3.复制(Copy)从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组合键可以将当前选中的内容复制到剪贴板中。4.粘贴(Paste)从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V组合键可以将粘贴板中的当前内容复制到当前插入点的位置。5.粘贴特定..(PasteSpecial。。)与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。LINGO教程-4-6.全选(SelectAll)从编辑菜单中选用“SelectAll”命令或按Ctrl+A组合键可选定当前窗口中的所有内容。7.匹配小括号(MatchParenthesis)从编辑菜单中选用“MatchParenthesis”命令、单击“MatchParenthesis”按钮或按Ctrl+P组合键可以为当前选中的开括号查找匹配的闭括号。8.粘贴函数(PasteFunction)从编辑菜单中选用“PasteFunction”命令可以将LINGO的内部函数粘贴到当前插入点。2.3LINGO菜单1.求解模型(Slove)从LINGO菜单中选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可以将当前模型送入内存求解。2.求解结果...(Solution...)从LINGO菜单中选用“Solution...”命令、单击“Solution...”按钮或直接按Ctrl+O组合键可以打开求解结果的对话框。这里可以指定查看当前内存中求解结果的那些内容。3.查看...(Look...)从LINGO菜单中选用“Look...”命令或直接按Ctrl+L组合键可以查看全部的或选中的模型文本内容。4.模型通常形式...(Generate...)从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合键可以创建当前模型的代数形式、LINGO模型或MPS格式文本。LINGO教程-5-5.选项...(Options...)从LINGO菜单中选用“Options...”命令、单击“Options...”按钮或直接按Ctrl+I组合键可以改变一些影响LINGO模型求解时的参数。该命令将打开一个含有7个选项卡的窗口,你可以通过它修改LINGO系统的各种参数和选项。如上图。修改完以后,你如果单击“Apply(应用)”按钮,则新的设置马上生效;如果单击“OK(确定)”按钮,则新的设置马上生效,并且同时关闭该窗口。如果单击“Save(保存)”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效。单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置)。(1)Interface(界面)选项卡选项组选项含义General(一般选项)ErrorsInDialogs(错误对话框)如果选择该选项,求解程序遇到错误时将打开一个对话框显示错误,你关闭该对话框后程序才会继续执行;否则,错误信息将在报告窗口显示,程序仍会继续执行SplashScreen(弹出屏幕)如果选择该选项,则LINGO每次启动时会在屏幕上弹出一个对话框,显示LINGO的版本和版权信息;否则不弹出StatusBar(状态栏)如果选择该选项,则LINGO系统在主窗口最下面一行显示状态栏;否则不显示StatusWindow(状态窗口)如果选择该选项,则LINGO系统每次运行LINGO|Solve命令时会在屏幕上弹出状态窗口;否则不弹出TerseOutput(简洁输出)如果选择该选项,则LINGO系统对求解结果报告等将以简洁形式输出;否则以详细形式输出Toolbar(工具栏)如果选择该选项,则显示工具栏;否则不显示SolutionCutoff(解的截断)小于等于这个值的解将报告为“0”(缺省值是10-9)LINGO教程-6-FileFormat(文件格式)lg4(extended)(lg4,扩展格式)模型文件的缺省保存格式是lg4格式(这是一种二进制文件,只有LINGO能读出)lng(textonly)(lng,纯文本格式)模型文件的缺省保存格式是lng格式(纯文本)SyntaxColoring(语法配色)Linelimit(行数限制)语法配色的行数限制(缺省为1000)。LINGO模型窗口中将LINGO关键此显示为兰色,注释为绿色,其他为黑色,超过该行数限制后则不再区分颜色。特别地,设置行数限制为0时,整个文件不再区分颜色。Delay(延迟)设置语法配色的延迟时间(秒,缺省为0,从最后一次击键算起)。ParenMatch(括号匹配)如果选择该选项,则模型中当前光标所在处的括号及其相匹配的括号将以红色显示;否则不使用该功能CommandWindow(命令窗口)SendReportstoCommandWindow(报告发送到命令窗口)如果选择该选项,则输出信息会发送到命令窗口;否则不使用该功能EchoInput(输入信息反馈)如果选择该选项,则用File|TakeCommand命令执行命令脚本文件时,处理信息会发送到命令窗口;否则不使用该功能LineCountLimits(行数限制)命令窗口能显示的行数的最大值为Maximum(缺省为800);如果要显示的内容超过这个值,每次从命令窗口滚动删除的最小行数为Minimum(缺省为400)PageSizeLimit(页面大小限制)命令窗口每次显示的行数的最大值为Length(缺省为没有限制),显示这么多行后会暂停,等待用户响应;每行最大字符数为Width(缺省为74,可以设定为64-200之间),多余的字符将被截断LINGO教程-7-(2)GeneralSolver(通用求解器)选项卡选项组选项含义GeneratorMemoryLimit(MB)矩阵生成器的内存限制(兆)缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报告ThemodelgeneratorranoutofmemoryRuntimeLimits运行限制Iterations迭代次数求解一个模型时,允许的最大迭代次数(缺省值为无限)Time(sec)运行时间(秒)求解一个模型时,允许的最大运行时间(缺省值为无限)DualComputations(对偶计算)求解时控制对偶计算的级别,有三种可能的设置:·None:不计算任何对偶信息;·Prices:计算对偶价格(缺省设置);·PricesandRanges:计算对偶价格并分析敏感性。ModelRegeneration(模型的重新生成)控制重新生成模型的频率,有三种可能的设置:·Onlywhentextchanges:只有当模型的文本修改后才再生成模型;·Whentextchangesorwithexternalreferences:当模型的文本修改或模型含有外部引用时(缺省设置);·Always:每当有需要时。LINGO教程-8-Linearization(线性化)Degree(线性化程度)决定求解模型时线性化的程度,有四种可能的设置:SolverDecides:若变量数小于等于12个,则尽可能全部线性化;否则不做任何线性化(缺省设置)·None:不做任何线性化·Low:对函数@ABS(),@MAX(),@MIN(),@SMAX(),@SMIN(),以及二进制变量与连续变量的乘积项做线性化·High:同上,此外对逻辑运算符#LE#,#EQ#,#GE#,#NE#做线性化BigM(线性化的大M系数)设置线性化的大M系数(缺省值为106)。Delta(线性化的误差限)设置线性化的误差限(缺省值为10-6)。AllowUnrestrictedUseofPrimitiveSetMemberNames(允许无限制地使用基本集合的成员名)选择该选项可以保持与LINGO4.0以前的版本兼容:即允许使用基本集合的成员名称直接作为该成员在该集合的索引值(LINGO4.0以后的版本要求使用@INDEX函数)。CheckforDuplicateNamesinDataandModel(检查数据和模型中的名称是否重复使用)选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集合的成员名是否与决策变量名重复。UseR