工厂生产计划

       

   

本文以工厂所获得的总收益为研究对象,采用了线性规划的分析方法,通过求解不同产品的生产计划以及按计划生产所获得的利润,解决了工厂为达到最大总收益的产品生产计划问题。

在问题一的求解过程中,以每月每种产品的销售量和生产量为自变量,以工厂所获得的收益为目标函数,结合各种约束条件,建立了一个动态规划方程组,将各月份各种产品生产的最佳配置转化为动态规划方程组的求解问题,得到了最大收益为6.9256万元。

问题二在问题一的基础上考虑了市场价格的变化及引入新机床两个因素,为使模型简化,首先考虑市场价格的变化对计划和收益的影响。然后假定市场价格不变,利用Lingo软件,模拟出引入新机床对计划和收益的影响。

    问题三是问题一的拓展,通过更改约束方程,利用模型一的计算程序,从而得到拓展模型的最优解。

关键字:总收益   销售量   生产量   动态规划   Lingo软件

一、问题的重述

某厂拥有4台磨床、2台立式钻床、3台卧式钻床、1台镗床和1台刨床,用以生产7种产品,记作。工厂收益规定为产品售价减去原材料费用之剩余。每种产品单件的收益及所需各机床的加工工时(以小时计)列于下表:

                             

本月(一月)和随后的5各月中,下列机床停工维修:

各种产品各月份的市场容量如下表:

每种产品存货最多可到100件,存费为每件每月0.5元。现无存货,要求到6月底每种产品有存货50件。工厂每周工作6天,每天2班,每班8小时。不需要考虑排队等待加工的问题。

1、为使收益最大,工厂应如何安排各月份各种产品的生产?

2、研究市场价格的某种变化及引入新机床对计划和收益的影响。

3、若各机床的停工维修时间不作预先规定,而是选择最合适的月份维修。除磨床外,每台机床在这6个月中的一个月必须停工维修;6个月中4台磨床有2台需要维修。扩展工厂计划模型,使得可以对灵活安排机床维修时间作出决策。停工时间的这种灵活性价值如何?

二、符号的约定

二、问题的分析

1、需解决的问题

按照题意,需要解决的问题是给出一个优化的产品加工方案,方案应包括每月每种机床的加工各种产品的数量,以使得工厂所获得的收益最大。

2、达到的目标

工厂的目标是获得最大利润,对于本题,产品生产的利润等于产品的收益乘以产品的数量减去库存产品的存储费用。本题要达到的目标就是通过建立数学模型寻求收益的最大化。

    3、约束条件

由于利润等于产品的总收益减去库存产品的存储费用,就是说影响利润有产品的数量、库存产品的存储费用量两个因素,利用其约束条件将转化为求解动态规划方程组的问题,现分别对它的约束条件作如下分析。

(1)机床每月可工作时间的约束.

工厂每周工作6天,每天2班,每班8小时,所以每台机器每月(按30

计算)最多可以工作441小时,即满足

      ··············(1)

   (2)各种产品销售量的约束.

每种产品每月的销售量由市场容量及该种产品的存货量决定,题中已给出各种产品各月份的市场容量表及最大存货量100件,故销售量应小于等于市场容量与存储量之和即

            ················  (2)

      ················  (3)

(3)六月份每种产品的存货应为50件.

             ················  (4)

(4)机床停工维修时间的限制.

由于每个月份都有机床停工维修(见题表),经分析,当该种机器处于维修状态时,其可用台数会减少从而影响各种产品的生产数量,进而影响总的销售额。

四、模型的建立与求解

模型的假设

1.      机器除维修时期外,其他时间均能正常工作,

2.      不需要考虑排队等待加工的问题,

3.      产品在储存过程中不发生质量问题,

4.该工厂生产的产品除存货外,在不超过市场容量的情况下均能售出,

5.市场价格的变化对产品原料和销售价格均有影响.

问题一模型的建立

1)目标函数

题目的目标是寻求利润的最大化,而利润Y为六个月的收益的和,即

   ·············· (5)                

每月总收益由各品种产品的收益之和,即

  ··············  (6)

库存产品的存储费用为可表示为

  ·············· (7)

目标函数可表示为

 ··············(8)

化简得

  ··············(9)

(2)  约束条件

由以上分析可得到如下约束条件

.

.

.

.                  ·············(10)

.

目标函数与约束条件的优化模型即为问题一的模型。

模型的求解

我们根据建立的线性规划模型,通过lingo软件编程(程序见附录1),得到了工

产品加工计划的最大值为6.9256万元。具体的生产安排计划见表1

表1 问题一的产品加工计划

结果分析:

加工计划与当月能用的机床、市场容量、加工产品的时间及加工产品的单项收益有关,尽量在前期避免生产量大于销售量,不然会增加存储费用从而增加成本,尽量增大单项收益高、加工时间短的产品的生产量

问题二中模型的建立与求解

该问研究市场价格的某种变化及引入新机床对计划和收益的影响。为简化模型,我们先分析市场价格对计划和收益的影响,然后在此基础上,由小到大逐个增加五种机床的引进数量并分析总收益的变化趋势来反映其对引入新机床对计划和收益的影响。

市场价格对单个产品的售价和原材料成本均有影响,不妨假设,单个产品的收益月减少率为x,则第j个月单个产品的利润     

                     =·           ··········· (11)

其中为第1个月第i个产品单件的收益。故可以建立总收益的目标

    ·········· (12)

其它约束条件均不变。

当x从0.01每次逐渐增加0.02时,利用lingo软件(程序见附录2),得到对应每个x值时的最大总收益,如下表2所示

表2不同x值时的最大总收益

用EXCEL软件绘图,得到图1:

 

图1:最大收益率与市场价格与增长率的关系

从表中可以发现,最大总收益随x的增大而基本呈线性的减小,且总收益为正。

