2014~2015学年第二学期短学期
《数学软件及应用(Lingo)》实验报告
班级数学131班姓名张金库学号******** 成绩
实验名称
奶制品的生产与销售计划的制定
完成日期:2015年9月3日
一、实验名称:奶制品的生产与销售计划的制定
二、实验目的及任务
1.了解并掌握LINGO 的使用方法、功能与应用;
2.学会利用LINGO 去解决实际中的优化问题。
三、实验内容
问题 一奶制品加工厂用牛奶生产1A ,2A 两种奶制品,1桶牛奶可以在甲类设备上用12h 加工成3kg 1A ,或者在乙类设备上用8h 加工成4kg 2A 。
根据市场的需求,生产1A ,2A 全部能售出,且每千克1A 获利24元,每千克2A 获利16元。
现在现在加工场每天能的到50桶牛奶的供应,每天正式工人总的劳动时间为480h ,并且甲类设备每天至多能加工100kg 1A ,乙类设备的加工能力没有限制。
为增加工厂的利益,开发奶制品的深加工技术:用2h 和3元加工费,可将1kg 1A 加工成0.8kg 高级奶制品1B ,也可将1kg 2A 加工成0.75kg 高级奶制品2B ,每千克1B 能获利44元,每千克2B 能获利32元。
试为该工厂制订一个生产销售计划,使每天的净利润最大,并讨论以下问题:
(1)若投资30元可以增加供应1桶牛奶,投资3元可以增加1h 的劳动时间,应否做这些投资?若每天投资150,可以赚回多少?
(2)每千克高级奶制品1B ,2B 的获利经常有10%的波动,对制订的生产销售计划有无影响?若每千克1B 获利下降10%,计划应该变化吗?
(3)若公司已经签订了每天销售10kg 1A 的合同并且必须满足,该合同对公司的利润有什么影响?
问题分析 要求制定生产销售计划,决策变量可以先取作每天用多少桶牛奶生产1A ,2A ,再添上用多少千克1A 加工1B ,用多少千克2A 加工2B ,但是问题要分析1B ,2B 的获利对生产销售计划的影响,所以决策变量取作1A ,2A ,1B ,2B 每天的销售量更为方便。
目标函数是工厂每天的净利润——1A ,2A ,1B ,2B 的获利之和扣除深加工费用。
基本模型
决策变量:设每天销售1x kg 1A ,2x kg 2A ,3x kg 1B ,4x kg 2B ,用5x kg 1A 加工1B ,用6x kg 1
A
加工2B 。
目标函数:设每天净利润为z ,容易写出6543213332441624x x x x x x z --+++=。
约束条件:
原料供应 每天生产1A 51x x +kg ,用牛奶3/)(51x x +桶,每天生产2A 62x x +kg ,用牛奶4/)(62x x +桶,二者只和不超过每天的供应量50桶;
劳动时间 每天生产1A ,2A 的时间分别为)(451x x +和)(262x x +,加工1B ,2B 的时间分别为52x 和62x ,二者只和不得超过总的劳动时间480h ;
设备能力
1A 的生产量51x x +不超过甲类设备每天的加工能力100kg ; 非负约束
621,,,x x x ⋯均为非负。
附加约束 1kg 1A 加工成0.8kg 1B ,故538.0x x =,同理6475.0x x =。
由此得基本模型为:
max 6543213332441624x x x x x x z --+++= (1)
S.t. 3/)(51x x ++4/)(62x x +≤50 (2)
)(451x x ++)(262x x ++52x +62x ≤480 (3)
51x x +≤100 (4)
538.0x x = (5)
6475.0x x = (6)
621,,,x x x ⋯≥0 (7)
模型求解 用LINGO 软件求解,输入时为了方便将(2)、(3)分别改为
60034344321≤+++x x x x
(7*) 48046246521≤+++x x x x
(8*)
LINGO 程序
model :
max=24*x1+16*x2+44*x3+32*x4-3*x5-3*x6;
[milk] 4*x1+3*x2+4*x5+3*x6<=600;
[time] 4*x1+2*x2+6*x5+4*x6<=480;
[cpct] x1+x5<=100;
x3=0.8*x5;
x4=0.75*x6;
end
输入并求解,可得如下输出:
Global optimal solution found.
Objective value: 3460.800
Total solver iterations: 2
Variable Value Reduced Cost
X1 0.000000 1.680000
X2 168.0000 0.000000
X3 19.20000 0.000000
X4 0.000000 0.000000
X5 24.00000 0.000000
X6 0.000000 1.520000
Row Slack or Surplus Dual Price
1 3460.800 1.000000
MILK 0.000000 3.160000
TIME 0.000000 3.260000
CPCT 76.00000 0.000000
5 0.000000 44.00000
6 0.000000 32.00000
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable Variable Coefficient Increase Decrease X1 24.00000 1.680000 INFINITY X2 16.00000 8.150000 2.100000 X3 44.00000 19.75000 3.166667 X4 32.00000 2.026667 INFINITY X5 -3.000000 15.80000 2.533333 X6 -3.000000 1.520000 INFINITY
Righthand Side Ranges
Row Current Allowable Allowable RHS Increase Decrease
MILK 600.0000 120.0000 280.0000 TIME 480.0000 253.3333 80.00000 CPCT 100.0000 INFINITY 76.00000 5 0.0 INFINITY 19.20000 6 0.0 INFINITY 0.0
最优解为0,24,0,2.19,168,0654321======x x x x x x ,最优值为z=3460.8,即每天生产168kg 2A 和19.2kg 1B (不出售1A ,2B ),可获净利润3460.8元。
为此,需用8桶牛奶加工成1A ,42桶牛奶加工成2A ,并且将得到的24kg 1A 全部加工成1B 。
结果和灵敏度分析
利用输出中的影子价格和敏感性分析讨论以下问题:
(1)上述结果给出,约束[MILK]、[TIME]的影子价格分别为3.16和3.26,注意到约束[MILK]的影子价格为(2*)右端增加1个单位时目标函数的增量,有(2)式可知,增加一桶牛奶可使净利润增长3.16×12=37.92元,约束[TIME]的影子价格说明:增加1h 的劳动时间可以使净利润增长3.26元。
所以应该投资30元增加一桶牛奶,或投资3元增加1h 劳动时间。
若每天投资150元,增加供应五桶牛奶,可赚回37.92×5=189.6元。
但是通过增加牛奶的数量是有限制的,输出结果表明,约束[MILK]右端的允许变化范围为(600-120,600+120),相当于(2)右端允许变化范围为(50-23.3,50+10),即最多增加供应10桶牛奶。
(2)上述输出结果给出,最优解不变的条件下目标函数系数的允许变化范围:3x 的系数为(44-3.17,44+19.75);4x 的系数为(32-∞,32+2.03)。
所以当1B 的获利向下波动10%,或2B 的获利向上波动10%,上面得到的生产计划将不再一定是最优的,应该重新制订。
如若每千克1B 获利下降10%,应该将原模型(1)式中的3x 改为39.6,重新计算,得到最优解为40,0,30,0,160,0654321======x x x x x x ,最优值为z=3400.
(3)上述结果的给出,变量1x 对应的“Reduced Cost ”严格大于0(为1.68),首先表明目前最优解中1x 的取值一定为0;其次,如果限定1x 的取值大于等于某个正数,则1x 从0开始每增加一个单位时,(最优的)目标函数将减少1.68。
因此若该公司已经签订了每天销售10kg 的合约并且必须满足,改合同将会使该公司利润减少1.68×10=16.8元,即最优利润为3460.8-16.9=3444元。
也可以反过来理解:如果目标函数中1x 对应的费用系数增加不小于1.68,则在最优解中1x 将可以取到严格大于0的值。
四、实验总结
通过此次实验,我初步了解了LINGO 软件、熟悉了LINGO 软件的使用方法、功能并在实际中加以应用。
LINGO 软件在解决实际问题中的最优化问题十分方便。
解题过程中1B ,2B 与1A ,2A 之间其实存在等式关系(5)、(6),虽然可以消掉2个变量,但是会增加人工计算,并使模型变得复杂。
所以建模中尽可能的利用原始的数据信息,而把尽量多的计算留给计算机去完成。