Lingo solution 各项的含义.docx

上传人:b****6 文档编号:8608851 上传时间:2023-02-01 格式:DOCX 页数:14 大小:1.21MB
下载 相关 举报
Lingo solution 各项的含义.docx_第1页
第1页 / 共14页
Lingo solution 各项的含义.docx_第2页
第2页 / 共14页
Lingo solution 各项的含义.docx_第3页
第3页 / 共14页
Lingo solution 各项的含义.docx_第4页
第4页 / 共14页
Lingo solution 各项的含义.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Lingo solution 各项的含义.docx

《Lingo solution 各项的含义.docx》由会员分享,可在线阅读,更多相关《Lingo solution 各项的含义.docx(14页珍藏版)》请在冰豆网上搜索。

Lingo solution 各项的含义.docx

Lingosolution各项的含义

Lingosolutionreport中各项的含义

(一)优化模型的组成

优化模型包括以下3部分:

lObjectiveFunction:

目标函数是一个能准确表达所要优化问题的公式。

lVariables:

Decisionvariables(决策变量),在模型中所使用的变量。

lConstraints:

约束条件。

(二)Lingo软件使用的注意事项

(1)LINGO中不区分大小写字母,变量(和行名)可以使用不超过32个字符表示,且必须以字母开头。

(2)在命令方式下(CommandWindow中),必须先输入MODEL:

表示开始输入模型。

LINGO中模型以“MODEL:

”开始,以“END”结束。

对简单的模型,这两个语句也可以省略。

(3)LINGO中的语句的顺序是不重要的,因为LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其它语句都是约束条件(当然注释语句和TITLE除外)。

(4)LINGO模型是由一系列语句组成,每个语句以分号“;”结束。

(5)LINGO中以感叹号“!

”开始的是说明语句(说明语句也需要以分号“;”结束)。

(6)LINGO中解优化模型时假定所有变量非负(除非用限定变量取值范围的函数@free或@sub或slb另行说明)。

(三)SolutionReport各项的含义

例1将以下模型粘贴到Lingo中求解,其中第一行MODEL和最后一行END在LingoModel窗口下可以不要。

MODEL:

min=2*x1+3*x2;

x1+x2>=350;

x1>=100;

2*x1+x2<=600;

END

得到如下的结果报告

Globaloptimalsolutionfound.

Objectivevalue:

800.0000

Infeasibilities:

0.000000!

指矛盾约束的数目;

Totalsolveriterations:

2

ModelClass:

LP

Totalvariables:

2

Nonlinearvariables:

0

Integervariables:

0

Totalconstraints:

4

Nonlinearconstraints:

0

Totalnonzeros:

7

Nonlinearnonzeros:

0

VariableValueReducedCost

X1250.00000.000000

X2100.00000.000000

RowSlackorSurplusDualPrice

1800.0000-1.000000

20.000000-4.000000!

模型第一行表示目标函数,第二行对应第一个约束;

3150.00000.000000

40.0000001.000000

下面对SolutionReport(LINGO的结果报告窗口)的各个部分进行说明:

Globaloptimalsolutionfound表示全局最优解找到.

Objectivevalue:

800.0000表示最优目标值为800.0000.

Totalsolveriterations:

2表示用单纯行法进行了两次迭代.

Variable表示变量,此问题中有两个变量X1,X2.

Value给出最优解中各变量(Variable)的值:

X1=250.0000,X2=100.0000.

ReducedCost实际上是与最优单纯形表中的检验数相差一个负号的一个数。

注意下面的A'y=z

ReducedCost指为了使某个变量在解中的数值增加一个单位,目标函数值必须付出的代价。

如果一个变量的ReducedCost值为8,为了使该变量增加一个单位,在最大化(最小化)问题中,目标函数值将减少(增大)8个单位。

在一个最大值的模型中,ReducedCost对应的非基变量增加一个单位,目标值会有减少ReducedCost;在一个最小值模型中,ReducedCost对应的非基变量增加一个单位,目标值会增大ReducedCost。

