最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx

上传人:b****2 文档编号:2193257 上传时间:2022-10-27 格式:DOCX 页数:18 大小:96.06KB
下载 相关 举报
最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx_第1页
第1页 / 共18页
最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx_第2页
第2页 / 共18页
最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx_第3页
第3页 / 共18页
最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx_第4页
第4页 / 共18页
最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx

《最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx》由会员分享,可在线阅读,更多相关《最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx(18页珍藏版)》请在冰豆网上搜索。

最优化方法线性规划用Lingo对线性规划进行灵敏度分析.docx

最优化方法线性规划用Lingo对线性规划进行灵敏度分析

lingo软件求解线性规划及灵敏度分析

注:

以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!

所有程序运行环境为lingo10。

一、用lingo软件求解线性规划

例1:

在模型窗口输入:

model:

max=2*x+3*y;

4*x+3*y<=10;

3*x+5*y<12;

!

theoptimalvalueis:

7.454545;

End

如图所示:

运行结果如下(点击工具栏上的‘solve’或点击菜单‘lingo’下的‘solve’即可):

Globaloptimalsolutionfound.

Objectivevalue:

7.454545(最优解函数值)

Infeasibilities:

0.000000

Totalsolveriterations:

2(迭代次数)

Variable(最优解)ValueReducedCost

X1.2727270.000000

Y1.6363640.000000

RowSlackorSurplusDualPrice

17.4545451.000000

20.0000000.9090909E-01

30.0000000.5454545

例2:

在模型窗口输入:

model:

max=5*x1+4*x2;

x1+3*x2+x3=90;

2*x1+x2+x4=80;

x1+x2+x5=45;

end

运行(solve)结果如下:

Globaloptimalsolutionfound.

Objectivevalue:

215.0000

Infeasibilities:

0.000000

Totalsolveriterations:

3

 

VariableValueReducedCost

X135.000000.000000

X210.000000.000000

X325.000000.000000

X40.0000001.000000

X50.0000003.000000

RowSlackorSurplusDualPrice

1215.00001.000000

20.0000000.000000

30.0000001.000000

40.0000003.000000

例3

在模型窗口输入:

model:

min=-x2+2*x3;

x1-2*x2+x3=2;

x2-3*x3+x4=1;

x2-x3+x5=2;

end

运行结果如下:

Globaloptimalsolutionfound.

Objectivevalue:

-1.500000

Infeasibilities:

0.000000

Totalsolveriterations:

2

 

VariableValueReducedCost

X22.5000000.000000

X30.50000000.000000

X16.5000000.000000

X40.0000000.5000000

X50.0000000.5000000

RowSlackorSurplusDualPrice

1-1.500000-1.000000

20.0000000.000000

30.0000000.5000000

40.0000000.5000000

例4:

(非线性)

在模型窗口输入:

model:

min=@abs(x)+@abs(y)+@abs(z);

x+y<=1;

2*x+z=4;

@free(x);

@free(y);

@free(z);

End

求解器状态如下:

(可看出是非线性模型!

运行结果为:

Linearizationcomponentsadded:

Constraints:

12

Variables:

12

Integers:

3

Globaloptimalsolutionfound.

Objectivevalue:

(最优解函数值)3.000000

Objectivebound:

3.000000

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

3

Variable(最优解)ValueReducedCost

X2.0000000.000000

Y-1.0000000.000000

Z0.0000000.000000

RowSlackorSurplusDualPrice

13.000000-1.000000

20.0000001.000000

30.000000-1.000000

二、用lingo软件进行灵敏度分析实例

例5:

在模型窗口输入:

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

(一)求解报告(solutionreport)

通过菜单Lingo→Solve可以得到求解报告(solutionreport)如下:

Globaloptimalsolutionfoundatiteration:

0

Infeasibilities:

0.000000

Objectivevalue:

280.0000

Totalsolveriterations:

2

VariableValueReducedCost

X2.0000000.000000

Y0.0000005.000000

Z8.0000000.000000

RowSlackorSurplusDualPrice

1280.00001.000000

224.000000.000000

30.00000010.00000

40.00000010.00000

55.0000000.000000

分析Value,ReducedCost,SlackorSurplus,DualPrice的意义如下:

1、最优解和基变量的确定

Value所在列给出了问题的最优解。

由于基变量取值非零,因此Value所在列取值非零的决策变量x,z是基变量。

2、差额成本

ReducedCost(或opportunitycost)所在列的三个数值表示当决策变量取值增加一个单位时,目标函数值的减少量。

例如:

第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;

2*x+1.5*y+0.5*z<8;

y<5;

y=1;

end

注:

(1)换一个角度说,就是目标函数中变量y的系数至少增加5,那么生产y才会有利!

(2)基变量的ReducedCost值为0,只有非基变量的ReducedCost值才可能不为0;故由value,和ReducedCost值分析可知y为非基变量。

3、松弛变量取值

SlackorSurplus所在列的各数表示各行的松弛变量的取值。

目标函数行的SlackorSurplus值没啥意义,不用考虑。

可通过如下模型检验:

model:

max=60*x+30*y+20*z;

8*x+6*y+z+s1=48;

4*x+2*y+1.5*z+s2=20;

2*x+1.5*y+0.5*z+s3=8;

y+s4=5;

end

4、对偶价格(影子价格)

DualPrice所在列的各数表示相应约束条件的右端常数增加一个单位时,最优目标函数值的增加量。

注,只有紧约束行的DualPrice值不为0。

例如:

要检验第三行约束,可通过如下模型:

model:

max=60*x+30*y+20*z;

8*x+6*y+z<48;

4*x+2*y+1.5*z<21;

2*x+1.5*y+0.5*z<8;

y<5;

end

(二)灵敏度分析报告

首先设置:

Lingo→Options→Generalsolver→Dualcomputations→PricesandRange。

当求解完成后,最小化求解报告窗口,然后点击菜单Lingo→Range,可得灵敏度分析报告:

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

X60.0000020.000004.000000

Y30.000005.000000INFINITY

Z20.000002.5000005.000000

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

248.00000INFINITY24.00000

320.000004.0000004.000000

48.0000002.0000001.333333

55.000000INFINITY5.000000

分析ObjectiveCoefficientRanges,RighthandSideRanges的意义如下:

(不必控制变量,可以同时改变多个值)

1、目标函数中系数的变化对最优基的影响

ObjectiveCoefficientRanges表示目标函数行各系数在某个范围内变化时,最优基保持不变。

以变量x的系数为例:

当x的系数在(开区间)内取值时,最优基保持不变。

此时,最优解不变,最优目标函数值变了。

例如:

可通过如下模型检验:

model:

max=56.0001*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

2、约束条件右端常数变化对最优基的影响

RighthandSideRanges表示约束右端项各数在某个范围内变化时,最优基保持不变。

以第一个约束行为例:

当右端项在(开区间)内取值时,最优基保持不变。

此时,最优解不变,目标函数的最优值变化了。

例如:

可通过如下模型检验:

model:

max=60*x+30*y+20*z;

8*x+6*y+z<4800;

4*x+2*y+1.5*z<20;

2*x+1.5*y+0.5*z<8;

y<5;

end

注:

关于lingo软件的更广泛的应用见相关参考书或者lingo软件的帮助文档!

lingo常用约束函数

@bin(x)

定义x为0-1变量

@gin(x)

定义x为整数变量

@free(x)

x无限制(lingo模型里面,变量被默认为非负,即任意变量x>=0)

@bnd(a,x,b)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1