lingo灵敏度分析实例
一个实例理解lingo的灵敏性分析线性规划问题的三个重要概念:
最优解就是反应取得最优值的决策变量所对应的向量。
最优基为就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式不为奇特的,
则该系数矩阵为最优基为。
最优值就是最优的目标函数值。
lingo的灵敏性分析就是研究当目标函数的系数和约束右端项在什么范围(此时假设
其它系数维持不变)时,最优基为维持维持不变。
灵敏性分析得出的只是最优基为维持维
持不变的充分条件,而不一定就是必要条件。
下面就是一道典型的例题。
一奶制品加工厂用牛奶生产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;
运行求解结果:
objectivevalue:3360.000
variablevaluereducedcostx120.000000.000000x230.000000.000000
rowslackorsurplusdualprice13360.0001.00000020.00000048.0000030.0000002.0000004 40.000000.000000
这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产
a1,30桶牛奶生产a2,可获最大利润3360元。
输出中除了告诉我们问题的最优解和最优
值以外,还有许多对分析结果有用的信息。
其中,“reducedcost”列举最优单纯形表辨别数所在行及的变量的系数,则表示当变量存有微小变动时,目标函数的变化率。
其中基为变量的reducedcost值应属0,对于非基变量xj,适当的reducedcost值则表示当某个变量xj减少一个单位时目标函数增加的量(max型问题)。
本例中x1,x2均为基变量。
“slackorsurplus”给出松驰变量的值,模型第一行表示目标函数,所以第二行对应第一个约束。
3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力。
输出中slackorsurplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为
零,车间甲尚余40(公斤)加工能力。
“dualprice”(对偶价格)表示当对应约束有微小变动时,目标函数的变化率。
输出结果中对应于每一个约束有一个对偶价格。
若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max型问题)。
显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。
上例中,第一、二个约束是“紧约束”。
当“x1+x2<=50”改为“x1+x2<=51”时,目标函数的值为3360+48=3408.对于非紧约束,dualprice的值为0,表示对应约束中不等式右端项的微小扰动不影响目标函数。
目标函数可以看做“效益”,沦为很紧约束的“资源”一旦减少,“效益”必然跟著快速增长。
输入中dualprices得出这3种资源在最优求解下“资源”减少1个单位时“效益”的增量:原料减少1个单位(1桶牛奶)时利润快速增长48(元),劳动时间减少1个单位(1小时)时利润快速增长2(元),而减少非紧约束车间甲的能力似乎不能并使利润快速增长。
这里,“效益”的增量可以看做“资源”的潜在价值,经济学上称作影子价格,即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,车间甲的影子价格为零。
用影子价格的概念很难提问额外问题1):用35元可以买1桶牛奶,高于1桶牛奶的影子价格48,当然必须并作这项投资。
提问额外问题2):雇用临时工人以减少劳动时间,交纳的工资高于劳动时间的影子价格才可以增加利润,所以工资最多就是每小时2元。
objectivecoefficientranges:
currentallowableallowablevariablecoefficientincreasedecreasex172.0000024.00000 8.000000x264.000008.00000016.00000righthandsideranges:
currentallowableallowablerowrhsincreasedecrease250.0000010.000006.6666673480.0 00053.3333380.000004100.0000infinity40.00000目标函数的系数发生变化时(假设约束条件维持不变),最优解和最优值发生改变吗?上面输入得出了最优基为维持不变条件下
目标函数系数的容许变化范围: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(桶牛奶)”并不是全然科学的。