ReducedCost它也可以认为是:

在最优化问题中,要使某个变量进入基,该变量在目标函数中的系数应该改变的数量。

(在Min问题中要选单纯形表最后一行中最大的正的判别数对应的列为主列[此列对应的变量是进基变量],其目标是使所有的判别数都非正;在Max问题中要选单纯形表最后一行最小的负数对应的变量作为进基变量,其目标是使所有的判别数都非负)例如:

在一个最大化(最小化)问题中,如果一个变量的ReducedCost值为8,则为了使该变量进基,目标函数中该变量的系数就必须增加(减少)8个单位。

非基向量要进入基必须将它对应的检验数消为0,直观的将该非基向量的检验数取个负号加到最后一行即可,对应在方程上实际上是此检验数乘以该非基变量后的结果加到最后一行,所以前边有了系数这一说。

ReducedCost给出最优的单纯形表中目标函数行中变量对应的系数.其中基变量的ReducedCost值一定为0;对于非基变量(非基变量本身的取值一定为0)和max问题,相应的ReducedCost值表示当该非基变量增加一个单位(其它非基变量保持不变)时目标函数的减少的量。

这估计也是ReducedCost的reduced所在,很直观。

在这个例子中最优解中两个变量都是基向量,因此对应的ReducedCost的值都为0.

SlackorSurplus表示接近等于的程度。

在约束条件是<=中,通常叫做松弛变量,在约束条件是>=中,通常叫过剩变量。

如果约束条件是=,则SlackorSurplus为0,该约束是个紧约束(或有效约束)。

如果一个约束条件错误,作为一个不可行解,SlackorSurplus为负数。

SlackorSurplus表示的是:

约束离相等还差多少。

如果一个约束是矛盾的(模型无可行解),则Slackorsurplus的值是负数。

知道这些,可以帮助我们发现在一个不可实行的模型(指没有存在同时满足所有约束条件的变量集合)中的错误的约束条件。

第2和第4行松弛变量均为0,说明对于最优解来讲,两个约束(第2和4行)均取等号,即都是紧约束.

DualPrice(Shadowprice)给出对偶价格的值。

表示每增加一个单位(约束右边的常数),目标值改变的数量(在最大化问题中目标函数值是增加,在最小化问题中目标函数值是减少)。

比如,在上一个Min模型中第四行的1,表示2*x1+x2<=600增加一个单位到2*x1+x2<=601,可以使目标值增加-1(因为第一行是目标函数的DualPrice是-1),即Objectivevalue=799;增加-1个单位到599会使目标值增加到801。

对偶价格补充一例:

max=100*x+150*y;

!

约束条件;

x<=80;

y<=100;

x*2+y<=180;

Globaloptimalsolutionfound.

Objectivevalue:

19000.00

Infeasibilities:

0.000000

Totalsolveriterations:

1

ModelClass:

LP

Totalvariables:

2

Nonlinearvariables:

0

Integervariables:

0

Totalconstraints:

4

Nonlinearconstraints:

0

Totalnonzeros:

6

Nonlinearnonzeros:

0

VariableValueReducedCost

X40.000000.000000

Y100.00000.000000

RowSlackorSurplusDualPrice

119000.001.000000

240.000000.000000

30.000000100.0000

40.00000050.00000

对偶变量值也叫影子价格,这是由于它们表示可以用多大的价格去购买(租用)单位资源。

上面的模型显示,某人最多愿意花100元购买(租用)一个Y。

例2某家具公司制造书桌、餐桌和椅子,所用的资源有三种:

木料、木工和漆工。

生产数据如下表所示:

每个书桌

每个餐桌

每个椅子

现有资源总数

木料

8单位

6单位

1单位

48单位

漆工

4单位

2单位

1.5单位

20单位

木工

2单位

1.5单位

0.5单位

8单位

成品单价

60单位

30单位

20单位

若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?

用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。

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;

求解这个模型,查看报告窗口(ReportsWindow):