接着考虑市场价格不变,即单项产品收益不变时引入新机床对计划和收益的影响,因为磨床加工耗时比较长,所以考虑磨床的引进对总收益的影响。如首先讨论磨床的数量由4逐次增加至8的过程中,总收益Y的变化趋势来衡量引入磨床对总收益的影响。用lingo软件进行求解(程序见附录3),分析结果发现引进磨床没有对总收益产生影响,总收益仍为69256元。再进行研究,发现引进立式钻床、卧式钻床对总收益也无影响。但当单独引进一台镗床时总收益变为80425元,比原来增加了11169元。当单独引进一台刨床时,总收益变为81786元,较原来增加了12530元。当引进一台镗床和一台刨床时,总收益为92955元,较原来增加了23699元。总收益共这四种结果,在引进机床无影响。

从引进机床的结果可以看出,原题中的机床维修对总收益并无很大影响。原因可能是总收益还受到市场容量以及存储量的限制,所以多引进机床并不能多生产。而引进镗床和刨床则会使生产方案发生变化,因为原有的这两台机床就很少,而且在某一月中还要进行维修。

问题三中模型的建立与求解

(1)   模型的改进

    由于机床的停工维修时间不作预先规定,而是选择最合适的月份维修,对各种产品每月的加工数量的限制改变了。针对这个情况,对于问题三的模型,仍采用问题一的模型,只不过对约束条件进行了修改。

目标方程

      ···········(13)

 2)约束条件

由以上分析,可得到如下约束条件

.

 

.

.               ···············(14)

.

.

五、模型的评价

模型的优点

1.我们在模型求解的时候,利用了专门求解规划问题的lingo数学软件,求解速度很快,而且结果准确;

 2.在模型的改进中,我们采用了动态规划模型,考虑不同变量之间的关系,求解全局最优解。

3.我们对工厂的最大总收益进行了研究分析,认为增加一台镗床和一台刨床更能提高最大总收益。

模型的缺点

1. 在题目中,我们没有考虑产品每天的存储费用,只是简单地把存储费用看作是月底的存储量与存储价格的积,这样不太全面,有失偏差;

2. 我们从模型的求解中发现一些规律,例如总收益随单项产品收益的递减而线形地递减以及引进机床对最大总收益的影响等,但是没有能够用数学的方法从理论上解释原因;

3.我们没有考虑到市场容量变化对最大总收益的具体影响,而实际上供求变化对工厂的收益影响很大;

六、模型的推广

本模型是一个典型的线性规划模型,用来求解最大或最小目标函数值问题。此类问题很多,也有很多的推广应用价值。优化问题可以说是人们应用科学、工程设计、商业贸易等领域中最常遇到的一类问题。

这种用数学建模的方法来处理优化问题,即建立和求解所谓优化模型。虽然由于建模时要做适当的简化,可能使得结果不一定完全可行或达到实际上的最优,但是它基于客观规律和数据,模型的建立与求解并不需要耗费太多时间。如果在建模的基础上再赋予其现实意义,就可以期望得到实际问题的一个比较圆满的回答。

参考文献

[1]袁新生,邵大宏,郁时炼,LINGO和EXCEL在数学建模中的应用,北京,科学出版社,20##-11.

[2]姜启源,谢金星,叶俊,数学模型(第三版),高等教育出版社,20##年8月.

[3]叶其孝,大学生数学建模竞赛辅导教材(三),湖南教育出版社,1998年5月.

[4]谷源盛,运筹学,重庆大学出版社,20##年8月

 

1.

问题一中的程序代码

model:

sets:

m/1..6/:; !定义月份下标集;

k/1..7/:g; !定义产品种类;

b/1..5/:; !定义机床种类;

vol(m,k):v,p,l,s; !定义容量矩阵v,生产方案矩阵p,储存矩阵l和销售矩阵s;

time(b,k):t; !定义时间矩阵t;

endsets

data:

v=500 1000 300  300  800  200 100

  600 500  200  0    400  300 150

  300 600  0    0    500  400 100

  200 300  400  500  200  0   100

  0   100  500  100  1000 300 0

  500 500  100  300  1100 500 60;

g=10 6 8 4 11 9 3;

t=0.5  0.7  0   0    0.3  0.2 0.5

  0.1  0.2  0   0.3  0    0.6 0

  0.2  0    0.8 0    0    0   0.6

  0.05 0.03 0   0.07 0.1  0   0.08

  0    0    0.1 0    0.05 0   0.05;

enddata

max=@sum(m(i):@sum(k(j):g(j)*s(i,j))-0.5*@sum(k(j):l(i,j))); !目标函数;                                                                                                              

@for(k(j):t(1,j)*p(1,j)<=411*3);

@for(k(j):t(1,j)*p(2,j)<=411*4);

@for(k(j):t(1,j)*p(3,j)<=411*4);

@for(k(j):t(1,j)*p(4,j)<=411*4);

@for(k(j):t(1,j)*p(5,j)<=411*3);

@for(k(j):t(1,j)*p(6,j)<=411*4);

@for(k(j):t(2,j)*p(1,j)<=411*2);

@for(k(j):t(2,j)*p(2,j)<=411*2);

@for(k(j):t(2,j)*p(3,j)<=411*2);

@for(k(j):t(2,j)*p(4,j)<=411*1);

@for(k(j):t(2,j)*p(5,j)<=411*1);

@for(k(j):t(2,j)*p(6,j)<=411*2);

@for(k(j):t(3,j)*p(1,j)<=411*3);

@for(k(j):t(3,j)*p(2,j)<=411*1);

@for(k(j):t(3,j)*p(3,j)<=411*3);

@for(k(j):t(3,j)*p(4,j)<=411*3);

@for(k(j):t(3,j)*p(5,j)<=411*3);

@for(k(j):t(3,j)*p(6,j)<=411*2);

@for(k(j):t(4,j)*p(1,j)<=411*1);

@for(k(j):t(4,j)*p(2,j)<=411*1);

@for(k(j):t(4,j)*p(3,j)<=411*0);

@for(k(j):t(4,j)*p(4,j)<=411*1);

@for(k(j):t(4,j)*p(5,j)<=411*1);

@for(k(j):t(4,j)*p(6,j)<=411*1);

@for(k(j):t(5,j)*p(1,j)<=411*1);

@for(k(j):t(5,j)*p(2,j)<=411*1);

@for(k(j):t(5,j)*p(3,j)<=411*1);

@for(k(j):t(5,j)*p(4,j)<=411*1);

