运筹学上机试验指导书
徐永仁 马永驰 编
哈尔滨工业大学管理学院
2007.10
第一讲 利用LINDO软件求解运筹学问题
一、LINDO 概述
LINDO 是一种专门用于求解数学规划问题的软件包。由于LINDO 执行速度很快、易于方便输入、求解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO 主要用于解线性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性和线性方程组的求解以及代数方程求根等。LINDO 中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear, INteractive, and Discrete Optimizer)是一个解决二次线性整数规划问题的方便而强大的工具。这些问题主要出现在商业、工业、研究和政府等领域。已被证实LINDO 能在其中发挥巨大作用的具体事务包括:产品分销、成分混合、生产与个人事务安排、存货管理⋯⋯LINDO 可以大展拳脚的领域是多不胜数的。其中LINDO 6 .1 学生版至多可求解多达300 个变量和150 个约束的规划问题。在大型的机器上,LINDO 被用来解决一些拥有超过50,000 个约束条件和200,000 万个变量的大规模复杂问题。
LINGO 则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0 学生版最多可版最多达300 个变量和150 个约束的规则问题,其标准版的求解能力亦在
10^4 量级以上。虽然LINDO和LINGO 不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO 和LINGO 能解决的规划问题。
要学好用这两个软件最好的办法就是学习他们自带的HELP 文件。有关该软件的最新信息可以登录该公司的网站www.lindo 获取。
二、界面及菜单(LINDO6.1)
进入LINDO后。系统在屏幕的下方打开一个编辑窗口,其默认标题为“untitled”,就是无标题的意思。屏幕的最上方有【File】、【Edit】、【Solve】、【Reports】、【Window】、【Help】六大菜单,除【Solve】和【Reports】菜单外,其他功能与一般Windows 菜单大致相同。而【Solve】和【Reports】菜单的功能很丰富,这里只对其最简单常用的命令作一个简单的解释。
【Solve】菜单:
〖Solve〗子菜单,用于求解在当前编辑窗口中的模型,该命令也可以不通过菜单而改用快捷键 Ctrl+S 或用快捷按钮来执行。
图1-1 LINDO 软件的主界面
〖Compile Model〗子菜单,用于编译在当前窗口中的模型,该命令也可以改用快捷键 Ctrl+E 或用快捷按钮来执行。LINDO求解一个模型时,总是要将其编译成LINDO所能处理的程序而进行,这一般由LINDO自动进行,但有时用户需要先将模型编译一下检查是否有错,则用到此命令。
〖Debug〗子菜单,如果当前模型有无界解或无可行解时,该命令可用来调试当前编辑窗口中的模型。快捷键:Ctrl+D
〖Pivot〗子菜单,对当前编辑窗口中的模型执行单纯形法的一次迭代。利用该命令,可以对模型一步步求解,以便观察中间的过程。快捷键:Ctrl+N 〖Preemptive Goal〗子菜单,用来处理具有不同优先权的多个目标函数的线性规划或整数规划问题。利用该命令,可以求解目标规划。快捷键:Ctrl+G
【Reports】
excel口内打 或者x〖Solution〗子菜单,在报告窗口中建立一个关于当前编辑窗口中的模型的解的报告,该命令也可以改用快捷键Ctrl+0 或快捷按钮来执行。LINDO 在求解一个模型时默认状态下是产生其解的报告的,但如果用户事先在【Edit】菜单下〖Option〗子菜单中将输出改为简洁方式(Terse mode),则系统就会将解的报告省略。此时,要输出解得报告就用到〖Solution〗子菜单。
〖Tableau〗子菜单,在输出窗口中显示模型的当前单纯形表,该命令也可以改用快捷键 Alt+7 来执行。该命令与〖Pivot〗命令结合使用,可得到单纯形法求解线性规划的详细过程。
其他子菜单不常用到,在此不细述。
快捷按钮:
在菜单的下方,是一排快捷按钮,分别对应一些常用的操作。从左到右,每一组分别对应一个菜单。
图1-2 LINDO菜单与快捷按钮的对应关系
:〖NEW〗、〖Open〗、〖View〗、〖Save/Save
As〗、〖Print〗;
依次对应:建立一个编辑窗口;打开一个已有文件;查阅一个已有文件内容;保存文件;打印文件
【Edit】:〖Cut〗、〖Copy〗、〖Paste〗、
〖Find/Replace〗、〖Options〗、〖Go To Line〗、〖Paste Symbol〗〖Clear All〗
依次对应:剪切;复制;粘贴;查与替换文本;修改缺省的系统参数;跳转到一个特定的行;可用符号向导用于辅助建模;清除窗口全部内容
依次对应:求解;编译文本模型,可查模型语法错误及汇总所用符号
依次对应:选择简洁或全部解的报告;产生不同项目的解报告;产生模型系数矩阵
〖Send To Back〗、〖Tile〗、〖Close All〗
依次对应:在不同窗口间切换;平铺所有打开窗口;关闭所有窗口
依次对应:显示帮助;关于本软件的一些信息
三、LINDO 的使用模式
LINDO 主要有三个基本使用模式。对于一些中小规模的问题,LINDO 只要通过键盘输入就可以方便地
实现交互性良好的操作与使用,如输入一个模型是相当简单方便的事情。另外,LINDO 也可以对外建文件进行处理,只要这些文件里包含有必要的命令代码和输入数据,处理后就可以生成用于报告目的的文档。最后,我们还可以自建子程序,然后直接与LINDO 相结合形成一个包括我们自己的代码和LINDO 本身的优化库的综合程序。
四、模型的输入示例及基本语法
一个LINDO 模型至少需要具备三个要素:目标、决策变量和约束条件。 模型输入以文本方式进行,采用模型表示的自然格式。在编辑窗口中,按自然格式输入:
例1:对下述LP模型 输入格式:
2132max x x z +=
..t s 321≤+x x 4221≤+x x
0,021≥≥x x
LINDO 的语法
LINDO 语法特别简单,所以易学、易用。以下14 条规则是基本语法:
(1)基本语法
① 模型无需转化,不要求一定按线性规划的标准型输入;
②Lindo 不识别下标,变量直接由字母后加数字构成,变量名长度最长为8 个字符;
③变量名不区分大小写(包括LINDO中的关键字);
④变量与系数间可有空格(甚至回车), 但无运算符;
⑤变量与其系数间可以有空格,但不能有任何运算符号(如乘号“*”等); ⑥注释以感叹号打头;
⑦一条语句可以断行,如:
max 10
x+4y 是可以的
(2)目标函数语法
① 目标函数必须放在模型的开始,以MAX或MIN开头,只输入目标函数体(变量及系数),而不要”Z=…”;
②目标函数所在行是第一行,第二行起为约束条件;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论