Globaloptimalsolutionfound.

Objectivevalue:

280.0000

Infeasibilities:

0.000000

Totalsolveriterations:

2

ModelClass:

LP

Totalvariables:

3

Nonlinearvariables:

0

Integervariables:

0

Totalconstraints:

5

Nonlinearconstraints:

0

Totalnonzeros:

13

Nonlinearnonzeros:

0

VariableValueReducedCost

DESKS2.0000000.000000

TABLES0.0000005.000000

CHAIRS8.0000000.000000

RowSlackorSurplusDualPrice

1280.00001.000000

224.000000.000000

30.00000010.00000

40.00000010.00000

55.0000000.000000

“Objectivevalue:

280.0000”表示最优目标值为280。

“Value”给出最优解中各变量的值:

造2个书桌(desks),0个餐桌(tables),8个椅子(chairs)。

所以desks、chairs是基变量(非0),tables是非基变量(0)。

观察单纯性表的最后一行(f行),当所有的检验数都非负,单纯形表左侧的行基向量对应的主列确实是非零的。

还要注意最优解的基变量中无松弛变量(松弛变量的引入将不等式变为等式约束)

“SlackorSurplus”给出松驰变量的值:

第1行松驰变量=280(模型第一行表示目标函数,所以第二行对应第一个约束)

第2行松驰变量=24

第3行松驰变量=0

第4行松驰变量=0

第5行松驰变量=5

“ReducedCost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。

其中基变量的reducedcost值应为0,对于非基变量Xj,相应的reducedcost值表示当某个变量Xj增加一个单位时目标函数减少的量(max型问题)。

本例中:

变量tables对应的reducedcost值为5,表示当非基变量tables的值从0变为1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值=280-5=275。

“DUALPRICE”(对偶价格)表示当对应约束有微小变动时,目标函数的变化率。

输出结果中对应于每一个约束有一个对偶价格。

若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max型问题)。

显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。

本例中:

第3、4行是紧约束,对应的对偶价格值为10,表示当紧约束4DESKS+2TABLES+1.5CHAIRS<=20变为4DESKS+2TABLES+1.5CHAIRS<=21时,目标函数值=280+10=290。

对第4行也类似。

对于非紧约束(如本例中第2、5行是非紧约束),DUALPRICE的值为0,表示对应约束中不等式右端项的微小扰动不影响目标函数。

有时,通过分析DUALPRICE,也可对产生不可行问题的原因有所了解。

灵敏度分析操作流程:

菜单lingo-->options-->generalsolver-->dualcomputations:

prices&ranges-->ok.菜单lingo-->range

灵敏度分析的结果是

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges:

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

DESKS60.0000020.000004.000000

TABLES30.000005.000000INFINITY

CHAIRS20.000002.5000005.000000

RighthandSideRanges:

CurrentAllowableAllowable

RowRHSIncreaseDecrease

248.00000INFINITY24.00000

320.000004.0000004.000000

48.0000002.0000001.333333

55.000000INFINITY5.000000

目标函数中DESKS变量原来的费用系数为60,允许增加(AllowableIncrease)=20、允许减少(AllowableDecrease)=4,说明当它在[60-4,60+20]=[56,80]范围变化时,最优基保持不变。

对TABLES、CHAIRS变量,可以类似解释。

由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。

第2行约束中右端项(RightHandSide,简写为RHS)原来为48,当它在[48-24,48+∞]=[24,∞]范围变化时,最优基保持不变。

第3、4、5行可以类似解释。

不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

灵敏性分析结果表示的是最优基保持不变的系数范围。

由此,也可以进一步确定当目标函数的费用系数和约束右端项发生小的变化时,最优基和最优解、最优值如何变化。

下面我们通过求解一个实际问题来进行说明。

例3:

一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。

根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。

现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。

试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:

1)若用35元可以买到1桶牛奶,应否作这项投资?

若投资,每天最多购买多少桶牛奶?

2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?

3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?

解:

