《第九章 Lingo软件快速入门.doc》由会员分享,可在线阅读,更多相关《第九章 Lingo软件快速入门.doc(27页珍藏版)》请在金锄头文库上搜索。
1、259第九章 Lingo软件快速入门9.1 Lingo概述LINDO和LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件包。 LINGO用于求解线性规划和二次规划问题,LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。LINDO和LINGO软件的最大特色在于可以允许优化模型中的决策变量是整数(即整数规划),而且执行速度很快。LINGO实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel电子表格文件、数据库文件等)的接口,易于方
2、便地输入、求解和分析大规模最优化问题由于这些特点,LINDO和LINGO软件在教学、科研和工业、商业、服务等领域得到了广泛应用。当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:9.2 LINGO 菜单说明9.2.1 文件菜单(File Menu)新建(New)从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2键可以创建一个新的“Model”窗口。在这个新的“Model”窗口中能够输入所要求解的模型。打开(Open)从文件菜单中选用“打开”命令、单击“打开”按钮或直接按F3键可以打开一个已经存在的文本文件。这个文件可能是一个Model文件。保存(Save)从文件
3、菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。另存为(Save As) 从文件菜单中选用“另存为”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为”对话框中输入的文件名。利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。关闭(Close)在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。打印(Print) 在文件菜单中选用“打印” (Print)命令
4、、单击“打印”按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。打印设置(Print Setup) 在文件菜单中选用“打印设置”命令或直接按F8键可以将文件输出到指定的打印机。打印预览(Print Preview) 在文件菜单中选用“打印预览”命令或直接按Shift+F8键可以进行打印预览。输出到日志文件(Log Output) 从文件菜单中选用“Log Output”命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。提交LINGO命令脚本文件(Take Commands) 从文件菜单中选用“Take Commands”命令或直接按F11键
5、就可以将LINGO命令脚本(command script)文件提交给系统进程来运行。引入LINGO文件(Import Lingo File)从文件菜单中选用“Import Lingo File”命令或直接按F12键可以打开一个LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。退出(Exit)从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统。9.2.2 编辑菜单(Edit Menu)恢复(Undo)从编辑菜单中选用“恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态。剪切(Cut)从编辑菜单中选用“剪切”(
6、Cut)命令或按Ctrl+X组合键可以将当前选中的内容剪切至剪贴板中。复制(Copy)从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组合键可以将当前选中的内容复制到剪贴板中。粘贴(Paste)从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V组合键可以将粘贴板中的当前内容复制到当前插入点的位置。粘贴特定.(Paste Special。)与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。全选(Select All)从编辑菜单中选用“Select All”命令或按Ctrl+A组合键可选定当前窗口中的所有内容。匹配小括号(Match Pa
7、renthesis)从编辑菜单中选用“Match Parenthesis”命令、单击“Match Parenthesis”按钮或按Ctrl+P组合键可以为当前选中的开括号查找匹配的闭括号。粘贴函数(Paste Function)从编辑菜单中选用“Paste Function”命令可以将LINGO的内部函数粘贴到当前插入点。9.2.3 LINGO菜单求解模型(Slove) 从LINGO菜单中选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可以将当前模型送入内存求解。求解结果(Solution)从LINGO菜单中选用“Solution”命令、单击“Solution”按钮或直接按Ctr
8、l+O组合键可以打开求解结果的对话框。这里可以指定查看当前内存中求解结果的那些内容。查看(Look)从LINGO菜单中选用“Look”命令或直接按Ctrl+L组合键可以查看全部的或选中的模型文本内容。灵敏性分析(Range,Ctrl+R)用该命令产生当前模型的灵敏性分析报告:研究当目标函数的费用系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性分析,运行LINGO|Options,选择General Solver Tab, 在Dual Computations列表框中,选
9、择Prices and Ranges选项。灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。9.2.4 Window菜单命令窗口(Commad Window)从Window菜单中选用“Commad Window”命令可以打开命令窗口。也可以通过快捷键Ctrl+1来实现。状态窗口(Status Window)从Window菜单中选用“Status Window”命令可以打开求解结果状态窗口。也可以通过快捷键Ctrl+2来实现。回主程序(Send to Back)从Window菜单中选用“Send to Back”命令可以回到主程序界面窗口。也可以通过快捷键Ctrl+B来实现。
10、关闭所有程序(Close All)从Window菜单中选用“Close All”命令可以关闭所有打开的文档窗口。也可以通过快捷键Ctrl+3来实现。排列窗口(Tile Window)从Window菜单中选用“Tile Window”命令可以对文档窗口进行水平或垂直排列放置。也可以通过快捷键Ctrl+4来实现。层叠窗口(Cascade)从Window菜单中选用“Cascade”命令可以对文档按文件名的字典顺序层叠放置,方便查看结果和程序。也可以通过快捷键Ctrl+5来实现。排列图标(Arrange Icons)从Window菜单中选用“Arrange Icons”命令可以实现将图标放置在左下角的
11、窗口之下。也可以通过快捷键Ctrl+6来实现。9.2.5 Help菜单帮助主题(Help Topics)从Help菜单中选用“Help Topics”命令可以打开帮助学习主题文件。注册(Register)从Help菜单中选用“Register”命令可以打开填写注册信息的窗口,提交用户的有关注册信息。自动更新(AutoUpdate)从Help菜单中选用“AutoUpdate”命令可以开启软件自动更新功能。关于Lingo(About Lingo)从Help菜单中选用“About Lingo”命令可以看到该软件版本信息及Lindo公司的联系方式。9.3 Lingo基本运算符这些运算符是非常基本的,在
12、LINGO中它们是非常重要的。9.3.1 算术运算符算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:乘方乘除加减LINGO唯一的一元算术运算符是取反函数“”。这些运算符的优先级由高到底为:高(取反) 低运算符的运算次序为从左到右按优先级高低来执行。运算的次序可以用圆括号“()”来改变。例9.3.1 算术运算符示例。253,(24)5等等。9.3.2 逻辑运算符在LINGO中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。LINGO具有种逻辑运算符:#not# 否定该操作数的逻辑值,not是一个一元运算
13、符#eq#若两个运算数相等,则为true;否则为flase#ne# 若两个运算符不相等,则为true;否则为flase#gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase#ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase#lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase#le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase#and# 仅当两个参数都为true时,结果为true;否则为flase#or# 仅当两个参数都为false时,结果为false;否则为true这些运算符的优先级由高到低为:
14、高 #not# #eq# #ne# #gt# #ge# #lt# #le#低 #and# #or#例9.3.2 逻辑运算符示例2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。9.3.3 关系运算符在LINGO中,关系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小于等于、或者大于等于右边,形成模型的一个约束条件。关系运算符与逻辑运算符#eq#、#le#、#ge#截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假。 LINGO有三种关系运算符:“=”、“=”。LINGO中还能用“”表示大于等于关系。LINGO并不支持严格小于和严格大于关系运算符。然而,如果需要严格小于和严格大于关系,比如让A严格小于B:AB,那么可以把它变成如下的小于等于表达式:A+=B,这里是一个小的正数,它的值依赖于模型中A小于B多少才算不等。下面给出以上三类操作符的优先级:高#not# (取反) #eq# #ne# #gt# #ge# #lt# #le#and# #or#低 = 9.4 Lingo求解简单线性规划问题当建立了线性规划模型后,即可将该模型按照Lingo的语法规则,编写程序进行求解,下面通过一个带有2个决策变量的LP问题的求解讲解。例9.4.1 如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码