1. 求解模型(Slove):Ctrl+S
2. 求解结果(Solution):Ctrl+O
3. 查看(Look):Ctrl+L
4. 灵敏性分析(Range,Ctrl+R):为了激活灵敏性分析,运行 LINGO|Options,选择 General Solver Tab, 在 Dual Computations 列表框中,选择 Prices and Ranges 选项。
max=60*desks+30*tables+20*chairs;
8*desks+6*tables+chairs<=48;
4*desks+2*tables+1.5*chairs<=20;
2*desks+1.5*tables+.5*chairs<=8;
tables<=5;
求解这个模型,并激活灵敏性分析。这时,查看报告窗口(Reports Window),可以看到结果。
“Global optimal solution found at iteration: 3”表示 3 次迭代后得到全局最优解。
“Objective value:280.0000”表示最优目标值为 280。 “Value”给出最优解中各变量的值:2 个书桌(desks), 0 个餐桌(tables), 8 个椅子(chairs)。所以 desks、chairs 是基变量(非 0),tables 是非基变量(0)。
“Slack or Surplus”给出松驰变量的值:
第 1 行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束)
第 2 行松驰变量 =24
第 3 行松驰变量 =0
第 4 行松驰变量 =0
第 5 行松驰变量 =5
“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为 0, 对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。
本例中:变量tables对应的reduced cost值为 5,表示当非基变量tables的值从 0 变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。
“DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输出结果中对应于每一个约束有一个对偶价格。 若其数值为 p, 表示对应约束中不等式右端项若增加 1 个单位,目标函数将增加 p 个单位(max 型问题)。显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。
本例中:第 3、4 行是紧约束,对应的对偶价格值为 10,表示当紧约束
3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21时,目标函数值 = 280 +10 = 290。对第 4 行也类似。
对于非紧约束(如本例中第 2、5 行是非紧约束),DUAL PRICE 的值为 0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析 DUAL PRICE, 也可对产生不可行问题的原因有所了解。
灵敏度分析的结果是
目标函数中 DESKS 变量原来的费用系数为 60,允许增加(Allowable Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-4,60+20] = [56,80]范围变化时,最优基保持不变。对 TABLES、CHAIRS 变量,可以类似解释。由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。
第 2 行约束中右端项(Right Hand Side,简写为 RHS)原来为 48,当它在[48-24,48+∞]= [24,∞]范围变化时,最优基保持不变。第 3、4、5 行可以类似解释。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。
5. 模型通常形式(Generate):Ctrl+G
6. 选项(Options):Ctrl+I (28页—35页)
(1)Interface(界面)选项卡
(2)General Solver(通用求解器)选项卡
(3)Linear Solver(线性求解器)选项卡
(4)Nonlinear Solver(非线性求解器)选项卡
(5)Integer Pre-Solver(整数预处理求解器)选项卡
(6)Integer Solver(整数求解器)选项卡
(7)Global Solver(全局最优求解器)选项卡