lingo灵敏度分析实例
- 格式:docx
- 大小:38.95 KB
- 文档页数:3
lingo结果分析及灵敏性分析问题描述程序代码:max = 60*desks + 30*tables + 20*chairs;8*desks + 6*tables + chairs <= 48;2*desks + 1.5*tables + 0.5*chairs <= 8;4*desks + 2*tables + 1.5*chairs <= 20;tables<= 5;部分结果一:Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000⑴Value:给出最优解中各变量的值,Value=0(非基变量),反之为基变量。
⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。
本例中:变量tables 对应的reduced cost 值为5,表示当非基变量tables 的值从0 变为1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。
部分结果二:Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000⑴“Slack or Surplus”――松驰变量。
⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化率。
若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max 型问题)。
⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束),对偶价格值才可能不是0。
本例中:第3、4 行是紧约束,对应的对偶价格值为10,表示当紧约束4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。
附1:用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元,应否改变生产计划?数学模型:设每天用x1桶牛奶生产A1 ,用x2桶牛奶生产A2目标函数:设每天获利为z元。
x1桶牛奶可生产3x1公斤A1,获利24*3x,x2桶牛奶可生产4*x2公1斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100≥0非负约束:x1、x2均不能为负值,即x1≥0,x2综上所述可得max z=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN 开始,按线性规划问题的自然形式输入(见下面例子所示)。
LINGO结果窗⼝内容解读与灵敏度分析1.结果窗⼝内容解读1. ⽬标函数值:Global option solution found.表⽰求出了全局最优解;Objective value表⽰最优⽬标值,Total solver iretion表⽰求解时共⽤了⼏次迭代2. 决策变量:Value给出最优解中各变量的值3. 变量的判别数:Reduced Cost表⽰最优单纯形表中判别数所在的⾏的变量的系数,表⽰当变量有微⼩变化时,⽬标函数的变化率。
其中基变量的reduced cost值应为零。
对于基变量相应的reduced cost值表⽰这个变量增加⼀个单位时⽬标函数值减少的量(max型问题)4. 紧约束与松约束:slack or Surplus给出松弛或剩余变量的值,其值为零的对应约束为"紧约束",表⽰在最优解下该项资源已经⽤完;其值为⾮零的对应约束为"松约束",表⽰在最优解下该项资源还有剩余5. 对偶价格(经济学:影⼦价格):DUAl PRICE(对偶价格)表⽰当对应约束有微⼩变动时⽬标函数的变化率。
输出结果中对应每⼀个"紧约束"有⼀个对偶价格。
若其数值为怕,则表⽰对应约束不等式右端项正好增加⼀个单位,⽬标函数将增加P个单位(max)模型。
显然,如果在最优解处约束条件正好取等号(也就是"紧约束",也称为有效约束或起作⽤约束),对偶价格值才可能不是0.6. 变量框(Variables):Total表⽰当前模型的全部变量数,Nonlinear显⽰其中的⾮线性变量数,Integers显⽰其中的整数变量数。
⾮线性变量是指它⾄少处于某⼀个约束条件中的⾮线性关系中。
7. 约束(Constains)框:Total表⽰当前模型扩展后的全部约束个数,Nonlinear显⽰其中的⾮线性约束个数。
⾮线性约束是该约束⾄少有⼀个⾮线性变量。
如果⼀个约束中的所有变量都是定值,那么该约束就以定值不等式表⽰,该约束的真假由变量的具体值决定,仍计⼊约束总数中。
用lingo求解线性规划问题中国石油大学胜利学院程兵兵摘要食物营养搭配问题是现代社会中常见的问题,其最终的目的是节省总费用.本文通过对营养问题的具体剖析.构建了一般的线性规划模型。
并通过实例应用Lingo数学软件求解该问题.并给出了价值系数灵敏度分析,得出蔬菜价格的变动对模型的影响.关键词线性规划,lingo,灵敏度分析。
一、问题重述与分析营养师要为某些特殊病人拟订一周的菜单,可供选择的蔬菜及其费用和所含营养成分的数量以及这类病人每周所需各种营养成分的最低数量如下表1所示。
有以下规定:一周内所用卷心菜不多于2份,其他蔬菜不多于4份。
问题一:若病人每周需要14份蔬菜,问选用每种蔬菜各多少份,可使生活费用最小.问题二:当市场蔬菜价格发生怎样波动时,所建模型的适用性。
表 1 所需营养和费用营养搭配是一个线性规划问题,在给定蔬菜的情况下,要求菜单所需的营养成分必须达到要求,并在此条件下求出什么样的搭配所花费的费用最少.第一个要求是满足各类营养的充足,根据表中数据列出不等式。
第二要求为问题一中,蔬菜的份数必须为14,第三要求为在一周内,卷心菜不多于2份,其他不多于4份,根据以上条件列出各类蔬菜份数的限定条件,并可表示出费用的表达式.对于第二问,就是价值系数的变化对总费用的影响,模型的适用范围。
三、模型假设第一,假设各蔬菜营养成分保持稳定,满足题干要求。
第二,假设各蔬菜价格在一定时间内保持相对稳定。
第三,假设各类蔬菜供应全部到位,满足所需要求量. 第四,假设所求出最优解时不要求一定为整数。
四、符号约定(1)Z 代表目标函数,此题即为费用。
(2)i c 为价值系数,此题即为每份蔬菜的价格。
下标i 代表蔬菜的种类。
(3)i x 为决策变量,表示各种蔬菜的数量。
(4)i b 为最低限定条件,表示蔬菜最低营养需要。
五、模型建立根据以上各种假设和符号约定,建立模型如下。
所求的值就是min,也就是最优化结果.s 。
Lingo简单⼊门,以及对线性规划做敏感性分析设置Lingo中⽤!表⽰注释,注释结束⽤;表⽰,lingo不区分⼤⼩写,运⾏时会⾃动统⼀装换成⼤写编程步骤:1.推算出正确的模型2.确定描述集,定义集合3.确定变量4.正确写出每个式⼦常⽤函数(lingo每个函数都必须⽤@强调):!max, min⽤于⽤于定义⽬标函数@bin(x)表⽰x为0或1@gin(x)表⽰x是整数@free(x)表⽰x为任意实数,因为变量默认为⾮负实数,所以必须⽤这个函数解除这种限制@bnd(1, x, u)表⽰x为[1, u]之间的实数如表⽰x在(-5,5)之间的整数,@free(x),@gin(x),@bnd(-5, x, 5)编程⽅法:1.不使⽤集合语⾔--解决⼩规模问题(笨⽅法编程)例如解下⾯这个线性规划问题max = 72 * x1 + 64 * x2;x1 + x2 < 50;12 * x1 + 8 * x2 < 480;3 * x1 < 100;x1, x2 >= 0;model:max = 72 * x1 + 64 * x2;[milk] x1 + x2 < 50; !milk是约束条件的别名,⽅便在结果窗⼝中查看相关信息;[time] 12 * x1 + 8 * x2 < 480; !time也是别名;[cpct] 3 * x1 < 100; !cpct也是别名;end运⾏结果(会弹出两个窗⼝,只需关⼼下⾯这个窗⼝,另⼀个不⽤管)2.使⽤集合语⾔--解决⼤规模问题sets: !定义集合;S/1..6/: a, b, d; !S集合下标范围是1到6,a b d这三个变量⽤到了这个集合;T/1..2/: e, x, y;U(S, T): c; !双索引的集合,c⽤到了这个集合;endsets !结束集合的定义;data: !定义已知变量,也就是为每个已知变量赋值;a =1.258.750.55.7537.25;b =1.250.754.7556.57.75;d =3547611;x =52;y =17;e =2020;enddata !结束数据的写⼊;!⽬标⽅程;min=@sum(T(j):@sum(S(i):c(i, j) *@sqrt((x(j) - a(i))^2+ (y(j) - b(i))^2)));!约束条件;@for(S(i):@sum(T(j):c(i, j)) = d(i)); !i属于S集合范围,j属于T集合范围,这个约束条件的意思是在j⽅向上对Cij求和== d(i);@for(T(j):@sum(S(i):c(i, j)) <= e(j));(建议1.25倍速)对线性规划做敏感性分析设置(这⾥⽤第⼀个题⽬做样例)点击lingo -> option -> general solver -> Dura Computations -> Price& ranges -> apply -> save --> ok 点击lingo -> range。
lingo结果分析及灵敏性分析问题描述程序代码:max = 60*desks + 30*tables + 20*chairs;8*desks + 6*tables + chairs <= 48;2*desks + 1.5*tables + 0.5*chairs <= 8;4*desks + 2*tables + 1.5*chairs <= 20;tables<= 5;部分结果一:Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000⑴Value:给出最优解中各变量的值,Value=0(非基变量),反之为基变量。
⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。
本例中:变量tables 对应的reduced cost 值为5,表示当非基变量tables 的值从0 变为1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。
部分结果二:Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000⑴“Slack or Surplus”――松驰变量。
⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化率。
若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max 型问题)。
⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束),对偶价格值才可能不是0。
本例中:第3、4 行是紧约束,对应的对偶价格值为10,表示当紧约束4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4)4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。
l i n g o结果分析及灵敏性分析精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-lingo结果分析及灵敏性分析问题描述程序代码:max = 60*desks + 30*tables + 20*chairs;8*desks + 6*tables + chairs <= 48;2*desks + 1.5*tables + 0.5*chairs <= 8;4*desks + 2*tables + 1.5*chairs <= 20;tables<= 5;部分结果一:Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000⑴Value: 给出最优解中各变量的值,Value=0(非基变量),反之为基变量。
⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。
本例中:变量 tables 对应的 reduced cost 值为 5,表示当非基变量 tables 的值从0 变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。
部分结果二:Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000⑴“Slack or Surplus”――松驰变量。
⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化率。
若其数值为 p,表示对应约束中不等式右端项若增加 1个单位,目标函数将增加 p个单位(max 型问题)。
一个很好的运算结果分析莫版!!!例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:每个书桌每个餐桌每个椅子现有资源总数木料8单位6单位1单位48单位漆工4单位2单位 1.5单位20单位木工2单位 1.5单位0.5单位8单位成品单价60单位30单位20单位若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
[OBJ] max=60*desks+30*tables+20*chairs;[ml] 8*desks+6*tables+chairs<=48;[qg] 4*desks+2*tables+1.5*chairs<=20;[mg] 2*desks+1.5*tables+.5*chairs<=8;[zz] tables<=5;Global optimal solution found at iteration: 0Objective value: 280.0000Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000Row Slack or Surplus Dual PriceOBJ 280.0000 1.000000ML 24.00000 0.000000QG 0.000000 10.00000MG 0.000000 10.00000ZZ 5.000000 0.000000“Global optimal solution found at iteration: 3”表示3次迭代后得到全局最优解。
“Objective value: 280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:造2个书桌(desks)“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A、A两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A,121或者在设备乙上用8小时加工成4公斤A。
根据市场需求,生产的A、A能全部售出,且每公斤A获利212124元,每公斤A获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为4802 小时,并且设备甲每天至多能加工100公斤A,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,1使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶,2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元,3)由于市场需求变化,每公斤A的获利增加到30元,应否改变生产计划, 1数学模型:设每天用x桶牛奶生产A1 ,用x桶牛奶生产A2 12目标函数:设每天获利为z元。
x桶牛奶可生产3x公斤A1,获利24*3x,x桶牛奶可生产4*x公11122斤A2,获利16*4x,故z=72x+64x212约束条件:原料供应:生产A、A的原料(牛奶)总量不超过每天的供应50桶,即 12x+x?50 12劳动时间:生产A、A的总加工时间不超过每天正式工人总的劳动时间480小时,即 1212x+8x?480 12设备能力:A的产量不得超过设备甲每天的加工能力100小时,即 13x?100 1非负约束:x、x均不能为负值,即x?0,x?0 2121综上所述可得max z=72x+64x 12s.t.x+x?50 1212x+8x?480 123x?100 1x?0,x?0 21显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
线性规划问题及灵敏度分析在LINGO软件中的实现一、问题的提出:某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超过52kg,才能满足动物生长需要。
A1A2A3A4A5营养最低要 求蛋白质(g)0.3210.6 1.860矿物质(g)0.10.050.020.20.053维生素(mg)0.050.10.020.20.088成本(元/ kg)0.20.70.40.30.5问题:1.求使得总成本最低的饲料配方?2.如果另一个动物研究对蛋白质的营养要求变为59单位,但是要求动物的价格比现在的价格便宜0.3元,问该养殖所值不值得接受?3.由于市场因素的影响,X2的价格降为0.6元每千克,问是否要改变饲料配方?二、建立线性规划数学模型解答:(1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线性规划数学模型如下:目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=600.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8X1+X2+X3+X4+X5<=52X1, X2, X3, X4, X5>=0三、在LINGO软件中的求解在LINGO中输入下面的命令:Model:Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;x1+x2+x3+x4+x5<52;end操作:选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“Solution Report”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.输出结果如下:Global optimal solution found at iteration: 4Objective value: 22.40000Variable Value Reduced CostX1 0.000000 0.7000000X2 12.00000 0.000000X3 0.000000 0.6166667X4 30.00000 0.000000X5 10.00000 0.000000Row Slack or Surplus Dual Price1 22.40000 -1.0000002 0.000000 -0.58333333 4.100000 0.0000004 0.000000 -4.1666675 0.000000 0.8833333四、结果分析:(一) 一般分析1.因此,每周每个动物的配料为饲料A2、A4、A5分别为12、30和10kg,合计为52KG,可使得饲养成本达到最小,最小成本为22.4元;2. “Reduced Cost”表示当变量有微小变动时, 目标函数的变化率。
【精品】LINGO软件灵敏度分析LINGO是一种非常实用的数学建模软件,可用于线性规划、非线性规划、整数规划、混合整数规划、二次规划、非线性二次规划、全局优化、动态规划等方面。
在LINGO中,灵敏度分析可以帮助用户更好地理解线性规划问题的解,并探究约束、变量、最优值等因素的变化对于优化结果的影响。
下面将详细介绍LINGO软件的灵敏度分析功能。
一、约束灵敏度分析在LINGO中,可以通过在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,来进行约束灵敏度分析。
当我们需要对某一约束条件进行灵敏度分析时,可以在“PSens”一栏中选中要进行分析的约束条件,并选择需要分析的灵敏度类型:1. 左侧界(Lower Bound)灵敏度分析:在该约束条件的左侧界上下浮动,观察最优解随着左侧界的变化而产生的变化情况。
进行变量灵敏度分析时,LINGO会输出一个名为“Variable Sensitivity”的窗口,其中包含了与所选中变量相关的数据,如灵敏度系数、上/下限边界、最小可行解等。
另外,该窗口还提供了一个“Graph”选项卡,可以展示出灵敏度分析的图表,帮助用户更直观地理解灵敏度的变化情况。
在LINGO中,最优解灵敏度分析可以探究最优解随着目标函数系数的变化而产生的变化情况。
用户可以在“呼出”窗口中选择“求解”菜单,再选中“灵敏度分析”,然后在“Objective Sensitivity”选项卡中选中需要进行分析的目标函数变量。
总之,LINGO软件的灵敏度分析功能可以在优化过程中帮助用户更好地了解问题的解,探究约束、变量、目标函数系数等因素对应问题的影响,帮助用户优化模型,从而达到更好的优化效果。
lingo结果分析及灵敏性分析问题描述程序代码:max = 60*desks + 30*tables + 20*chairs;8*desks + 6*tables + chairs <= 48;2*desks + 1.5*tables + 0.5*chairs <= 8;4*desks + 2*tables + 1.5*chairs <= 20;tables<= 5;部分结果一:Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000⑴Value: 给出最优解中各变量的值,Value=0(非基变量),反之为基变量。
⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。
本例中:变量 tables 对应的 reduced cost 值为 5,表示当非基变量 tables 的值从 0 变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。
部分结果二:Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000⑴“Slack or Surplus”――松驰变量。
⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化率。
若其数值为 p,表示对应约束中不等式右端项若增加 1个单位,目标函数将增加 p个单位(max 型问题)。
⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束),对偶价格值才可能不是 0。
本例中:第 3、4 行是紧约束,对应的对偶价格值为 10,表示当紧约束 4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值 = 280 +10 =290。
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(桶牛奶)”并不是全然科学的。