@for(k(j):t(5,j)*p(5,j)<=411*1);

@for(k(j):t(5,j)*p(6,j)<=411*0);

@for(k(j):s(1,j)-v(1,j)<=0);

@for(k(j):s(2,j)-v(2,j)<=0);

@for(k(j):s(3,j)-v(3,j)<=0);

@for(k(j):s(4,j)-v(4,j)<=0);

@for(k(j):s(5,j)-v(5,j)<=0);

@for(k(j):s(6,j)-v(6,j)<=0);

@for(k(j):s(1,j)-p(1,j)<=0);

@for(k(j):s(2,j)-l(1,j)-p(2,j)<=0);

@for(k(j):s(3,j)-l(2,j)-p(3,j)<=0);

@for(k(j):s(4,j)-l(3,j)-p(4,j)<=0);

@for(k(j):s(5,j)-l(4,j)-p(5,j)<=0);

@for(k(j):s(6,j)-l(5,j)-p(6,j)<=0);

@for(k(j):l(1,j)<=100);

@for(k(j):l(2,j)<=100);

@for(k(j):l(3,j)<=100);

@for(k(j):l(4,j)<=100);

@for(k(j):l(5,j)<=100);

@for(k(j):l(6,j)=50);

@for(k(j):l(1,j)-p(1,j)-s(1,j)=0);

@for(k(j):l(2,j)-l(1,j)+p(2,j)-s(2,j)=0);

@for(k(j):l(3,j)-l(2,j)+p(3,j)-s(3,j)=0);

@for(k(j):l(4,j)-l(3,j)+p(4,j)-s(4,j)=0);

@for(k(j):l(5,j)-l(4,j)+p(5,j)-s(5,j)=0);

@for(k(j):l(6,j)-l(5,j)+p(6,j)-s(6,j)=0);

@for(vol(i,j):@gin(p(i,j)));

@for(vol(i,j):@gin(s(i,j)));

@for(vol(i,j):@gin(l(i,j)));

@for(vol(i,j):@gin(v(i,j)));

end

