加工业生产的

稳态模拟问题

 

 

西南交通大学

 

 

于贺威 20023482 信息与计算科学

李发智20023465信息与计算科学

向良20023456信息与计算科学

 

 

 

 

 

 

 

 

 

加工业生产的稳态模拟问题

 

   

 

 

    本文主要解决的问题是关于加工业生产的稳态模拟问题。其中涉及到在固定的机器数量情况下。怎样合理安排机床工与修理工的人数,以达到最佳的工作效率。在本题中,厂家为我们提供了工作机床与备用机床数、发生机床故障时间间隔与修好时间的相应概率分布。而我们所需要解决的是评估其安排的工作人数是否是最佳工作效率方案。

    经过初步分析,我们认为这是一个典型的随机排队论问题。故障的机床就相当于进入服务台的顾客,当出故障后进入维修的服务队列,而修理工就相当于服务台的服务员,负责对故障机床的修理工作。于是我们根据排队论建立了基本随机稳态模型,并依照模型原理建立了一套计算机模拟系统。同时,我们在模拟循环中加入符合概率分布的统计变量,以便于即时的统计和记录每个状态的相关数据。最终我们得出结论,平均每小时有约47.5名机床工在工作,其利用率为95%;平均每小时约有2.1名修理工处于工作状态,其利用率为72%。

    在求解以后,我们还对于我们所求出的结果进行了全面的对比分析。其中我们发现,当修理工少于3人时,排队需要修理的机器太多导致机床工的利用率较低。而多于3人时,修理工又有很多时间处于闲置状态。故我们认为在题目所给出的条件下,原题中的人事安排是最合理的。

    最后,本文就改变条件对于最优解的影响给出了相关分析。我们的模型以及所对应建立的计算机模拟系统都是用参数编程。在不同的条件下,只需要改变参数的赋值,就可以得出新的模拟结果,而我们的模型几乎不需要改变。进而大大增加了我们的模型系统的适用性,并可应用于同类相关问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

问题重述

某工厂共有50机床加工原料,另配有4台备用机床,当正在加工的机床发生故障时,立即将备用机床投入生产过程,而发生故障的机床则移至由三名修理工组成的机修组进行修理,假定一台机床只由一名工人操作使用,维修时也只由一名修理工修理。经过实际调查,机床发生故障的间隔时间服从均值等于157小时的指数分布,一名修理工修理一台机床的时间服从[4,10]小时之间的均匀分布。进入修理状态的机床修理完成后成为备用机床待用状态

为符合加工的实际情况,我们还制定两条规则:

某机床发生故障直接交给修理工修理时,总是送给休息时间最久的修理工。

某机床修理完成,若直接交给工人加工时,总是送给休息时间最久的工人。

管理部门要求了解机床用于生产的利用率、处于备用状态的机床数、等待修理的机床数以及机床和修理工忙期的平均值等,以便对此维修策略进行评价。

对于这个稳态模拟问题,我们可考虑该系统运行三年(共156周)的情况,并假设每周工作5天,每天工作8小时。

问题假设

1.        假设生产系统不计非工作时间,即认为该系统是连续工作的,因而总系统运行时间T应为156´5´8=6240小时。

2.        假设有m名加工工人,n名修理工人,k台备用机器。 、有i名机床工同时加工的总时间(i)、有i名修理工同时修理的总时间(i)等变量进行必要的分段统计和叠加统计,从而计算机床工作的有效总时间和整个工作流程的总时间,计算出机床工作效率Z最终得到企业管理者决策需要的各类数据。

 

模型的结果与检验分析

经过计算机多次模拟的输出结果如下:

1)整个生产系统最少有41台机床同时运行;最多有9台机床在等候修理。

     平均每小时有47.5名机床工处于工作状态,即机床工利用率为95%;

     平均每小时有2.1名修理工处于工作状态,即修理工利用率为72%;

     平均每小时有0.7台机器在等候修理。

 (2)在计算机模拟统计中,统计了同时进行修理的修理工人数与修理时间分布情况如下表1

1 机床工人数与加工时间分布表

人数

43

44

45

46

47

48

49

50

工作时间

14

33

46

71

162

263

492

5153

概率

0.002

0.004

0.008

0.012

0.025

0.042

0.078

0.827

 

又统计了同时加工的机床工人数与加工时间分布情况如下表2。

 

2修理工人数与加工时间分布表

人数

0

1

2

3

工作时间

510

1148

1461

3121

概率

0.08

0.18

0.24

0.50

 

然后,我们再考察了修理工人数的多少对该系统运行情况的影响,我们修改修理工人数重新进行模拟,得到表3所示的不同修理人数的各项统计数据。


3不同修理工人数的统计情况

修理工人数

同时运行的最少机器数

最多等候修理的机器数

机床工

利用率

修理工

利用率

平均每小时等待修理机器数

1

37

15

50%

99%

28

2

26

25

87%

98%

8

3

41

9

99%

72%

0.7

4

45

6

99%

53%

0.1

5

46

4

99%

43%

0.02

 

通过表3的对比数据来看,只有一名修理工的时候,机床工的利用率较低,不符合生产计划优化决策。在2名修理工时,机床工利用率比修理工利用率低11%,且出现有25台机器同时等候修理的情况,这种安排也不符合生产计划优化决策。对于有3或4名修理工的情形,机床工的利用率都很高,但安排4名修理工时,修理工的利用率却比安排3名修理工时修理工的利用率要低21%。在有5名修理工的时候,虽然机床工的利用率很高,但修理工利用率不高,有些浪费。综合以上分析,因此我们认为在生产计划安排中设置3名修理工是最优决策。

 

