lingo软件求解线性规划及灵敏度分析
注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。 一、用lingo软件求解线性规划
例1:
maxz?2x?3ys.t.4x?3y?103x?5y?12x,y?0在模型窗口输入:
model: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<12;
! the optimal value is :7.454545 ; End 如图所示:
运行结果如下(点击 工具栏上的‘solve’
Global optimal solution found.
或点击菜单‘lingo’下的‘solve’即可):
Objective value: 7.454545(最优解函数值) Total solver iterations: 2(迭代次数)
1
Variable (最优解) Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000
Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545
例2:
maxz?5x1?4x2s.t.x1?3x2?x3?902x1?x2?x4?80 x1?x2?x5?45x?0在模型窗口输入:
model:
max=5*x1+4*x2; x1+3*x2+x3=90; 2*x1+x2+x4=80; x1+x2+x5=45; end
运行(solve)结果如下:
Global optimal solution found.
Objective value: 215.0000 Total solver iterations: 3
Variable Value Reduced Cost X1 35.00000 0.000000 X2 10.00000 0.000000 X3 25.00000 0.000000 X4 0.000000 1.000000 X5 0.000000 3.000000
Row Slack or Surplus Dual Price 1 215.0000 1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 3.000000
例3
2
minz??x2?2x3s.t.x1?2x2?x3?2x2?3x3?x4?1 x2?x3?x5?2x?0在模型窗口输入:
model:
min=-x2+2*x3; x1-2*x2+x3=2; x2-3*x3+x4=1; x2-x3+x5=2; end
运行结果如下:
Global optimal solution found.
Objective value: -1.500000 Total solver iterations: 2
Variable Value Reduced Cost X2 2.500000 0.000000 X3 0.5000000 0.000000 X1 6.500000 0.000000 X4 0.000000 0.5000000 X5 0.000000 0.5000000
Row Slack or Surplus Dual Price 1 -1.500000 -1.000000 2 0.000000 0.000000 3 0.000000 0.5000000 4 0.000000 0.5000000
例4:
minx?y?zs.t.在模型窗口输入:
model:
min=@abs(x)+@abs(y)+@abs(z); x+y<1; 2*x+z=4; @free(x); @free(y); @free(z);
x?y?1 2x?z?4 3
End
求解器状态如下:(可看出是非线性模型!)
运行结果为:
Linearization components added: Constraints: 12 Variables: 12 Integers: 3
Global optimal solution found.
Objective value: 3.000000 Extended solver steps: 0 Total solver iterations: 4
Variable Value Reduced Cost X 2.000000 0.000000 Y -1.000000 0.000000 Z 0.000000 0.000000
Row Slack or Surplus Dual Price 1 3.000000 -1.000000 2 0.000000 1.000000 3 0.000000 -1.000000
二、用lingo软件进行灵敏度分析实例
例5:
4
maxS?60x?30y?20z8x?6y?z?484x?2y?1.5z?202x?1.5y?0.5z?8y?5x,y,z?0在模型窗口输入: Lingo模型:
model:
max=60*x+30*y+20*z; 8*x+6*y+z<48; 4*x+2*y+1.5*z<20; 2*x+1.5*y+0.5*z<8; y<5; end
(一)求解报告(solution report)
通过菜单Lingo→Solve可以得到求解报告(solution report)如下:
Global optimal solution found at iteration: 0 Objective value: 280.0000
Variable Value Reduced Cost X 2.000000 0.000000 Y 0.000000 5.000000 Z 8.000000 0.000000
Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000
分析Value,Reduced Cost,Slack or Surplus,Dual Price的意义如下: 1、最优解和基变量的确定
Value所在列给出了问题的最优解。
由于基变量取值非零,因此Value所在列取值非零的决策变量x,z是基变量。 2、差额成本
Reduced Cost(或opportunity cost)所在列的三个数值表示当决策变量取值增加一个单位时,目标函数值的减少量。例如:第2个数5表示当变量y增加一个单位时,最优目标函数值减少的量。例如:当y=1时,最优目标函数值为280-5=275。可通过如下模型可检验:
model:
max=60*x+30*y+20*z; 8*x+6*y+z<48;
4*x+2*y+1.5*z<20;
5