lindo简明教程
LINDO、LINGO软件的使用方法PPT课件
如果不是所有的决策变量都是整数变量,则 不能采用此方法。
11、如果x1是整数变量,则应在end之后写上命令: gin x1
如果x1是0-1变量,则应在end之后写上命令: int x1
如果所有的决策变量共有6个,并且所有的决 策变量都是整数,则可以在end之后写命令:
gin 6
如果x1,x2都是整数变量,但并不是所有的变 量都是整数变量,则要写成
gin x1 in x2
不能 写成
gin x1,x2 或 gin x1;x2
例1:某工厂生产甲、乙两种产品,这两种产品需
要在A、B、C三种不同设备上加工。每种甲、乙 产品在不同设备上加工所需的台时、它们销售后
所能获得的利润,以及这三种设备在计划期内能
提供的有限台时数如下表。试问如何安排生产,
即甲、乙两种产品各生产多少吨,可使该厂所获 的利润达到最大?
2、变量名的长度不超过8个英文字母表示,并且 必须以字母开头。英文字母不区分大小写。
3、目标函数与约束条件之间必须用“ st ”分开, 并且“ st ”单独一行。 4、目标函数、各约束条件都必须以“回车键” 结束,并且都应该是经过化简后的表达式,所 有字符必须是英文状态下输入的。
5、LINDO软件已规定所有的决策变量均为非负数。
LINDO 6.0学生版最多可以求解100个 变量和50个约束条件的线性规划问题。
对于线性规划问题,LINDO只要通过键 盘输入就可以方便地实现LINDO的操作和使 用。LINDO软件的基本操作比较简单,语法 特别简单,易学、易用。
LINDO常用的基本语法
1、目标函数以“max”或“min”开头,max (或min)与目标函数表达式之间不能有“=”。
LINGO教程
Lingo软件简明教程Lindo是美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发的专门用于求解数学规划的软件包,其版权现在归属于美国Lindo系统公司(Lindo System Inc. )。
Lindo包含多个组件,如Lindo、Gino、Lingo、Lingo NL和“What’s Best”等,这些组件统称为Lindo,其中以Lindo和Lingo 最为常用。
Lindo可用来求解线性规划、整数规划和二次规划;Lingo除了可以求解线性规划、整数规划和二次规划外,还可以求解非线性规划和线性、非线性方程组。
除此之外,Lingo还包含了内置的建模语言和一些常用的数学函数,可以简便、直观地描述大规模优化问题。
Lindo有多种版本,如学生版、演示版、高级版、发行版、工业版等,其主要区别在于对优化规模(变量和约束个数)有不同的限制。
本文主要介绍Lingo中的集、函数和命令,并给出了一些相应的例子。
一、Lingo初步下面通过一些例子来初步体验一下Lingo的方便、快捷。
例1.1、求解线性规划问题0 ,125 31034 ..32 max≥≤+≤++=y x yx yx t sy xzLingo程序如下:model: (可省略)max=2*x+3*y;4*x+3*y<10;3*x+5*y<12;end (可省略)然后点击工具条上的按钮即可。
1、Lingo已假设所有变量均非负,非负约束不必再写入程序。
可用变量界定函数@free(x) 解除变量x的非负假设;2、约束条件中的“≥”和“≤”可用“>”和“<”代替。
例1.2、求解整数规划问题,,12531034..32max ≥≤+≤++=y x y x y x y x t s yx z 为整数Lingo 程序如下:max=2*x+3*y;4*x+3*y<10;3*x+5*y<12;@gin(x);@gin(y);例1.3、求解下列非线性规划问题①xy x y x z 242min 22--+=;②()[]()[]21222122200055000315min -+++-+=y x y x y z()()[]()()[]⎪⎪⎭⎫ ⎝⎛+-+-+-+-+100255480030001256002004221222122x y x y x 5260000,50000x y x -≤≤≤≤。
LINDO软件使用简介
0.2x+0.7y+0.4z<1
End
Int x
Int y Int z
运算结果如下
OBJECTIVE FUNCTION VALUE
1) 7.000000 VALUE REDUCED COST
VARIABLE
X
Y Z
1.000000
1.000000 0.000000
-4.000000
-3.000000 -2.000000 DUAL PRICES
入 模 型
max 2x+3y
st
4x+3y<10
3x+5y<12 end
2. 存储模型
ห้องสมุดไป่ตู้
用SAVE命令将问题模型以LINDO格式存入文件(自己 输入文件名),如将上述输入模型存在sf1中。 3.模型求解 选择菜单“SOLVE”,并回答提示“DO RANGE
(SENSITIVITY)ANSLYSIS(灵敏性分析)”,yes或NO
COEF
X Y 2.000000 3.000000
INCREASE
2.000000 0.333333
DECREASE
0.200000 1.500000
RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE
RHS
2 3 10.000000 12.000000
前者只将变量vname标识为0/1型,后者将前n个变量标识 为0/1型。 还可用命令GIN将变量仅限为整数型
例如,求解整数规划
max s.t.
w 4x 3y 2z 2.5 x 3.1z 5 0.2 x 0.7 y 0.4 z 1 x, y 0, 且为0或1
LINGO教程
1.1 LINDO入门1.1.1 LINDO简介LINDO是一种专门用于求解数学规划问题的软件包。
由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。
因此在数学、科研和工业界得到广泛应用。
LINDO/GO 主要用于解线性规划、非线性规划、二次规划和整数规划等问题。
也可以用于一些非线性和线性方程组的求解以及代数方程求根等。
LINDO/GO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。
整数规划(IP—Integer Programming)问题。
其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。
其正式版(标准版)则可求解的变量和约束在1量级以上。
LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦在10^4量级以上。
虽然LINDO和LINGO 不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。
要学好用这两个软件最好的办法就是学习他们自带的HELP文件。
下面拟举数例以说明这两个软件的最基本用法。
(例子均选自张莹《运筹学基础》)例1.1.1(选自《运筹学基础》P54.汽油混合问题,线性规划问题)一种汽油的特性可用两个指标描述:其点火性用“辛烷数”描述,其挥发性用“蒸汽压力”描述。
某炼油厂有四种标准汽油,设其标号分别为1,2,3,4,其特性及库存量列于下表1中,将上述标准汽油适量混合,可得两种飞机汽油,某标号为1,2,这两种飞机汽油的性能指标及产量需求列于表2中。
运筹学lindo教程特别版
目录第1章引言第2章LINDO软件的基本使用方法2.1 LINDO入门2.1.1 LINDO软件简介LINDO是英文Linear Interactive and Discrete Optimizer字母的缩写形式,即”交互式的线性和离散优化求解器”。
LINDO软件和第3章即将介绍的LINGO软件包是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件(如图2-1所示)。
LINDO用于求解线性规划问题,其功能比较强,计算效果比较好。
此外,LINDO软件使用起来非常方便,很容易学会。
即使对优化方面的专业知识了解不多的人,也能够方便地建模和输入,有效地求解和分析实际中遇到的大规模化的问题,并通常能够快速得到复杂优化问题的高质量的解。
图2-1 美国LINDO系统公司开发的一套专门用于求解最优化问题的软件第一次运行刚安装的LINDO软件时,系统会弹出一个对话框,要求你输入Password(密码)。
如果是正版软件,则在密码框中输入LINDO公司提供的密码,然后按“OK”按钮即可。
否则,只能选择演示版(Demo Version),按下”Demo Version”按钮即可。
2.1.2 编写一个简单的LINDO程序在Windows操作系统下安装好LINDO软件后,双击桌面上LINDO图标(或在Windows”开始”菜单的“程序”中选择运行LINDO软件(如图2-2所示),可以启动LINDO 软件,屏幕上首先显示(如图2-3所示)所示的LINDO的初始界面。
从界面上可以看到LINDO 的最大的Constraints(约束)个数为50,最大的Variables(变量)个数为100,最大的Nonzeros 个数为16000。
图2-2 启动LINDO 程序图2-3 启动LINDO 的初始界面下面通过一个非常简单的例子,说明如何编写、运行一个LINDO 程序的完整过程。
点击图2-3中的“OK ”,出现如图2-4所示的工作界面。
Lindo教程
4 X + 3 Y <= 10 3 X + 5 Y <= 12
如果想修改问题,可键入 ALTER 命令, LINDO 会询问行号, 变量名, 及新的系数. 例如:
如果要将上面问题中约束条件 4x + 3y ≤ 10 改为 6x + 3y ≤ 10 ,再全部看一下,并求解新问题,
(2)GINO 可用于求解非线性规划 (NLP----Nonlinear Linear Programming) 问题,求解线 性和非线性方程组和不等式组,以及代数方程求根。GINO 中包含了有关财务、概率等方面的 函数和三角函数,以及各种一般的数学函数,可供使用者建立问题模型时调用。GINO 学生版 最多可求解多达 50 个变量和 30 个约束的问题。
(3)LINGO 可用于求解线性规划和整数规划问题。 (4) LINGO NL(LINGO2) 可用于求解线性、非线性和整数规划问题。
与 LINDO 和 GINO 不同的是,LINGO 和 LINGO NL(LINGO2) 包含了内置的建模语言, 允许以简练、直观的方式描述所需求解的问题,模型中所需的数据可以以一定格式保存在列表 (List)和表格(Table)中,也可以保存在独立的文件中。LINGO 和 LINGO NL(LINGO2) 学 生版最多可求解多达 200 个变量和 100 个约束的问题。
1·2 安装过程:
LINDO 软件包(学生版)在微机上 DOS 环境下通过安装后运行。安装盘为一片三英寸软 盘,安装盘上有安装程序 (install.exe) 和简要介绍文本 (read.me),还带有多个压缩文件和一个 解压缩程序 (lha.exe).
安装时,将安装盘直接插入软驱,然后运行该软盘上的安装程序,即在该软驱的提示符 (如 A:> 或 B:>)下键入“install”。 按“回车”(ENTER 键)后,只需遵照屏幕上的提示即可 完成整个安装过程:
LINDO软件基本使用方法
优化建模 优 化 建 模
新余学院
建模组
上一页
下一页
Xinyu University MCM
优化建模 优 化 建 模
2.4 查错功能
2019/4/5
新余学院
建模组
上一页
下一页
Xinyu University MCM
优化建模 优 化 建 模
2.5 FREE、SUB、SLB的使用举例 求解如下线性规划问题: 非负限制
2019/4/5
新余学院
建模组
上一页
下一页
Xinyu University MCM
优化建模 优 化 建 模
Sub y 20 Slb z 30是否可取消? y 的上界(20)在最优解 中没达到;z的下界(30) 也没达到.
Free x 是否可取消?
2019/4/5
新余学院
建模组
上一页
下一页
Xinyu University MCM
新余学院 建模组
上一页 下一页
Xinyu University MCM
9. 变量不能出现在一个约束条件的右端 10. 表达式中不接受括号“( )”和逗号“,”等任何符号, 例: 400(X1+X2)需写为400X1+400X2 11. 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 12. 缺省假定所有变量非负;可在模型的“END”语句后用 “FREE name”将变量name的非负假定取消 13. 可在 “END”后用“SUB” 或“SLB” 设定变量上下界 例如: “sub x1 10”的作用等价于“x1<=10” 但用“SUB”和“SLB”表示的上下界约束不计入模型的 约束,也不能给出其松紧判断和敏感性分析。 14. “END”后对0-1变量说明:INT n 或 INT name 15. “END”后对整数变量说明:GIN n 或 GIN name ※ 行号、“TITLE”语句和注释语句,是LINDO中惟一可以使用 汉字字符的地方.
第二章 LINDO软件的基本使用方法
Close(关闭)
优化建模
紧接着弹出一对话框,询问你是否需要做灵敏性分析 (DO RANGE (SENSITIVITY) ANALYSIS? )先选 择“否(N)”按钮,这个窗口就会关闭。然后,再 把状态窗口也关闭。
优化建模
报告窗口
用鼠标选择“Window | Reports Window‖(报告窗口), 就可以查看该窗口的内容
优化建模
例2.2
菜单命令“Report | Picture(Alt+5)” 的功能
对如下的一个有错误的模型输入:
MIN 5 A0 +6 A1 +2 A2 +4 B0 +3 B1 +7 B2 +2 C0 +9 C1 +8 C2 SUBJECT TO 2) A0 +Al +A2 <=8 3) B0 +B1 +B2 <=9 4) C0 +C1 +C2 <=6 5) A0 +B0 +CO =6 6) A1 +B1 +C1 =5 7) A2 +B2 +C2 =9 END 用Report | Picture命令,将弹出一个对话框,在弹出的对话框中采用 缺省选项(即不采用下三角矩阵形式,并以图形方式显示),直接按 “OK‖按钮可得到一个输出图形。可以从图中很直观地发现,其实错误 原因只不过是在输入5)行的表达式中C0与CO弄混了(英文字母O与 数字0弄混了)。在图中,还可以用鼠标控制显示图形的缩放,这对 于规模较大的模型是有用的。
Update Interval 显示和控制刷新本界面的时间间隔:“1‖表示1秒;用 (刷新本界面的时间间隔) 户可以直接在界面上修改这个时间间隔。
Lindo 和Lingo 数学软件的简单使用方法
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 且所选元素费用之和最小。
LINDO LINGO使用简介
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窗口的所有后续屏幕活动发送到文本文件中。
第四章 lingo使用入门new
SpreadSheet e.g. Excel是一个组件,用于Excel的大规模求解引擎,主
要处理Excel和Access生成数据文件的规划问题,安装后在OFFICE里面 会有一个what‟s best的宏。
Lindo API可以建立求最优解的应用程序,允许我们将强大的线性、整数
或非线性求解引擎挂入写好的应用程序中。
在Lingo模型窗中输入下列命令:
点击保存按钮,文件默认扩展名为.lg4
第一部分:模型输入窗口
说明:
1、利用Lingo编写最优化模型要包含目标函数、决策变量、约束条件三个要素。 2、在Lingo的模型中,每一行都必须要用一个分号结尾,而且分号必须是英文 状态下的。 3、Lingo模型的一个表达式可以分几行输入,但是表达式必须用一个分号结束。 4、在Lingo中为了提高可读性,需要增加注释,以!号开始,;结束,可以跨行。 5、Lingo不区分字母的大小写。建议使用的变量名要有一定的意义。 6、Lingo中的变量名字都必须用字母开头,接下来是其他字符、数字或下划线 7、可以用[con1]表示行号,可以不输入,此时Lingo在求解时会自动编入行号。 8、Lingo9.0以上版本可以直接打开Lindo文件,也可以用Lindo格式输入,但 Lingo11.0开始不存在Lingo和Lindo命令相互转化的功能。
#and# #or#
若左边的运算符小于或等于右边的运算符,则为true;否则为flase
仅当两个参数都为true时,结果为true;否则为flase 仅当两个参数都为false时,结果为false;否则为true
3、关系运算符
在LINGO中,关系运算符主要是被用在模型中,来指定一个表达式的左边 是否等于、小于等于、或者大于等于右边,形成模型的一个约束条件。关系 运算符与逻辑运算符#eq#、#le#、#ge#截然不同,前者是模型中该关系运算 符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为 真,不满足为假。
LINDO软件用法简介
Range Analysis解释
• 与我们上次介绍的参数规划问题不同的 是,range analysis中的结果是仅仅考虑目 标行的某一个系数的变化范围,即当其他 条件不变时,该系数在此范围内变化时,最 优解保持不变.有点类似我们分析中的偏 导数概念,而上节讲的参数规划问题类似 于全微分.其他的我们通过后面的例子进 一步解释.
当一行输入太长时,可在下一个+好前回车即可表示续 行.
当我们输完源程序后,最好保存,下拉file所 在的菜单,点击save,会弹出一个窗口,源程序 • 名自动以ltx为扩展名.然后运行程序,点击 solve,运行之后会有一个选择窗口,问 • DO RANGE(SENSITIVITY) ANALYSES • YES NO • 我们选择yes就是了.我们只等着阅读报告, 一般小的规划问题立刻就可出来结果.
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 自动进行,但有时用户需要先将模型编译一下查对是否有错,则用到此命令。
Lindo简明教程
4
LINDO 使用手册
用MAX / MIN命令可以直接从键盘上输入一个模型到内存。MAX / MIN命令对 规模较小的问题比较适用,对大规模问题的建立和输入,将在TAKE命令描述。 设我们要输入的模型的数学形式为: MAX 5.24X1 +7.3X2 +8.34X3 +4.18X4 SUBJECT TO 1.5X1 +X2 +2.4X3 +X4 2000 X1 +5X2 +X3 +3.5X4 8000 1.5X1 +3X2 +3.5X3 +X4 5000 X1 ,X2 ,X3 ,X4 0 输入模型的操作作如下: : MAX ?ST 5.24X1+7.3X2+8.34X3+4.18X4 ! "MAX"后面必须空一格
LINDO 使用手册
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
:MAX 3X1 + 4 X2+6x35x4<CR> ?ST X1 +2x2-x3<CR> ? +2 X4 3x1+x2-3x3+6x4<25 END <10 : 在用MAX/MIN 命令输入模型时,如果模型的一行超过屏幕宽度,只要回车就 可以在下一行继续输入。 (9)变量的非负约束是隐含的,不需要在模型中加以意义。 3、输入模型标题命令TITL LINDO设置了TITL命令, 为了识别模型相应的问题, 可以对模型作简要的说明, TITL放在模型的第一行,内容放在两个引号之间。同时,为了说明约束的性质,也 可以在每个约束的前面加上不超过8个字符的说明。例如 :TITLE :MAX "This is a maximum profit problem" 4 X1 + X2 - X3 + 2 X4 X1 - X2 + X3 - X4 < 30
lindo软件使用快速入门
湖南科技大学信息与电气工程学院李众序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软件的基本使用方法
Update Interval
显示和控制刷新本界面的时间间隔:“1”表示1秒;用
(刷新本界面的时间间隔) 户可以直接在界面上修改这个时间间隔。
Interrupt Solver (中断求解程序)
当模型规模比较大时(尤其对整数规划),可能求解时 间会很长,如果不想再等待下去时,可以在程序运行过 程中用鼠标点击该按钮终止计算。求解结束后这个按钮 变成了灰色,再点击就不起作用了。
优化建模
§2.1 LINDO入门
内容提要: 1. LINDO软件的安装 2. 编写一个简单的LINDO程序 3. 一些注意事项
ห้องสมุดไป่ตู้
优化建模
§2.1.1 LINDO软件的安装
本教材使用软件是 LINDO 6.1 for Windows试用版
安装过程中,用户只需要按照程序给出的提示, 一步一步走下去,直到安装成功为止。
显示迭代次数:“2”表示经过了2次迭代。
约束不满足的量(即各个约束条件不满足的“数量” 的和;特别注意不是“不满足的约束个数”):“0” 表示这个解是可行的。 显示目标函数当前的值:7.45455。
显示整数规划当前的最佳目标值:“N/A” (No Answer或Not Applicable)表示无答案或无意义,因 为这个模型中没有整数变量,不是整数规划(IP)。
“VALUE” 给出最优解中各变量(VARIABLE)的值: X =1.272727, Y =1.636364.
优化建模
“REDUCED COST” 给出最优的单纯形表中目标函数行(第1 行)中变量对应的系数(即各个变量的检验数(也称为判别 数)). 其中基变量的reduced cost值一定为0;对于非基变量 (注意:非基变量本身取值一定为0), 相应的 reduced cost 值表示当该非基变量增加一个单位(其他非基变量保持不变) 时目标函数减少的量( 对max型问题)。本例最优解中两个变量 都是基变量,所以对应的REDUCED COST的值均为0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VARIABLE
VALUE
REDUCED COST
X
1.272727
0.000000
Y
1.636364
0.000000
!“VALUE”给出最优解中各变量的值。
!“REDUCE COST”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小
!变动时,目标函数的变化率,其中基变量的 reduce cost 值应为0,对于非基变量Xj 相应
变量命名: 变量名最多用 8 个字符。其中第一个字符必须为 26 个字符之一,其余可以用“! ) + - = < >”这 7 个之外的任意字符。
约束命名 可以给每一个约束条件命名,以使得 LINDO 输出的内容更加易懂。方法是在约束条件 的前面写上约束名称和一个右括弧。它的命名规范和变量命名一样。
运算符 LINDO 的运算符仅有“+ - = < >”这 5 种。“≤”或“≥”用“<”或“>”表示,写成 “<=”或“>=”也可以,但仍会当作“<”或“>”处理。不接受括号来指定运算的优先级, 所有运算从左至右处理。变量和系数之间不要加“*”号。
五、LINDO 可选声明
LINDO 程序中,在“END”行之后可以写“TITLE”、“SUB”、“SLB”、“FREE”、“GIN”、 “INT”、“QCP”这几种可选声明,下面对它们一一说明。
TITLE 使用方式为:TITLE <Title> 指定<Title>为输出结果的标题。
SLB 使用方式为:SLB <Variable> <Value> 指定变量的下界。
图2
图3
以上就是求解一个 LP 问题的全过程。如果对中间的一些细节不关心,可以跳过第
三部分。
三、参数详解
点击菜单中的“Solve”选项或按钮后,LINDO 就会开始对模型进行编译。首先,LINDO 会检查模型是否具有数学意义以及是否符合语法要求。如果模型不能通过这一步检查,会看 到以下报错信息:An error occurred during compilation on line: n(产生错误的行数),LINDO 会自动跳转到发生错误的行。我们就可以检查该行的语法错误并改正过来。
当要判断表达式输入是否有错误时,可以使用菜单“Reports”的“Picture”选项。若事 先未选而现在想获得灵敏度分析,可用“Reports”的“Rang”选项。若需显示单纯形表, 可执行“Reports”的“Tab lean”选项。
四、LINDO 程序语法
模型结构: 如前例所示,LINDO 程序用“MAX”或“MIN”开头,后面写目标函数。跟着的可以 是“SUBJECT TO”,“SUCH THAT”,“S.T.”或“ST”,四种写法没有区别。接下来是约束 条件。所有的约束条件之后写 “END”。“END”后面可以有其他可选声明,如指定变量为 整数等,后文说明。
!一行表示目标函数,所以第二行对应第一个约束)。
!“DUAL PRICE”(对偶价格)列出最优单纯形表中判别数所在行的松弛变量的系数,表示
!当对应约束有微小变动时,目标函数的变化率,输出结果中对应每一个约束有一个对偶价
!格。若其数值为X,表示对应约束中不等式右端项若增加一个单位,目标函数将增加X个
!单位(max 型问题)。这里,第二行对应的对偶价格值应为0.090909表示当约束
注释 用“!”开头的行被认为是注释行,不加处理。
行的分拆 目标函数和约束条件都可以用多行表示。只要不把变量和它的系数分开,其他地方怎么 分都可以。
大小写 LINDO 对字母大小写不敏感,输出的结果中也会把程序中的所有小写转换为大写。
约束的句法 约束条件的左侧只能有变量以及变量的系数,右侧只能有常量。表达式应该经过化简, 如“2X1+3X2-4X1”应写成“-2X1+3X2”。
Interrupt Solver Close
给出当前解的状态,可能的值包括:Optimal(最优的), Feasible (可行的), Infeasible(不可行的),Unbounded(未定的) solver 的重复次数 多余或错误约束条件数量 目标函数的当前值 标识得到最优整数解,该项只出现在 IP 模型。 IP 模型中目标的理论范围 由 LINDO IP solver 分生出来的整型变量个数 solver 启动后所经过时间 状态窗口更新周期(秒)。可以把这个值设成任何一个非负数,如果 把它设成零的话很可能会增加求解时间。 按下该按钮,solver 将立刻停止并返回当前得到的最优解。 按下该按钮关闭状态窗口,solver 继续运行。状态窗口可以通过选 取相应命令重新打开。
SUB 使用方式为:SUB <Variable> <Value> 指定变量的上界。 值得注意的是,由于“SLB”和“SUB”是 LINDO 内置的,效率较高。例如在可选声 明中写“SUB X 10”和在约束条件中写“X<10”,最终得到的结果是一样的,但是前者执行 会快一些。
FREE 使用方式为:FREE <Variable> 前面说过 LINDO 中的变量默认为非负,使用 FREE 语句就可以把指定的变量的非负约 束去掉了。若给一个变量指定“SLB”或“SUB”后再“FREE”,则“SLB”或“SUB”将 无效。
二、输入与求解
这里先用一个例子来说明怎样利用 LINDO 输入和求解一个线形规划模型,后文将对 一些细节和 LINDO 语法结构作详细介绍。整数规划和二次规划将在第五部分说明。
对于如下线形规划问题
max z = 2x + 3y s.t. 4x + 3y ≤ 10
3x + 5y ≤ 12 x, y ≥ 0
当 solver 完成优化过程后将会弹出对话框提示是否要进行灵敏度和范围分析,可以 根据需要决定是否进行。
现在,应该已经出现"Reports Window"的窗口了。这个窗口里显示的就是 LINDO 的 输出结果报告,它可以显示 64,000 个字符的信息。如果有需要,LINDO 会从顶部开 始刷除部分输出以腾出空间来显示新的输出。如果出现一个很长的报告,需要完整地进 行阅读使用,可以把这些信息从 Reports Window 写到另外一个磁盘文件里,方法是选 取 File|Log Output 命令,快捷键是 F10,然后就可以找到该文件进行阅读使用。
MIN X+Y+RT+ONE+UL ST 6X - Y - 1.2RT + ONE > 0. - X + 2Y - 0.9RT + ONE + UL > -0.4 1.2X +0 .9Y > 1.1 X+Y=1 Y < 0.7 END QCP 4 即可。这里的“QCP 4”表示第 4 行(即“1.2X + .9Y > 1.1”这一行)为第一个实际约束的 行号。前文中提到过,模型中的目标函数和每个约束条件都占一个行号。
!的 reduce cost 值表示Xj 增加一个单位(此时假定其他非基变量保持不变)时目标函数减
!小的量(max 型问题)。
ROW SLACK OR SURPLUS DUAL PRICES
2)
0.000000
0.090909
3)
0.000000
0.545455
!“SLACK OR SURPLUS”给出松弛变量的值。第二行和第三行松弛变量均为0(模型第
像图1那样输入代码: MAX 2X + 3Y ST 4X + 3Y < 10 3X + 5Y < 12 END
即可,不考虑非负约束是因为 LINDO 的变量默认为非负的。
图1 可以通过菜单或工具栏把它保存成后缀为“.ltx”的 LINDO 程序文件。
现在开始求解。从“Solve”菜单选择“Solve”,或者在窗口顶部的工具栏里按
LINDO 6.1 简明教程 V0.2
一、简介
LINDO(Linear, Interactive, and Discrete Optimizer)是一个专门求解数学规划问题的软 件,可以用来解决线性规划(LP),整数规划(IP)和二次规划(QP)问题。对于非线 性规划,可以用 LINGO 或其他软件求解。LINDO 6.1 版为用户提供了两种使用方式: Windows 风格的交互式界面和 DOS 风格的命令行界面。本文只讨论前者,非常简单易 学。
!“2)4X + 3Y < 10”变为“2)4X + 3Y < 11”时,目标函数值=7.454545-0.090909
!=7.363636。
NO. ITERATIONS=
2
RANGES IN WHICH THE BASIS IS UNCHANGED: !灵敏度分析:报告当目标函数的费用系数和约束右端项在什么范围变化(此时假定其他系 !数保持不变)时,最优基保持不变。报告中出现 INFINITY 的话表示正无穷。
RIGHTHAND SIDE RANGES
ROW
CURRENT
ALLOWABLE
ALLOWABLE
RHS
INCREASE
DECREASE
2
10.000000
6.000000
2.800000
3
12.000000
4.666667
4.500000
!第一个约束右端项为 10,当它在[10-2.8,10+6]=[7.2,16] 范围变化时,最优基保持不变 。
GIN 使用方式为:GIN <Variable> 或 GIN n 求解整数规划时使用。
INT 使用方式为:INT <Variable> 或 INT n 求解 0-1 整数规划时使用。 例如求解