数模培训第三周——排队论

排队论

简介

  排队论又称随机服务系统,它应用于一切服务系统,包括生产管理系统、通信系统、交通系统、计算机存储系统。现实生活中如排队买票、病人排队就诊、轮船进港、高速路上汽车排队通过收费站、机器等待修理等等都属于排队论问题。


四种模型

等待制模型 M / M / S / ∞ M/M/S/\infty M/M/S/

  该模型中顾客到达服从参数为 λ \lambda λ P o i s s o n Poisson Poisson分布,在 [ 0 , t ] \left[ 0,t \right] [0,t]时间内到达的顾客数 X ( t ) X\left( t \right) X(t)服从的分布为:

P { X ( t ) = k } = ( λ t ) k e − λ t k ! P\left\{ X\left( t \right) =k \right\} =\frac{\left( \lambda t \right) ^ke^{-\lambda t}}{k!} P{X(t)=k}=k!(λt)keλt

其他单位时间到达的顾客平均数为 λ \lambda λ [ 0 , t ] \left[ 0,t \right] [0,t]时间内到达的顾客平均数为 λ t \lambda t λt。顾客接受服务的时间服从负指数分布,单位时间服务的顾客平均数 μ \mu μ,服务时间的分布为:

f ( t ) = { μ e − μ t    t > 0 0 f\left( t \right) =\begin{cases} \mu e^{-\mu t}\,\,t>0\\ 0\\ \end{cases} f(t)={μeμtt>00
哪个顾客接受服务的平均时间为 1 μ \frac{1}{\mu} μ1

只有一个服务台 S = 1 S=1 S=1情形

当系设稳定状态下系统有 i i i个顾客的概率为 P i ( i = 0 , 1 , 2 , ⋯   ) P_i \left(i=0,1,2,\cdots \right) Pi(i=0,1,2,) P 0 P_0 P0表示系统空闲的概率。则 ∑ i = 0 ∞ P i = 1    P i ⩾ 0 , i = 1 , 2 , ⋯   , K \sum_{i=0}^{\infty}{P_i=1}\,\,P_i\geqslant 0,i=1,2,\cdots ,K i=0Pi=1Pi0,i=1,2,,K

平衡方程为:

{ λ P 0 = μ P 1 λ P k − 1 + μ P k + 1 = ( λ + μ ) P k    k = 1 , 2 , 3 , ⋯ \begin{cases} \lambda P_0=\mu P_1\\ \lambda P_{k-1}+\mu P_{k+1}=\left( \lambda +\mu \right) P_k\\ \end{cases}\,\,k=1,2,3,\cdots {λP0=μP1λPk1+μPk+1=(λ+μ)Pkk=1,2,3,

则系统没有顾客的概率为: P 0 = 1 − ρ = 1 − λ μ P_0=1-\rho=1-\frac{\lambda}{\mu} P0=1ρ=1μλ

计算出稳定状态下有 n n n个顾客的概率: P n = ( 1 − ρ ) ρ n n = 0 , 1 , 2 , 3 , ⋯ P_n=\left(1-\rho \right)\rho^n n=0,1,2,3,\cdots Pn=(1ρ)ρnn=0,1,2,3,,其中 ρ = λ μ \rho=\frac{\lambda}{\mu} ρ=μλ称为系统的服务强度。

系统中顾客平均队长:

L s = ∑ n = 0 ∞ n P n = ( 1 − ρ ) ∑ n = 0 ∞ n ρ n = ρ 1 − ρ = λ μ − λ L_s=\sum_{n=0}^{\infty}{nP_n=\left( 1-\rho \right) \sum_{n=0}^{\infty}{n\rho ^n=\frac{\rho}{1-\rho}=\frac{\lambda}{\mu -\lambda}}} Ls=n=0nPn=(1ρ)n=0nρn=1ρρ=μλλ

系统中顾客平均等待队长:

L q = ∑ n = 1 ∞ ( n − 1 ) ⋅ p n = ( 1 − ρ ) ∑ n = 1 ∞ ( n − 1 ) ⋅ ρ n = ρ 2 1 − ρ = λ 2 μ ( μ − λ ) L_{q}=\sum_{n=1}^{\infty}(n-1) \cdot p_{n}=(1-\rho) \sum_{n=1}^{\infty}(n-1) \cdot \rho^{n}=\frac{\rho^{2}}{1-\rho}=\frac{\lambda^{2}}{\mu(\mu-\lambda)} Lq=n=1(n1)pn=(1ρ)n=1(n1)ρn=1ρρ2=μ(μλ)λ2

系统中顾客的平均停留时间: W s = 1 μ − λ W_s=\frac{1}{\mu-\lambda} Ws=μλ1

系统中顾客平均等待时间: W q = 1 μ − λ − 1 μ = λ μ ( μ − λ ) W_{q}=\frac{1}{\mu-\lambda}-\frac{1}{\mu}=\frac{\lambda}{\mu(\mu-\lambda)} Wq=μλ1μ1=μ(μλ)λ

容易得到: L s = λ W s , L q = λ W q , W s = L s λ , W q = L q λ L_s=\lambda W_s,L_q=\lambda W_q,W_s=\frac{L_s}{\lambda},W_q=\frac{L_q}{\lambda} Ls=λWsLq=λWqWs=λLsWq=λLq,该公式称为 L i t t l e Little Little公式,在其他排队论模型中依然适用。

系统有多个服务台 S > 1 S>1 S>1情形

当系设稳定状态下系统有 i i i个顾客的概率为 P i ( i = 0 , 1 , 2 , ⋯   ) P_i \left(i=0,1,2,\cdots \right) Pi(i=0,1,2,) P 0 P_0 P0表示系统空闲的概率。则 ∑ i = 0 ∞ P i = 1    P i ⩾ 0 , i = 1 , 2 , ⋯   , K \sum_{i=0}^{\infty}{P_i=1}\,\,P_i\geqslant 0,i=1,2,\cdots ,K i=0Pi=1Pi0,i=1,2,,K

平衡方程为:
{ μ P 1 = λ P 0 ( k + 1 ) μ P k + 1 + λ P k − 1 = ( λ + k μ ) P k 1 ≤ k ≤ s − 1 s μ P k + 1 + λ P k − 1 = ( λ + s μ ) P k k ≥ s \left\{\begin{array}{l} \mu P_{1}=\lambda P_{0} \\ (k+1) \mu P_{k+1}+\lambda P_{k-1}=(\lambda+k \mu) P_{k} \quad 1 \leq k \leq s-1 \\ s \mu P_{k+1}+\lambda P_{k-1}=(\lambda+s \mu) P_{k} \quad k \geq s \end{array}\right. μP1=λP0(k+1)μPk+1+λPk1=(λ+kμ)Pk1ks1sμPk+1+λPk1=(λ+sμ)Pkks

系统中有 s s s个服务台,系统服务能力为 s μ s\mu sμ,服务强度为 ρ = λ s μ \rho =\frac{\lambda}{s\mu} ρ=sμλ

系统中顾客平均队长: L s = s ρ + ( s ρ ) s ρ s ! ( 1 − ρ ) 2 ⋅ p 0 L_{s}=s \rho+\frac{(s \rho)^{s} \rho}{s !(1-\rho)^{2}} \cdot p_{0} Ls=sρ+s!(1ρ)2(sρ)sρp0
其中 p 0 = [ ∑ k = 0 s − 1 ( s ρ ) k k ! + ( s ρ ) s s ! ( 1 − ρ ) ] − 1 p_{0}=\left[\sum_{k=0}^{s-1} \frac{(s \rho)^{k}}{k !}+\frac{(s \rho)^{s}}{s !(1-\rho)}\right]^{-1} p0=[k=0s1k!(sρ)k+s!(1ρ)(sρ)s]1,表示服务台都空闲的概率。

系统中顾客停留时间为: W s = L s λ W_s=\frac{L_s}{\lambda} Ws=λLs

系统中顾客的平均等待时间为: W q = W s − 1 μ W_q=W_s-\frac{1}{\mu} Wq=Wsμ1

系统中顾客的平均等待对长为: L q = λ W q L_q=\lambda W_q Lq=λWq

Lingo中相关计算公式

@peb(load,S)
允许排队时系统繁忙的概率:顾客等待概率
@pel(load,S)
不允许排队时系统损失概率
@pfs(load,S)
有限源的泊松服务系统等待互殴返回顾客数量的期望值:单位时间内进入系统的平均顾客数

  • 顾客等待概率的公式 P w a i t = @ p e b ( l o a d , S ) P_{wait}=@peb(load, S) Pwait=@peb(load,S)其中 S S S为服务台个数, l o a d load load为系统到达的荷载,即 l o a d = λ μ load=\frac{\lambda}{\mu} load=μλ
  • 顾客的平均等待时间公式: W q = P w a i t T S − l o a d W_q=P_{wait}\frac{T}{S-load} Wq=PwaitSloadT其中 T T T为顾客接受服务的平均时间,有 T = 1 μ T=\frac{1}{\mu} T=μ1
  • 系统中顾客的平均停留时间: W s = W q + 1 μ W_s=W_q+\frac{1}{\mu} Ws=Wq+μ1
  • 系统中顾客的平均队长: L s = λ W s L_s=\lambda W_s Ls=λWs
  • 系统中顾客的平均等待队长: L q = λ W q L_q=\lambda W_q Lq=λWq

例题一

  某机关接待室只有1名对外接待人员,每天工作10小时,来访人员和接待时间都是随机的。设来访人员按照 P o i s s o n Poisson Poisson流到达,到达速率为 λ = 8 \lambda=8 λ=8人/小时,接待人员的服务速率为 μ = 9 \mu=9 μ=9人/小时,接待时间服从负指数分布。

  1. 计算来访人员的平均等待时间,等候的平均人数。
  2. 若到达速率增大为 λ = 20 \lambda =20 λ=20人/小时,每个接待人员的服务速率不变,为使来访问人员平均等待时间不超过半小时,最少应该配置几名接待人员。

问题1属于等待制模型 M / M / 1 / ∞ M/M/1/\infty M/M/1/

!写法1;
Model :

lambda = 8;
mu = 9;
S = 1;
Wq = lambda / (mu * (mu - lambda));
Lq = lambda * Wq;

End
                                           Variable           Value
                                             LAMBDA        8.000000
                                                 MU        9.000000
                                                  S        1.000000
                                                 WQ       0.8888889
                                                 LQ        7.111111
!写法2;
Model :

lambda = 8;
mu = 9;
S = 1;
T = 1 / mu;
load = lambda / mu;
Pwait = @peb(load, S); !等待概率;
Wq = Pwait * T / (S - load); !平均等待时间;
Lq = lambda * Wq; !顾客的平均等待队长;

End
                                           Variable           Value
                                             LAMBDA        8.000000
                                                 MU        9.000000
                                                  S        1.000000
                                                  T       0.1111111
                                               LOAD       0.8888889
                                              PWAIT       0.8888889
                                                 WQ       0.8888889
                                                 LQ        7.111111

问题2属于等待制模型 M / M / S / ∞ M/M/S/\infty M/M/S/

Model :

lambda = 20;
mu = 9;
T = 1 / mu;
load = lambda / mu;
Pwait = @peb(load, S);
Wq = Pwait * T / (S - load);
Lq = lambda * Wq;
TT = Wq * 60;

Min = S;

Wq <= 0.5;
S >= 3;
@gin(S);

End
                                           Variable           Value
                                             LAMBDA        20.00000
                                                 MU        9.000000
                                                  T       0.1111111
                                               LOAD        2.222222
                                              PWAIT       0.5534800
                                                  S        3.000000
                                                 WQ       0.7906857E-01
                                                 LQ        1.581371
                                                 TT        4.744114

例题二

  某修理厂为设备检修服务。已知检验
的设备(顾客)到达服从 P o i s s o n Poisson Poisson分布,每天到达率 λ = 42 \lambda=42 λ=42台,当需要等待时,每台造成的损失为400元。服务(检修)时间服从负指数分布,平均每天服务率 μ = 20 \mu=20 μ=20台。每设置一个检修人员每天的服务成本为160元。问设立几个检修人员才能使平均总费用最小?

问题分析与求解

该模型是 M / M / S / ∞ M/M/S/\infty M/M/S/

Model :

lambda = 42;
mu = 20;
load = lambda / mu;
T = 1 / mu;
Pwait = @peb(load, S);
Wq = Pwait * T / (S - load);
Lq = lambda * Wq;
Ls = Lq + lambda / mu;

Min = 160 * S + 400 * Ls;

S >= 2;
@gin(S);

End
  Global optimal solution found.
  Objective value:                              1568.167
                       Variable           Value        Reduced Cost
                          PWAIT       0.1994247            0.000000
                              S        4.000000            31.93978
                             WQ       0.5248019E-02        0.000000
                             LQ       0.2204168            0.000000
                             LS        2.320417            0.000000

最小平均费用为1568.167,最优人数为S=4,平均队长为LS=2.320417

损失制模型 M / M / S / S M/M/S/S M/M/S/S

M / M / S / S M/M/S/S M/M/S/S模型表示顾客到达人数服从 P o i s s o n Poisson Poisson分布,单位时间到达率为 λ \lambda λ,服务台服务时间服从负指数分布,单位时间服务平均人数为 μ \mu μ。当 S S S个服务台被占用后,顾客自动离开,不再等待。

Lingo中相关计算公式

  • 系统损失率: P l o s t = @ p e l ( l o a d , S ) P_{lost}=@pel(load, S) Plost=@pel(load,S)其中 S S S为服务台个数, l o a d load load为系统到达的载荷,即 l o a d = λ μ load=\frac{\lambda}{\mu} load=μλ
  • 单位时间内进入系统平均顾客数 λ e = λ ( 1 − P l o a d ) \lambda_e=\lambda \left(1-P_{load} \right) λe=λ(1Pload)
  • 系统中顾客的平均队长(系统在单位时间内占用服务台比值) L s = λ e μ L_s=\frac{\lambda_e}{\mu} Ls=μλe
  • 系统中顾客的平均逗留时间(服务时间) W s = 1 μ = T W_s=\frac{1}{\mu}=T Ws=μ1=T
  • 系统服务台的效率 η = L s S \eta=\frac{L_s}{S} η=SLs在损失制排队模型中,顾客平均等待时间为 W q = 0 W_q=0 Wq=0,平均等待队长为 L q = 0 L_q=0 Lq=0,因为没有顾客等待。

例题

  某单位电话交换台有一部300门内线电话的总机,已知上班时间有30%的内线分机平均每30分钟要一次外线电话,70%的分机每隔70分钟时要一次外线电话。又知从外单位打来的电话的呼唤率平均30秒一次,设与外线的平均通话时间为3分钟,以上时间都服从负指数分布。如果要求外线电话接通率为95%以上,问电话交换台应设置多少外线?

问题分析与求解

电话交换台服务分为两部分:内线打外线,外线打内线,内线打外线的服务强度:

λ 1 = ( 60 30 × 30 % + 60 70 × 70 % ) × 300 = 360 \lambda _1=\left( \frac{60}{30}\times 30\%+\frac{60}{70}\times 70\% \right) \times 300=360 λ1=(3060×30%+7060×70%)×300=360

外线打内线的服务强度: λ 2 = 60 0.5 = 120 \lambda_2=\frac{60}{0.5}=120 λ2=0.560=120
总强度为 λ = λ 1 + λ 2 = 480 \lambda=\lambda_1+\lambda_2=480 λ=λ1+λ2=480
电话平均服务时间为: T = 3 60 = 0.05 T=\frac{3}{60}=0.05 T=603=0.05小时,服务率 μ = 60 3 = 20 \mu=\frac{60}{3}=20 μ=360=20

Model :

lambda = 480;
mu = 20;
load = lambda / mu;
Plost = @pel(load, S);
lambdae = lambda * (1 - Plost);
Ls = Lambdae / mu;
eta = Ls / S;

Min = S;

Plost <= 0.05;
@gin(S);

End
                       Variable           Value        Reduced Cost
                         LAMBDA        480.0000            0.000000
                             MU        20.00000            0.000000
                           LOAD        24.00000            0.000000
                          PLOST       0.4012069E-01        0.000000
                              S        30.00000            1.000000
                        LAMBDAE        460.7421            0.000000
                             LS        23.03710            0.000000
                            ETA       0.7679035            0.000000

混合制模型 M / M / S / K M/M/S/K M/M/S/K

  混合制模型 M / M / S / K M/M/S/K M/M/S/K,表示顾客到达人数服从 P o i s s o n Poisson Poisson分布,单位时间到达率为 λ \lambda λ,服务台服务时间服从负指数分布,单位时间服务平均人数为 ,系统有 S S S个服务台,系统对顾客的容量为 K K K。当 K K K个位置被顾客占用时,新到的顾客自动离去。当系统中有空位置时,新到的顾客进入系统排队等候

基本公式

  • 设稳定状态下系统有 i i i个顾客的概率为 P i ( i = 0 , 1 , 2 , ⋯   , K ) P_i\left(i=0,1,2,\cdots,K \right) Pi(i=0,1,2,,K)
  • P 0 P_0 P0表示系统空闲的概率。因此: ∑ i = 0 K P i = 1    P i ⩾ 0 , i = 1 , 2 , ⋯   , K \sum_{i=0}^K{P_i=1}\,\,P_i\geqslant 0,i=1,2,\cdots ,K i=0KPi=1Pi0,i=1,2,,K
  • λ i \lambda_i λi表示系统中有 i i i个顾客时的输入强度, μ i ( i = 0 , 1 , 2 , ⋯   , K ) \mu_i \left(i=0,1,2,\cdots,K \right) μi(i=0,1,2,,K)表示系统中有 i i i个顾客时服务强度。在稳定状态下,可建立平衡方程:

{ λ 0 P 0 = μ 1 P 1 λ 0 P 0 + μ 2 P 2 = ( λ 1 + μ 1 ) P 1 λ i − 1 P i − 1 + ( i + 1 ) μ i + 1 P i + 1 = ( λ i + i μ i ) P i    ( i = 2 , ⋯   , S − 1 ) S μ P i + 1 + λ P i − 1 = ( λ + S μ ) P i    ( i = S , S + 1 , ⋯   , K − 1 ) λ i − 1 P K − 1 = S μ K P K \begin{cases} \lambda _0P_0=\mu _1P_1\\ \lambda _0P_0+\mu _2P_2=\left( \lambda _1+\mu _1 \right) P_1\\ \lambda _{i-1}P_{i-1}+\left( i+1 \right) \mu _{i+1}P_{i+1}=\left( \lambda _i+i\mu _i \right) P_i\,\,\left( i=2,\cdots ,S-1 \right)\\ S\mu P_{i+1}+\lambda P_{i-1}=\left( \lambda +S\mu \right) P_i\,\,\left( i=S,S+1,\cdots ,K-1 \right)\\ \lambda _{i-1}P_{K-1}=S\mu _KP_K\\ \end{cases} λ0P0=μ1P1λ0P0+μ2P2=(λ1+μ1)P1λi1Pi1+(i+1)μi+1Pi+1=(λi+iμi)Pi(i=2,,S1)SμPi+1+λPi1=(λ+Sμ)Pi(i=S,S+1,,K1)λi1PK1=SμKPK

对于混合制系统 M / M / S / K M/M/S/K M/M/S/K,有: λ i = λ ( i = 0 , 1 , 2 , ⋯   , K ) \lambda_i=\lambda \left(i=0,1,2,\cdots,K \right) λi=λ(i=0,1,2,,K)

μ i { i μ    i ⩽ S S μ    i > S    ( i = 1 , 2 , ⋯   , K ) \mu _i\left\{ \begin{array}{c} i\mu \,\,i\leqslant S\\ S\mu \,\,i>S\\ \end{array} \right. \,\,\left( i=1,2,\cdots ,K \right) μi{iμiSSμi>S(i=1,2,,K)

基本参数计算

当系统中有 K K K个人,到达顾客流失,则系统损失概率: P l o s t = P K P_{lost}=P_K Plost=PK
单位时间进入系统平均顾客数: λ e = λ ( 1 − P l o s t ) = λ ( 1 − P K ) \lambda_e=\lambda \left(1-P_{lost} \right)=\lambda \left(1-P_K \right) λe=λ(1Plost)=λ(1PK)
系统中顾客的平均队长: L s = ∑ i = 0 K i P i L_s=\sum_{i=0}^K{iP_i} Ls=i=0KiPi
系统中顾客的平均等待队长: L q = ∑ i = S K ( i − S ) P i = L s − λ e μ L_q=\sum_{i=S}^K{\left( i-S \right) P_i=L_s-\frac{\lambda _e}{\mu}} Lq=i=SK(iS)Pi=Lsμλe
系统中顾客的平均停留时间: W s = L s λ e W_s=\frac{L_s}{\lambda_e} Ws=λeLs
系统中顾客的是平均等待时间: W q = W s − 1 μ = W s − T W_q=W_s-\frac{1}{\mu}=W_s-T Wq=Wsμ1=WsT

例题

  某理发店有4名理发师,因场地所限,店里做多容纳12名顾客,假设来理发的顾客按 P o i s s o n Poisson Poisson分布到达,平均到达率为18人/小时,理发时间服从负指数分布,平均每人12分钟。求该系统的各项指标。

问题分析与求解

该模型是混合制模型 M / M / 4 / 12 M/M/4/12 M/M/4/12

Model :

Sets :
row/1..12/ : P;

Endsets

lambda = 18;
mu = 5;
S = 4;
K = 12;
P0 + @sum(row : P) = 1; !P0为理发师空闲率;
lambda * P0 = mu * P(1);
lambdas * P0 + 2 * mu * P(2) = (lambda + mu) * P(1);
@for(row(i) | i #gt# 1 #and# i #lt# S : lambda * P(i - 1) + (i + 1) * mu * P(i + 1) = (lambda + i * mu) * P(i));
@for(row(i) | i #ge# S #and# i #lt# K : lambda * P(i - 1) + S * mu *P(i + 1) = (lambda + S * mu) * P(i));
lambda * P(K - 1) = S * mu * P(K);
Plost = P(K); !损失顾客率;
lambdae = lambda * (1 - P(K)); !实际到达率;
Ls = @sum(row(i) : i * P(i)); !平均队长;
Lq = Ls - lambdae / mu; !平均等待队长;
Ws = Ls / lambdae; !平均停留时间;
Wq = Ws - 1 / mu; !平均等待时间;

End
                                           Variable           Value
                                                 P0       0.1620043E-01
                                              PLOST       0.4880511E-01
                                            LAMBDAE        17.12151
                                                 LS        5.721810
                                                 LQ        2.297508
                                                 WS       0.3341884
                                                 WQ       0.1341884

闭合制模型 M / M / S / K / K M/M/S/K/K M/M/S/K/K

   M / M / S / K / K M/M/S/K/K M/M/S/K/K模型表示系统有 S S S个服务台,顾客到达人数服从 P o i s s o n Poisson Poisson分布,单位时间到达率为 ,服务台服务时间服从负指数分布,单位时间服务平均人数为 。系统容量和潜在的顾客数都为 K K K

基本参数计算

  • 平均队长 L s = @ p d f ( l o a d , S , K ) L_s=@pdf\left(load, S, K \right) Ls=@pdf(load,S,K)其中 S S S为服务台个数, l o a d load load为系统到达的载荷,这里 l o a d = K λ μ load=K\frac{\lambda}{\mu} load=Kμλ
  • 单位时间平均进入系统的顾客数 λ e = λ ( K − L s ) \lambda_e=\lambda \left(K-L_s \right) λe=λ(KLs)
  • 顾客处于正常情况下的概率 P = K − L s K P=\frac{K-L_s}{K} P=KKLs
  • 系统中顾客的平均等待队长 L q L_q Lq,平均停留时间 W s W_s Ws,平均等待时间 W q W_q Wq为: L q = L s − λ e μ , W s = L s λ e , W q = L q λ e L_q=L_s-\frac{\lambda_e}{\mu},W_s=\frac{L_s}{\lambda_e},W_q=\frac{L_q}{\lambda_e} Lq=LsμλeWs=λeLsWq=λeLq
  • 每个服务台的工作强度 P w o r k = λ e S μ P_{work}=\frac{\lambda_e}{S\mu} Pwork=Sμλe

例题

  现有某工厂有30台自动车床,由4名工人负责维修管理。当机床需要加料、发生故障或刀具磨损时就自动停车,等待工人照管。设平均每台机床两次停车时间间隔为1小时,停车时需要工人照管的平均时间为5分钟,并服从负指数分布。求该排队系统的各项指标。

问题分析与求解

该模型是 M / M / 4 / 30 / 30 M/M/4/30/30 M/M/4/30/30

Model :

lambda = 1;
S = 4;
mu = 12;
K = 30;
load = K * lambda / mu;
Ls = @pfs(load, S, K);
lambdae = lambda * (K - Ls);
Prob = (K - Ls) / K;
Lq = Ls - lambdae / mu;
Wq = Lq / lambdae;
Ws = Ls / lambdae;
Pwork = lambdae / (S * mu);

End
                                           Variable           Value
                                                 LS        2.528571
                                            LAMBDAE        27.47143
                                               PROB       0.9157143
                                                 LQ       0.2392855
                                                 WQ       0.8710340E-02
                                                 WS       0.9204367E-01
                                              PWORK       0.5723214

计算机模拟

当理论难以计算解决,我们可以使用计算机模拟的方法来解决排队论的问题。

问题1

问题描述

  考虑一个收款台的排队系统。某商店只有一个收款台,顾客到达收款台的时间间隔服从平均时间为10秒钟的负指数分布,负指数分布为:

f ( x ) = { 1 λ e − x λ    x > 0 0 x ⩽ 0 f\left( x \right) =\begin{cases} \frac{1}{\lambda}e^{-\frac{x}{\lambda}}\,\,x>0\\ 0 x\leqslant 0\\ \end{cases} f(x)={λ1eλxx>00x0

每个顾客的服务时间服从均值为6.5秒,标准差为1.2秒的正态分布。利用计算机仿真计算顾客在收款台的平均逗留时间,系统的服务强度。(假设可以无限工作不考虑每天工作时长)我们通过模拟 1 0 8 10^8 108人次

模型建立

  设第 i i i个人的到达时间为 a i a_i ai,开始接收服务的时间为 b i b_i bi,离开时间为 c i c_i ci。间隔时间服从负指数分布序列 { d t ( n ) } \left\{ dt\left( n \right) \right\} {dt(n)},接受时间服从正太分布序列 { s t ( n ) } \left\{ st\left( n \right) \right\} {st(n)},总共考虑 1 0 8 10^8 108人次,不考虑工作时间,则可列出下列模型:

{ a 1 = 0 a i = a i − 1 + d t i − 1    i = 2 , 3 , ⋯   , n b 1 = 0 c 1 = s t 1 b i = max ⁡ ( a i , c i − 1 )    i = 2 , 3 , ⋯   , n \begin{cases} a_1=0\\ a_i=a_{i-1}+dt_{i-1}\,\,i=2,3,\cdots ,n\\ b_1=0\\ c_1=st_1\\ b_i=\max \left( a_i,c_{i-1} \right) \,\,i=2,3,\cdots ,n\\ \end{cases} a1=0ai=ai1+dti1i=2,3,,nb1=0c1=st1bi=max(ai,ci1)i=2,3,,n

求解&结果

%%
clear, close, clc

%%
tic
total_wait = zeros(1, 100);
total_st = zeros(1, 100);
for j = 1 : 100
    n = 10^6;
    dt = exprnd(10, 1, n - 1); % 到达时间间隔
    st = normrnd(6.5, 1.2, 1, n); % 服务台服务时间
    a = zeros(1, n); % 每个人到达时间
    b = zeros(1, n); % 每个人开始服务的时间
    c = zeros(1, n); % 每个人离开的时间
    wait = zeros(1, n); % 每个人在系统停留的时间
    c(1) = b(1) + st(1); % 第一个人离开时间
    wait(1) = c(1); % 第一个人在系统停留的时间
    for i = 2 : n
        a(i) = a(i - 1) + dt(i - 1); % 第i个人到达的时间
        b(i) = max(a(i), c(i - 1)); % 第i个人开始服务的时间
        c(i) = b(i) + st(i); % 第i个人离开时间
        wait(i) = c(i) - a(i); % 第i个人在系统停留的时间
    end
    total_wait(j) = mean(wait);
    total_st(j) = sum(st) / c(n);
end
fprintf('顾客平均停留时间%f秒\n', mean(total_wait))
fprintf('系统工作强度%f\n', mean(total_st))
toc
顾客平均停留时间12.741767秒
系统工作强度0.649982

问题2

问题描述

  某码头有一卸货场,轮船一般夜间到达,白天卸货。每天只能卸货4艘船,若一天内到达数超过4艘,那么推迟到第二天卸货。根据过去经验,码头每天船达到数服从下表的概率分布。求每天推迟卸货的平均船数。

到达船数01234567 ⩾ 8 \geqslant 8 8
概率0.050.10.10.250.20.150.10.050

模型建立

  该问题可以看作单服务台的排队系统。到达时间服从的是给定的离散分布,服务时间也不服从负指数分布。不能直接利用理论公式求解,可采用计算机模拟求解。
  总共模拟 1 0 8 10^8 108天,不考虑实际情况,模拟出第 i i i天到达的船数 x i , i = 1 , 2 , ⋯   , n x_i, i=1,2,\cdots,n xi,i=1,2,,n我们可以列出以下模型:

{ a 1 = x 1 b 1 = max ⁡ ( 4 , a 1 ) c 1 = a 1 − b 1 a i = x i + c i − 1    i = 2 , 3 , ⋯   , n b i = max ⁡ ( 4 , a i )    i = 2 , 3 , ⋯   , n c i = a i − b i    i = 2 , 3 , ⋯   , n \begin{cases} a_1=x_1\\ b_1=\max \left( 4,a_1 \right)\\ c_1=a_1-b_1\\ a_i=x_i+c_{i-1}\,\,i=2,3,\cdots ,n\\ b_i=\max \left( 4,a_i \right) \,\,i=2,3,\cdots ,n\\ c_i=a_i-b_i\,\,i=2,3,\cdots ,n\\ \end{cases} a1=x1b1=max(4,a1)c1=a1b1ai=xi+ci1i=2,3,,nbi=max(4,ai)i=2,3,,nci=aibii=2,3,,n

求解&结果

%%
clear, close, clc

%%
tic
n = 10 ^ 8;
x = randsrc(1, n, [0 : 7; 0.05, 0.1, 0.1, 0.25, 0.2, 0.15, 0.1, 0.05]); % 存储每天到达的船数
a = zeros(1, n); % 存储每天需要卸货的船数
b = zeros(1, n); % 存储每天实际卸货的船数
c = zeros(1, n); % 存储每天推迟卸货的船数
a(1) = x(1);
b(1) = min(4, a(1));
c(1) = a(1) - b(1);
for i = 2 : n
   a(i) = x(i) + c(i - 1);
   b(i) = min(4, a(i));
   c(i) = a(i) - b(i);
end
fprintf('每天推迟卸货的平均船数%f\n', mean(c))

%% 随机数产生的概率
sum1 = zeros(8, 1);
avg = zeros(8, 1);
for i = 1 : 8
   sum1(i) = length(find(x == (i - 1)));
end
for i = 1 : 8
   avg(i) =  sum1(i) / n;
   fprintf('生成每天到达船数%d的概率约为%.2f\n', i - 1, avg(i))
end

toc
每天推迟卸货的平均船数2.541571
生成每天到达船数0的概率约为0.05
生成每天到达船数1的概率约为0.10
生成每天到达船数2的概率约为0.10
生成每天到达船数3的概率约为0.25
生成每天到达船数4的概率约为0.20
生成每天到达船数5的概率约为0.15
生成每天到达船数6的概率约为0.10
生成每天到达船数7的概率约为0.05

如有错误以及可以改进的地方欢迎在下方评论区留言!

posted @ 2021-07-24 16:46  蒟蒻颖  阅读(266)  评论(0编辑  收藏  举报