建模风暴 发表于 2012-4-30 23:58

优化问题求助,急!!!

两个美国学生暑假时考虑创业,打算成立一家公司,主营业务是往大学推销某种打印机。他们先与生产商签订了一个每月最多供应500台机器的合同,这时候他们面临寻找一个合适的库存地点的问题,他们找到了一处符合他们各方面需求的房子,但是房主的要价是每年租金为10万美元,他们觉得难以承受,房主于是提出了一个备选方案:按库存的机器数量付租金,在经营的第一个月内,每台机器每月库存费用为10美元,剩余月份每台每月增加2美元。一般情况下他们在9月初大学开学时才有销量,到6月降为0,机器售价为180美元。他们计算出了包括购买、运输及管理在内的总成本,前4个月每台成本为100美元,其后的4个月每台成本90美元,该年剩下的4个月每台成本85美元,每月最多订购一次。经过调查,他们估计出了该学年9月到下年5月的销售量:
9月        340
10月        650
11月        420
12月        200
1月        660
2月        550
3月        390
4月        580
5月        120
请考虑他们应该如何制订一个使成本最小的订购计划。如果后来他们又接到生产厂商的电话,不能为他们每月供应500台机器了,他们可以在前4个月每月供应700台,后5个月每月供应300台。这对他们的订购计划有何影响?
问题:
1.        建立问题的通用的数学规划模型,为该公司制订一个使成本最小的最优订购计划。
2.        库存费用的两种支付方式,10万美元一年或按机器数量每月付费,哪种更有利?
3.        生产商供应模式的变化将给公司带来怎样的损失?
4.        如果该公司需要借大约20万美元创业,在第一年结束时,他们能盈利吗?

建模风暴 发表于 2012-4-30 23:58

求高手指点

宁静的夜 发表于 2012-9-8 18:01

dfdddddddddd

liwenhui 发表于 2017-5-10 10:21

第2问:
如果在10万每年的租金下,总成本:Model:

Sets:
Month/Sep..May/:S,B,D;!S销售量,B采购量,D库存量;
Endsets

Min=C1+C2;