程序运行后的结果为

   Global optimal solution found.

   Objective value:                              69256.00

   Extended solver steps:                               0

   Total solver iterations:                            62

                       Variable           Value        Reduced Cost

                       V( 1, 1)        500.0000            0.000000

                       V( 1, 2)        1000.000            0.000000

                       V( 1, 3)        300.0000            0.000000

                       V( 1, 4)        300.0000            0.000000

                       V( 1, 5)        800.0000            0.000000

                       V( 1, 6)        200.0000            0.000000

                       V( 1, 7)        100.0000            0.000000

                       V( 2, 1)        600.0000            0.000000

                       V( 2, 2)        500.0000            0.000000

                       V( 2, 3)        200.0000            0.000000

                       V( 2, 4)        0.000000            0.000000

                       V( 2, 5)        400.0000            0.000000

                       V( 2, 6)        300.0000            0.000000

                       V( 2, 7)        150.0000            0.000000

                       V( 3, 1)        300.0000            0.000000

                       V( 3, 2)        600.0000            0.000000

                       V( 3, 3)        0.000000            0.000000

                       V( 3, 4)        0.000000            0.000000

                       V( 3, 5)        500.0000            0.000000

                       V( 3, 6)        400.0000            0.000000

                       V( 3, 7)        100.0000            0.000000

                       V( 4, 1)        200.0000            0.000000

                       V( 4, 2)        300.0000            0.000000

                       V( 4, 3)        400.0000            0.000000

                       V( 4, 4)        500.0000            0.000000

                       V( 4, 5)        200.0000            0.000000

                       V( 4, 6)        0.000000            0.000000

                       V( 4, 7)        100.0000            0.000000

                       V( 5, 1)        0.000000            0.000000

                       V( 5, 2)        100.0000            0.000000

                       V( 5, 3)        500.0000            0.000000

                       V( 5, 4)        100.0000            0.000000

                       V( 5, 5)        1000.000            0.000000

                       V( 5, 6)        300.0000            0.000000

                       V( 5, 7)        0.000000            0.000000

                       V( 6, 1)        500.0000            0.000000

                       V( 6, 2)        500.0000            0.000000

                       V( 6, 3)        100.0000            0.000000

                       V( 6, 4)        300.0000            0.000000

                       V( 6, 5)        1100.000            0.000000

                       V( 6, 6)        500.0000            0.000000

                       V( 6, 7)        60.00000            0.000000

                       P( 1, 1)        50.00000            0.000000

                       P( 1, 2)        50.00000            0.000000

                       P( 1, 3)        50.00000            0.000000

                       P( 1, 4)        50.00000            0.000000

                       P( 1, 5)        50.00000            0.000000

                       P( 1, 6)        50.00000            0.000000

                       P( 1, 7)        50.00000            0.000000

                       P( 2, 1)        650.0000            0.000000

                       P( 2, 2)        550.0000            0.000000

                       P( 2, 3)        293.0000            0.000000

                       P( 2, 4)        93.00000            0.000000

                       P( 2, 5)        450.0000            0.000000

                       P( 2, 6)        393.0000            0.000000

                       P( 2, 7)        200.0000            0.000000

                       P( 3, 1)        0.000000            0.000000

                       P( 3, 2)        0.000000            0.000000

                       P( 3, 3)        0.000000            0.000000

                       P( 3, 4)        0.000000            0.000000

                       P( 3, 5)        0.000000            0.000000

                       P( 3, 6)        394.0000            0.000000

                       P( 3, 7)        0.000000            0.000000

                       P( 4, 1)        275.0000            0.000000

                       P( 4, 2)        387.0000            0.000000

                       P( 4, 3)        394.0000            0.000000

                       P( 4, 4)        494.0000            0.000000

                       P( 4, 5)        287.0000            0.000000

                       P( 4, 6)        0.000000            0.000000

                       P( 4, 7)        175.0000            0.000000

                       P( 5, 1)        0.000000            0.000000

                       P( 5, 2)        88.00000            0.000000

                       P( 5, 3)        488.0000            0.000000

                       P( 5, 4)        88.00000            0.000000

                       P( 5, 5)        988.0000            0.000000

                       P( 5, 6)        288.0000            0.000000

                       P( 5, 7)        0.000000            0.000000

                       P( 6, 1)        475.0000            0.000000

                       P( 6, 2)        475.0000            0.000000

                       P( 6, 3)        0.000000            0.000000

                       P( 6, 4)        275.0000            0.000000

                       P( 6, 5)        0.000000            0.000000

                       P( 6, 6)        475.0000            0.000000

                       P( 6, 7)        0.000000            0.000000

                       L( 1, 1)        100.0000           0.5000000

                       L( 1, 2)        100.0000           0.5000000

                       L( 1, 3)        100.0000           0.5000000

                       L( 1, 4)        100.0000           0.5000000

                       L( 1, 5)        100.0000           0.5000000

                       L( 1, 6)        100.0000           0.5000000

                       L( 1, 7)        100.0000           0.5000000

                       L( 2, 1)        50.00000           0.5000000

                       L( 2, 2)        50.00000           0.5000000

                       L( 2, 3)        7.000000           0.5000000

                       L( 2, 4)        7.000000           0.5000000

                       L( 2, 5)        50.00000           0.5000000

                       L( 2, 6)        7.000000           0.5000000

                       L( 2, 7)        50.00000           0.5000000

                       L( 3, 1)        100.0000           0.5000000

                       L( 3, 2)        100.0000           0.5000000

                       L( 3, 3)        7.000000           0.5000000

                       L( 3, 4)        7.000000           0.5000000

                       L( 3, 5)        100.0000           0.5000000

                       L( 3, 6)        13.00000           0.5000000

                       L( 3, 7)        100.0000           0.5000000

                       L( 4, 1)        25.00000           0.5000000

                       L( 4, 2)        13.00000           0.5000000

                       L( 4, 3)        13.00000           0.5000000

                       L( 4, 4)        13.00000           0.5000000

                       L( 4, 5)        13.00000           0.5000000

                       L( 4, 6)        13.00000           0.5000000

                       L( 4, 7)        25.00000           0.5000000

                       L( 5, 1)        25.00000           0.5000000

                       L( 5, 2)        25.00000           0.5000000

                       L( 5, 3)        25.00000           0.5000000

                       L( 5, 4)        25.00000           0.5000000

                       L( 5, 5)        25.00000           0.5000000

                       L( 5, 6)        25.00000           0.5000000

                       L( 5, 7)        25.00000           0.5000000

                       L( 6, 1)        50.00000            0.000000

                       L( 6, 2)        50.00000            0.000000

                       L( 6, 3)        50.00000            0.000000

                       L( 6, 4)        50.00000            0.000000

                       L( 6, 5)        50.00000            0.000000

                       L( 6, 6)        50.00000            0.000000

                       L( 6, 7)        50.00000            0.000000

                       S( 1, 1)        50.00000           -10.00000

                       S( 1, 2)        50.00000           -6.000000

                       S( 1, 3)        50.00000           -8.000000

                       S( 1, 4)        50.00000           -4.000000

                       S( 1, 5)        50.00000           -11.00000

                       S( 1, 6)        50.00000           -9.000000

                       S( 1, 7)        50.00000           -3.000000

                       S( 2, 1)        600.0000           -10.00000

                       S( 2, 2)        500.0000           -6.000000

                       S( 2, 3)        200.0000           -8.000000

                       S( 2, 4)        0.000000           -4.000000

                       S( 2, 5)        400.0000           -11.00000

                       S( 2, 6)        300.0000           -9.000000

                       S( 2, 7)        150.0000           -3.000000

                       S( 3, 1)        50.00000           -10.00000

                       S( 3, 2)        50.00000           -6.000000

                       S( 3, 3)        0.000000           -8.000000

                       S( 3, 4)        0.000000           -4.000000

                       S( 3, 5)        50.00000           -11.00000

                       S( 3, 6)        400.0000           -9.000000

                       S( 3, 7)        50.00000           -3.000000

                       S( 4, 1)        200.0000           -10.00000

                       S( 4, 2)        300.0000           -6.000000

                       S( 4, 3)        400.0000           -8.000000

                       S( 4, 4)        500.0000           -4.000000

                       S( 4, 5)        200.0000           -11.00000

                       S( 4, 6)        0.000000           -9.000000

                       S( 4, 7)        100.0000           -3.000000

                       S( 5, 1)        0.000000           -10.00000

                       S( 5, 2)        100.0000           -6.000000

                       S( 5, 3)        500.0000           -8.000000

                       S( 5, 4)        100.0000           -4.000000

                       S( 5, 5)        1000.000           -11.00000

                       S( 5, 6)        300.0000           -9.000000

                       S( 5, 7)        0.000000           -3.000000

                       S( 6, 1)        500.0000           -10.00000

                       S( 6, 2)        500.0000           -6.000000

                       S( 6, 3)        25.00000           -8.000000

                       S( 6, 4)        300.0000           -4.000000

                       S( 6, 5)        25.00000           -11.00000

                       S( 6, 6)        500.0000           -9.000000

                       S( 6, 7)        25.00000           -3.000000

                       T( 1, 1)       0.5000000            0.000000

                       T( 1, 2)       0.7000000            0.000000

                       T( 1, 3)        0.000000            0.000000

                       T( 1, 4)        0.000000            0.000000

                       T( 1, 5)       0.3000000            0.000000

                       T( 1, 6)       0.2000000            0.000000

                       T( 1, 7)       0.5000000            0.000000

                       T( 2, 1)       0.1000000            0.000000

                       T( 2, 2)       0.2000000            0.000000

                       T( 2, 3)        0.000000            0.000000

                       T( 2, 4)       0.3000000            0.000000

                       T( 2, 5)        0.000000            0.000000

                       T( 2, 6)       0.6000000            0.000000

                       T( 2, 7)        0.000000            0.000000

                       T( 3, 1)       0.2000000            0.000000

                       T( 3, 2)        0.000000            0.000000

                       T( 3, 3)       0.8000000            0.000000

                       T( 3, 4)        0.000000            0.000000

                       T( 3, 5)        0.000000            0.000000

                       T( 3, 6)        0.000000            0.000000

                       T( 3, 7)       0.6000000            0.000000

                       T( 4, 1)       0.5000000E-01        0.000000

                       T( 4, 2)       0.3000000E-01        0.000000

                       T( 4, 3)        0.000000            0.000000

                       T( 4, 4)       0.7000000E-01        0.000000

                       T( 4, 5)       0.1000000            0.000000

                       T( 4, 6)        0.000000            0.000000

                       T( 4, 7)       0.8000000E-01        0.000000

                       T( 5, 1)        0.000000            0.000000

                       T( 5, 2)        0.000000            0.000000

                       T( 5, 3)       0.1000000            0.000000

                       T( 5, 4)        0.000000            0.000000

                       T( 5, 5)       0.5000000E-01        0.000000

                       T( 5, 6)        0.000000            0.000000

                       T( 5, 7)       0.5000000E-01        0.000000

                            Row    Slack or Surplus      Dual Price

                              1        69256.00            1.000000

                              2        1208.000            0.000000

                              3        1198.000            0.000000

                              4        1233.000            0.000000

                              5        1233.000            0.000000

                              6        1218.000            0.000000

                              7        1223.000            0.000000

                              8        1208.000            0.000000

                              9        1319.000            0.000000

                             10        1259.000            0.000000

                             11        1644.000            0.000000

                             12        1644.000            0.000000

                             13        1509.000            0.000000

                             14        1565.400            0.000000

                             15        1544.000            0.000000

                             16        1644.000            0.000000

                             17        1644.000            0.000000

                             18        1644.000            0.000000

                             19        1644.000            0.000000

                             20        1644.000            0.000000

                             21        1565.200            0.000000

                             22        1644.000            0.000000

                             23        1506.500            0.000000

                             24        1373.100            0.000000

                             25        1644.000            0.000000

                             26        1644.000            0.000000

                             27        1557.900            0.000000

                             28        1644.000            0.000000

                             29        1556.500            0.000000

                             30        1233.000            0.000000

                             31        1171.400            0.000000

                             32        1233.000            0.000000

                             33        1233.000            0.000000

                             34        936.6000            0.000000

                             35        1175.400            0.000000

                             36        1233.000            0.000000

                             37        1406.500            0.000000

                             38        1311.500            0.000000

                             39        1644.000            0.000000

                             40        1644.000            0.000000

                             41        1644.000            0.000000

                             42        1549.000            0.000000

                             43        1644.000            0.000000

                             44        817.0000            0.000000

                             45        812.0000            0.000000

                             46        822.0000            0.000000

                             47        807.0000            0.000000

                             48        822.0000            0.000000

                             49        792.0000            0.000000

                             50        822.0000            0.000000

                             51        757.0000            0.000000

                             52        712.0000            0.000000

                             53        822.0000            0.000000

                             54        794.1000            0.000000

                             55        822.0000            0.000000

                             56        586.2000            0.000000

                             57        822.0000            0.000000

                             58        822.0000            0.000000

                             59        822.0000            0.000000

                             60        822.0000            0.000000

                             61        822.0000            0.000000

                             62        822.0000            0.000000

                             63        585.6000            0.000000

                             64        822.0000            0.000000

                             65        383.5000            0.000000

                             66        333.6000            0.000000

                             67        411.0000            0.000000

                             68        262.8000            0.000000

                             69        411.0000            0.000000

                             70        411.0000            0.000000

                             71        411.0000            0.000000

                             72        411.0000            0.000000

                             73        393.4000            0.000000

                             74        411.0000            0.000000

                             75        384.6000            0.000000

                             76        411.0000            0.000000

                             77        238.2000            0.000000

                             78        411.0000            0.000000

                             79        774.5000            0.000000

                             80        727.0000            0.000000

                             81        822.0000            0.000000

                             82        739.5000            0.000000

                             83        822.0000            0.000000

                             84        537.0000            0.000000

                             85        822.0000            0.000000

                             86        1223.000            0.000000

                             87        1233.000            0.000000

                             88        1193.000            0.000000

                             89        1233.000            0.000000

                             90        1233.000            0.000000

                             91        1233.000            0.000000

                             92        1203.000            0.000000

                             93        281.0000            0.000000

                             94        411.0000            0.000000

                             95        176.6000            0.000000

                             96        411.0000            0.000000

                             97        411.0000            0.000000

                             98        411.0000            0.000000

                             99        291.0000            0.000000

                            100        1233.000            0.000000

                            101        1233.000            0.000000

                            102        1233.000            0.000000

                            103        1233.000            0.000000

                            104        1233.000            0.000000

                            105        1233.000            0.000000

                            106        1233.000            0.000000

                            107        1178.000            0.000000

                            108        1233.000            0.000000

                            109        917.8000            0.000000

                            110        1233.000            0.000000

                            111        1233.000            0.000000

                            112        1233.000            0.000000

                            113        1128.000            0.000000

                            114        1233.000            0.000000

                            115        1233.000            0.000000

                            116        842.6000            0.000000

                            117        1233.000            0.000000

                            118        1233.000            0.000000

                            119        1233.000            0.000000

                            120        1233.000            0.000000

                            121        727.0000            0.000000

                            122        822.0000            0.000000

                            123        822.0000            0.000000

                            124        822.0000            0.000000

                            125        822.0000            0.000000

                            126        822.0000            0.000000

                            127        822.0000            0.000000

                            128        408.5000            0.000000

                            129        409.5000            0.000000

                            130        411.0000            0.000000

                            131        407.5000            0.000000

                            132        406.0000            0.000000

                            133        411.0000            0.000000

                            134        407.0000            0.000000

                            135        378.5000            0.000000

                            136        394.5000            0.000000

                            137        411.0000            0.000000

                            138        404.4900            0.000000

                            139        366.0000            0.000000

                            140        411.0000            0.000000

                            141        395.0000            0.000000

                            142        0.000000            0.000000

                            143        0.000000            0.000000

                            144        0.000000            0.000000

                            145        0.000000            0.000000

                            146        0.000000            0.000000

                            147        0.000000            0.000000

                            148        0.000000            0.000000

                            149        397.2500            0.000000

                            150        399.3900            0.000000

                            151        411.0000            0.000000

                            152        376.4200            0.000000

                            153        382.3000            0.000000

                            154        411.0000            0.000000

                            155        397.0000            0.000000

                            156        411.0000            0.000000

                            157        408.3600            0.000000

                            158        411.0000            0.000000

                            159        404.8400            0.000000

                            160        312.2000            0.000000

                            161        411.0000            0.000000

                            162        411.0000            0.000000

                            163        387.2500            0.000000

                            164        396.7500            0.000000

                            165        411.0000            0.000000

                            166        391.7500            0.000000

                            167        411.0000            0.000000

                            168        411.0000            0.000000

                            169        411.0000            0.000000

                            170        411.0000            0.000000

                            171        411.0000            0.000000

                            172        406.0000            0.000000

                            173        411.0000            0.000000

                            174        408.5000            0.000000

                            175        411.0000            0.000000

                            176        408.5000            0.000000

                            177        411.0000            0.000000

                            178        411.0000            0.000000

                            179        381.7000            0.000000

                            180        411.0000            0.000000

                            181        388.5000            0.000000

                            182        411.0000            0.000000

                            183        401.0000            0.000000

                            184        411.0000            0.000000

                            185        411.0000            0.000000

                            186        411.0000            0.000000

                            187        411.0000            0.000000

                            188        411.0000            0.000000

                            189        411.0000            0.000000

                            190        411.0000            0.000000

                            191        411.0000            0.000000

                            192        411.0000            0.000000

                            193        371.6000            0.000000

                            194        411.0000            0.000000

                            195        396.6500            0.000000

                            196        411.0000            0.000000

                            197        402.2500            0.000000

                            198        411.0000            0.000000

                            199        411.0000            0.000000

                            200        362.2000            0.000000

                            201        411.0000            0.000000

                            202        361.6000            0.000000

                            203        411.0000            0.000000

                            204        411.0000            0.000000

                            205        0.000000            0.000000

                            206        0.000000            0.000000

                            207        0.000000            0.000000

                            208        0.000000            0.000000

                            209        0.000000            0.000000

                            210        0.000000            0.000000

                            211        0.000000            0.000000

                            212        450.0000            0.000000

                            213        950.0000            0.000000

                            214        250.0000            0.000000

                            215        250.0000            0.000000

                            216        750.0000            0.000000

                            217        150.0000            0.000000

                            218        50.00000            0.000000

                            219        0.000000            0.000000

                            220        0.000000            0.000000

                            221        0.000000            0.000000

                            222        0.000000            0.000000

                            223        0.000000            0.000000

                            224        0.000000            0.000000

                            225        0.000000            0.000000

                            226        250.0000            0.000000

                            227        550.0000            0.000000

                            228        0.000000            0.000000

                            229        0.000000            0.000000

                            230        450.0000            0.000000

                            231        0.000000            0.000000

                            232        50.00000            0.000000

                            233        0.000000            0.000000

                            234        0.000000            0.000000

                            235        0.000000            0.000000

                            236        0.000000            0.000000

                            237        0.000000            0.000000

                            238        0.000000            0.000000

                            239        0.000000            0.000000

                            240        0.000000            0.000000

                            241        0.000000            0.000000

                            242        0.000000            0.000000

                            243        0.000000            0.000000

                            244        0.000000            0.000000

                            245        0.000000            0.000000

                            246        0.000000            0.000000

                            247        0.000000            0.000000

                            248        0.000000            0.000000

                            249        75.00000            0.000000

                            250        0.000000            0.000000

                            251        1075.000            0.000000

                            252        0.000000            0.000000

                            253        35.00000            0.000000

                            254        0.000000            0.000000

                            255        0.000000            0.000000

                            256        0.000000            0.000000

                            257        0.000000            0.000000

                            258        0.000000            0.000000

                            259        0.000000            0.000000

                            260        0.000000            0.000000

                            261        150.0000            0.000000

                            262        150.0000            0.000000

                            263        193.0000            0.000000

                            264        193.0000            0.000000

                            265        150.0000            0.000000

                            266        193.0000            0.000000

                            267        150.0000            0.000000

                            268        0.000000            0.000000

                            269        0.000000            0.000000

                            270        7.000000            0.000000

                            271        7.000000            0.000000

                            272        0.000000            0.000000

                            273        1.000000            0.000000

                            274        0.000000            0.000000

                            275        175.0000            0.000000

                            276        187.0000            0.000000

                            277        1.000000            0.000000

                            278        1.000000            0.000000

                            279        187.0000            0.000000

                            280        13.00000            0.000000

                            281        175.0000            0.000000

                            282        25.00000            0.000000

                            283        1.000000            0.000000

                            284        1.000000            0.000000

                            285        1.000000            0.000000

                            286        1.000000            0.000000

                            287        1.000000            0.000000

                            288        25.00000            0.000000

                            289        0.000000            0.000000

                            290        0.000000            0.000000

                            291        0.000000            0.000000

                            292        0.000000            0.000000

                            293        0.000000            0.000000

                            294        0.000000            0.000000

                            295        0.000000            0.000000

                            296        0.000000            0.000000

                            297        0.000000            0.000000

                            298        0.000000            0.000000

                            299        0.000000            0.000000

                            300        0.000000            0.000000

                            301        0.000000            0.000000

                            302        0.000000            0.000000

                            303        50.00000            0.000000

                            304        50.00000            0.000000

                            305        93.00000            0.000000

                            306        93.00000            0.000000

                            307        50.00000            0.000000

                            308        93.00000            0.000000

                            309        50.00000            0.000000

                            310        0.000000            0.000000

                            311        0.000000            0.000000

                            312        93.00000            0.000000

                            313        93.00000            0.000000

                            314        0.000000            0.000000

                            315        87.00000            0.000000

                            316        0.000000            0.000000

                            317        75.00000            0.000000

                            318        87.00000            0.000000

                            319        87.00000            0.000000

                            320        87.00000            0.000000

                            321        87.00000            0.000000

                            322        87.00000            0.000000

                            323        75.00000            0.000000

                            324        75.00000            0.000000

                            325        75.00000            0.000000

                            326        75.00000            0.000000

                            327        75.00000            0.000000

                            328        75.00000            0.000000

                            329        75.00000            0.000000

                            330        75.00000            0.000000

                            331        0.000000          -0.5000000

                            332        0.000000          -0.5000000

                            333        0.000000          -0.5000000

                            334        0.000000          -0.5000000

                            335        0.000000          -0.5000000

                            336        0.000000          -0.5000000

                            337        0.000000          -0.5000000

                            338        0.000000            0.000000

                            339        0.000000            0.000000

                            340        0.000000            0.000000

                            341        0.000000            0.000000

                            342        0.000000            0.000000

                            343        0.000000            0.000000

                            344        0.000000            0.000000

                            345        0.000000            0.000000

                            346        0.000000            0.000000

                            347        0.000000            0.000000

                            348        0.000000            0.000000

                            349        0.000000            0.000000

                            350        0.000000            0.000000

                            351        0.000000            0.000000

                            352        0.000000            0.000000

                            353        0.000000            0.000000

                            354        0.000000            0.000000

                            355        0.000000            0.000000

                            356        0.000000            0.000000

                            357        0.000000            0.000000

                            358        0.000000            0.000000

                            359        0.000000            0.000000

                            360        0.000000            0.000000

                            361        0.000000            0.000000

                            362        0.000000            0.000000

                            363        0.000000            0.000000

                            364        0.000000            0.000000

                            365        0.000000            0.000000

                            366        0.000000            0.000000

                            367        0.000000            0.000000

                            368        0.000000            0.000000

                            369        0.000000            0.000000

                            370        0.000000            0.000000

                            371        0.000000            0.000000

                            372        0.000000            0.000000

                            373        0.000000            0.000000

                            374        0.000000            0.000000

                            375        0.000000            0.000000

                            376        0.000000            0.000000

                            377        0.000000            0.000000

                            378        0.000000            0.000000

                            379        0.000000            0.000000

