您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > Lingo 快速入门
12LINGO与LINDO比较•LINGO除具有LINDO的全部功能外,还可用于求解非线性规划问题•LINGO包含了内置的建模语言,允许以简练,直观的方式描述较大规模的优化问题,模型中所需的数据可以以一定格式保存在独立的文件中•在LINGO中使用LINDO模型在9.0版本中可从FILE/OPEN直接打开,选择文件类型(.LTX)在8.0版本中,要通过FILE/IMPORTLINDOFILE命令直接把LINDO模型文件转化成LINGO模型•从LINDO到LINGO的转化实质:1)将目标函数的表达式从MAX变成了MAX=2)ST在LINGO中不再需要3)在每个系数与变量之间增加了运算符*4)每行(目标,约束和说明语句)后面增加了一个分号5)约束的名字被放到了一对方括号[]中,而不是放在右半括号之前6)LINGO中模型以MODEL:开始,以END结束,对简单的模型,这两个语句也可以省略3单位销地运价产地B1B2B3B4B5B6B7B8产量(capacity)A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352销量(damand)3537223241324338例子:求解6个发货点到8个接收点的最小费用运输问题的最优方案。产/销/单位运价如下表思考:变量设置/目标函数/约束条件4)8,...,2,1,6,...,2,1(jiBjAixBjAicijij的销售量,在为的单位运价,到为设8,...,2,1,)(6,...,2,1),(xcmin61816181ijijjjdemandxiicapacityxziijjijij销量约束:产量约束:约束条件:目标函数:5model:sets:a/a1..a6/:capacity;b/b1..b8/:demand;links(a,b):c,x;endsetsmin=@sum(links:c*x);@for(b(J):@sum(a(I):x(I,J))=demand(J));@for(a(I):@sum(b(J):x(I,J))=capacity(I));data:capacity=605551434152;demand=3537223241324338;c=626742954953858252197433767392712395726555228143;enddataendLINGO编程6LINGOWINDOWS命令外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。文件菜单(FileMenu)1.新建(New)2.打开(Open)3.保存(Save)4.另存为...(SaveAs...)5.关闭(Close)6.打印(Print)7.打印设置(PrintSetup...)8.打印预览(PrintPreview)9.输出到日志文件(LogOutput...)用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。10.提交LINGO命令脚本文件(TakeCommands...)11.两种输出格式(ExportFile…)12.引入LINDO文件(ImportLindoFile...)13.退出(Exit)7LINGOWINDOWS命令编辑菜单(EditMenu)1.恢复(Undo)2.剪切(Cut)3.复制(Copy)4.粘贴(Paste)5.特殊粘贴..(PasteSpecial。。)与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。6.全选(SelectAll)7.匹配小括号(MatchParenthesis)“MatchParenthesis”可以为当前选中的开括号查找匹配的闭括号。8.粘贴函数(PasteFunction)从编辑菜单中选用“PasteFunction”命令可以将LINGO的内部函数粘贴到当前插入点。9.选择字体字形大小颜色效果等(SelectFont)8LINGO菜单1.求解模型(Slove)将当前模型送入内存求解。2.求解结果(Solution)指定查看当前内存中求解结果的那些内容。3.查看(Look)只在命令窗口下才能使用,现实模型内容,并对所有行按顺序编号4.灵敏性分析(Range,Ctrl+R)灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性分析,运行LINGO|Options…,选择GeneralSolverTab,在DualComputations列表框中,选择PricesandRanges选项。灵敏性分析会耗费相当多的求解时间5.模型的通常形式(Generate)可以创建当前模型的代数形式(非线性量前系数用(?)显示)6.模型的矩阵形式(Picture)按照矩阵形式以图形方式显示模型(非线性项的系数以黑色显示为?线性项系数为正时显示为蓝色,为负时显示为红色)7.选项(Options...)可以改变一些影响LINGO模型求解时的参数。该命令将打开一个含有7个选项卡的窗口,你可以通过它修改LINGO系统的各种参数和选项。修改完以后,你如果单击“Apply(应用)”按钮,则新的设置马上生效;如果单击“OK(确定)”按钮,则新的设置马上生效,并且同时关闭该窗口。如果单击“Save(保存)”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效。单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置)。LINGOWINDOWS命令9窗口菜单(WindowsMenu)1.命令行窗口(OpenCommandWindow)LINGO有两种命令模式:WINDOWS模式和命令行模式在命令行窗口中可以获得命令行界面,在“:”提示符后可以输入LINGO的命令行命令。2.状态窗口(StatusWindow)如果在编译期间没有表达错误,那么LINGO将调用适当的求解器来求解模型。LINGOWINDOWS命令10LINGOWINDOWS命令命令行命令1.LINGO信息Cat显示所有命令类型Com按类型显示所用LINGO命令Help显示所需命令的简要帮助信息Mem显示内存变量的信息2.输入(Input)model以命令行方式输入一个模型take执行一个文件的命令正本或从磁盘中读取某个模型文件3.显示(Display)look显示当前模型的内容genl产生LINGO兼容的模型gen生成并显示整个模型hide为模型设置密码保护pause暂停屏幕输出直至再次使用此命令4.文件输出(FileOuput)div将模型结果输出到文件svrt将模型结果输出到屏幕save将当前模型保存到文件smps将当前模型保存为MPS文件11命令行窗口5.求解模型(Solution)go求解当前模型solu显示当前模型的求解结果6.编辑模型(ProblemEditing)del从当前模型中删除指定的某一行或某两行之间(包括这两行)的所有行ext在当前模型中添加几行alt用新字符串替换掉某一行中、或某两行之间的所有行中的旧字符串7.退出系统(Quit)8.系统参数(SystemParameters)page以“行”为单位设置每页长度ter以简略方式输出结果ver以详细方式输出结果wid以“字符”为单位设置显示和输出宽度set重新设置默认参数(SETparameter_name|parameter_index[parameter_value])freeze保存当前参数设置,以备下一次重新启动LINGO系统时还是这样的设置time显示本次系统的运行时间LINGOWINDOWS命令12LINGOWINDOWS命令状态窗口变量框(Variables)Total显示当前模型的全部变量数,Nonlinear显示其中的非线性变量数,Integers显示其中的整数变量数约束(Constraints)框Total显示当前模型扩展后的全部约束数,Nonlinear显示其中的非线性约束数。非线性约束是该约束中至少有一个非线性变量。如果一个约束中的所有变量都是定值,那么该约束就被剔除出模型(该约束为真),不计入约束总数中。非零(Nonzeroes)框Total显示当前模型中全部非零系数的数目,Nonlinear显示其中的非线性变量系数的数目。内存使用(GeneratorMemoryUsed,单位:K)框显示当前模型在内存中使用的内存量。可以通过使用LINGO|Options命令修改模型的最大内存使用量。已运行时间(ElapsedRuntime)框显示求解模型到目前所用的时间,它可能受到系统中别的应用程序的影响。13域名含义可能的显示ModelClass当前模型的类型LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI开头表示PIP)State当前解的状态GlobalOptimum,LocalOptimum,Feasible,Infeasible(不可行),Unbounded(无界),Interrupted(中断),Undetermined(未确定)Objective当前解的目标函数值实数Infeasibility当前约束不满足的总量(不是不满足的约束的个数)实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界形式给出的约束)Iterations目前为止的迭代次数非负整数求解器状态(SolverStatus)框显示当前模型求解器的运行状态。域的含义如下LINGOWINDOWS命令14LINGOWINDOWS命令域名含义可能的显示SolverType使用的特殊求解程序B-and-B(分枝定界法)Global(全局最优求解)Multistart(用多个初始点求解)BestObj目前为止找到的可行解的最佳目标函数值实数ObjBound目标函数值的界实数Steps特殊求解程序当前运行步数:分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序)非负整数Active有效步数非负整数扩展求解器状态(ExtendedSolverStatus)框显示LINGO中几个特殊求解器的运行状态。包括分枝定界求解器(Branch-and-BoundSolver)、全局求解器(GlobalSolver)和多初始点求解器(MultistartSolver)。该框中的域仅当这些求解器运行时才会更新。域的含义如下命令内容结束15LINGO有两种类型的集:原始集和派生集。一个原始集是由一些最基本的对象组成的。原始集是基本的对象,不能再被拆分成更小的组分一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们LINGO中的集16语法:setname[/member_list/][:attribute_list];注意:用“[]”表示该部分内容可选。Setname是集的名字,集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。注意:该命名规则同样适用于集成员名和属性名等的命名。Member_list是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们。attribute_list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。定义原始集17①当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。例定义一个名为students的原始集,它具有
本文标题:Lingo 快速入门
链接地址:https://www.777doc.com/doc-3868269 .html