资源描述:
《lingo解决供应链促销问题.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、优化软件及应用作业——LINGO在供应链问题中的应用系统工程6班徐金阳1301286问题:某公司生产不锈钢水槽,现正在制定来年需求和供给管理计划。预计每月分销商的需求如表1所示。该公司的产能由工厂雇佣的操作工人数量决定,工人每月工作20天,每天8小时,其他时间的工作算加班,正常工作时间每小时工资15美元,加班费每小时22美元。每个工人每月的加班时间不得超过20小时。工厂现雇佣工人数为250名,每个不锈钢水槽的生产需要2小时,单位库存持有成本为每月3美元,单件产品生产成本为40美元。每单位的销售价格为125美元销售给分销商。假定没有转包生产。假定该公司最初有400
2、0个单位库存,并希望维持年底也有同样多的库存。表1某公司每月预计需求量月份需求量月份需求量110000730000211000829000315000921000418000101800052500011140006260001211000市场调查显示,降价1%能够给当月增加20%的销售量,并使得未来两个月销售量的10%提前至当月。例如,在三月份进行一个百分点的降价促销活动可以使3月的销售量增加3000件(=0.2*15000),并且使得4月的销售量提前1800件(=0.1*18000),5月份的销售量提前2500件(=0.1*25000)至三月。(a)假定没有
3、促销活动,这一年的最优生产计划是什么?年利润是多少?这项计划的成本是多少(b)在4月还是7月进行促销活动更好?各能增加多少利润?(c)如果水槽的售价从125美元涨至250美元,最佳的促销时间是否需要调整?为什么?解:决策变量:Ht=第t月新雇佣的人数(t=1,..,12)Lt=第t月解聘的人数(t=1,..,12)Wt=第t月的工人的人数(t=1,..,12)Ot=第t月加班的小时数(t=1,..,12)It=第t月末持有的库存量,单位千(t=1,..,12)Ct=第t月外包的生产量,单位千(t=1,..,12)Pt=第t月的生产量,单位千(t=1,..,12)
4、已知参数:Dt=第t月的需求量(t=1,..,12)数学模型:MinimizeS.t.库存约束:;加班时间限制生产能力限制劳动力限制(a):最优生产计划:时段工人人数Wt加班时间Ot月末库存It当月生产量Pt02500400000125001400020000225002300020000325002800020000425003000020000525002500020000625001900020000725009000200008250002000092502000021000102500018000112500014000122500400015000成
5、本计算源代码:sets:jieduan/123456789101112/;Periods(jieduan):D,W,O,I,P;endsets!目标函数;min=@sum(periods(t)
6、t#GE#1:2400*W(t)+22*O(t)+3*I(t)+40*P(t));!需求约束;@for(periods(t)
7、t#GT#1:I(t-1)+P(t)=D(t)+I(t));I0+P(1)=D(1)+I(1);I0=4000;I(12)=4000;@for(periods(t)
8、t#GT#1:W(t)=W(t-1));W(1)=W0;W0=250;@for(p
9、eriods(t)
10、t#GE#1:P(t)<=80*W(t)+O(t)/2);@for(periods(t)
11、t#GE#1:O(t)<=20*W(t));!这里是数据;data:D=10000,11000,15000,18000,25000,26000,30000,29000,21000,18000,14000,11000;enddataendLINGO计算运行后得到成本为16820000美元利润计算源代码:sets:jieduan/123456789101112/;Periods(jieduan):D,W,O,I,P;endsets!目标函数;max=@sum
12、(periods(t)
13、t#GE#1:125*D(t)-2400*W(t)-22*O(t)-3*I(t)-40*P(t));!需求约束;@for(periods(t)
14、t#GT#1:I(t-1)+P(t)=D(t)+I(t));I0+P(1)=D(1)+I(1);I0=4000;I(12)=4000;@for(periods(t)
15、t#GT#1:W(t)=W(t-1));W(1)=W0;W0=250;@for(periods(t)
16、t#GE#1:P(t)<=80*W(t)+O(t)/2);@for(periods(t)
17、t#GE#1:O(t)<=20*W(t))
18、;!这里是数据;data