2.

问题二中当x值变化时的Lingo程序代码

model:

sets:

m/1..6/:; !定义月份下标集;

k/1..7/:f,g; !定义产品种类;

b/1..5/:; !定义机床种类;

vol(m,k):v,p,l,s; !定义容量矩阵v,生产方案矩阵p,储存矩阵l和销售矩阵s;

time(b,k):t; !定义时间矩阵t;

endsets

data:

v=500 1000 300  300  800  200 100

  600 500  200  0    400  300 150

  300 600  0    0    500  400 100

  200 300  400  500  200  0   100

  0   100  500  100  1000 300 0

  500 500  100  300  1100 500 60;

f=10 6 8 4 11 9 3;

t=0.5  0.7  0   0    0.3  0.2 0.5

  0.1  0.2  0   0.3  0    0.6 0

  0.2  0    0.8 0    0    0   0.6

  0.05 0.03 0   0.07 0.1  0   0.08

  0    0    0.1 0    0.05 0   0.05;

enddata

max=@sum(m(i):@sum(k(j):g(j)*s(i,j))-0.5*@sum(k(j):l(i,j))); !目标函数; 

@for(k(j):g(j)-f(j)*(1-x)=0);

x=0.01;  !值每次递加0.02,直到0.19;                                                                                                      