模型的评价与推广

本模型中,对于较简单的随机排队问题给出了解析模型表达式,对于较复杂的系统我们采用了计算机模拟统计方法。最后,我们讨论一下就改变条件对于最优解的影响。我们的模型以及所对应建立的计算机模拟系统都是用形式参数编程。其中我们的t时间推进与仿真的满足题目所给的概率分布产生的随机数有关,我们的t均是由模型中的相应参数变量所决定的。

在不同的企业规模,不同的生产线用工条件下,只需要改变参数的赋值,就可以得出相应的模拟结果。而在处理符合特定的概率分布参数中,我们专门作了一个参数函数。如果实际问题改变概率分布类型,我们的模型几乎不需要改变,只需要在相关参数及概率分布函数来改变随机生成的命令即可。,所以我们认为我们的模型系统适用范围较广。同类相关问题均可以适用。

参考文献

[1] 郭耀煌,《运筹学原理与方法》,西南交大出版社,19949

[2] 吴孟达,《数学建模的理论与实践》,国防科技大学出版社,19998

[3] 姜启源,《数学模型》,高等教育出版社,19938

[4] 费培之,《数学模型》,四川大学出版社,1998

[4] 薛长虹,《大学数学试验-MATLAB应用篇》,西南交通大学出版社,200310


附件1

程序:

%tl为上次发生系统状态变化的时间,

%td为上次发生系统状态变化至t时刻的时间差,

%ts为t时刻机床工已工作的总时间

%tr为t时刻修理工已工作的总时间

%tq为t时刻待修机器等候总时间

%ns为t时刻正在加工的机床工人数

%nr为t时刻正在修理的修理工人数

%nq为t时刻待修的机床数

%nb为t时刻备用机床数

%Jmin为同时运行的机床最少台数

%qmax为待修理机床队列的最大长度

%m为机床工人数

%n为修理工人数

%i1为最近出现故障机床的编号

%i2为最近出现修理工闲置的编号

m=input('m=');

n=input('n=');

k=input('k=');

%初始化

t=0;tl=0;ts=0;tr=0;tq=0;nr=0;nq=0;ns=50;nf=4;

Ts=zeros(1,m);Tr=zeros(1,n);i2=1;Jmin=50;qmax=0

for i=1:m

    A(i,:)=exprnd(157,1,40);%生成一组指数分布随机数,用于求时间间隔用

end

A1=10000*ones(m,1);

A=[A,A1];

Ur=ones(1,m);%Ur(i)=1表明第i机床工正在加工,Ur(i)=0表明第i机床工使用的机床出故障

Ut=zeros(1,m);%Ut(i)=1表明第i机床工所用机器出现故障时刻

Vr=zeros(1,n);%Vr(i)=1表示第i修理工在修理,Vr(i)=0表明第i修理工处于空闲时刻

Vt=zeros(1,n);%开始时令修理工修理完的时刻为0

%循环开始

while t<6240

[t1,i1]=min(A(:,1));

t=min(t1,t2);t2=t1+unifrnd(4,10);

td=t-tl;tl=t;

t=min(t,6240);

     ts=ts+ns*td;

     tr=tr+nr*td;

     tq=tq+nq*td;

     Ts=Ts+td;

     Tr=Tr+td;

         if t==t1

         Ur(i1)=0;

         if nq>0|nr==n

             nq=nq+1;

             qmax=max(qmax,nq);

         else

            Vr(i2)=1;

       Vt(i2)=t+unifrnd(4,10); %取Vi为空闲时间最长的修理工,调用G2(i)

         end

         if nf>0

          nf=nf-1

       Ur(i1)=1,Ut(i1)=t+A(i1,1) %取Ui为空闲时间最长的工人,调用G1(i)

         else

          Jmin=min(Jmin,ns);

          end

          if i2<3

                i2=i2+1;

             else

                 i2=1;

           end

      else  

          Vr(i2,1)=0;

          if ns<m

        Ur(i1)=1,Ut(i1)=t+A(i1,1)%取空闲时间最长的机床工,并调用G1(i)

          else

              nf=nf+1;

              if nq>0

              nq=nq-1;

              else

                Vr(i2)=1;Vt(i2)=t+unifrnd(4,10)%调用G2(i)

              end

           end            

      end

    for j=1:40

            A(i1,j)=A(i1,j+1);

    end

end

ts,tr,tq,Jmin,qmax,Ts,Tr

Z1=Ts/ts

Z2=Tr/tr


附件2 流程图

初始化数据,即ns=m,nf=n

t=tl=ts=tr=tq=0,nr=nq=0

Ts(i)=0(i=1~m),Tr(i)=0(i=0~n)

Ur(i)=1,Ut(i) =出现故障时刻(i=1~m)

Vr(i) =0,Vt(i)=0(i=1~n)

 

 

t1,t2以及相应的i1,i2

t=min(t1,t2),td=t-tl,tl=t

 

t=min(t,6240)

 

计算nsnr,并统计以下数据:

ts=ts+ns´td,tr=tr+nr´td,tq=tq+nq´td

Ts(ns)=Ts(ns)+td,Tr(nr)=Tr(nr)+td

 

                     是                 

 

                      

 

 

 

                              

 

 


        

 

 

 

 


                                      是

 

 

                               

 

 

 

 

 

 

 

                           是