运筹学lindo教程特别版
时间:2025-04-03
时间:2025-04-03
目录
第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所示的工作界面。
图2-4 启动LINDO的工作界面
这就是LINDO的初始用户界面。目前光标所在子窗口称为模型窗口,是用来供用户输入LINDO程序的。目前这个模型窗口标有“<untitled>”字样,表示用户还没有为这个程序命名,因此,LINDO采用了自动生成的名字“<untitled>”,将来用户在保存程序时可以对它重新命名。
【例2.1】 生产规划的优化问题
maxZ 200x1 500x2
1.5x1 5x2 40 s.t. 2x1 4x2 40 x1 0,x2 0
我们可以直接在<untitled>这个新的、空白的模型窗口中输入这个问题(如图2-4所示)。
图2-4 例2.1的模型输入
我们看到这段程序有以下特点:
1、这个LINDO程序以“max”开始,表示目标是最大化问题(容易想到,对最小化问题自然该用”min”开始),后面直接写出目标函数的表达式。注意:LINDO不区分大小写字符(实际上任何小写字符将被转换成大写字符);变量和系数间不用乘号“*”。
2、约束的表达式前用st(说明也可写成s.t.或subject to)。程序以“end”结束。(请注意:“end”在这里也可省略)
3、输入的LINDO模型中用右括号“) ”结尾的“ first)”和“ second)”是行名(对应约束,就是约束名);我们也可以分别输入“2)”和“3)”等其它行名;请注意:“ first)”和“ second)”也可以省略,省略时LINDO将会按照输入行的顺序自动生成用数字表示的行名(即行号)。如本例中若输入时省略行名时,系统对约束默认的行名分别是“2)”和“3)”,并对目标函数所在的行自动生成行名“1)”。
4、我们输入上面的模型时,故意写的歪七扭八,是为了说明在LINDO中,模型书写起来是相当灵活的,由于LINDO中已假设所有的变量都是非负的,所以非负约束(4)即(x1≥0,x2≥0)不必再输入到计算机中;约束条件中的“ ”及“ ”可分别用“〈”和“〉”代替;输入的多余的空格和回车也会被忽略;一个约束还可以分成两行甚至多行写,等等。
5、模型中的感叹号“!”后面的文字将被认为是说明语句(注释语句),不参与模型的建立,主要是为了增强程序的可读性。注意此处书写时不能换行。
现在我们就可以用LINDO软件来求解这个模型。用鼠标单击LINDO软件工具栏中的图标,或从菜单中选择“Slove(Ctrl+S)”命令(即LINDO的主菜单“Solve”求解中的“Slove(求解)”命令,快捷键是Ctrl+S(以后我们约定都这样表示),见图2-5。则LINDO开始编译这个模型,编译没有错误马上开始求解,求解时会显示如图2-6所示的LINDO求解器运行状态窗口(LINDO SOLVE STATUS),其中显示的相应信息的含义见表2-1。注意,LINDO求解线性规划的过程默认采用单纯形法,一般是首先寻求一个可行解,在有可行解的情况下再寻求最优解。用LINDO求解一个LP问题会得到如下的几种结果:可行或不可行;可行又可分为:有最优解和解无界两种情况。因此,图2-5中当前状态可显示为:Optimal (最优解),Feasible(可行解),Infeasible(不可行解),Unbourded(解无界)四种状态之一。
图2-5 例2.1的模型求解
图2-6 LINDO求解器运行状态窗口(LINDO solver Status)
由于这个例子中LP模型的规模太小,我们可能还没有来得及看清图2-6的界面,LINDO就解出了最优解,并马上弹出如图2-7的对话框。这个对话框询问你是否需要作灵敏性分析“DO RANGE(SENSITIVITY )ANALYSIS?”。我们现在先选择“否(NO)”按钮,这个窗口就关闭。然后,我们再把图2-4状态窗口也关闭(按下图2-6的“Close”按钮即可)。
图2-7 灵敏性分析对话框
< …… 此处隐藏:7819字,全部文档内容请下载后查看。喜欢就下载吧 ……