@for(k(j):t(1,j)*p(1,j)<=411*3);

@for(k(j):t(1,j)*p(2,j)<=411*4);

@for(k(j):t(1,j)*p(3,j)<=411*4);

@for(k(j):t(1,j)*p(4,j)<=411*4);

@for(k(j):t(1,j)*p(5,j)<=411*3);

@for(k(j):t(1,j)*p(6,j)<=411*4);

@for(k(j):t(2,j)*p(1,j)<=411*2);

@for(k(j):t(2,j)*p(2,j)<=411*2);

@for(k(j):t(2,j)*p(3,j)<=411*2);

@for(k(j):t(2,j)*p(4,j)<=411*1);

@for(k(j):t(2,j)*p(5,j)<=411*1);

@for(k(j):t(2,j)*p(6,j)<=411*2);

@for(k(j):t(3,j)*p(1,j)<=411*3);

@for(k(j):t(3,j)*p(2,j)<=411*1);

@for(k(j):t(3,j)*p(3,j)<=411*3);

@for(k(j):t(3,j)*p(4,j)<=411*3);

@for(k(j):t(3,j)*p(5,j)<=411*3);

@for(k(j):t(3,j)*p(6,j)<=411*2);

@for(k(j):t(4,j)*p(1,j)<=411*1);

