您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 最优化方法——用Lingo对线性规划进行灵敏度分析
1lingo软件求解线性规划及灵敏度分析注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。一、用lingo软件求解线性规划例1:max23..43103512,0zxystxyxyxy在模型窗口输入:model:max=2*x+3*y;4*x+3*y=10;3*x+5*y12;!theoptimalvalueis:7.454545;End如图所示:运行结果如下(点击工具栏上的‘solve’或点击菜单‘lingo’下的‘solve’即可):Globaloptimalsolutionfound.Objectivevalue:7.454545(最优解函数值)Totalsolveriterations:2(迭代次数)2Variable(最优解)ValueReducedCostX1.2727270.000000Y1.6363640.000000RowSlackorSurplusDualPrice17.4545451.00000020.0000000.9090909E-0130.0000000.5454545例2:12123124125max54..390280450zxxstxxxxxxxxxx在模型窗口输入: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.0000Totalsolveriterations:3VariableValueReducedCostX135.000000.000000X210.000000.000000X325.000000.000000X40.0000001.000000X50.0000003.000000RowSlackorSurplusDualPrice1215.00001.00000020.0000000.00000030.0000001.00000040.0000003.000000例3323123234235min2..223120zxxstxxxxxxxxxx在模型窗口输入:model:min=-x2+2*x3;x1-2*x2+x3=2;x2-3*x3+x4=1;x2-x3+x5=2;end运行结果如下:Globaloptimalsolutionfound.Objectivevalue:-1.500000Totalsolveriterations:2VariableValueReducedCostX22.5000000.000000X30.50000000.000000X16.5000000.000000X40.0000000.5000000X50.0000000.5000000RowSlackorSurplusDualPrice1-1.500000-1.00000020.0000000.00000030.0000000.500000040.0000000.5000000例4:min..124xyzstxyxz在模型窗口输入:model:min=@abs(x)+@abs(y)+@abs(z);x+y1;2*x+z=4;@free(x);@free(y);@free(z);4End求解器状态如下:(可看出是非线性模型!)运行结果为:Linearizationcomponentsadded:Constraints:12Variables:12Integers:3Globaloptimalsolutionfound.Objectivevalue:3.000000Extendedsolversteps:0Totalsolveriterations:4VariableValueReducedCostX2.0000000.000000Y-1.0000000.000000Z0.0000000.000000RowSlackorSurplusDualPrice13.000000-1.00000020.0000001.00000030.000000-1.000000二、用lingo软件进行灵敏度分析实例例5:5max6030208648421.52021.50.585,,0Sxyzxyzxyzxyzyxyz在模型窗口输入:Lingo模型:model:max=60*x+30*y+20*z;8*x+6*y+z48;4*x+2*y+1.5*z20;2*x+1.5*y+0.5*z8;y5;end(一)求解报告(solutionreport)通过菜单Lingo→Solve可以得到求解报告(solutionreport)如下:Globaloptimalsolutionfoundatiteration:0Objectivevalue:280.0000VariableValueReducedCostX2.0000000.000000Y0.0000005.000000Z8.0000000.000000RowSlackorSurplusDualPrice1280.00001.000000224.000000.00000030.00000010.0000040.00000010.0000055.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+z48;4*x+2*y+1.5*z20;62*x+1.5*y+0.5*z8;y5;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;end4、对偶价格(影子价格)DualPrice所在列的各数表示相应约束条件的右端常数增加一个单位时,最优目标函数值的增加量。注,只有紧约束行的DualPrice值不为0。例如:要检验第二行约束,可通过如下模型:model:max=60*x+30*y+20*z;8*x+6*y+z48;4*x+2*y+1.5*z21;2*x+1.5*y+0.5*z8;y5;end(二)灵敏度分析报告首先设置:Lingo→Options→Generalsolver→Dualcomputations→PricesandRange。当求解完成后,最小化求解报告窗口,然后点击菜单Lingo→Range,可得灵敏度分析报告:Rangesinwhichthebasisisunchanged:ObjectiveCoefficientRangesCurrentAllowableAllowableVariableCoefficientIncreaseDecreaseX60.0000020.000004.000000Y30.000005.000000INFINITYZ20.000002.5000005.000000RighthandSideRangesRowCurrentAllowableAllowableRHSIncreaseDecrease248.00000INFINITY24.00000320.000004.0000004.00000048.0000002.0000001.33333355.000000INFINITY5.000000分析ObjectiveCoefficientRanges,RighthandSideRanges的意义如下:1、目标函数中系数的变化对最优基的影响7ObjectiveCoefficientRanges表示目标函数行各系数在某个范围内变化时,最优基保持不变。以变量x的系数为例:当x的系数在6046020内取值时,最优基保持不变。此时,最优解不变,最优目标函数值变了。例如:可通过如下模型检验:model:max=56.0001*x+30*y+20*z;8*x+6*y+z48;4*x+2*y+1.5*z20;2*x+1.5*y+0.5*z8;y5;end2、约束条件右端常数变化对最优基的影响RighthandSideRanges表示约束右端项各数在某个范围内变化时,最优基保持不变。以第一个约束行为例:当右端项在482448内取值时,最优基保持不变。此时,最优解,目标函数的最优值变化了。例如:可通过如下模型检验:model:max=60*x+30*y+20*z;8*x+6*y+z4800;4*x+2*y+1.5*z20;2*x+1.5*y+0.5*z8;y5;end注:关于lingo软件的更广泛的应用见相关参考书或者lingo软件的帮助文档!!lingo常用约束函数@bin(x)定义x为0-1变量@gin(x)定义x为整数变量@free(x)X无限制(lingo模型里面,变量被默认为非负,即任意变量x=0)@bnd(a,x,b)Axb练习:1、建立线性规划模型并求解(1)某工厂生产甲、乙两种产品。已知生产甲种产品t1需耗A种矿石t10、B种矿石t5、煤t4;生产乙种产品t1需耗A种矿石t4、B种矿石t4、煤t9。每t1甲种产品的利润是600元,每t1乙种产品的利润是1000元。工厂在生产这两种产品的计划中要求消耗A种矿石不超过t300、B种矿石不超过t200、煤不超过t360。甲、乙两种产品应各生产多少,能使利润总额达到最大?(2)设有A1,A2两个香蕉基地,产量分别为60吨和80吨,联合供应B1,B2,B3三个销地的销售量经预测分别为50吨、50吨和40吨。两个产地到三个销地的单位运价如下表所示:表1(单位运费:元/吨)8问每个产地向每个销地各发货多少,才能使总的运费最少?2、用Lingo软件对下列线性规划问题进行灵敏度分析。(1)12312312312123min33..25231612,,0xxxstxxxxxxxxxxx(2)1212312412515max2..506221,,0xxstxxxxxxxxxxx(3)123412341234max30354045..34647043658001,2,3,4ixxxxstxxxxxxxxxi3、综合题某工厂用甲,乙两种原料生产A,B,C,D四种产品,每种产品的利润、现有原料数量及每种产品消耗原料定额如下表:每万件产品所耗原料(千克)ABCD现有原料(千克)甲3210418乙0022.53每万件产品利润(万元)985019问题:(1)怎样组织生产才能使总利润最大?(2)如果产品A的利润有波动,波动范围应限制在什么范围内,才能使得原生产计划不变?(3)若原料甲的数量发生变化,在什么范围内变化时才能使得原生产计划不变?(4)若工厂引进新
本文标题:最优化方法——用Lingo对线性规划进行灵敏度分析
链接地址:https://www.777doc.com/doc-4687121 .html