您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 用LINGO求解线性规划的例子
附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*3x1,x2桶牛奶可生产4*x2公斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100非负约束:x1、x2均不能为负值,即x1≥0,x2≥0综上所述可得maxz=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN开始,按线性规划问题的自然形式输入(见下面例子所示)。以下解加工奶制品的生产计划问题:由于LINGO中已假设所有的变量都是非负的,所以非负约束条件不必输入;LINGO也不区分变量中的大小写字符(实际上任何小写字符将被转换为大写字符);约束条件中的“〈=”及“〉=”可用“〈”及“〉”代替。在LINGO模型窗口输入如下:max=72*x1+64*x2;x1+x2=50;12*x1+8*x2=480;3*x1=100;用鼠标单击菜单中的求解命令(Solve)就可以得到解答,结果窗口显示如下:LPOPTIMUMFOUNDATSTEP2OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000NO.ITERATIONS=2计算结果表明:“LPOPTIMUMFOUNDATSTEP2”表示单纯形法在两次迭代(旋转)后得到最优解。“OBJECTIVEFUNCTIONVALUE1)3360.000”表示最优目标值为3360.000(LINGO中将目标函数自动看作第1行,从第二行开始才是真正的约束条件)。“VALUE”给出最优解中各变量(VARIABLE)的值:x1=20.000000,x2=30.000000。“REDUCEDCOST”的含义是(对MAX型问题):基变量的REDUCEDCOST值为0,对于非基变量,相应的REDUCEDCOST值表示当非基变量增加一个单位时(其它非基变量保持不变)目标函数减少的量。本例中两个变量都是基变量。“SLACKORSURPLUS”给出松弛(或剩余)变量的值,表示约束是否取等式约束;第2、第3行松弛变量均为0,说明对于最优解而言,两个约束均取等式约束;第4行松弛变量为40.000000,说明对于最优解而言,这个约束取不等式约束。“DUALPRICES”给出约束的影子价格(也称为对偶价格)的值:第2、第3、第4行(约束)对应的影子价格分别48.000000,2.000000,0.000000。“NO.ITERATIONS=2”表示用单纯形法进行了两次迭代(旋转)。灵敏度分析,则LINGO还会输出以下结果:RANGESINWHICHTHEBASISISUNCHANGED:OBJCOEFFICIENTRANGESVARIABLECURRENTALLOWABLEALLOWABLECOEFINCREASEDECREASEX172.00000024.0000008.000000X264.0000008.00000016.000000RIGHTHANDSIDERANGESROWCURRENTALLOWABLEALLOWABLERHSINCREASEDECREASE250.00000010.0000006.6666673480.00000053.33333280.0000004100.000000INFINITY40.000000以上显示的是当前最优基(矩阵)保持不变的充分条件(RANGESINWHICHTHEBASISISUNCHANGED),包括目标函数中决策变量应的系数的变化范围(OBJCOEFFICIENTRANGES)和约束的右端项的变化范围(RIGHTHANDSIDERANGES)两部分。前一部分的输出行X172.00000024.0000008.000000表示决策变量X1当前在目标函数中对应的系数为72,允许增加24和减少8。也就是说,当该系数在区间[64,96]上变化时(假设其它条件均不变),当前最优基矩阵保持不变。对X2对应的输出行也可以类似地解释。由于此时约束没有任何改变,所以最优基矩阵保持不变意味着最优解不变(当然,由于目标函数中的系数发生变化,最优值还是会变的)。后一部分的输出行250.00000010.0000006.666667表示约束2当前右端项为50,允许增加10和减少6.666667。也就是说,当该系数在区间[43.333333,60]上变化时(假设其它条件均不变),当前最优基矩阵保持不变。对约束3、约束4对应的输出行也可以类似地解释。由于此时约束已经改变,虽然最优基矩阵保持不变,最优解和最优值还是会变的。但是,由于最优基矩阵保持不变,所以前面的“DUALPRICES”给出的约束的影子价格此时仍然是有效的。用LINGO求解加工奶制品的生产计划,结果如下:20桶牛奶生产A1,30桶生产A2,利润3360元。1)35元可买到1桶牛奶,要买吗?由于原料的影子价格为48,3548,应该买!2)聘用临时工人付出的工资最多每小时几元?由于工时的影子价格为2,聘用临时工人付出的工资最多每小时2元3)A1获利增加到30元/千克,应否改变生产计划由于要使最优解保持不变,X1系数的允许变化范围为[64,96]。x1系数由24*3=72增加为30*3=90,在允许范围内。所以不改变生产计划。
本文标题:用LINGO求解线性规划的例子
链接地址:https://www.777doc.com/doc-4683813 .html