数学试验 LINDO软件包
LINDO软件包介绍 初试LINDO 用LINDO求解整数规划 注意事项
LINDO是一种专门用于求解数学规划问题的优化计算软件 包,版权现在由美国 LINDO系统公司(Lindo System Inc.) 所拥有.LINDO软件包的特点是程序执行速度很快,易于输 入、修改、求解和分析一个数学规划(优化问题),因此 LINDO在教育、科研和工业界得到广泛应用.有关该软件的 发行版 本、发行价格和其他最新信息都可以从LINDO系统公 司的INTERNET 网络站点http: //www. lindo. com获取, 该站 点还提供部分LINDO软件的演示版本或测试版本学生版和演 示版与发行版的主要区别在于对优化问题的规模(变量和约束 数) 有不同的限制.
LINDO是Linear Interactive and Discrete Optimizer 字首的缩 写形式,可以用来求解线性规划(LP--Linear Programming )、 整数规划( IP --Integer Programming )和 二次规划(QP-- Quadratic Programming )问题.LINDO学生版可求解多达 200 个变量和100个约束的规划问题.
初试 LINDO 如解如下LP 问题 : LINDO 中己假设所有的变量都是非负的,所以非负约束条件不 (实际上任何小写字符都将被转换为大写字符);约束条件中的 “<=”及“>=” 可用“<” 及 “>” 代替.上述问题用键盘输入如下 :
:MAX 2X+3Y ? ST ( 说明:也可写成S.T., SUCH THAT 或 SUBJECT TO 等) ? 4X+3Y<10 ? 3X+5Y<12 ? END : 注:目标函数为第1行,两个约束条件分别为第2,3行. 直接键入运行命令(GO) 就可得到解答,屏幕显示如下:
LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1 ) 7.4545450 单纯形法在2次迭代后得到最优解。 :GO LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1 ) 7.4545450 VARIABLE VALUE REDUCED COST X 1.272727 .000000 Y 1.636364 .000000 ROW SLACK OR SURPLUS DUAL PRICES .000000 .090909 .000000 .545455 NO.ITERATIDNS=2 DO RANGE (SENSITIVITY)ANALYSIS ? 最优目标值 最优解:
LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1 ) 7.4545450 :GO LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1 ) 7.4545450 VARIABLE VALUE REDUCED COST X 1.272727 .000000 Y 1.636364 .000000 ROW SLACK OR SURPLUS DUAL PRICES 2) .000000 .090909 3) .000000 .545455 NO.ITERATIDNS=2 DO RANGE (SENSITIVITY)ANALYSIS ? 减少的成本 对偶价格 单纯形进行了2次迭代 带有松弛变量和剩余变量的最优解: 检验数
一个问题解答之后 ,LINDO会询问是否需要作灵敏度分析 (DO RANGE(SENSITIVITY)ANALYSIS?). 如果不需要 , 你应回答 "N"(No), 回到提示符 ":" 之下 . 如果想重新看到刚才输入的模型 , 可键入 LOOK命令, LINDO 会询问具体的行号范围(也可直接将行号范围写在 LOOK后).典型的行号范围可以是3,或1-2,或ALL,而结果 相应地会显示出第3行、第1-2行,或问题的所有行.如: :LOOK ROW :
3 ( 等价于直接命令 “LOOK3”) 3 ) 3X+5Y<=12 : 如果想修改问题,可键入ALTER命令,LINDO会询问行号,变 量名及新的系数,例如:若想将上述问题中约束条件4x+3y ≤10,修改为6x+3y≤10,然后再全部看一下,并求解新问题, 那么键入ALTER命令后相应要键入2,X,6然后再键入: “LOOK ALL”. 在相应位置再键入“GO”,就会给出解答 .以 下是屏幕上演示过程 :
:ALTER ROW : 2 VAR: X NEW COEFFICIENT : 6 ( 等价于直接命令 “ALTER2X6” ) : LOOK ALL MAX 2X+3Y SUBJECT TO 2) 6X+3Y<=10 3)3X+5Y<=12
END :GO LP OPTIMUM FOUND AT STEP O OBJECTIVE FUNCTION VALUE 1) 7.333333 VARIABLE VALUE REDUCED COST X .666667 .000000 Y 2.0000 .000000 ROW SLACK OR SURPLUS DUAL PRICES .000000 .047619 .000000 .571429
改动约束条件的右端项,可以将RHS (即right--hand side)作为 NO.ITERATIONS=0 DO RANGE (SENSITIVITY)ANALYSIS? ? N : QUIT 改动约束条件的右端项,可以将RHS (即right--hand side)作为 变量名.改变约束条件中的不等号方向(如<或>,可以将DIR 作为变量名.修改问题还可用EXT命令(增加新的约行),DEL 命令(去掉一行)和APPC 命令(增加一个新的变量), 也可用 EDIT全屏幕编辑器 .
灵 敏 度 分 析 下面用一个具体例子来说明 LINDO 软件求对偶变量及进行 灵敏度分析 . 例 有一家具制造车间,制造书桌(DESK)、桌子(TABLE)、 椅子(CHAIR), 所用原料及木工、漆工的数据如表1所示 . 表 1 每个书桌 每个桌子 每个椅子 资源总数 术料 8单位 6单位 1单位 48单位 漆工 4单位 2单位 1.5单位 20单位 木工 0.5单位 成品单价 60单位 30单位
若要求桌子的生产量不超过 5 件,问如何安排三种产品的 产量可使收入最大 ? 用 分别表示书桌、桌子、椅子的生产量.建立LP 模型 :
将上述模型输入LINDO并求解 : :MAX 6OX1+3OX2+2OX3 ? S.T ? 2) 8X1+6X2+x3<48 ? 3) 4XI+2X2 +1.5X3 < 20 ? 4) 2XI+1.5X2+0.5X3 <8 ? 5) X2 <5 ? END : GO
LINDO在2次迭代后得到最优解。 LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1) 280.00000 VARIABLE VALUE REDUCED COST XI 2.000000 .000000 X2 .000000 5.000000 X3 8.000000 .000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 24.000000 .000000 3) .000000 10.000000 4) .000000 10.000000 5) 5.000000 .000000 最优目标值 最优解 带有松弛变量的最优解 检验数
DO RANGE(SENSITIVITY)ANALYSIS? ? Y 是否需要作灵敏度分析? NO.ITERATIONS=2 DO RANGE(SENSITIVITY)ANALYSIS? ? Y RANGES IN WHICH THE BASIS IS UNCHANGED. OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE Xl 60.000000 20.000000 4.000000 X2 30.000000 5.000000 INFINITY X3 20.000000 2.500000 5.000000 C1在区间 [60-4,60+20] =[56, 80]的范围内变化时,最优基保持不变(最优解的值也不变,但最优值可能要改变)。 [30-∞,30+5] =(-∞,35] 价值系数ci
ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 约束行的右端项值在什么范围内变化,最优基保持不变。 RIGHT HAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 48.000000 INFINITY 24.000000 3 20.000000 4.000000 4.000000 4 8.000000 2.000000 1.333333 5 5.000000 INFINITY 5.000000 右端项值 第5行约束(即第4个约束方程),右端项当前值为5,允许增加为∞,允许减少值为5,即当其右端项旨在[5-5,5+∞]=[0,∞)内变化时,最优基不变(最优值及最优解的值可能要变)
若需要显示单纯形表,可执行TABLEAU命令. 右端项值 若需要显示单纯形表,可执行TABLEAU命令. Z :TABLEAU THE TABLEAU ROW(BASIS) x1 x2 x3 SLK2 SLK3 SLK4 SLK5 1 ART 0 5.0 0 0 10.0 10.0 0 280.0 2 SLK2 0 -2.0 0 1.0 2.0 - 8.0 0 24.0 x3 0 -2.0 1.0 0 2.0 -4.0 0 8.0 4 x1 1.0 1.25 0 0 -5.0 1.5 0 2.0 5 SLK5 0 1.0 0 0 0 0 1.0 5.0 检 验 行 基向量 最优解:
注意LINDO软件在使用单纯形法时,目标函数行使用的 公式是: 而我们第2章中使用 的公式是: 因此它的检验数 含有所有变量的最优解: 注意LINDO软件在使用单纯形法时,目标函数行使用的 公式是: 而我们第2章中使用 的公式是: 因此它的检验数 值与我们第2章中介绍的差一个符号。