lindo详细使用说明
- 格式:doc
- 大小:173.00 KB
- 文档页数:41
LINDO程序软件使用说明一、概述LINDO:LINDO Stand for Linear,Interactive,Discrete,Optimizer功能:求解线性规划类的数学模型。
特点:自然格式数学模型,灵活方便,快速输入与求解版本:LINDO6.1二、LINDO6.1编辑窗口界面调用LINDO程序:单击“开始、程序、LINDO32”,即进入程序界面。
LINDO6.1为WINDOWS程序,其基本窗口及编辑窗口如图1所示。
模型按自然格式在编辑串口输入及修改。
工具栏给出编辑使用和求解使用的基本工具。
图1-1 LINDO6.1界面工具栏各种工具的功能如下:——建立一个编辑窗口;打开一个已有的文件;查阅一个已有文件内容——保存文件;打印文件——剪切;复制;粘贴——查找与替换文本;修改缺省的系统参数;跳转到一个特定的行——可用符号向导,用于辅助建模;清除窗口全部内容——求解;编译文本模型,可查找模型语法错误及汇总所用符号——选择简洁或全部解报告;产生不同项目的解报告;产生模型系数矩阵图——在不同窗口之间切换;平铺所有打开的窗口;关闭所有窗口——联机帮助三、模型输入示例模型输入以文本方式进行,采用模型表示的自然格式。
在编辑窗口中,按自然格式输入:例:对下述LP模型:输入格式:说明:(1)输入命令“max”或者“min”,后面直接跟目标函数表达式,不能输入函数符号“z”;(2)如果函数表达式较长,可键入回车符中断转下一行继续输入;(3)不识别下标变量;不识别“⨯、/、≠、∑、()、*”等运算符,只识别“+、-”运算符;(4)当目标函数表达式输入完毕后,输入“st”命令,此后输入的表达式为约束条件;(5)输入约束条件时,可以输入“<”、“>”表示约束条件中“≤”和“≥”的连接符号;(6)目标函数表达式中不能出现常数项;约束条件左边表达式中也不能出现常数;约束右端项必须是数值,不能出现变量符号;(7)若变量取值符号限制为“x≥0”形式,则可省略不必输入;若变量x取值符号限制为“取值无约束”形式;则在结尾end后加入“free x”限制;(8)模型输入完毕后需输入end表示结束。
Lingo介绍Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。
lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。
Lingo的主要功能特色为:(1)既能求解线性规划,也有较强的求解非线性规划的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo语言;(6)能方便地与excel、数据库等其他软件交换数据。
学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社Lingo程序设计简要说明在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。
在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。
一般我们用LINGO来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。
LINGO只是一个求解工具,我们主要的任务还是模型的建立!当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
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,返回操作系统在这一章中,先对这几个命令的用法作详细解说。
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软件包使用手册目录第一节简介与安装第二节用LINDO求解线性规划(LP) 问题第三节用LINDO求解整数规划(IP) 和二次规划(QP) 问题第四节GINO简介第五节LINGO简介第一节简介与安装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学生版最多可求解多达200个变量和100个约束的规划问题。
(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个约束的问题。
(5)例子文件:在软件包中还含有例子文件,其中有些例子文件与各软件在一起,但大多数例子文件一般安装在例子目录。
例子目录下的例子文件是以LUTOS 1-2-3的WK1格式存储的(也可用MS-OFFICE工具的EXCEL软件读写)。
1·2安装过程:LINDO软件包(学生版)在微机上DOS环境下通过安装后运行。
安装盘为一片三英寸软盘,安装盘上有安装程序(install.exe) 和简要介绍文本(read.me),还带有多个压缩文件和一个解压缩程序(lha.exe).安装时,将安装盘直接插入软驱,然后运行该软盘上的安装程序,即在该软驱的提示符(如A:> 或B:>)下键入“install”。
按“回车”(ENTER键)后,只需遵照屏幕上的提示即可完成整个安装过程:(1)用户首先必须选择所需安装的内容:用户可以任意选择所需安装的内容(从1·1节所介绍的五种组件中任意选取)。
如果想安装五种组件中的某个组件,就在它前面键入“Y”;否则键入“N”,然后“回车”。
如此反复,完成后屏幕将提示您确认您的选择。
(2)用户必须选择所需安装到的目的地(一般是硬盘上的某个目录)。
屏幕将提示缺省的目录,您可以任意修改,如此反复,完成后屏幕将提示您确认您的选择。
(3)确认您的选择之后,安装程序就会自动完成全部后续安装过程。
安装过程结束后,您就可以进入安装好的目录,运行相应的优化软件了。
第二节用LINDO求解线性规划(LP)问题2.1初试LINDOLINDO 的求解机制:LINDO 的求解过程采用单纯形法,一般是首先寻求一个可行解, 在有可行解情况下再寻求最优解. 用LINDO 求解一个LP问题会得到如下的几种结果: 不可行(No feasible solution) 或可行(Feasible)可行时又可分为: 有最优解(Optimal Solution)和解无界(Unbounded Solution)两种情况. 由于在实际问题中, 不太可能出现最大利润无上限的情形, 所以使用者应检查是否少了一个约束或有其它印刷错误.在LINDO子目录下执行LINDO.EXE文件即可进入LINDO工作环境,其屏幕显示如下:LINDO/PC 5.02 (4 MAR 92)STUDENT VERSION. FOR EDUCATIONAL USE ONLY.SINGLE USER LICENSE FOR EDUCATIONAL USE ONLYDISTRIBUTED WITH TEXTBOOKS BY WADSWORTH PUBLISHING:“:”为LINDO 提示符,在其之后, 使用者即可用具体的命令来输入并求解优化问题。
让我们来解如下LP 问题:Maxz x y s t x y x y x y =++≤+≤≥2343103512..,由于LINDO 中已假设所有的变量都是非负的, 所以非负约束可不必再输入到计算机中;LINDO 也不区分变量中的大小写字符(实际上任何小写字符将被转换为大写字符);约束条件中的“<=” 及“>=”可用“<” 及“>”代替。
上面问题用键盘输入如下:: MAX 2x + 3Y? ST? 4X + 3Y < 10? 3x + 5Y < 12? END:LINDO 中一般称上面这种问题实例(INSTANCE )为模型(MODEL )。
以后涉及该模型时,目标函数为第一行,两个约束条件分别为第二、三行。
直接键入运行(GO )命令就可得到解答, 屏幕显示如下::GOLP OPTIMUM FOUND AT STEP 2OBJECTIVE FUNCTION VALUE1) 7.4545450VARIABLE VALUE REDUCED COSTX 1.272727 .000000Y 1.636364 .000000ROW SLACK OR SURPLUS DUAL PRICES2) .000000 .0909093) .000000 .545455NO. ITERATIONS= 2DO RANGE(SENSITIVITY) ANALYSIS?? N:计算结果表明:“LP OPTIMUM FOUND AT STEP2”表示单纯形法在两次迭代(旋转)后得到最优解。
“OBJECTIVE FUNCTION VALUE 1) 7.4545450 ”表示最优目标值为7.4545450. “VALUE ”给出最优解中各变量(VARIABLE )的值: X =1.272727, Y =1.636364.“REDUCED COST ” 给出最优单纯形表中第0行中变量的系数 ( max 型问题). 其中基变量的reduced cost 值应为0,对于非基变量, 相应的 reduced cost 值表示当该非基变量增加一个单位时目标函数减少的量。
本例中此值均为0。
“SLACK OR SURPLUS ” 给出松驰变量的值: 第2、3行松驰变量均为0, 说明对于最优解来讲,两个约束(第2、3行)均取等号。
“DUAL PRICES ” 给出对偶价格的值: 第2、3行对偶价格分别为 .090909,.545455。
“NO. ITERATIONS= 2” 表示用单纯形法进行了两次迭代(旋转)。
一个问题解答之后, LINDO 会询问是否需要做灵敏性分析(DO RANGE (SENSITIVITY) ANALYSIS? ) 如果你不需要,你应回答“N ”(NO ),回到提示符“:”之下.如果想重新看到刚才的模型,可键入 LOOK 命令, LINDO 会询问具体的行号. 典型的应答可以是 3, 或1-2, 或ALL, 而结果, 相应地会显示出第 3行, 第1-2 行, 或所有问题行.: LOOKROW:33) 3 X + 5 Y <= 12:或: LOOK allMAX 2x + 3YSUBJECT TO2) 4 X + 3 Y <= 103) 3 X + 5 Y <= 12END:如果想修改问题,可键入 ALTER 命令, LINDO 会询问行号, 变量名, 及新的系数. 例如:如果要将上面问题中约束条件4310x y +≤改为6310x y +≤,再全部看一下,并求解新问题,那么键入ALTER 命令后相应的应答为 2,X,和6, 以下是演示过程::ALTERROW:2VAR:XNEW COEFFICIENT:6:LOOK ALLMAX 2 X + 3 YSUBJECT TO2) 6 X + 3 Y <= 103) 3 X + 5 Y <= 12END:goLP OPTIMUM FOUND AT STEP 0OBJECTIVE FUNCTION VALUE1) 7.3333330VARIABLE VALUE REDUCED COSTX .666667 .000000Y 2.000000 .000000ROW SLACK OR SURPLUS DUAL PRICES2) .000000 .0476193) .000000 .571429NO. ITERATIONS= 0DO RANGE(SENSITIVITY) ANALYSIS?? N: QUIT最后键入退出(QUIT)命令, 即可退出LINDO工作环境。
注:输入、查看和修改一个LP模型更方便的方法是采用全屏幕编辑器。
在“:”提示符下键入编辑(EDIT)命令可以进入全屏幕编辑器,可以和其他文本编辑器一样方便使用。
2·2 求解LP问题的一般步骤及例子步骤:1)首先是输入一个LP问题。