LINDO软件使用指导
- 格式:doc
- 大小:55.50 KB
- 文档页数:5
十、Lindo 软件求解线性规划问题LINDO (Linear INteractive and Discrete Optimizer)是一种专门用于求解数学规划问题的软件包,由于执行速度快、易于方便输入、求解和分析数学规划问题,因此在数学、科研和工业界得到广泛应用。
主要用于求解线性规划(LP —Linear Programming )、非线性规划(NLP -Non-Linear Programming )、二次规划(QP —Quadratic Programming )和整数规划(IP —Integer Programming )等问题。
学生版的LINDO 可以处理最多含有300个变量和150个约束条件规划问题。
注意事项:● 目标函数可以是Max 也可以是 Min ,在输入到Lindo 软件的时候可以是大写MAX (MIN )也可以是小写max (min );● 目标函数与约束条之间用ST 、subject to 隔开;● 变量名不超过8个字符● 变量与其系数之间不需要“*”连接,比如:3A1,不要写成3*A1;● 所有变量都是非负的,所以我们前面给大家讲了线性规划必须写成标准形式;● 如果要输入≤或≥,可以用 < 或 > 代替;● Lindo 中不允许变量出现在一个约束条件的右端;● Lindo 不能接受“()”,如:400(X1+X2)要写成400X1+400X2,10000不能写成10,000● 表达式最好适当的简化,不要出现2X1+3X2-4X1,要写出-2X1+3X2; ● 最后用end 结束;● 整数规划(IP )问题在END 标志后需定义整型变量。
0-1 变量:用INT vname (Vname 为0-1 变量)或INT n (前n 个变量为0-1 变量)来标识。
一般整数变量:将INT 变为GIN 。
结合一个例子说明一下其他的事项:例1 16y x 21y 10x y15x 10max <+≤≤+Step1 输入模型如下:图1例题15Lind o程序Step2 点击运行按钮后,就可以执行Step3 执行后会看到如下两个对话框图 1 例题1的求解状态图2 例1 是否要做灵敏度分析Step4 选择“是”得到如下结果LP OPTIMUM FOUND A T STEP 2OBJECTIVE FUNCTION V ALUE1) 220.0000V ARIABLE VALUE REDUCED COST X1 4.000000 0.000000X2 12.000000 0.000000ROW SLACK OR SURPLUS DUAL PRICES2) 6.000000 0.0000003) 0.000000 5.0000004) 0.000000 10.000000NO. ITERATIONS= 2LP OPTIMUM FOUND A T STEP 2OBJECTIVE FUNCTION V ALUE1) 220.0000V ARIABLE VALUE REDUCED COST X1 4.000000 0.000000X2 12.000000 0.000000ROW SLACK OR SURPLUS DUAL PRICES2) 6.000000 0.0000003) 0.000000 5.0000004) 0.000000 10.000000NO. ITERATIONS= 2RANGES IN WHICH THE BASIS IS UNCHANGED:OBJ COEFFICIENT RANGESV ARIABLE CURRENT ALLOWABLE ALLOWABLECOEF INCREASE DECREASE X1 10.000000 5.000000 10.000000X2 15.000000 INFINITY 5.000000RIGHTHAND SIDE RANGESROW CURRENT ALLOWABLE ALLOWABLERHS INCREASE DECREASE2 10.000000 INFINITY 6.0000003 12.000000 4.000000 6.0000004 16.000000 6.000000 4.000000例16 一个线性规划模型的Lindo程序如下:max x1+x2+x3+x4STx5+x6+x7+x8>=250000x1+x5<=380000x2+x6<=265200x3+x7<=408100x4+x8<=1301002.85x1-1.42x2+4.27x3-18.49x4>=02.85x5-1.42x6+4.27x7-18.49x8>=016.5x1+2.0x2-4.0x3+17x4>=07.5x5-7.0x6-13.0x7+8.0x8>=0endLindo求解结果,带有灵敏度分析:LP OPTIMUM FOUND A T STEP 6OBJECTIVE FUNCTION V ALUE1) 933400.0V ARIABLE V ALUE REDUCED COSTX1 161351.734375 0.000000X2 265200.000000 0.000000X3 408100.000000 0.000000X4 98748.265625 0.000000X5 218648.265625 0.000000X6 0.000000 0.000000X7 0.000000 0.000000X8 31351.734375 0.000000ROW SLACK OR SURPLUS DUAL PRICES2) 0.000000 -1.0000003) 0.000000 1.0000004) 0.000000 1.0000005) 0.000000 1.0000006) 0.000000 1.0000007) 0.000000 0.0000008) 43454.000000 0.0000009) 3239024.250000 0.00000010) 1890675.875000 0.000000NO. ITERA TIONS= 6RANGES IN WHICH THE BASIS IS UNCHANGED:OBJ COEFFICIENT RANGESV ARIABLE CURRENT COEF ALLOWABLE INCREASE ALLOWABLE DECREASE X1 1.000000 0.000000 1.154137X2 1.000000 INFINITY0.000000X3 1.000000 INFINITY0.000000X4 1.000000 0.000000 0.000000X5 0.000000 1.154137 0.000000X6 0.000000 0.000000 INFINITYX7 0.000000 0.000000 INFINITYX8 0.000000 0.000000 0.000000RIGHTHAND SIDE RANGESROW CURRENT RHS ALLOWABLE INCREASE ALLOWABLE DECREASE2 250000.000000 186222.062500 234752.9843753 380000.000000 234752.984375 15247.0175784 265200.000000 30601.410156 265200.0000005 408100.000000 156685.250000 10176.5810556 130100.000000 2350.135254 36184.2070317 0.000000 43454.000000 669046.0000008 0.000000 43454.000000 INFINITY9 0.000000 3239024.250000 INFINITY10 0.000000 1890675.875000 INFINITY分析:⏹“LP OPTIMUM FOUND A T STEP 6”表示LINDO 在(用单纯形法)6次迭代后得到最优解。
LINDO使用手册LINDO Users Manual第一章 LINDO初步LINDO 是Linear INteractive Discrete Optimizer的缩写,是一个线性和整数规划的软件系统。
这里介绍的LINDO/386 5.3版本,最大规模的模型的非零系数可以达到1,000,000个,最大变量个数可以达到100,000个,最大目标函数和约束条件个数可以达到32000个,最大整数变量个数可以达到100,000个。
它的特点是采用交互方式操作,而且命令简单明了,很容易掌握。
用户在输入初步的数学模型后,可以一边运行,一边修改调试,直至获得满意的结果。
LINDO既是一个实用的求解大规模线性和整数规划系统,也很适用于训练的目的,用来培养学生面对较复杂的实际问题,构造线性及整数规划模型以及求解这些问题的能力。
限于本教材的内容,本手册只介绍有关线性规划和整数规划的基本内容,省略了有关二次规划、参数规划以及有关线性规划算法的比较专门的内容。
§1.1 LINDO 命令一览表LINDO 命令纳成十一类,每一类的名称及所属命令如下:1、查询类(Information)HELP 求助COM ( Command ) 命令列表LOCAL 当前版本信息CAT ( Categories ) 命令分类TIME 显示当前时间DATE 显示当前日期2、文件输入类( Input )MAX 键盘输入极大化模型MIN 键盘输入极小化模型RETR ( Retrieve ) 从磁盘读入模型文件RMPS ( Read MPS ) 从磁盘读入MPS文件TAKE 从磁盘读入模型或命令文件LEAV ( LEAVE ) TAKE命令的终止RDBC* 读取用SBDC命令保存的基列作为初始基FBR * 读取用FBS命令保存的基FINS* 读取用MPS格式保存的基3、显示类(Display)PIC ( Picture ) 显示矩阵中非零元素的分布及数量级TABL ( Tableau ) 显示当前单纯形表LOOK 显示模型的数学形式NONZ ( Nonzeros ) 显示解中的非零变量SHOC ( Show Column ) 显示模型中的一列SOLU ( Solution ) 显示当前得到的解RANGE 显示灵敏度分析的结果BPIC* 显示三角化的当前基逆矩阵CPRI* 显示所选择列的有关信息RPRI* 显示所选择行的有关信息DMPS* 显示以MPS格式表示的解PPIC* 显示行列重新排列的矩阵,使非零元素最靠近对角线4、文件输出类( File Output )SAVE 模型存盘DIVE ( Divert ) 将屏幕输出转向磁盘文件RVRT ( Revert ) 重新回到屏幕输出状态SMPS ( Save MPS ) 模型以 MPS 格式存盘SDBC* 将当前基的列向量以文件形式保存FBS* 将当前基以文件形式保存FPUN* 将当前基以MPS形式保存SMPN* 将当前模型用非标准的MPS格式保存5、求解类(Solution)GO 求解一个模型PIV(Pivot) 进行一次单纯形叠代GLEX* 用字典序方法优化6、问题编辑类( Problem Editing )ALT(Alter) 修改模型中的系数EXT(Extension) 增加一个约束DEL(Delete) 删除一个约束SUB(Simple Upper Bound) 给出一个变量的上界APPC(Append Column) 增加一列SLB(Simple Lower Bound) 给出一个变量的下界FREE 取消一个变量的上下界EDIT 用全屏幕编辑建立或修改模型7、退出( Quit )QUIT 退出 LINDO 系统8、整数规划、二次规划和参数规划( Integer, Quadratic and Parametric Programs )INT 定义一个0-1变量QCP*(Quadratic Programming) 定义二次规划PARA*(Parametric Programming)求解参数规划POSD*(Positive Definiteness) 检查二次规划矩阵的正定性TITAN* 紧缩连续变量的上界以及0-1变量的系数BIP* 在整数规划中给出一个剪枝的界GIN (General Integer)定义一个整数变量IPTOL* 设定整数规划最优解的宽容度9、对话参数( Conversational Parameters )WIDTH 设置打印机宽度TERS ( Terse ) 简洁输出信息VERB ( Verbose ) 冗长输出信息BAT ( Batch ) 成批输出信息PAGE 设定屏幕页的大小PAUSE 暂停10、用户子程序USER 执行用户提供的子程序11、杂项INV* (INVERT)求当前基的逆矩阵,以减少叠代误差STAT (STATISTICS)统计模型矩阵的系数BUG 如发现系统缺陷,提供有关信息SET 设置LINDO的内部参数TITL (TITLE)给出模型的标题§1.2 LINDO 初步操作以下命令,可以完成模型输入,模型显示,模型运行,退出LINDO等操作,这些命令是:• MAX 开始输入一个极大化模型• MIN 开始输入一个极小化模型• TITL 输入模型标题• EDIT 全屏幕输入或全屏幕编辑一个模型• LOOK 在屏幕上显示已输入的模型• GO 模型运行• QUIT 退出LINDO,返回操作系统在这一章中,先对这几个命令的用法作详细解说。
Lindo 和Lingo 数学软件的简单使用方法一、Lindo最新版本:6.1版(注册版)限制:4000个约束、8000个变量、800个整型变量功能:可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。
我们主要用它来求解整数规划或混合整数规划。
特点:执行速度非常快 例1:求解整数规划问题12121212max 58..65945,0z x x s t x x x x x x =++≤+≤≥且整解:在lindo 的运行窗口中输入 max 5x1+8x2 stx1+x2<6 5x1+9x2<45 end gin 2然后按Solve 菜单或快捷键得运行结果。
OBJECTIVE FUNCTION V ALUE (目标函数最优值) 1) 40.00000VARIABLE V ALUE REDUCED COST (变量增加1时目标函数改变量) X1 0.000000 -5.000000 X2 5.000000 -8.000000ROW SLACK OR SURPLUS DUAL PRICES (行) (松弛变量值) (对偶价格,表示约束右边常数增加1时目标函数改变量)) 2) 1.000000 0.000000 3) 0.000000 0.000000RANGES IN WHICH THE BASIS IS UNCHANGED (灵敏度分析) OBJ COEFFICIENT RANGES (目标函数中变量的系数的变动范围,在此范围内最优解不变) V ARIABLE CURRENT ALLOWABLE ALLOWABLECOEF (当前系数) INCREASE (增加量) DECREASE (减少量) X1 5.000000 0.000000 INFINITY X2 8.000000 0.000000 INFINITYRIGHTHAND SIDE RANGES (约束条件右边常数的变化范围,在此范围内最优基不变) ROW CURRENT ALLOWABLE ALLOWABLERHS (当前系数)INCREASE (增加量) DECREASE (减少量) 2 6.000000 INFINITY 1.000000 (第一个约束) 3 45.000000 INFINITY 0.000000 (第二个约束)注意:1. 软件中已经假设所以的变量是非负的,所以非负约束不必输入; 2. 可以用 FREE 变量 来取消变量的非负限制; 3. 不区分大小写; 4. 约束条件“<=”、“>=”可以用“<”、“>”代替; 5. 变量名不能超过8个字符;6. 变量与系数间可以有空格,但不能有任何运算符号(如*等); 7. 不允许变量出现在一个约束条件的右端; 8. 输入中不能有“()”和“,”;比如4(x1+x2)应写成4x1+4x2等;9. 在一个式中同一变量不能出现一次以上,比如2x1+3x2-x1应简化为x1+3x2;gin 变量 变量为整数变量 gin nint n 模型中的前n 个变量为0/1整数变量,关于变量的顺序可由输出结果查证! 整数变量申明须放在最后(即end 后)例2:集合覆盖问题设有一集合S={1,2,3,4,5},及S 的一个子集簇P={{1,2},{1,3,5},{2,4,5},{3},{1},{4,5}},假设选择P 中各个元素的费用为1、1.5、1.5、0.8、0.8、1,试从P 中选一些元素使之覆盖S 且所选元素费用之和最小。
第2章 LINDO软件的使用方法2.1 LINDO软件的安装前面说过,LINDO用于求解线性规划(LP)和二次规划(QP),包括整数规划(IP),本章进行详细介绍。
首先需要在Windows操作系统下安装LINDO软件,笔者完成本书有时使用的是Windows 2000操作系统,有时是Windows XP,都是简体汉字版。
LINDO 6.1 for Windows软件非常容易安装,只需要在Windows操作系统下将安装光盘(或软盘)插入光驱(或软驱),运行其中的安装程序(通常是SETUP.EXE)就可以了。
有时从LINDO 系统公司或其他渠道得到安装程序,可能直接是一个自解压的可执行性文件(如LND61.exe,大致是3M多一些),那么就直接运行这个程序进行安装就可以了。
安装过程中,用户只需要按照程序给出的提示,一步一步走下去,直到安装成功为止。
通常,用户首先需要接受用户协议,然后选择将LINDO软件安装到的目的地(一般是硬盘上的某个目录)。
屏幕将提示缺省的安装目录,您可以任意修改,如此反复,完成后屏幕将提示您确认您的选择。
确认您的选择之后,安装程序就会自动完成全部后续安装过程。
安装过程成功结束后,您就可以在Windows操作系统下运行LINDO优化软件了。
第一次运行LINDO时,LINDO要求你输入密码(Password),界面如图1所示。
如果你买的是正版软件,请在密码框中输入LINDO公司给你提供的许可证密码,按“OK”按钮即可。
否则,你只能使用演示版,按下“Demo Version” (演示版,即试用版) 按钮即可。
图1查看安装LINDO软件的硬盘目录,通常可以看到其中有一个名为SAMPLES的子目录,该子目录下有很多名为*.LTX的文件,后缀LTX表明这些文件是LINDO文本(LINDO TEXT)文件,每个文件是一个线性规划的小例子,对初学者学习LINDO的使用很有帮助,所以请大家最好记住这个子目录的位置。
Lindo /Lingo 软件初步Lindo/Lingo 软件是美国Lindo 系统公司开发的一套专门用于求解优化模型的软件。
Lindo 系统公司面向全社会免费提供该软件的“演示版”,我们现在使用的就是这个演示版。
占领硬盘空间大约20MB .一.Lingo 入门1.编写简单的Lingo 程序Lingo 程序:在“模型窗口”中,按Lingo 语法格式,输入一个完整的优化模型。
(注意:一个程序就是一个优化模型)例1 要求解线性规划问题 .0,,1253,1034..,32max ≥≤+≤++=y x y x y x t s y x z输入程序:max=2*x+3*y;4*x+3*y<=10;3*x+5*y<=12;例2 求解 .,0,,2,100..,23.027798max 21212122212121且都是整数≥≤≤+---+x x x x x x t s x x x x x x输入程序:max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;x1<=2*x2;x1+x2<=100;@gin(x1); @gin(x2);2.语法格式(1)目标函数 max= 或 min=(2)每个语句的结尾要有“;”(3)程序中,各个语句的先后次序无关(4)自动默认各个变量均为大于等于零的实数(5)不区分大写、小写(6)程序中的“<=”、“<”等同于原模型中的“≤”程序中的“>=”、“>”等同于原模型中的“≥”(7)对一个特定的变量 x ,进行限制:@free(x) :把x 放宽为任意实数@gin(x) :限制x 为整数@bin(x) :限制x 只能取0或1@bnd(-6,x,18) :限制x 为闭区间[-6,18]上的任意实数例3:某学校游泳队要从5名队员中选4名参加4乘100米混合泳接力赛。
5名队员4种泳姿的百米成绩(单位:秒)-----------------------------------------------------------------------------------李 王 张 刘 赵蝶泳 66.8 57.2 78 70 67.4仰泳 75.6 66 67.8 74.2 71蛙泳 87 66.4 84.6 69.6 83.8自由泳 58.6 53 59.4 57.2 62.4-----------------------------------------------------------------------------------如何选拔?(1)请建立“0----1规划”模型;(2)用Lingo 求解。
LINDO软件包(学生版) 使用手册目录第一节简介与安装第二节用LINDO求解线性规划(LP) 问题第三节用LINDO求解整数规划(IP) 和二次规划(QP) 问题第一节简介与安装1·1简介本文主要面向大中专学生, 研究生, 及掌握一定的高等代数知识的读者,介绍LINDO软件包(学生版)的基本使用方法。
该软件包(学生版)主要功能在于帮助使用者较快地输入一个优化问题的式子, 求解并分析该优化问题, 然后可做些较小的改动, 并重复上述的过程.该软件包(学生版)在微机上DOS环境下运行。
其使用界面不是图形式的,而是字符式的;不是菜单式的, 而是面向具体的命令(Command). 它有许多的命令, 每一个命令都可随时执行, 由系统检查该命令是否在上下文中起作用. 它采用一种对用户友好的交互使用方式, 包括了所有的使用过程指导. 基于使用的具体情况, 它会向使用者询问下一步将做什么, 或等待使用者输入下一个命令.LINDO软件包(学生版)包括LINDO,GINO,LINGO和LINGO NL(LINGO2)等优化软件的学生版以及相应的例子文件。
由于LINDO程序执行速度很快,易于方便地输入、求解和分析优化问题,LINDO在教学、科研和工业界得到广泛应用。
这里用LINDO软件包作为LINDO,GINO,LINGO和LINGO NL等的统称,包含五种组件,下面分别介绍如下:(1)LINDO是Linear INteractive and Discrete Optimizer字首的缩写形式,是由Linus Schrage 于1986年开发的优化计算软件包, 可以用来求解线性规划(LP----Linear Programming), 整数规划(IP----Integer Programming) 和二次规划(QP----Quadratic Programming) 问题. LINDO易于规划问题的输入、求解和分析,程序执行速度很快。
LINDO的简单使用方法一、LINDO软件的基本特性LINDO是一种专门用于求解数学规划问题的软件包。
由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。
因此在数学、科研和工业界得到广泛应用。
LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。
也可以用于一些非线性和线性方程组的求解以及代数方程求根等。
LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)、整数规划(IP—Integer Programming)问题。
它的最新版本——LINDO6.1版可求解最多含有4000个约束、8000个变量、800个整型变量的问题。
二、LINDO使用的一般说明(一)软件的基本指令点击进入LINDO 操作界面后,系统在屏幕的下方打开一个编辑窗口,其默认标题是”untitled”。
屏幕的上方有【File】、【Edit】、【Solve】、【Reports】、【Window】、【Help】六个菜单,除【Solve】和【Reports】菜单外,其他功能与一般Windows 菜单大致相同。
而【Solve】和【Reports】菜单的功能很丰富,这里只对其最简单常用的命令作一简单的解释。
1【Solve】菜单〖Solve〗子菜单,用于求解在当前编辑窗口中的模型,该命令也可以改用快捷键Ctrl+S 或用快捷按钮来执行。
〖Compile Model〗子菜单,用于编译在当前编辑窗口中的模型,该命令也可以改用快捷键Ctrl+E 或用快捷按钮来执行。
LINDO 求解一个模型时,总是要将其编译成LINDO 所能处理的程序而进行,这一般由LINDO 自动进行,但有时用户需要先将模型编译一下查对是否有错,则用到此命令。
1 LINDO菜单命令和语句1.1菜单命令我们可以从类似于其它Windows程序的便捷菜单访问LINDO的命令。
主菜单包括屏幕顶部的6个子菜单,它们列出了各种命令。
当单击其中一个子菜单——File、Edit、Solve、Reports、Window或Help时,将出现了一个包含各种命令的下拉菜单。
你可以像在大多数windows程序中那样选择命令——或者用鼠标单击命令,或者在适当的子菜单亮显时,按命令名中带下划线的字母。
许多命令还有快捷键(F2、Ctrl+Z等)。
为了增加方便性,还可以利用位于屏幕顶部工具栏中的图标访问一些最常用的命令。
下面简要介绍各种菜单命令,并列出了可以应用的快捷键和图标。
1.File(文件)菜单File菜单命令能够以各种方法操纵LINDO数据文件。
可以使用这个命令打开、关闭、保存和打印文件,并且可以执行LINDO独有的各种任务。
下面将描述File命令。
命令说明New F2 创建用于输入数据的新窗口。
Open F3 打开已有的文件。
利用对话框可以选择各种文件类型和位置。
View F4 打开已有的文件,仅进行浏览。
不对文件进行修改。
Save F5 保存窗口。
可以保存输入数据(模型)、Reports窗口或命令窗口。
可以下列格式保存数据:*.LTX,可以利用字处理软件进行编辑的文本格式;*.LPK,以“填充”格式保存编译模型,但是不进行特殊的格式化或解释;*.MPS,与机器无关的工业标准格式,用于在LINDO和其它LP软件之间传递LP问题。
Save As F6 利用指定的文件名保存活动窗口。
这特别适合于重命名已修改的文件,同时能够保持原始文件不受影响。
Close F7 关闭活动窗口。
如果窗口包含新的输入数据,将询问你是否保存修改。
Print F8 把活动窗口发送到打印机。
Printer Setup…F9 选择打印机和打印格式的各种选项。
Log Output…F10 把通常发送到Reports窗口的所有后续屏幕活动发送到文本文件中。
湖南科技大学信息与电气工程学院李众序Lindo可以用于求解线性规划(Linear Problem)和二次规划(Quadratic Programming).本文着重解决比较常见的线性规划问题。
尤其是关于DEA的问题。
1.1初识LINDO双击图标屏幕会显示如下图的LINDO标准界面这就是LINDO用户界面。
目前光标所在的子窗口为模型窗口(Model Window), 用户可以在这里输入要求解的规划模型。
目前这个子窗口标有“”字样,表示用户还没有为这个模型的文件命名,因此LINDO采用了一个自动生成的名字“untitled”,将来用户在保存模型时可以对它重新命名。
1.2使用LINDO解线性规划问题(Linear Problem)例如我们要求下列线性规划问题Max 5x+3y+6z //限定条件,即求等式右边的最大值s.t 4x+3y+2z<=103x+5y+4z<=204x+2y+4z<=15X,y,z>0那么,我们可以直接在上述窗口输入这个模型我们可以看到上面的输入格式基本上与手写的格式差不多,所以可以说这款软件的用户界面相当人性化。
其中ST表示约束条件,C2,C3表示行数。
求解这个问题的时候我门可以点软件的这个图标,这个时候便弹出了一下对话框。
上图标含有以下信息:当前状态:已经达到最优解迭代次数: 1约束不满足的量:0当前的目标值:22.5最好的整数解:没有答案整数规划的界:没有答案分枝数:没有答案所用时间:0.00秒现在这个模型就解完了,那么最优解在哪里呢?用鼠标点“Window”,你会发现有一个“Report Window”写在那里,这就是最终结果的报告窗口。
用鼠标选择“Report Window”,就可以查看该窗口的内容,如下上面表示的意思是“LP OPTIMUM FOUND AT STEP2”表示单纯形法在两次迭代(旋转)后得到最优解。
“OBJECTIVE FUNCTION VALUE” 1)22.50000表示最优目标值为 22.50000“VALUE”给出最优解中各变量(VARIABLE)的值: X=0.000000 Y=0.000000 Z=3.750000 “REDUCED COST”给出最优的单纯形表中目标函数行(第1行)中变量的系数(即各个变量的检验数),其中基变量的reduced cost 值为1.000000。
一、软件简介
LINDO是一种专门用于求解数学规划问题的软件包。
由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。
因此在数学、科研和工业界得到广泛应用。
LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。
也可以用于一些非线性和线性方程组的求解以及代数方程求根等。
LINDO 中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。
整数规划(IP—Integer Programming)问题。
其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。
其正式版(标准版)则可求解的变量和约束在1量级以上。
LINDO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP —QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。
虽然LINDO 和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。
要学好用这个软件最好的办法就是学习他们自带的HELP文件。
下面拟举数例以说明这个软件的最基本用法。
目标函数:max z=2x1+3x2
约束条件: x1+2x2<=8
4x1x6<=16
4x2 <=12
xj>=0(j=1,2 (8)
下面我们就用LINDO来解这一优化问题。
输入语句:
max(不区分大小写) 2x1+3x2
ST(不区分大小写或写subject to)
x1+2x2<=8
4x1x6<=16
4x2 <=12
end
然后再按运算符键即可得结果。
LINDO是规定Xj非负的,我们可发现输入方式与我们的数学书写的形式基本一致,运算后,计算机会问您是否需要灵敏度分析,我们选择是,结果如下:
LP OPTIMUM FOUND AT STEP 2
OBJECTIVE FUNCTION VALUE
1) 14.00000
VARIABLE VALUE REDUCED COST
X1 4.000000 0.000000
X2 2.000000 0.000000
ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 1.500000
3) 0.000000 0.125000
4) 4.000000 0.000000
NO. ITERATIONS= 2
RANGES IN WHICH THE BASIS IS UNCHANGED:
OBJ COEFFICIENT RANGES
VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF INCREASE DECREASE
X1 2.000000 INFINITY 0.500000
X2 3.000000 1.000000 3.000000
RIGHTHAND SIDE RANGES
ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE
2 8.000000 2.000000 4.000000
3 16.000000 16.000000 8.000000
4 12.000000 INFINITY 4.000000
下面给出其结果的一般解释:
“LP OPTIMUM FOUND AT STEP 2”表示LINDO在(用单纯形法)2次迭代或旋转后得到最优解。
“OBJECTIVE FUNCTION VALUE 1)14.000”表示最优目标值为14。
“VALUE”给出最优解中各变量的值。
“SLACK OR SURPLUS”给出松弛变量的值。
上例中SLK 2= 第二行松弛变量=0(模型第一行表示目标函数,所以第二行对应第一个约束)
“REDUCE COST”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率,其中基变量的reduce cost 值应为0,对于非基变量Xj相应的reduce cost值表示Xj增加一个单位(此时假定其他非基变量保持不变)时目标函数减小的量(max 型问题)。
上例中:X1 对应的 reduce cost 值为0,表示当X1=1 时,目标函数值不变。
“DUAL PRICE”(对偶价格)列出最优单纯形表中判别数所在行的松弛变量的系数,表示当对应约束有微小变动时,目标函数的变化率,输出结果中对应每一个约束有一个对偶价格。
若其数值为X,表示对应约束中不等式右端项若增加一个单位,目标函数将增加X个单位(max 型问题)。
当REDUCE COST 或DUAL PRICE 的值为0。
表示当微小扰动不影响目标函数。
有时,通过分析DUAL PRICE,也可对产生不可行问题的原因有所了解。
灵敏度分析:如果做敏感性分析,则系统报告当目标函数的费用系数和约束右端项在什么范围变化(此时假定其他系数保持不变)时,最优基保持不变。
报告中INFINITY表示正无穷,
当您要判断表达式输入是否有错误时,也可以使用菜单“Reports“的”Picture “选项。
若想获得灵敏度分析,可用“Reports“的”Rang“选项。
若需显示单纯形表,可执行“Reports“的”Tab lean“选项。
注意事项:
1)目标函数及各约束条件之间一定要有“Subject to (ST) ”分开。
2)变量名不能超过8个字符。
3)变量与其系数间可以有空格,但不能有任何运算符号(如乘号“*”等)。
4)要输入<=或>=约束,相应以<或>代替即可。
5)一般LINDO中不能接受括号“()“和逗号“,“,例:400(X1+X2) 需写成400X1+400X2;10,000需写成10000。
6)表达式应当已经过简化。
不能出现 2 X1+3 X2-4 X1,而应写成-2X1+3 X2。
例2.(选自《运》P94习题2.4;整数规则)
有四个工人,要分别指派他们完成四项不同的工作,每个人做各项工作所消耗的时间如表。
问应该如何指派,才能使总的消耗时间为最小?
这是一道典型的整数规则问题。
我们记派第I去做工作记为Xij
注意到每人只能做一项工作。
每项工作一人做。
我们得到目标函数为约束条件:
min
15x11+19x21+26x31+19x41+18x12+23x22+17x32+21x42+24x13+22x23+16x33+23x 43+24x14+18x24+19x34+17x44
ST
x11+x12+x13+x14=1
x21+x22+x23+x24=1
x31+x32+x33+x34=1
x41+x42+x43+x44=1
x11+x21+x31+x41=1
x12+x22+x32+x42=1
x13+x23+x33+x43=1
x14+x24+x34+x44=1
end
int 16
运行后我们可得到最优目标值为70
当,其余为0时。
(具体的Reports 我们略去)
在用LINDO解整数规划(IP)问题时,只要在END后加上标识即可,其中解0/1规划的用命令。
INT name 或 INT n (n 指前n 个变量标识为0/1型)解混合型整数规划则用GIN 来标识。