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 TIME DATE
CAT ( Categories )
2、文件输入类 ( Input ) MAX
键盘输入极大化模型
301
附录2 LINDO使用手册
MIN
键盘输入极小化模型 从磁盘读入模型文件 从磁盘读入MPS文件 从磁盘读入模型或命令文件 TAKE命令的终止
读取用SBDC命令保存的基列作为初始基 读取用FBS命令保存的基 读取用MPS格式保存的基
RETR ( Retrieve ) RMPS ( Read MPS ) TAKE RDBC* FBR * FINS*
LEAV ( LEAVE )
3、显示类(Display) PIC ( Picture ) LOOK
显示矩阵中非零元素的分布及数量级 显示当前单纯形表 显示模型的数学形式 显示解中的非零变量 显示模型中的一列 显示当前得到的解 显示灵敏度分析的结果 显示三角化的当前基逆矩阵 显示所选择列的有关信息 显示所选择行的有关信息 显示以MPS格式表示的解
显示行列重新排列的矩阵,使非零元素最靠近对角线
4、文件输出类 ( File Output ) SAVE
模型存盘
将屏幕输出转向磁盘文件 重新回到屏幕输出状态 模型以 MPS 格式存盘
将当前基的列向量以文件形式保存 将当前基以文件形式保存 将当前基以MPS形式保存
将当前模型用非标准的MPS格式保存
TABL ( Tableau ) NONZ ( Nonzeros ) SOLU ( Solution ) RANGE BPIC* CPRI* RPRI* DMPS* PPIC*
SHOC ( Show Column )
DIVE ( Divert ) RVRT ( Revert ) SDBC* FBS* FPUN* SMPN*
SMPS ( Save MPS )
5、求解类(Solution)
302
附录2 LINDO使用手册
GO GLEX*
求解一个模型 进行一次单纯形叠代 用字典序方法优化
PIV(Pivot)
6、问题编辑类 ( Problem Editing ) ALT(Alter)
修改模型中的系数 增加一个约束 删除一个约束 给出一个变量的上界 增加一列
给出一个变量的下界 取消一个变量的上下界 用全屏幕编辑建立或修改模型
EXT(Extension) DEL(Delete)
SUB(Simple Upper Bound) APPC(Append Column) FREE EDIT
SLB(Simple Lower Bound)
7、退出 ( Quit ) QUIT
退出 LINDO 系统
8、整数规划、二次规划和参数规划 ( Integer, Quadratic and Parametric Programs ) INT
定义一个0-1变量
QCP*(Quadratic Programming) 定义二次规划 PARA*(Parametric Programming)求解参数规划 POSD*(Positive Definiteness) TITAN* BIP* IPTOL*
检查二次规划矩阵的正定性
紧缩连续变量的上界以及0-1变量的系数 在整数规划中给出一个剪枝的界 定义一个整数变量
设定整数规划最优解的宽容度
GIN (General Integer)
9、对话参数 ( Conversational Parameters ) WIDTH
设置打印机宽度 简洁输出信息 冗长输出信息 成批输出信息 设定屏幕页的大小 暂停
TERS ( Terse ) BAT ( Batch ) PAGE
PAUSE 10、用户子程序
VERB ( Verbose )
303
附录2 LINDO使用手册
USER 11、杂项
执行用户提供的子程序
求当前基的逆矩阵,以减少叠代误差 统计模型矩阵的系数
如发现系统缺陷,提供有关信息 设置LINDO的内部参数 给出模型的标题
INV* (INVERT) BUG SET
STAT (STATISTICS)
TITL (TITLE)
§1.2 LINDO 初步操作
以下命令,可以完成模型输入,模型显示,模型运行,退出LINDO等操作,这些命令是:
? ? ? ? ? ? ?
MAX MIN TITL EDIT GO QUIT
开始输入一个极大化模型 开始输入一个极小化模型 输入模型标题
全屏幕输入或全屏幕编辑一个模型 模型运行
退出LINDO,返回操作系统
LOOK 在屏幕上显示已输入的模型
在这一章中,先对这几个命令的用法作详细解说。 1、进入LINDO
和调用其他任何应用程序一样,调用LINDO之前,用户先要完成登录、引导操作系统。在系统提示符(在这里,用C>表示系统提示符)出现以后,就可以启动LINDO,即
C>LINDO
执行此命令后,屏幕上出现\。
\是 LINDO 接受命令的状态,在\后面,可以键入各种合法的LINDO的命令。每执行一个命令( 除QUIT 外 ), LINDO 仍返回这一命令状态,等待下一个命令,如果是QUIT命令,则返回操作系统。
2、输入模型命令MAX / MIN
304
附录2 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 5.24X1+7.3X2+8.34X3+4.18X4 ! \后面必须空一格 ?ST !\也可以写\ ?1.5X1+1.0X2+2.4X3+1.0X4<2000 !用\或\而不能用\,\ ?1.0X1+5.0X2+1.0X3+3.5X4<8000 !?表示当前处于MAX命令状态 ?1.5X1+3.0X2+3.5X3+1.0X4<5000 !END结束MAX命令状态。变量非负约束X1,X2, ?END !X3,X4>=0是隐含的,不必也不能输入 MAX/MIN命令对模型的输入格式有一些限制,这些限制是:
(1)模型中出现的关键词只能是 MAX (或 MIN ), ST (或 SUBJECT TO )和 END。关键词中不能含有空格。MAX ( 或 MIN ), ST (或 SUBJECT TO )的右面至少要有一个空格,关键词中字符大写和小写都合法的。
(2)变量名不超过8个字符,其中第一个字符必须定字母,其余的可以是字母或数字。这样就可以藉助变量表示变量的实际含义。例如有10种燃料,可以分别记为FUEL01,?,FUEL10等。
(3)不等号用\<\表示\≤\,用\>\表示\≥\。要注意的是当模型(用 LOOK 命令)输出(到屏幕或打印机)时,不等号分别写成\<=\和\>=\。
(4)目标函数中不能出现常数项,也不能出现等式,例如: MAX 2X1+3X2+5 和 MAX Z=2X1+3X2都是非法的。 (5)无论连目标函数(第一行)或约束条件中,都不能出现括号、乘号。例如: MAX 2(X1+X2) 和 MIN 2*X1+3*X2都是非法的。
305