@for(k(j):t(4,j)*p(2,j)<=411*1);

@for(k(j):t(4,j)*p(3,j)<=411*0);

@for(k(j):t(4,j)*p(4,j)<=411*1);

@for(k(j):t(4,j)*p(5,j)<=411*1);

@for(k(j):t(4,j)*p(6,j)<=411*1);

@for(k(j):t(5,j)*p(1,j)<=411*1);

@for(k(j):t(5,j)*p(2,j)<=411*1);

@for(k(j):t(5,j)*p(3,j)<=411*1);

@for(k(j):t(5,j)*p(4,j)<=411*1);

@for(k(j):t(5,j)*p(5,j)<=411*1);

@for(k(j):t(5,j)*p(6,j)<=411*0);

@for(k(j):s(1,j)-v(1,j)<=0);

@for(k(j):s(2,j)-v(2,j)<=0);

@for(k(j):s(3,j)-v(3,j)<=0);

@for(k(j):s(4,j)-v(4,j)<=0);

@for(k(j):s(5,j)-v(5,j)<=0);

@for(k(j):s(6,j)-v(6,j)<=0);

@for(k(j):s(1,j)-p(1,j)<=0);

@for(k(j):s(2,j)-l(1,j)-p(2,j)<=0);

@for(k(j):s(3,j)-l(2,j)-p(3,j)<=0);

@for(k(j):s(4,j)-l(3,j)-p(4,j)<=0);

@for(k(j):s(5,j)-l(4,j)-p(5,j)<=0);

@for(k(j):s(6,j)-l(5,j)-p(6,j)<=0);

@for(k(j):l(1,j)<=100);

@for(k(j):l(2,j)<=100);

@for(k(j):l(3,j)<=100);

