关闭

关闭

关闭

封号提示

内容

首页 第二章 LINDO软件的基本使用方法.ppt

第二章 LINDO软件的基本使用方法.ppt

第二章 LINDO软件的基本使用方法.ppt

139*****064@sina.cn 2012-09-17 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《第二章 LINDO软件的基本使用方法ppt》,可适用于工程科技领域,主题内容包含第二章LINDO软件的基本使用方法LINDO入门LINDO入门内容提要:LINDO软件的安装编写一个简单的LINDO程序一些注意事项LINDO软件的符等。

第二章LINDO软件的基本使用方法LINDO入门LINDO入门内容提要:LINDO软件的安装编写一个简单的LINDO程序一些注意事项LINDO软件的安装LINDO软件的安装本教材使用软件是LINDOforWindows试用版安装过程中用户只需要按照程序给出的提示一步一步走下去直到安装成功为止。第一次运行刚安装的LINDO软件时系统会弹出一个对话框要求你输入密码(Password)。如果你买的是正版软件请在密码框中输入LINDO公司给你提供的密码然后按“OK”按钮即可。否则你只能使用演示版(即试用版)按下“DemoVersion(演示版)”按钮即可。编写一个简单的LINDO程序编写一个简单的LINDO程序例简单的线性规划(LP)问题:在空白的模型窗口中输入这个LP模型:maxxystxy<=xy<end如图:LINDO程序有以下特点:LINDO程序有以下特点:程序以“MAX”(或“MIN”)开始表示目标最大化(或最小化)问题后面直接写出目标函数表达式和约束表达式目标函数和约束之间用“ST”分开(或用“st”“sunjectto”)程序以“END”结束(“END”也可以省略)。系数与变量之间的乘号必须省略。系统对目标函数所在行自动生成行名“)”,对约束默认的行名分别是“)”“)”…用户也可以自己输入行名行名放在对应的约束之前。书写相当灵活不必对齐不区分字符的大小写。默认所有的变量都是非负的,所以不必输入非负约束。约束条件中的“<=”及“>=”可分别用“<”及“>”代替。一行中感叹号“!”后面的文字为是注释语句可增强程序的可读性不参与模型的建立。模型求解:模型求解:LINDO首先开始编译这个模型编译没有错误则开始求解求解时会首先显示如右图所示的LINDO“求解器运行状态窗口”。求解器运行状态窗口显示的相应信息及含义:求解器运行状态窗口显示的相应信息及含义:紧接着弹出一对话框询问你是否需要做灵敏性分析(DORANGE(SENSITIVITY)ANALYSIS)先选择“否(N)”按钮这个窗口就会关闭。然后再把状态窗口也关闭。报告窗口报告窗口用鼠标选择“Window|ReportsWindow”(报告窗口)就可以查看该窗口的内容输出结果表示的意思是:输出结果表示的意思是:“LPOPTIMUMFOUNDATSTEP”表示单纯形法在两次迭代(旋转)后得到最优解。“VALUE”给出最优解中各变量(VARIABLE)的值:X=,Y=“OBJECTIVEFUNCTIONVALUE)”表示最优目标值为(注意:在LINDO中目标函数所在的行总是被认为是第行这就是这里“)”的含义)。“SLACKORSURPLUS(松驰或剩余)”给出约束对应的松驰变量的值:第、行松驰变量均为,说明对于最优解来讲两个约束(第、行)均取等号即都是紧约束。“DUALPRICES”给出对偶价格的值:第、行对偶价格分别为。“NOITERATIONS=”表示用单纯形法进行了两次迭代(旋转)。“REDUCEDCOST”给出最优的单纯形表中目标函数行(第行)中变量对应的系数(即各个变量的检验数(也称为判别数))其中基变量的reducedcost值一定为对于非基变量(注意:非基变量本身取值一定为),相应的reducedcost值表示当该非基变量增加一个单位(其他非基变量保持不变)时目标函数减少的量(对max型问题)。本例最优解中两个变量都是基变量所以对应的REDUCEDCOST的值均为。保存文件保存文件选择File|Save(F)命令把“结果报告”保存在一个文件中(缺省的后缀名为LTX,即LINDO文本文件)类似地回到模型窗口可以把输入的模型保存在一个文件中。保存的文件将来可以用File|Open(F)和File|View(F)重新打开用前者打开的程序可以进行修改而后者只能浏览。如果模型有错误,运行时会弹出出错信息报告窗口(LINDOErrorMessage)则需要修改模型。LINDO模型的一些注意事项LINDO模型的一些注意事项 变量名由字母和数字组成但必须以字母开头且长度不能超过个字符不区分大小写字母包括关键字(如MAX、MIN等)也不区分大小写字母。 对目标函数和约束用行号(行名)进行标识这些标识会在将来的求解结果报告中用到。行名可以和变量名一样命名也可以只用数字命名还可以含有中文字符但长度同样不能超过个字符。为了方便将来阅读求解结果报告建议用户总是自觉地对每个约束进行命名。行名结束标志符号、即右括号“)”必须是英文字符否则会出现错误。 可以用“TITLE”语句对输入的模型命名用法是在TITLE后面写出其名字(最多个字符可以有汉字)在程序中单独占一行可以在模型的任何地方。模型命名的第一个作用类似于对模型的注释和说明。模型命名的另一个目的是为了方便将来阅读求解结果报告。因为用户有可能同时处理多个模型很容易混淆模型与求解结果的对应关系。这时如果对不同模型分别进行了命名就可以随时(例如在求解当前模型前)使用菜单命令“FILE|TITLE”将当前模型的名字显示在求解结果报告窗口中这样就容易判别每个求解结果与每个模型的对应关系。 模型中以感叹号“!”开头的是注释行(注释语句或称为说明语句)可以帮助他人或以后自己理解这个模型。实际上每行中“!”符号后面的都是注释或说明。注释语句中可以使用汉字字符。 变量不能出现在一个约束条件的右端(即约束条件的右端只能是常数)变量与其系数间可以有空格(甚至回车)但不能有任何运算符号(包括乘号“*”等)。 模型中不接受括号“()”和逗号“,”等符号(除非在注释语句中)。例如:(XX)需写为XX“,”需写为。 表达式应当已经经过化简。如不能出现XXX而应写成XX等。 LINDO中已假定所有变量非负。若要取消变量的非负假定可在模型的“END”语句后面用命令“FREE”。例如在“END”语句后输入FREEvname可将变量vname的非负假定取消。 可以在模型的“END”语句后面用命令“SUB”(即设置上界(SETUPPERBOUND)的英文缩写)设定变量的上界用命令“SLB”(即设置下界(SETLOWERBOUND)的英文缩写)设定变量的上下界。其用法是:“SUBvnamevalue”将变量vname的上限设定为value“SLB”的用法类似。用“SUB”和“SLB”表示的上下界约束不计入模型的约束因此LINDO也不能给出其松紧判断和敏感性分析。 数值均衡化考虑:如果约束系数矩阵中各非零元的绝对值的数量级差别很大(相差倍以上)则称其为数值不均衡的。为了避免数值不均衡引起的计算问题,使用者应尽可能自己对矩阵的行列进行均衡化。此时还有一个原则,即系数中非零元的绝对值不能大于或者小于。LINDO不能对LP中的系数自动进行数值均衡化但如果LINDO觉得矩阵元素之间很不均衡,将会给出警告。简单错误的检查和避免:输入模型时可能会有某些输入错误当问题规模较大时,要查找错误是比较困难的。在LINDO中有一些可帮助寻找错误的功能其中之一就是菜单命令“Report|Picture(Alt)”,它的功能是可以将目标函数和约束表达式中的非零系数通过列表(或图形)显示出来。例菜单命令“Report|Picture(Alt)”的功能例菜单命令“Report|Picture(Alt)”的功能用Report|Picture命令将弹出一个对话框,在弹出的对话框中采用缺省选项(即不采用下三角矩阵形式并以图形方式显示)直接按“OK”按钮可得到一个输出图形。可以从图中很直观地发现,其实错误原因只不过是在输入)行的表达式中C与CO弄混了(英文字母O与数字弄混了)。在图中还可以用鼠标控制显示图形的缩放这对于规模较大的模型是有用的。MINAAABBBCCCSUBJECTTO)AAlA<=)BBB<=)CCC<=)ABCO=)ABC=) ABC=END对如下的一个有错误的模型输入:例三个变量范围限定命令(FREE、SUB、SLB)的作用例三个变量范围限定命令(FREE、SUB、SLB)的作用求解如下的LP问题:这个模型中对变量x没有非负限制对y有上限限制对z有下限限制。用FREE、SUB、SLB三个命令可以实现这些功能。MAXx–yzSTcon)xyz<=con)xyz<con)xyz>con)xyz>ENDfreex!说明:变量x没有非负限制suby!说明:变量y的上界为slbz!说明:变量z的下界为具体输入如下:求解得到的结果:最大值为最优解为x=y=z=。可以看出y的上界()在最优解中并没有达到z的下界()也没有达到因此模型中去掉“suby”和“slbz”两个语句得到的结果应该是不变的。但由于最优解中x的取值为负值所以“freex”这个语句确实是不能少的。不妨试一下去掉这个语句后效果会怎样?敏感性分析敏感性分析内容提要:例例需要注意的是:灵敏性分析给出的只是最优基保持不变的充分条件而不一定是必要条件。比如对于上面的问题“原料最多增加(桶牛奶)”的含义只能是“原料增加(桶牛奶)”时最优基保持不变所以影子价格有意义即利润的增加大于牛奶的投资。反过来原料增加超过(桶牛奶)最优基是否一定改变?影子价格是否一定没有意义?一般来说这是不能从灵敏性分析报告中直接得到的。此时应该重新用新数据求解规划模型才能做出判断。所以严格来说我们上面回答“原料最多增加(桶牛奶)”并不是完全科学的。整数线性规划的求解整数线性规划的求解内容提要:LINDO求解整数线性规划概述例员工聘用问题(纯整数规划)例游泳队员的选拔问题(规划)例汽车生产计划(混合整数规划)备注备注备注尽管LINDO对整数规划问题很有威力,但要想有效地使用有时还是需要一定的技巧的。这是因为,人们很容易将一个本质上很简单的问题列成一个不太好的输入模型,从而有可能会导致一个冗长的分枝定界计算。遗憾的是我们往往难以预先估计什么样的模型才能避免冗长的分枝定界计算也难以判别什么样的模型是“不太好”的输入模型。当然这时LINDO会主动砍去一些计算过程,以缩短计算时间而且越是高版本的LINDO软件这种自动处理的“智能”越强。我们的建议是:如果分枝定界计算时间很长仍得不到最优解你可以试试对输入模型进行一些等价变换:如交换变量的次序交换约束的顺序等有时也许会对减少求解所需的时间有所帮助。*二次规划(QP)*二次规划(QP)LINDO可用于求解二次规划(QP)问题但输入方式比较复杂因为在LINDO中不许出现非线性表达式。我们需要为每一个实际约束增加一个对偶变量(或LAGRANGE乘子)通过在实际约束前增加有关变量的一阶最优条件从而转化二次型为线性互补型(对线性互补型有兴趣的读者需要参阅其他一些专门书籍)并要使用QCP命令指明实际约束开始的行号然后才能求解。下面仅通过两个例子进行说明。例例求解如下二次规划问题:在LINDO模型窗口中输入模型在LINDO模型窗口中输入模型用RT,ONE和UL作为对偶变量问题输入格式应该如下:MINXYRTONEULSTXYRTONE>XYRTONEUL>XY>XY=Y<ENDQCP输入中的第一行(目标函数)只用于给出模型中相应变量的出现顺序:XYRTONEUL用加号连接。输入中的第二、三行约束是在实际约束前增加的有关变量的一阶最优条件即LAGRANGE函数:分别对xy求偏导数令其大于所得第二、三行约束(一阶最优条件)。“END”后面的语句“QCP”表示原来的二次规划问题真正的约束是从输入的第行开始的。求解得到输出如下(只列出需要的部分结果):QPOPTIMUMFOUNDATSTEPOBJECTIVEFUNCTIONVALUE)VARIABLEVALUEREDUCEDCOSTXYRTONEULROWSLACKORSURPLUSDUALPRICES)))))NOITERATIONS=同整数规划时的情况类似二次规划也没有敏感性分析结果因此LINDO对应的敏感性分析输出结果也是没有意义的不能被利用。经过次迭代到了最优解:X=Y=最优值为:例例求解第章节例给出的如下二次规划问题:需要用对偶变量(LAGRANGE乘子)写出其LAGRANGE函数。设两个约束的LAGRANGE乘子分别是LAGLAG则其LAGRANGE函数为:(注意:我们把目标函数取了负号因此把原来的最大化问题变成了最小化问题)分别对原问题的决策变量xx求偏导数令其大于等于(这实际上是一阶最优条件)可得两个新约束如下:QP问题输入LINDO软件求解时第一行(目标函数)只用于给出模型中相应变量的出现顺序:Xxlag,lag用加号连接在实际约束前增加刚刚得到的有关变量的一阶最优条件。此外必须在“END”语句后面用“QCPn”语句说明这是一个二次规划同时指出实际约束是从第n行开始的。最后这个问题的输入如下:(注意:我们这里故意假设产量必须为整数所以最后增加了“gin”语句)。minxxLAGLAGst)xxLAGLAG>=)xxLAGLAG>=)xx<)xx<endQCPgin求解结果如下:LASTINTEGERSOLUTIONISTHEBESTFOUNDREINSTALLINGBESTSOLUTIONOBJECTIVEFUNCTIONVALUE)VARIABLEVALUEREDUCEDCOSTXXLAGLAGROWSLACKORSURPLUSDUALPRICES))))NOITERATIONS=BRANCHES=DETERM=E可见LINDO用于求解二次规划(QP)问题比较复杂不容易非常直观地理解。特别注意:若原约束是“”约束则对应的LAGRANGE乘子应该取或负值(对最小化问题),所以在例中构造的Lagrange函数中RT的前面是一个负号(减号)这样RT就取非负值了。对最大化问题这些规律可能又不相同所以建议您在没有绝对把握时总是将目标一律化成最小化(MIN)问题将约束一律写成“”约束(等式约束也可以)以免出错。备注:建议最好直接用下一章介绍的LINGO软件求解QP问题因为LINGO中输入的模型更接近二次规划的数学表达形式不容易出错而计算效果同样很好。要想学好和灵活应用LINDO软件,首先要多练习使用LINDO来解决问题,熟能生巧。LINDO中的显示报告完全是英文的大家要熟悉其含义。不要太拘泥于书本或别人教你的方法,要会举一反三,综合使用,才能用得巧而精。这就象编程序一样,同样的几条程序命令,有的人只能生搬硬套,而有的人却能发挥得淋漓尽致,这中间的功夫不是光靠一招招向书本学能得来的了。*LINDO的主要菜单命令*LINDO的主要菜单命令内容提要:菜单条上的个主菜单文件(File)主菜单编辑(Edit)主菜单求解(Solve)主菜单报告(Report)主菜单LINDO软件的个主菜单LINDO软件的个主菜单File(文件)Edit(编辑)Solve(求解)Reports(报告)Window(窗口)Help(帮助)菜单条上有个主菜单:File(文件)菜单包括了LINDO通过文件与外部设备(如磁盘)交换信息的命令Edit(编辑)菜单包括了在当前窗口下编辑文本的命令Solve(求解)菜单包括了求解模型的命令REPORTS(报告)菜单包括了生成解答结果报告的命令Window(窗口)菜单包括了窗口切换的命令HELP(帮助)菜单包括了访问在线帮助文挡的命令。对于几乎所有的菜单命令LINDO都提供了快捷键(快捷键的提示位于每个菜单命令的右侧)对于常用的菜单命令LINDO在工具栏提供了相应的图形按钮(参见下一页)。工具栏是浮动式的可以用鼠标拖到屏幕上任何地方。这些菜单的用法都是和WINDOWS下其他应用程序的标准用法类似的所以我们不准备对所有的菜单命令进行完整和详细的介绍而是只对前个主菜单中有一定LINDO特色的主要命令进行简要介绍。LINDO工具栏及其对应的菜单命令和快捷键LINDO工具栏及其对应的菜单命令和快捷键文件(File)主菜单文件(File)主菜单由于LINDO编辑器对文件的大小是有限制的因此用File|New和File|Open打开的文件不能太大(通常不能超过字符)而File|View不受文件大小限制这对浏览特别大规模的文件(通常不一定是由LINDO本身的编辑器产生的)是有用的。File|New、File|Open与File|View命令:File|New用于新建一个模型文件File|Open用于打开一个已有文件打开后可以对这个文件进行编辑、求解、保存等File|View只用于打开已有文件供浏览(也可以求解)但不能编辑。File|LOGOUTPUT该命令将打开一个对话框(图)要求你指定一个文件名(该文件成为“LOG(日志)文件”)。以后LINDO软件的所有输出都被送到这个日志文件中保存下来供你以后查看。注意:正常情况下在菜单驱动模式下LINDO的输出应当是被送到报告窗口在“CommandWindow(命令窗口)”模式下(参见本章节)LINDO的输出应当是被送到命令窗口。对话框中有两个检验盒:如果选择“EchotoScreen(屏幕显示)”检验盒屏幕上也会同时显示输出结果否则屏幕上就不再显示了如果选择“Appendoutput(追加输出)”检验盒则以后所有LINDO的输出被追加到这个日志文件的结尾否则系统将首先清空这个文件然后开始追加内容。File|TakeCommands(提取命令)用于打开和执行一个LINDO命令脚本文件(命令脚本文件中包含的是由一些列LINDO命令组成的命令序列具体参见本章节对应的行命令“TAKE”以及本章节对应的例子)。File|BasisSave(保存基)打开一个标准的文件保存对话框可以将单纯形算法的当前的基(解)以你指定的文件名和文件格式保存下来将来可以用File|BasisRead(读取基)命令读出这个基(解)并可以从这个基(解)开始继续运行单纯形算法。保存时可以有三种文件格式可供选择:*PUN(以MPS(数学规划系统)的"Punch"格式保存)*FBS(以LINDO格式保存)*SDBC(以数据库格式按列(变量)保存)。具体请参考节中对应的行命令。File|Title显示当前模型的名称(如果该模型被命名过即模型的程序中出现过Title语句)。File|Date显示当前日期和时间。File|ElapsedTime显示本次启动LINDO以来已经使用了多长时间File|License输入、验证LINDO的许可证密码。编辑(Edit)主菜单编辑(Edit)主菜单该菜单下的多数命令基本上是不言自明的与WINDOWS下的其他编辑器类似这些命令就不具体介绍了。这里只介绍几个LINDO软件中的特色命令。EDIT|OPTIONS该命令打开一个对话框(见下一页)用于设置LINDO系统运行的内部参数这对于比较专业的用户是有帮助的。从对话框可以看出可修改的参数分成两大类:左边一类是关于优化程序的(Optimizer这里是指优化程序也就是LINDO求解器而不是最优解的意思),右边一类是关于输出格式的(Output)。输出格式(Output)中所包括的个选项:StatusWindow(状态窗口)选项:用于控制求解模型时是否显示状态窗口(缺省设置为显示)。TerseOutput(以简明的形式显示结果)选项:用于控制是否以简明的形式报告结果(缺省设置为以详细(Verbose)的形式报告结果)。PageLengthLimit(页长限制):用于控制输出时每页最多显示多少行(可以设置为任意正整数缺省设置是“None”表示无限制)。TerminalWidth(终端宽度):每行的最大宽度(每行多少字符)可以设为之间的整数(缺省设置为)。优化程序(Optimizer)的参数又分成两类:左边一类是关于整数规划的(IntegerProgramming即IP)右边一类是一般参数(General)。对于IP的参数可以设置:Preprocess(预处理):控制是否进行预处理。预处理中将生成割平面割平面对求解有利所以系统缺省设置是进行预处理。但生成割平面也会花费不少时间所以也可以不让LINDO生成割平面即不进行预处理。PreferredBranch(优先的分枝方式):可以选择“Default”(缺省方式向上或向下取整都可能)、“Up”(向上取整优先)、“Down”(向下取整优先)。IPObjectiveHurdle(IP目标函数的篱笆值):即只在比这个值更优的解中寻找最优解这相当于给出了最优值的一个界因此有利于求解(例如当知道当前模型的某个整数可行解时就可以用这个可行解的目标值设置这个值)。缺省值为“None”表示没有指定这个条件。IPOptimalityTol(IP最优值允许的误差上限):是一个百分数如表示即当LINDO得到一个目标值与最优值相差不超过的可行解时就认为达到了最优停止计算。缺省值为“None”表示不使用这个判停准则(即相当于要求误差为)。IPVarFixingTol(固定一个整数变量取值时所允许的上限):如果在IP模型松弛后的计算中某一个整数变量确实取到了整数但对应得判别数(REDUCEDCOST)的值很大超过这里指定的上限则以后的迭代中就把该整数变量固定下来不再允许变化。这样做的理由是判别数(REDUCEDCOST)很大的整数值很难在以后的迭代中发生变化。缺省值为“None”表示没有指定这个条件。对于LINDO的一般参数(General)可以设置:NonzeroLimit(模型中允许出现的非零系数的个数上限):这个参数对于不同版本的LINDO软件的缺省值不同试用版中是。IterationLimit(求解时允许的最大迭代步数):缺省值是“None”即没有限制有时为了防止计算时间太长用户可以自行设置为任意一个正整数。InitialContraintTol(初始阶段求解时约束允许的误差上限):即只要约束两边相差小于这个数时就认为约束成立。计算的初始阶段这个误差可能没有必要设置得过小以免找不到可行解所以缺省值是。FinalContraintTol(最后阶段求解时约束允许的误差上限):含义同上即只要约束两边相差小于这个数时就认为约束成立。计算的最后阶段这个误差有必要设置得比较小以便提高计算精度缺省值是。EnteringVarTol(进基变量的误差上限):即只有当变量的判别数(REDUCEDCOST)大于这个上限时(按绝对值)这个变量才可能进基(相当于认为绝对值小于这个数时判别数就是)。缺省值是*^。PivotSizeTol(旋转(迭代)时采用的误差下限):即旋转元的绝对值不能小于该上限(相当于认为绝对值小于这个数时旋转元就是)。缺省值是^。一旦参数被修改并按下“OK(确定)”按钮后将对所有此后的运行均有效直到退出LINDO系统或重新设置这个参数为止而与具体模型无关。如果将这些参数用对话框中的“SAVE(保存)”按钮保存下来退出LINDO后下次启动LINDO时这些参数仍然有效。对话框中右下方的“Default(缺省)”按钮用于恢复LINDO系统的缺省参数值。“Cancel(取消)”按钮用于废除本次参数修改关闭这个选项窗口“Help(帮助)”按钮用于提供本窗口的在线帮助。EDIT|PASTESYMBOL该命令打开一个对话框(如下图)用于在模型中当前光标后面插入符号,该符号从对话框中选取。可选的符号主要是三类:Reserved(保留字):LINDO系统的保留字(如一些常用的语句关键词和运算符号)Variables(变量):当前模型的决策变量Rows(行名):约束的行号或行名。用鼠标双击其中某个符号则该符号显示在对话框的缓冲区(“PasteBuffer”)栏内也可以直接编辑缓冲区的内容当点击“Paste(粘贴)”按钮时缓冲区的内容将被插入当前模型的当前光标后点击“Clear(清除)”按钮将清除缓冲区的内容点击“Close(关闭)”按钮将关闭该对话框。EDIT|CHOOSENEWFONT(选择字体):打开一个“字体”对话框用于指定显示的字体、字形和文字的大小。对话框如下图所示。求解(Solve)主菜单求解(Solve)主菜单SOLVE|COMPILEMODEL(编译模型):对当前模型进行编译(使用SOLVE|SOLVE命令时自然地先调用该命令)。如果当前模型输入有语法错误编译时将报告错误。SOLVE|PIVOT(旋转):从当前解出发进行一次单纯形旋转(即一次迭代)。用这个命令你可以跟踪整个单纯形算法的运行。SOLVE|DEBUG(调试):分析LP无解(Infeasible)或无界(Unbounded)的原因建议如何修改。它仅对LP有效对IP和QP无意义。对线性规划的高手而言这个功能可能是有用的。SOLVE|PreemptiveGoal(多目标):依次按照多个目标求解模型参见节的行命令GLEX。它仅对LP和IP有效对QP无意义。报告(Report)主菜单报告(Report)主菜单Report|Solution(解答):显示当前的解(你必须在此之前求解过当前模型)。在弹出的对话框中可选择“AllValues”(把所有变量的值全部显示)或“NonzerosOnly”(只显示非零取值的变量)然后点击“OK”按钮。Report|Range(敏感性分析):显示当前解的敏感性分析结果(你必须在此之前求解过当前模型)。Report|Parametrics(参数分析):对约束的右端项(RHS)进行参数分析也就是研究某个约束的右端项发生变化时最优值如何变化。例如对于前面介绍过的员工聘用模型在对话框中选择约束的行名(这里选择的是MON)输入新的右端项值(NewRHSValue这里输入的是原来的值是)还可以选择参数分析结果的报告方式(文本(TEXT)、二维图形(D)或三维图形(D))。点击“OK”按钮得到参数分析结果(如图)非常方便!从图中和报告窗口中的显示结果都可以看出这时最优解和最优值没有变化。请你用其他行或其他数试试看看效果如何。Report|Statistics(统计):显示当前模型的统计信息。例如对于前面介绍的QP模型(例)该命令将在报告窗口显示如下统计信息:ROWS=VARS=INTEGERVARS=(=)QCP=NONZEROS=CONSTRAINTNONZ=(=)DENSITY=SMALLESTANDLARGESTELEMENTSINABSOLUTEVALUE=OBJ=MIN,NO<,=,>:,GUBS<=VUBS>=SINGLECOLS=REDUNDANTCOLS=第一行的意思:该模型有行(当然约束只有行)个变量其中两个整数变量(没有变量)从第行开始是二次规划的实际约束。第二行的意思:非零系数共有个约束中非零系数共有个(其中个为或)模型密度为(密度定义为非零系数/[行数*(变量数+1)]分母即模型中所有可能出现的系数个数这里系数也包括右端项)。第三行的意思:模型中系数的最小值和最大值(按绝对值看)分别为和。第四行的意思:模型目标为极小化小于等于、等于、大于等于约束分别有2、0、2个广义上界约束(GUBS)不超过1个变量上界约束(VUBS)不少于0个。所谓GUBS是指一组不含有相同变量的约束所谓VUBS是指一个蕴涵变量上界的约束如从约束XXX=可以看出若X=则X=X=(因为有非负限制)因此XXX=是一个VUBS约束。第五行的意思:只含有1个变量的约束个数=0个冗余的列数=0个。Report|Peruse(用户请求):按照你的要求显示当前解答的各种信息对话框如下图。用户主要有两类选择:ReportParameters(报告参数):设置用户需要显示的信息项选项框“A”“B”“C”中项目的含义可参见节的行命令CPRI和RPRI。ReportFormat(报告格式):设置用户希望的显示格式。Report|Picture(模型图示):按照图形或文本方式显示模型中的非零系数而Report|BasisPicture(基图示)只显示当前基(Basis)的非零系数。(参见节的行命令PIC和BPIC)Report|Tableau(单纯形表):显示当前单纯形表Report|Formulation(模型):显示当前模型(或其指定的部分)。Report|ShowColumn(显示列):显示模型中你选定的列的信息。Report|PositiveDefinite(正定):判断二次规划的目标函数中的二次型是否正定(只对QP问题有效也就是说只有当当前内存中的模型是一个二次规划模型时这个命令才有意义)。*LINDO命令窗口*LINDO命令窗口内容提要:LINDO命令窗口概述INFORMATION(信息类命令)INPUT(输入类命令)DISPLAY(显示类命令)OUTPUT(输出类命令)SOLUTION(求解类命令)PROBLEMEDITING(编辑类命令)QUIT(退出类命令)“IP、QCP、PRP”(整数、二次与参数规划类命令)CONVERSATIONALPARAMETERS(对话类命令)USERSUPPLIEDROUTINES(用户过程类命令)MISCELLANEOUS(其他命令)LINDO命令窗口概述LINDO命令窗口概述前面介绍的基本上是在Windows下拉式菜单模式下驱动LINDO运行使用起来相当方便。LINDO还提供了另一种运行模式即“CommandLine”(命令行)模式。所谓“命令行”模式即通过在字符方式下输入一行一行的命令来驱动LINDO运行因此每个命令也称为“行命令”。这种操作方式很像老式DOS操作系统和UNIX操作系统下的运行方式。在Windows操作系统下相信很少有人会选择使用“命令行”模式但为了对LINDO软件介绍的完整性这里还是简单介绍一下。通过菜单命令“Window|OpenCommandWindow(AltC)”打开命令窗口在命令窗口下操作命令窗口下的提示符是“:”用户在“:”后面可以输入各种LINDO的有效命令进行操作输出也马上显示在命令窗口。在命令窗口下,只需键入"COMMANDS"或“COM”(命令)就会看到LINDO的所有有效行命令。如果某个命令较长通常可以只写出前面的若干个字母但注意不要与其他命令重名。INFORMATION(信息类命令)INFORMATION(信息类命令)HELP命令:键入“HELP”会显示出LINDO的一般帮助信息。键入"HELPname",LINDO可帮你了解某个具体的命令,其中"name"是命令名。COMMAND(COM)命令:给出按类型分类的LINDO命令目录。(注:括号内表示的是该命令的最简单的简写形式下同)LOCAL(LOC)命令:给出LINDO程序的版本信息。CATEGORY(CAT)命令:列出LINDO命令类型,并可按提示(序号)有选择地给出某类型下的所有命令。TIME命令:显示本次启动LINDO运行后累计的时间。DATE命令:显示当前的日期和时间。INPUT(输入类命令)INPUT(输入类命令)MAXMIN命令:用于输入一个包含目标函数,约束条件在内的LP模型输入过程如下:在提示符“:”下输入"MAX"(或"MIN"),继之以自然格式的目标函数作为第一行再输入“SUBJECTTO”或“SUCHTHAT“(可简写为”ST”或“ST”),后面跟约束条件行。每次回车后将显示“?”提示符。最后,输入"END"回到命令状态模式例:例:下面是同一问题的两种合法的输入方式:)MINXYSUBJECTTOXy<=XY>END)MINXYSTxY<XY>END注:变量名可以由个字母或数字型的字符构成,且第一个字符必须是字母。变量系数不能是指数型,例如:E形式的系数是不允许的。任一系数的整数位数最多为位小数位数最多为五位。关键词(“MAX”,“ST”,“END”)及各行之间必须用一个或多个空格分隔开。空格可以出现在一行之中,但不能出现在变量名中。一个回车符等价于一个空格。任一约束可自由选择一个名称来代替行号,例如:DEMAND)XY>RETRIEVE(RETR)命令:执行该命令可直接从硬盘上的文件中获得一个LINDO格式的模型。LINDO会为你提示可供选择的具体的文件名。能被RETRIEVE的模型文件必须是以前经过“SAVE”行命令存入的文件或者经过FILE|SAVE(或SAVEAS)菜单命令以LINDOPACKET格式存入的模型,后缀通常是“LPK”(即LINGO压缩格式文件)而不能是LINDO文本格式文件(后缀通常是“LTX”)RMPS命令:读取一个MPS格式文件,并转化成LINDO格式的模型。LINDO会为你提示可供选择的具体的文件名。该模型文件必须是MPS格式文件(关于MPS格式文件的说明见附录)如以前经过“SMPS”命令存入的文件或经过FILE|SAVE(或SAVEAS)菜单命令以MPS格式存入的模型(后缀通常是“MPS”即MPS格式文件)TAKE命令:用该命令可执行由一系列LINDO命令组成的文本文件(称为LINDO命令的脚本文件)。该文件内容只能同终端输入一致,例如文件中不能有行号等且文件中最后一个命令应为“LEAVE”。参见本章节的例子。LEAVE命令:该命令表示结束一个可由“TAKE”行命令或“FILE|TAKECOMMANDS”菜单命令访问的文件的输入。RDBC命令:从(数据库格式)文件中读出当前模型的一个初始解。该解应该是以前由"SDBC"命令存入文件中的。FBR和FINS命令:FBR命令从一个由FBS命令建立的文件中得到一个(可行)基FINS命令从一个MPS格式的文件中得到一个(可行)基。此时一个与该(可行)基匹配的LP模型必须是内存中已有的。DISPLAY(显示类命令)DISPLAY(显示类命令)PICTURE(PIC)命令:给出一个模型中系数矩阵的逻辑示意图参见Report|BasisPicture菜单命令。该命令有助于检查一个模型的输入是否正确。ZYXWVUTABCDEFG>逻辑示意图中用字母代表的数字大小:TABLEAU(TABL)命令:显示当前单纯形表(参见菜单命令Reports|TABLEAU)。LOOK命令:可用“LOOK”查看当前问题模型的全部或部分。键入“LOOKALL”可看全部问题模型。键入“LOOKrow,row”或“LOOKrowrow”可看行row至行row。模型中系数只能有个小数位,最多有位整数任何更大的数只能显示为“*****”。NONZEROES(NONZ)命令:显示一个简略的解答报告,其中只显示非零的变量及相应的行。“NONZ”命令并不能求解问题,所以需首先执行“GO”命令,且“NONZ”只有在设置了“TERSE”(简洁型)交互型模式后才能起作用。SHOCOLUMN(SHOWC)命令:键入"SHOCvariablename"可显示出变量variablename的系数列。SOLUTION(SOLU)命令:显示解的标准报告。RANGE命令:显示关于RHS(右端项)及OBJ(目标函数费用系数)的范围报告(敏感性分析)。BPICTURE(BPIC)命令:按最后一次转置三角化的行序显示当前(可行)基的逻辑图。参见Report|BasisPicture菜单命令。CPRI和RPRI命令:可选择地显示列(用CPRI命令)或行(用RPRI命令)的有关信息。CPRI的命令格式如下:CPRIprintlist:conditionalexpression例如,执行CPRINP:N="MX"ANDD>将显示满足下列条件的列(变量)的名称(N:NAME)及原始值(P:PRIMALVALUE),其条件为:列名(N)的第一个字符=M,第二、三个字符任意第四个字符=X,且有一对偶值(DUALVALUE)大于零。如果"printlist"一项被省略了,将只显示匹配的数目。N=NAME(名称)P=PRIMALVALUE原始值(相当于行的松驰量)D=DUALVALUE(相当于列的REDUCEDCOST)R=RIM(列对应的目标函数的系数对于行则表示右端项)U=SIMPLEUPPERBOUND(简单上界)L=SIMPLELOWERBOUND(简单下界)T=变量类型("C","I",or"F

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/104
1下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料