模型代码如下

max=72*x1+64*x2;

x1+x2<=50;

12*x1+8*x2<=480;

3*x1<=100;

求解这个模型并做灵敏性分析,结果如下。

Globaloptimalsolutionfoundatiteration:

0

Objectivevalue:

3360.000

VariableValueReducedCost

X120.000000.000000

X230.000000.000000

RowSlackorSurplusDualPrice

13360.0001.000000

20.00000048.00000

30.0000002.000000

440.000000.000000

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

X172.0000024.000008.000000

X264.000008.00000016.00000

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

250.0000010.000006.666667

3480.000053.3333380.00000

4100.0000INFINITY40.00000

结果告诉我们:

这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1,30桶牛奶生产A2,可获最大利润3360元。

输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息,下面结合题目中提出的3个附加问题给予说明。

3个约束条件的右端不妨看作3种“资源”:

原料、劳动时间、车间甲的加工能力。

输出中SlackorSurplus给出这3种资源在最优解下是否有剩余:

原料、劳动时间的剩余均为零,车间甲尚余40(公斤)加工能力。

目标函数可以看作“效益”,成为紧约束的“资源”一旦增加,“效益”必然跟着增长。

输出中DUALPRICES给出这3种资源在最优解下“资源”增加1个单位时“效益”的增量:

原料增加1个单位(1桶牛奶)时利润增长48(元),劳动时间增加1个单位(1小时)时利润增长2(元),而增加非紧约束车间甲的能力显然不会使利润增长。

这里,“效益”的增量可以看作“资源”的潜在价值,经济学上称为影子价格,即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,车间甲的影子价格为零。

读者可以用直接求解的办法验证上面的结论,即将输入文件中原料约束milk)右端的50改为51,看看得到的最优值(利润)是否恰好增长48(元)。

用影子价格的概念很容易回答附加问题1):

用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,当然应该作这项投资。

回答附加问题2):

聘用临时工人以增加劳动时间,付给的工资低于劳动时间的影子价格才可以增加利润,所以工资最多是每小时2元。

目标函数的系数发生变化时(假定约束条件不变),最优解和最优值会改变吗?

这个问题不能简单地回答。

上面输出给出了最优基不变条件下目标函数系数的允许变化范围:

x1的系数为(72-8,72+24)=(64,96);x2的系数为(64-16,64+8)=(48,72)。

注意:

x1系数的允许范围需要x2系数64不变,反之亦然。

由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。

用这个结果很容易回答附加问题3):

若每公斤A1的获利增加到30元,则x1系数变为30×3=90,在允许范围内,所以不应改变生产计划,但最优值变为90×20+64×30=3720。

下面对“资源”的影子价格作进一步的分析。

影子价格的作用(即在最优解下“资源”增加1个单位时“效益”的增量)是有限制的。

每增加1桶牛奶利润增长48元(影子价格),但是,上面输出的CURRENTRHS的ALLOWABLEINCREASE和ALLOWABLEDECREASE给出了影子价格有意义条件下约束右端的限制范围:

milk)原料最多增加10(桶牛奶),time)劳动时间最多增加53(小时)。

现在可以回答附加问题1)的第2问:

虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶牛奶。

顺便地说,可以用低于每小时2元的工资聘用临时工人以增加劳动时间,但最多增加53.3333小时。

需要注意的是:

灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。

比如对于上面的问题,“原料最多增加10(桶牛奶)”的含义只能是“原料增加10(桶牛奶)”时最优基保持不变,所以影子价格有意义,即利润的增加大于牛奶的投资。

反过来,原料增加超过10(桶牛奶),影子价格是否一定没有意义?

最优基是否一定改变?

一般来说,这是不能从灵敏性分析报告中直接得到的。

此时,应该重新用新数据求解规划模型,才能做出判断。

所以,从正常理解的角度来看,我们上面回答“原料最多增加10(桶牛奶)”并不是完全科学的。

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

当前位置:首页 > 高中教育 > 高考

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

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