@for(k(j):l(4,j)<=100);

@for(k(j):l(5,j)<=100);

@for(k(j):l(6,j)=50);

@for(k(j):l(1,j)-p(1,j)-s(1,j)=0);

@for(k(j):l(2,j)-l(1,j)+p(2,j)-s(2,j)=0);

@for(k(j):l(3,j)-l(2,j)+p(3,j)-s(3,j)=0);

@for(k(j):l(4,j)-l(3,j)+p(4,j)-s(4,j)=0);

@for(k(j):l(5,j)-l(4,j)+p(5,j)-s(5,j)=0);

@for(k(j):l(6,j)-l(5,j)+p(6,j)-s(6,j)=0);

@for(vol(i,j):@gin(p(i,j)));

@for(vol(i,j):@gin(s(i,j)));

@for(vol(i,j):@gin(l(i,j)));

@for(vol(i,j):@gin(v(i,j)));

end

3.

问题二中引进磨床时的程序代码

model:

sets:

m/1..6/:; !定义月份下标集;

k/1..7/:g; !定义产品种类;

b/1..5/:; !定义机床种类;

vol(m,k):v,p,l,s; !定义容量矩阵v,生产方案矩阵p,储存矩阵l和销售矩阵s;

time(b,k):t; !定义时间矩阵t;

endsets

data:

v=500 1000 300  300  800  200 100

  600 500  200  0    400  300 150

  300 600  0    0    500  400 100

  200 300  400  500  200  0   100

  0   100  500  100  1000 300 0

  500 500  100  300  1100 500 60;

g=10 6 8 4 11 9 3;

t=0.5  0.7  0   0    0.3  0.2 0.5

  0.1  0.2  0   0.3  0    0.6 0

  0.2  0    0.8 0    0    0   0.6

  0.05 0.03 0   0.07 0.1  0   0.08

  0    0    0.1 0    0.05 0   0.05;

enddata

max=@sum(m(i):@sum(k(j):g(j)*s(i,j))-0.5*@sum(k(j):l(i,j))); !目标函数;                                                                                                              

@for(k(j):t(1,j)*p(1,j)<=411*3); !每次运行时递加1,直到7;

@for(k(j):t(1,j)*p(2,j)<=411*4); !每次运行时递加1,直到8;

@for(k(j):t(1,j)*p(3,j)<=411*4); !每次运行时递加1,直到8;

@for(k(j):t(1,j)*p(4,j)<=411*4); !每次运行时递加1,直到8;

@for(k(j):t(1,j)*p(5,j)<=411*3); !每次运行时递加1,直到7;

@for(k(j):t(1,j)*p(6,j)<=411*4); !每次运行时递加1,直到8;

@for(k(j):t(2,j)*p(1,j)<=411*2);

@for(k(j):t(2,j)*p(2,j)<=411*2);

@for(k(j):t(2,j)*p(3,j)<=411*2);

@for(k(j):t(2,j)*p(4,j)<=411*1);

@for(k(j):t(2,j)*p(5,j)<=411*1);

@for(k(j):t(2,j)*p(6,j)<=411*2);

@for(k(j):t(3,j)*p(1,j)<=411*3);

@for(k(j):t(3,j)*p(2,j)<=411*1);

@for(k(j):t(3,j)*p(3,j)<=411*3);

@for(k(j):t(3,j)*p(4,j)<=411*3);

@for(k(j):t(3,j)*p(5,j)<=411*3);

@for(k(j):t(3,j)*p(6,j)<=411*2);

@for(k(j):t(4,j)*p(1,j)<=411*1);

@for(k(j):t(4,j)*p(2,j)<=411*1);

@for(k(j):t(4,j)*p(3,j)<=411*0);

@for(k(j):t(4,j)*p(4,j)<=411*1);

@for(k(j):t(4,j)*p(5,j)<=411*1);

@for(k(j):t(4,j)*p(6,j)<=411*1);

@for(k(j):t(5,j)*p(1,j)<=411*1);

@for(k(j):t(5,j)*p(2,j)<=411*1);

@for(k(j):t(5,j)*p(3,j)<=411*1);

@for(k(j):t(5,j)*p(4,j)<=411*1);

@for(k(j):t(5,j)*p(5,j)<=411*1);

@for(k(j):t(5,j)*p(6,j)<=411*0);

@for(k(j):s(1,j)-v(1,j)<=0);

@for(k(j):s(2,j)-v(2,j)<=0);

@for(k(j):s(3,j)-v(3,j)<=0);

@for(k(j):s(4,j)-v(4,j)<=0);

@for(k(j):s(5,j)-v(5,j)<=0);

@for(k(j):s(6,j)-v(6,j)<=0);

@for(k(j):s(1,j)-p(1,j)<=0);

@for(k(j):s(2,j)-l(1,j)-p(2,j)<=0);

@for(k(j):s(3,j)-l(2,j)-p(3,j)<=0);

@for(k(j):s(4,j)-l(3,j)-p(4,j)<=0);

@for(k(j):s(5,j)-l(4,j)-p(5,j)<=0);

@for(k(j):s(6,j)-l(5,j)-p(6,j)<=0);

@for(k(j):l(1,j)<=100);

@for(k(j):l(2,j)<=100);

@for(k(j):l(3,j)<=100);

@for(k(j):l(4,j)<=100);

@for(k(j):l(5,j)<=100);

@for(k(j):l(6,j)=50);

@for(k(j):l(1,j)-p(1,j)-s(1,j)=0);

@for(k(j):l(2,j)-l(1,j)+p(2,j)-s(2,j)=0);

@for(k(j):l(3,j)-l(2,j)+p(3,j)-s(3,j)=0);

@for(k(j):l(4,j)-l(3,j)+p(4,j)-s(4,j)=0);

@for(k(j):l(5,j)-l(4,j)+p(5,j)-s(5,j)=0);

@for(k(j):l(6,j)-l(5,j)+p(6,j)-s(6,j)=0);

@for(vol(i,j):@gin(p(i,j)));

@for(vol(i,j):@gin(s(i,j)));

@for(vol(i,j):@gin(l(i,j)));

@for(vol(i,j):@gin(v(i,j)));

end

相关推荐