C1=100000;!库存成本;
C2=@Sum(Month(i):S(i)*@if(i#le#4,100,@if(i#le#8 #and# i#ge#5,90,85)));!采购成本;

@For(Month(i)|i#eq#1:S(i)<B(i));!第一个月采购量不小于销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9:S(i)<B(i)+D(i-1));!第二个月开始,购买量加上上一个月的剩余量不小于销售量;
@For(Month(i)|i#eq#9:S(i)=B(i)+D(i-1));!最后一个月销售量等于采购量加上上月库存;
@For(Month(i)|i#eq#1:D(i)=B(i)-S(i));!第一个月的剩余量等于采购量减销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9 :D(i)=D(i-1)+B(i)-S(i));!第二个月开始的剩余量等于上个月的剩余量加采购量减销售量;
@For(Month(i):B(i)<500);!每月采购量不大于500台;

Data:
S=340,650,420,200,660,550,390,580,120;
Enddata

End
结果是:Global optimal solution found.
  Objective value:                              467400.0
  Infeasibilities:                                  0.000000
  Total solver iterations:                             0
如果是按机器数量付费:Model:

Title 如果每个月供应500台;
Sets:
Month/Sep..May/:S,B,D;!S销售量,B采购量,D库存量;
Endsets

Min=C1+C2;

C1=@Sum(Month(i):D(i)*@if(i#eq#1,10,12));!库存成本;
C2=@Sum(Month(i):S(i)*@if(i#le#4,100,@if(i#le#8 #and# i#ge#5,90,85)));!采购成本;

@For(Month(i)|i#eq#1:S(i)<B(i));!第一个月采购量不小于销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9:S(i)<B(i)+D(i-1));!第二个月开始,购买量加上上一个月的剩余量不小于销售量;
@For(Month(i)|i#eq#9:S(i)=B(i)+D(i-1));!最后一个月销售量等于采购量加上上月库存;
@For(Month(i)|i#eq#1:D(i)=B(i)-S(i));!第一个月的剩余量等于采购量减销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9 :D(i)=D(i-1)+B(i)-S(i));!第二个月开始的剩余量等于上个月的剩余量加采购量减销售量;
@For(Month(i):B(i)<500);!每月采购量不大于500台;

Data:
S=340,650,420,200,660,550,390,580,120;
Enddata

End结果是:Global optimal solution found.
  Objective value:                              372980.0
  Infeasibilities:                                  0.000000
  Total solver iterations:                             3
可见采用按机器数量付费,成本更低。

第三问:
供应商如果按前4个月700台,后5个月300台供货:Model:

Title 如果前4个月每月供应700台,后5个月每月供应300台;
Sets:
Month/Sep..May/:S,B,D;!S销售量,B采购量,D库存量;
Endsets

Min=C1+C2;

C1=@Sum(Month(i):D(i)*@if(i#eq#1,10,12));!库存成本;
C2=@Sum(Month(i):S(i)*@if(i#le#4,100,@if(i#le#8 #and# i#ge#5,90,85)));!采购成本;

@For(Month(i)|i#eq#1:S(i)<B(i));!第一个月采购量不小于销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9:S(i)<B(i)+D(i-1));!第二个月开始,购买量加上上一个月的剩余量不小于销售量;
@For(Month(i)|i#eq#9:S(i)=B(i)+D(i-1));!最后一个月销售量等于采购量加上上月库存;
@For(Month(i)|i#eq#1:D(i)=B(i)-S(i));!第一个月的剩余量等于采购量减销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9 :D(i)=D(i-1)+B(i)-S(i));!第二个月开始的剩余量等于上个月的剩余量加采购量减销售量;
@For(Month(i)|i#le#4:B(i)<700);!前4个月每月采购量不大于700台;
@For(Month(i)|i#gt#4:B(i)<300);!后5个月每月采购量不大于300台;

Data:
S=340,650,420,200,660,550,390,580,120;
Enddata

End
结果:Global optimal solution found.
  Objective value:                              404060.0
  Infeasibilities:                                  0.000000
  Total solver iterations:                             0


  Model Title: 如果前4个月每月供应700台,后5个月每月供应300台

                       Variable           Value        Reduced Cost
                             C1        36660.00            0.000000
                             C2        367400.0            0.000000
                        S( SEP)        340.0000            0.000000
                        S( OCT)        650.0000            0.000000
                        S( NOV)        420.0000            0.000000
                        S( DEC)        200.0000            0.000000
                        S( JAN)        660.0000            0.000000
                        S( FEB)        550.0000            0.000000
                        S( MAR)        390.0000            0.000000
                        S( APR)        580.0000            0.000000
                        S( MAY)        120.0000            0.000000
                        B( SEP)        490.0000            0.000000
                        B( OCT)        700.0000            0.000000
                        B( NOV)        700.0000            0.000000
                        B( DEC)        700.0000            0.000000
                        B( JAN)        300.0000            0.000000
                        B( FEB)        300.0000            0.000000
                        B( MAR)        300.0000            0.000000
                        B( APR)        300.0000            0.000000
                        B( MAY)        120.0000            0.000000
                        D( SEP)        150.0000            0.000000
                        D( OCT)        200.0000            0.000000
                        D( NOV)        480.0000            0.000000
                        D( DEC)        980.0000            0.000000
                        D( JAN)        620.0000            0.000000
                        D( FEB)        370.0000            0.000000
                        D( MAR)        280.0000            0.000000
                        D( APR)        0.000000            94.00000
                        D( MAY)        0.000000            12.00000
影响了每月的订货节奏和成本。

第四问:借入20万,不考虑利息的情况:Model:

Title 如果每个月供应500台;
Sets:
Month/Sep..May/:S,B,D;!S销售量,B采购量,D库存量;
Endsets

Max=R-(C1+C2+C3);

R=@sum(Month(i):S(i)*180);
C1=@Sum(Month(i):D(i)*@if(i#eq#1,10,12));!库存成本;
C2=@Sum(Month(i):S(i)*@if(i#le#4,100,@if(i#le#8 #and# i#ge#5,90,85)));!采购成本;
C3=200000;
@For(Month(i)|i#eq#1:S(i)<B(i));!第一个月采购量不小于销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9:S(i)<B(i)+D(i-1));!第二个月开始,购买量加上上一个月的剩余量不小于销售量;
@For(Month(i)|i#eq#9:S(i)=B(i)+D(i-1));!最后一个月销售量等于采购量加上上月库存;
@For(Month(i)|i#eq#1:D(i)=B(i)-S(i));!第一个月的剩余量等于采购量减销售量;
@For(Month(i)|i#gt#1 #and# i#lt#9 :D(i)=D(i-1)+B(i)-S(i));!第二个月开始的剩余量等于上个月的剩余量加采购量减销售量;
@For(Month(i):B(i)<500);!每月采购量不大于500台;

Data:
S=340,650,420,200,660,550,390,580,120;
Enddata

End结果:  Global optimal solution found.
  Objective value:                              130820.0
  Infeasibilities:                                  0.000000
  Total solver iterations:                             3


  Model Title: 如果每个月供应500台

                       Variable           Value        Reduced Cost
                              R        703800.0            0.000000
                             C1        5580.000            0.000000
                             C2        367400.0            0.000000
                             C3        200000.0            0.000000
                        S( SEP)        340.0000            0.000000
                        S( OCT)        650.0000            0.000000
                        S( NOV)        420.0000            0.000000
                        S( DEC)        200.0000            0.000000
                        S( JAN)        660.0000            0.000000
                        S( FEB)        550.0000            0.000000
                        S( MAR)        390.0000            0.000000
                        S( APR)        580.0000            0.000000
                        S( MAY)        120.0000            0.000000
                        B( SEP)        490.0000            0.000000
                        B( OCT)        500.0000            0.000000
                        B( NOV)        420.0000            0.000000
                        B( DEC)        410.0000            0.000000
                        B( JAN)        500.0000            0.000000
                        B( FEB)        500.0000            0.000000
                        B( MAR)        470.0000            0.000000
                        B( APR)        500.0000            0.000000
                        B( MAY)        120.0000            0.000000
                        D( SEP)        150.0000            0.000000
                        D( OCT)        0.000000            22.00000
                        D( NOV)        0.000000            12.00000
                        D( DEC)        210.0000            0.000000
                        D( JAN)        50.00000            0.000000
                        D( FEB)        0.000000            36.00000
                        D( MAR)        80.00000            0.000000
                        D( APR)        0.000000            24.00000
                        D( MAY)        0.000000            12.00000

                            Row    Slack or Surplus      Dual Price
                              1        130820.0            1.000000
                              2        0.000000            1.000000
                              3        0.000000           -1.000000
                              4        0.000000           -1.000000
                              5        0.000000           -1.000000
                              6        150.0000            0.000000
                              7        0.000000            0.000000
                              8        0.000000            0.000000
                              9        210.0000            0.000000
                             10        50.00000            0.000000
                             11        0.000000            0.000000
                             12        80.00000            0.000000
                             13        0.000000            0.000000
                             14        0.000000            0.000000
                             15        0.000000            0.000000
                             16        0.000000            10.00000
                             17        0.000000            0.000000
                             18        0.000000            0.000000
                             19        0.000000            12.00000
                             20        0.000000            24.00000
                             21        0.000000            0.000000
                             22        0.000000            12.00000
                             23        10.00000            0.000000
                             24        0.000000            10.00000
                             25        80.00000            0.000000
                             26        90.00000            0.000000
                             27        0.000000            12.00000
                             28        0.000000            24.00000
                             29        30.00000            0.000000
                             30        0.000000            12.00000
                             31        380.0000            0.000000
能实现盈利。




















页: [1]
查看完整版本: 优化问题求助,急!!!