文章目录

  • 1. 按
  • 2. 排队现象
  • 3. 模型介绍
    • 3.1. 排队服务过程
    • 3.2. 排队系统的要素
    • 3.3. 顾客输入过程
    • 3.4. 排队结构与排队规则
    • 3.5. 服务机构与服务规则
    • 3.6. 服务台(员)为顾客服务的顺序
    • 3.7. 到达间隔和服务时间典型分布
    • 3.8. 排队模型示例
    • 3.9. 系统运行状态参数
    • 3.10. 系统运行指标参数
    • 3.11. 顾客到达时间间隔分布
    • 3.12. 顾客服务时间分布
    • 3.13. 单服务台负指数分布M/M/1排队系统
    • 3.14. M/M/S模型
  • 4. 模型举例
    • 4.1. 例1(MM1)
    • 4.2. 例2(MMS)
    • 4.3. 例3
  • 5. matlab实现
    • 5.1. 无绘图版
    • 5.2. 绘图版
      • 5.2.1. 测试一
      • 5.2.2. 测试二
      • 5.2.3. 测试三

1. 按

生活中需要排队的地方很多,本模型用于分析和仿真现实生活中的排队现象。
排队论发源于上世纪初。当时美国贝尔电话公司发明了自动电话,以适应日益繁忙的工商业电话通讯需要。这个新发明带来了一个新问题,即通话线路与电话用户呼叫的数量关系应如何妥善解决,这个问题久久未能解决。
1909年,丹麦的哥本哈根电话公司A.K.埃尔浪(Erlang)在热力学统计平衡概念的启发下解决了这个问题。1917 年,爱尔朗发表了他的著名的文章—“自动电话交换中的概率理 论的几个问题的解决”。排队论已广泛应用于解决军事、运输、维修、生产、服务、库 存、医疗卫生、教育、水利灌溉之类的排队系统的问题,显示了强大的生命力。

2. 排队现象

排队是在日常生活中经常遇到的现象,如顾客到商店购买物品、病人到医院看病常 常要排队。此时要求服务的数量超过服务机构(服务台、服务员等)的容量。也就是说, 到达的顾客不能立即得到服务,因而出现了排队现象。这种现象不仅在个人日常生活中 出现,电话局的占线问题,车站、码头等交通枢纽的车船堵塞和疏导,故障机器的停机 待修,水库的存贮调节等都是有形或无形的排队现象。由于顾客到达和服务时间的随机性。可以说排队现象几乎是不可避免的。

到达顾客 服务内容 服务机构
病人 诊断/手术 医生/手术台
进港的货船 装货/卸货 码头泊位
到港的飞机 降落 机场跑道
电话拨号 通话 交换台
故障机器 修理 修理技工
修理技工 领取修配零件 仓库管理员
上游河水 入库 水闸管理员

3. 模型介绍

(1)由于顾客到达和服务时间的随机性,
现实中的排队现象几乎不可避免;
(2)排队过程,通常是一个随机过程,
排队论又称“随机服务系统理论”;

3.1. 排队服务过程

3.2. 排队系统的要素

(1)顾客输入过程;
(2)排队结构与排队规则;
(3)服务机构与服务规则;

3.3. 顾客输入过程

顾客源(总体):有限/无限;
顾客到达方式:逐个/逐批;(仅研究逐个情形)
顾客到达间隔:随机型/确定型;
顾客前后到达是否独立:相互独立/相互关联;
输入过程是否平稳:平稳/非平稳;(仅研究平稳性)

3.4. 排队结构与排队规则

顾客排队方式:等待制/即时制(损失制);
排队系统容量:有限制/无限制;
排队队列数目: 单列/多列;
是否中途退出: 允许/禁止;
是否列间转移: 允许/禁止;
(仅研究禁止退出和转移的情形)

3.5. 服务机构与服务规则

服务台(员)数目;单个/多个;
服务台(员)排列形式;并列/串列/混合;
服务台(员)服务方式;逐个/逐批;(研究逐个情形)
服务时间分布;随机型/确定型;
服务时间分布是否平稳:平稳/非平稳;(研究平稳情形)

3.6. 服务台(员)为顾客服务的顺序

a)先到先服务(FCFS);
b)后到先服务(LCFS);
c)随机服务;
d)优先服务;

3.7. 到达间隔和服务时间典型分布

(1)泊松分布M ;
(2)负指数分布M ;
(3)k阶爱尔朗分布Ek;
(4)确定型分布D;
(5)一般服务时间分布G;

3.8. 排队模型示例

——M/M/1,M/D/1,M/ Ek /1;
——M/M/c,M/M/c/∞/m,
——M/M/c/N/∞,…

3.9. 系统运行状态参数

  • 系统状态N(t):指排队系统在时刻t时的全部顾客数N(t),包括“排队顾客数”和“正被服务顾客数”;
  • 系统状态概率:
    1. 瞬态概率Pn(t)P_{n}(t)Pn​(t):表示时刻t系统状态N(t)=n 的概率;
    2. 稳态概率PnP_{n}Pn​:
      Pn=lim⁡t→∞Pn(t)P_{n}=\lim _{t \rightarrow \infty} P_{n}(t)Pn​=limt→∞​Pn​(t)
      一般排队系统运行了一定长的时间后,系统状态的概率分布不再随时间t变化,即初始时刻(t=0)系统状态的概率分布 (Pn(0)P_{n}(0)Pn​(0), n>>0)的影响将消失。

3.10. 系统运行指标参数

用于评价排队系统的优劣。

  1. 队长与排队长
    (1)队长: 系统中的顾客数(n)期望值记为LsL_{s}Ls​;
    (2)排队长: 系统中排队等待服务的顾客数;
    期望值记为LqL_{q}Lq​
  2. 逗留时间与等待时间
    (1)逗留时间:指一个顾客在系统中的全部停留时间;期望值,记为WsW_{\mathrm{s}}Ws​
    (2)等待时间:指一个顾客在系统中的排队等待时间;期望值,记为WqW_{\mathrm{q}}Wq​
    WsW_{\mathrm{s}}Ws​= WqW_{\mathrm{q}}Wq​ + E[服务时间]
  3. 其他相关指标
    (1)忙期: 指从顾客到达空闲服务机构起到服务机构再次空闲的时间长度;
    (2)忙期服务量:指一个忙期内系统平均完成服务的顾客数;
    (3)损失率: 指顾客到达排队系统,未接受服务而离去的概率;
    (4)服务强度:ρ= λ/sμ;

3.11. 顾客到达时间间隔分布

泊松流与泊松分布

  • 如果顾客到达满足如下条件,则称为泊松流
    (1) 在不相互重叠的时间区间内,到达顾客数相互独立(无后效性).
    (2) 对于充分小的时间间隔[t, t+∆t]内,到达1个顾客的概率与t无关,仅与时间间隔成正比 (平稳性):P1(t,t+Δt)=λΔt+o(Δt)P_{1}(t, t+\Delta t)=\lambda \Delta t+o(\Delta t)P1​(t,t+Δt)=λΔt+o(Δt)
    (3) 对于充分小的时间间隔[t, t+∆t],2个及以上顾客到达的概率可忽略不计 (普通性)。
  • 泊松流到达间隔服从负指数分布
    若顾客到达间隔T的概率密度为fT(t)={λe−λt,t≥00,t&lt;0f_{T}(t)=\left\{\begin{array}{ll}{\lambda e^{-\lambda t},} &amp; {t \geq 0} \\ {0} &amp; {, t&lt;0}\end{array}\right.fT​(t)={λe−λt,0​t≥0,t<0​则称T服从负指数分布,分布函数为:FT(t)={1−λe−λt,t≥00,t&lt;0F_{T}(t)=\left\{\begin{array}{ll}{1-\lambda e^{-\lambda t},} &amp; {t \geq 0} \\ {0} &amp; {, t&lt;0}\end{array}\right.FT​(t)={1−λe−λt,0​t≥0,t<0​
    若顾客流是泊松流时,顾客到达的时间间隔服从上述负指数分布
    E[T]=1/λ;Var⁡[T]=1/λ2;σ[T]=1/λ\mathrm{E}[\mathrm{T}]=1/\lambda;\ \operatorname{Var}[\mathrm{T}]=1/\lambda^{2};\ \sigma[\mathrm{T}]=1 / \lambdaE[T]=1/λ; Var[T]=1/λ2; σ[T]=1/λ

3.12. 顾客服务时间分布

负指数分布

  • 对一个顾客的服务时间Ts\mathbf{T_s}Ts​,等价于相邻两个顾客离开排队系统的时间间隔。若Ts\mathbf{T_s}Ts​服从负指数分布,其概率密度和分布函数分别为:
    fTs(t)={μe−μt,t≥00,t&lt;0FTs(t)={1−μe−μt,t≥00,t&lt;0f_{T_{s}}(t)=\left \{\begin{array}{ll} \mu e^{-\mu t}&amp;, t \geq 0 \\ 0&amp;, t&lt;0 \end{array}\right. \qquad F_{T_{s}}(t)=\left \{\begin{array}{ll} 1-\mu e^{-\mu t}&amp;, t \geq 0 \\ 0&amp;, t&lt;0 \end{array}\right. fTs​​(t)={μe−μt0​,t≥0,t<0​FTs​​(t)={1−μe−μt0​,t≥0,t<0​
    则E[Ts]=1/μ;Var[Ts]=1/μ2;σ[Ts]=1/μ\mathbf{E[T_s]}=1/\mu;\ \mathbf{Var[T_s]}=1/\mu2;\ \mathbf{\sigma[T_s]}=1/\muE[Ts​]=1/μ; Var[Ts​]=1/μ2; σ[Ts​]=1/μ
  • E[Ts]=1/μ\mathbf{E[T_s]}=1/\muE[Ts​]=1/μ:每个顾客的平均(期望)服务时间;
    μ:单位时间服务的顾客数,平均(期望)服务率;

3.13. 单服务台负指数分布M/M/1排队系统

  • 模型的条件是:
    1、输入过程――顾客源是无限的,顾客到达完全是随机的,单个到来,到达过程服从普阿松分布,且是平稳的;
    2、排队规则――单队,且队长没有限制,先到先服务;
    3、服务机构――单服务台,服务时间的长短是随机的,服从相同的指数分布。

这里的M/M/1如未设置N(系统空间,即等候区的最大容纳量)则指M/M/1/∞
单服务台等待制模型 M/M/1/∞ 是指:顾客的相继到达时间服从参数为λ的负指数分布,服务台个数为1,服务时间V服从参数为 μ的负指数分布,系统空间无限, 允许无限排队,这是一类最简单的排队系统。

  • 对于M/M/1模型有如下公式:
    P0=1−ρPn=ρn(1−ρ)Ls=λμ−λ=ρ1−ρLq=λ2μ(μ−λ)=ρ21−ρ=LsρWs=1μ−λWq=λμ(μ−λ)=WsρP(N&gt;k)=ρk+1(N表示系统中的顾客数)\begin{array}{ll} {P_{0}=1-\rho} &amp; {P_{n}=\rho^{n}(1-\rho)} \\ {L_{s}=\frac{\lambda}{\mu-\lambda}=\frac{\rho}{1-\rho}} &amp; {L_{q}=\frac{\lambda^{2}}{\mu(\mu-\lambda)}=\frac{\rho^{2}}{1-\rho}=L_{s} \rho}\\ {W_{s}=\frac{1}{\mu-\lambda}} &amp; {W_{q}=\frac{\lambda}{\mu(\mu-\lambda)}=W_{s} \rho}\\ {P(N&gt;k)=\rho^{k+1}} \ (N表示系统中的顾客数)\\ \end{array} P0​=1−ρLs​=μ−λλ​=1−ρρ​Ws​=μ−λ1​P(N>k)=ρk+1 (N表示系统中的顾客数)​Pn​=ρn(1−ρ)Lq​=μ(μ−λ)λ2​=1−ρρ2​=Ls​ρWq​=μ(μ−λ)λ​=Ws​ρ​

3.14. M/M/S模型

此模型与M/M/1模型不同之处在于有S个服务台,各服务台的工作相互独立,服务率相等,如果顾客到达时,S个服务台都忙着,则排成一队等待,先到先服务的单队模型。
整个系统的平均服务率为:sμ,ρ∗=λ/sμ,(ρ∗&lt;1)s \mu, \ \rho^{*}=\lambda / s \mu ,\ \left(\rho^{*}&lt; 1)\right.sμ, ρ∗=λ/sμ, (ρ∗<1),为该系统的服务强度。

  • 状态概率
    P0=[∑k=0S−11k!(λμ)k+1s!11−ρ∗(λμ)S]−1Pn={1n!(λμ)nP0O&lt;n≤S1S!Sn−s(λμ)nP0n≥S\begin{array}{l}{P_{0}=\left[\sum_{k=0}^{S-1} \frac{1}{k !}\left(\frac{\lambda}{\mu}\right)^{k}+\frac{1}{s !} \frac{1}{1-\rho^{*}}\left(\frac{\lambda}{\mu}\right)^{S}\right]^{-1}} \\ {P_{n}=\left\{\begin{array}{ll}{\frac{1}{n !}\left(\frac{\lambda}{\mu}\right)^{n} P_{0}} &amp; {O&lt;n \leq S} \\ {\frac{1}{S ! S^{n-s}}\left(\frac{\lambda}{\mu}\right)^{n} P_{0}} &amp; {n \geq S}\end{array}\right.}\end{array} P0​=[∑k=0S−1​k!1​(μλ​)k+s!1​1−ρ∗1​(μλ​)S]−1Pn​=⎩⎨⎧​n!1​(μλ​)nP0​S!Sn−s1​(μλ​)nP0​​O<n≤Sn≥S​​
  • 主要运行指标
    Lq=(Sρ∗)sρ∗S!(1−ρ∗)2P0Ls=Lq+sρ∗Wq=LqλWs=Lλ=Wq+1μ\begin{array}{ll}{L_{\mathrm{q}}=\frac{\left(\mathrm{S} \rho^{*}\right)^{\mathrm{s}} \rho^{*}}{S !\left(1-\rho^{*}\right)^{2}} P_{0}} &amp; {L_{s}=L_{q}+s \rho^{*}} \\ {W_{\mathrm{q}}=\frac{L_{\mathrm{q}}}{\lambda}} &amp; {W_{s}=\frac{L}{\lambda}=W_{q}+\frac{1}{\mu}}\end{array} Lq​=S!(1−ρ∗)2(Sρ∗)sρ∗​P0​Wq​=λLq​​​Ls​=Lq​+sρ∗Ws​=λL​=Wq​+μ1​​
  • 系统状态N ≥S的概率
    P(N≥k)=∑n=k∞Pn=ρkk!(1−ρ∗)P0P(N \geq \mathrm{k})=\sum_{\mathrm{n}=\mathrm{k}}^{\infty} P_{\mathrm{n}}=\frac{\rho^{\mathrm{k}}}{\mathrm{k} !\left(1-\rho^{*}\right)} P_{0} P(N≥k)=n=k∑∞​Pn​=k!(1−ρ∗)ρk​P0​

4. 模型举例

4.1. 例1(MM1)

某医院急诊室同时只能诊治一个病人,诊治时间服从指数分布,每个病人平均需要15分钟。病人按泊松分布到达,平均每小时到达3人。试对此排队队系统进行分析。
对此排队队系统分析如下:

  1. 先确定参数值:这是单服务台系统,有:
    λ=3人/h,μ=6015人/h=4人/h\lambda=3 人 / h, \mu=\frac{60}{15} 人 / h=4 人 / h λ=3人/h,μ=1560​人/h=4人/h
    故服务强度为:
    ρ=λμ=34=0.75\rho=\frac{\lambda}{\mu}=\frac{3}{4}=0.75 ρ=μλ​=43​=0.75
    计算稳态概率:
    P0=1−ρ=1−0.75=0.25P_{0}=1-\rho=1-0.75=0.25 P0​=1−ρ=1−0.75=0.25
    这就是急诊室空闲的概率,也是病人不必等待立即就能就诊的概率。而病人需要等待的概率则为:
    ρ=1−P0=0.75\rho=1-P_{0}=0.75 ρ=1−P0​=0.75
    这也是急诊室繁忙的概率。
  2. 计算系统主要工作指标。
    急诊室内外的病人平均数:
    Ls=λμ−λ=34−3人=3人L_{s}=\frac{\lambda}{\mu-\lambda}=\frac{3}{4-3} 人=3人 Ls​=μ−λλ​=4−33​人=3人
    急诊室外排队等待的病人平均数:
    Lq=Lsρ=3×0.75人a=2.25人L_{q}=L_{s} \rho=3 \times 0.75 人a=2.25 人 Lq​=Ls​ρ=3×0.75人a=2.25人
    病人在急诊室内外平均逗留时间:
    Ws=1μ−λ=14−3h=1h=60min⁡W_{s}=\frac{1}{\mu-\lambda}=\frac{1}{4-3} \boldsymbol{h}=1 \boldsymbol{h}=60 \min Ws​=μ−λ1​=4−31​h=1h=60min
    病人平均等候时间:
    Wq=Wsρ=1×0.75h=0.75h=45minW_{q}=W_{s} \rho=1 \times 0.75 h=0.75 h=45 \mathrm{min} Wq​=Ws​ρ=1×0.75h=0.75h=45min

4.2. 例2(MMS)

承接例1,假设医院增强急诊室的服务能力,使其同时能诊治两个病人,且平均服务率相同,试分析该系统工作情况。
这相当于增加了一个服务台,故有:S=2,λ=3人/h,μ=4人/h
ρ=λμ=0.75,ρ∗=λSμ=32×4=0.375Po=[1+0.75+(0.75)22!(1−0.375)]−1=511=0.45Lq=(0.75)2×0.3752!(1−0.375)2×511=0.27×511人≈0.12人Ls=Lq+ρ=(0.12+0.75)人=0.87人Ws=Lsλ=0.873=0.29h=17.4minWq=Lqλ=0.1230.04h=2.4min\begin{array}{l}{\rho=\frac{\lambda}{\mu}=0.75, \quad \rho^{*}=\frac{\lambda}{\mathrm{S} \mu}=\frac{3}{2 \times 4}=0.375}\\ {P_{o}=\left[1+0.75+\frac{(0.75)^{2}}{2 !(1-0.375)}\right]^{-1}=\frac{5}{11}=0.45} \\ {L_{q}=\frac{(0.75)^{2} \times 0.375}{2 !(1-0.375)^{2}} \times \frac{5}{11}=0.27 \times \frac{5}{11}人 \approx 0.12人} \\ {L_{s}=L_{q}+\rho=(0.12+0.75)人=0.87人} \\ {W_{s}=\frac{L_{s}}{\lambda}=\frac{0.87}{3}=0.29 h=17.4 \mathrm{min}} \\ {W_{q}=\frac{L_{q}}{\lambda}=\frac{0.12}{3} 0.04 h=2.4 \mathrm{min}} \end{array} ρ=μλ​=0.75,ρ∗=Sμλ​=2×43​=0.375Po​=[1+0.75+2!(1−0.375)(0.75)2​]−1=115​=0.45Lq​=2!(1−0.375)2(0.75)2×0.375​×115​=0.27×115​人≈0.12人Ls​=Lq​+ρ=(0.12+0.75)人=0.87人Ws​=λLs​​=30.87​=0.29h=17.4minWq​=λLq​​=30.12​0.04h=2.4min​
病人必须等候的概率,即系统状态N≥2的概率:
P(N≥2)=(0.75)22!(1−0.375)×511≈0.20P(N \geq 2)=\frac{(0.75)^{2}}{2 !(1-0.375)} \times \frac{5}{11} \approx 0.20 P(N≥2)=2!(1−0.375)(0.75)2​×115​≈0.20

4.3. 例3

某医院挂号室有三个窗口,就诊者的到达服从泊松分布,平均到达率为每分钟0.9人,挂号员服务时间服从指数分布,平均服务率每分钟0.4人,现假设就诊者到达后排成一队,依次向空闲的窗口挂号,显然系统的容量和顾客源是不限的,属于M/M/S型的排队服务模型。求:该系统的运行指标P0,Lq,L,Wq,W,P(N≥3)P_{0}, \ L_{q}, \ L, \ W_{q}, \ W, \ P(N \geq 3)P0​, Lq​, L, Wq​, W, P(N≥3)

S=3,ρ=λμ=0.90.4=2.25,ρ∗=λSμ=2.253=34&lt;1S=3, \quad \rho=\frac{\lambda}{\mu}=\frac{0.9}{0.4}=2.25, \quad \rho^{*}=\frac{\lambda}{S \mu}=\frac{2.25}{3}=\frac{3}{4}&lt;1S=3,ρ=μλ​=0.40.9​=2.25,ρ∗=Sμλ​=32.25​=43​<1

  1. 整个挂号间空闲的概率:
    P0=[(2.25)00!+(2.25)11!+(2.25)22!+(2.25)33!11−2.25/3]−1=0.0748P_{0}=\left[\frac{(2.25)^{0}}{0 !}+\frac{(2.25)^{1}}{1 !}+\frac{(2.25)^{2}}{2 !}+\frac{(2.25)^{3}}{3 !} \frac{1}{1-2.25 / 3}\right]^{-1}=0.0748P0​=[0!(2.25)0​+1!(2.25)1​+2!(2.25)2​+3!(2.25)3​1−2.25/31​]−1=0.0748
  2. 等待挂号的平均人数或称队列长
    Lq=(2.25)3⋅3/43!×0.0748=1.7人L_{q}=\frac{(2.25)^{3} \cdot 3 / 4}{3 !} \times 0.0748=1.7人Lq​=3!(2.25)3⋅3/4​×0.0748=1.7人
  3. 挂号间平均逗留人数或称队长
    L=Lq+λμ=1.7+2.25=3.95人L=L_{q}+\frac{\lambda}{\mu}=1.7+2.25=3.95人L=Lq​+μλ​=1.7+2.25=3.95人
  4. 等候挂号的平均时间
    Wq=1.70.9=1.89分钟W_{q}=\frac{1.7}{0.9}=1.89分钟Wq​=0.91.7​=1.89分钟
  5. 在挂号间平均逗留时间
    W=1.89+10.4=4.39分钟W=1.89+\frac{1}{0.4}=4.39分钟W=1.89+0.41​=4.39分钟
  6. 就诊者到达后必须等待(即系统中就诊者不少于3人或各挂号员都没有空闲)的概率
    P(N≥3)=(2.25)33!×1/4×0.0748=0.57P(N \geq 3)=\frac{(2.25)^{3}}{3! \times1 / 4} \times 0.0748=0.57P(N≥3)=3!×1/4(2.25)3​×0.0748=0.57

5. matlab实现

5.1. 无绘图版

  • 源码

    s=2; %服务台的个数
    mu=4; %单位时间内能服务的顾客数
    lambda=3; %单位时间内到达的顾客数ro=lambda/mu;
    ros=ro/s;
    sum1=0;for i=0:(s-1) sum1=sum1+ro.^i/factorial(i); endsum2=ro.^s/factorial(s)/(1-ros);p0=1/(sum1+sum2);
    p=ro.^s.*p0/factorial(s)/(1-ros);
    Lq=p.*ros/(1-ros);
    L=Lq+ro;
    W=L/lambda;
    Wq=Lq/lambda;
    fprintf('排队等待的平均人数为%5.2f人\n',Lq)
    fprintf('系统内的平均人数为%5.2f人\n',L)
    fprintf('平均逗留时间为%5.2f分钟\n',W*60)
    fprintf('平均等待时间为%5.2f分种\n',Wq*60)
    
  • 结果
    排队等待的平均人数为 0.12人
    系统内的平均人数为 0.87人
    平均逗留时间为17.45分钟
    平均等待时间为 2.45分种

5.2. 绘图版

5.2.1. 测试一

  • 源码

    clear
    clc
    %*****************************************
    %初始化顾客源
    %*****************************************
    %总仿真时间
    Total_time = 10;
    %队列最大长度
    N=10000000000;
    %到达率与服务率
    lambda=10, mu=6;
    %平均到达时间与平均服务时间
    arr_mean = 1/lambda;
    ser_mean = 1/mu;
    arr_num = round(Total_time*lambda*2);
    events = [];
    %按负指数分布产生各顾客达到时间间隔
    events(1,:) = exprnd(arr_mean,1,arr_num);
    %各顾客的到达时刻等于时间间隔的累积和
    events(1,:) = cumsum(events(1,:));
    %按负指数分布产生各顾客服务时间
    events(2,:) = exprnd(ser_mean,1,arr_num);
    %计算仿真顾客个数,即到达时刻在仿真时间内的顾客数
    len_sim = sum(events(1,:)<= Total_time);
    %*****************************************
    %计算第 1个顾客的信息
    %*****************************************
    %第 1个顾客进入系统后直接接受服务,无需等待
    events(3,1) = 0;
    %其离开时刻等于其到达时刻与服务时间之和
    events(4,1) = events(1,1)+events(2,1);
    %其肯定被系统接纳,此时系统内共有
    %1个顾客,故标志位置1
    events(5,1) = 1;
    %其进入系统后,系统内已有成员序号为 1
    member = [1]; for i = 2:arr_num
    %如果第 i个顾客的到达时间超过了仿真时间,则跳出循环
    if events(1,i)>Total_time break;
    else number = sum(events(4,member) > events(1,i));
    %如果系统已满,则系统拒绝第 i个顾客,其标志位置 0
    if number >= N+1
    events(5,i) = 0;
    %如果系统为空,则第 i个顾客直接接受服务
    else
    if number == 0
    %其等待时间为 0
    %PROGRAMLANGUAGEPROGRAMLANGUAGE
    events(3,i) = 0;
    %其离开时刻等于到达时刻与服务时间之和
    events(4,i) = events(1,i)+events(2,i);
    %其标志位置 1
    events(5,i) = 1;
    member = [member,i];
    %如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统 else len_mem = length(member);
    %其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻
    events(3,i)=events(4,member(len_mem))-events(1,i);
    %其离开时刻等于队列中前一个顾客的离开时刻加上其服
    %务时间
    events(4,i)=events(4,member(len_mem))+events(2,i);
    %标识位表示其进入系统后,系统内共有的顾客数
    events(5,i) = number+1;
    member = [member,i];
    end
    end end
    end
    %仿真结束时,进入系统的总顾客数
    len_mem = length(member);
    %*****************************************
    %输出结果
    %*****************************************
    %绘制在仿真时间内,进入系统的所有顾客的到达时刻和离
    %开时刻曲线图(stairs:绘制二维阶梯图)
    stairs([0 events(1,member)],0:len_mem);
    hold on;
    stairs([0 events(4,member)],0:len_mem,'.-r');
    legend('到达时间 ','离开时间 ');
    hold off;
    grid on;
    %绘制在仿真时间内,进入系统的所有顾客的停留时间和等
    %待时间曲线图(plot:绘制二维线性图)
    figure;
    plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-');
    legend('等待时间 ','停留时间 ');
    grid on;
    
  • 结果

5.2.2. 测试二

提高服务率mu=12

  • 源码

    clear
    clc
    %*****************************************
    %初始化顾客源
    %*****************************************
    %总仿真时间
    Total_time = 10;
    %队列最大长度
    N=10000000000;
    %到达率与服务率
    lambda=10, mu=12;
    %平均到达时间与平均服务时间
    arr_mean = 1/lambda;
    ser_mean = 1/mu;
    arr_num = round(Total_time*lambda*2);
    events = [];
    %按负指数分布产生各顾客达到时间间隔
    events(1,:) = exprnd(arr_mean,1,arr_num);
    %各顾客的到达时刻等于时间间隔的累积和
    events(1,:) = cumsum(events(1,:));
    %按负指数分布产生各顾客服务时间
    events(2,:) = exprnd(ser_mean,1,arr_num);
    %计算仿真顾客个数,即到达时刻在仿真时间内的顾客数
    len_sim = sum(events(1,:)<= Total_time);
    %*****************************************
    %计算第 1个顾客的信息
    %*****************************************
    %第 1个顾客进入系统后直接接受服务,无需等待
    events(3,1) = 0;
    %其离开时刻等于其到达时刻与服务时间之和
    events(4,1) = events(1,1)+events(2,1);
    %其肯定被系统接纳,此时系统内共有
    %1个顾客,故标志位置1
    events(5,1) = 1;
    %其进入系统后,系统内已有成员序号为 1
    member = [1]; for i = 2:arr_num
    %如果第 i个顾客的到达时间超过了仿真时间,则跳出循环
    if events(1,i)>Total_time break;
    else number = sum(events(4,member) > events(1,i));
    %如果系统已满,则系统拒绝第 i个顾客,其标志位置 0
    if number >= N+1
    events(5,i) = 0;
    %如果系统为空,则第 i个顾客直接接受服务
    else
    if number == 0
    %其等待时间为 0
    %PROGRAMLANGUAGEPROGRAMLANGUAGE
    events(3,i) = 0;
    %其离开时刻等于到达时刻与服务时间之和
    events(4,i) = events(1,i)+events(2,i);
    %其标志位置 1
    events(5,i) = 1;
    member = [member,i];
    %如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统 else len_mem = length(member);
    %其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻
    events(3,i)=events(4,member(len_mem))-events(1,i);
    %其离开时刻等于队列中前一个顾客的离开时刻加上其服
    %务时间
    events(4,i)=events(4,member(len_mem))+events(2,i);
    %标识位表示其进入系统后,系统内共有的顾客数
    events(5,i) = number+1;
    member = [member,i];
    end
    end end
    end
    %仿真结束时,进入系统的总顾客数
    len_mem = length(member);
    %*****************************************
    %输出结果
    %*****************************************
    %绘制在仿真时间内,进入系统的所有顾客的到达时刻和离
    %开时刻曲线图(stairs:绘制二维阶梯图)
    stairs([0 events(1,member)],0:len_mem);
    hold on;
    stairs([0 events(4,member)],0:len_mem,'.-r');
    legend('到达时间 ','离开时间 ');
    hold off;
    grid on;
    %绘制在仿真时间内,进入系统的所有顾客的停留时间和等
    %待时间曲线图(plot:绘制二维线性图)
    figure;
    plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-');
    legend('等待时间 ','停留时间 ');
    grid on;
    
  • 结果

5.2.3. 测试三

增加服务台至两个,这样人数流至原来单服务台的人数减半,lambda=5

  • 源码

    clear
    clc
    %*****************************************
    %初始化顾客源
    %*****************************************
    %总仿真时间
    Total_time = 10;
    %队列最大长度
    N=10000000000;
    %到达率与服务率
    lambda=5, mu=6;
    %平均到达时间与平均服务时间
    arr_mean = 1/lambda;
    ser_mean = 1/mu;
    arr_num = round(Total_time*lambda*2);
    events = [];
    %按负指数分布产生各顾客达到时间间隔
    events(1,:) = exprnd(arr_mean,1,arr_num);
    %各顾客的到达时刻等于时间间隔的累积和
    events(1,:) = cumsum(events(1,:));
    %按负指数分布产生各顾客服务时间
    events(2,:) = exprnd(ser_mean,1,arr_num);
    %计算仿真顾客个数,即到达时刻在仿真时间内的顾客数
    len_sim = sum(events(1,:)<= Total_time);
    %*****************************************
    %计算第 1个顾客的信息
    %*****************************************
    %第 1个顾客进入系统后直接接受服务,无需等待
    events(3,1) = 0;
    %其离开时刻等于其到达时刻与服务时间之和
    events(4,1) = events(1,1)+events(2,1);
    %其肯定被系统接纳,此时系统内共有
    %1个顾客,故标志位置1
    events(5,1) = 1;
    %其进入系统后,系统内已有成员序号为 1
    member = [1]; for i = 2:arr_num
    %如果第 i个顾客的到达时间超过了仿真时间,则跳出循环
    if events(1,i)>Total_time break;
    else number = sum(events(4,member) > events(1,i));
    %如果系统已满,则系统拒绝第 i个顾客,其标志位置 0
    if number >= N+1
    events(5,i) = 0;
    %如果系统为空,则第 i个顾客直接接受服务
    else
    if number == 0
    %其等待时间为 0
    %PROGRAMLANGUAGEPROGRAMLANGUAGE
    events(3,i) = 0;
    %其离开时刻等于到达时刻与服务时间之和
    events(4,i) = events(1,i)+events(2,i);
    %其标志位置 1
    events(5,i) = 1;
    member = [member,i];
    %如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统 else len_mem = length(member);
    %其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻
    events(3,i)=events(4,member(len_mem))-events(1,i);
    %其离开时刻等于队列中前一个顾客的离开时刻加上其服
    %务时间
    events(4,i)=events(4,member(len_mem))+events(2,i);
    %标识位表示其进入系统后,系统内共有的顾客数
    events(5,i) = number+1;
    member = [member,i];
    end
    end end
    end
    %仿真结束时,进入系统的总顾客数
    len_mem = length(member);
    %*****************************************
    %输出结果
    %*****************************************
    %绘制在仿真时间内,进入系统的所有顾客的到达时刻和离
    %开时刻曲线图(stairs:绘制二维阶梯图)
    stairs([0 events(1,member)],0:len_mem);
    hold on;
    stairs([0 events(4,member)],0:len_mem,'.-r');
    legend('到达时间 ','离开时间 ');
    hold off;
    grid on;
    %绘制在仿真时间内,进入系统的所有顾客的停留时间和等
    %待时间曲线图(plot:绘制二维线性图)
    figure;
    plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-');
    legend('等待时间 ','停留时间 ');
    grid on;
    
  • 结果

排队论模型及MATLAB实现相关推荐

  1. 排队论模型(七):排队系统的优化

    排队论模型(一):基本概念.输入过程与服务时间的常用概率分布 排队论模型(二):生灭过程 . M / M /s 等待制排队模型.多服务台模型 排队论模型(三):M / M / s/ s 损失制排队模型 ...

  2. hsi转rgb公式matlab,rgb与hsi模型转换matlab程序

    rgb与hsi模型转换matlab程序 数字图像处理:RGB与HSI模型转换Matlab程序 im1=imread( Fig6.30(01).jpg ); im3=im1; im1=im2double ...

  3. Gompertz模型绘图 matlab,Logistic模型matlab求解

    Logistic模型求解怎么用matlab求解啊? 悬赏分:100 - 解决时间:2008-11-17 23:09 已知 x=0:1:12 y=[43.65 109.86 187.21 312.67 ...

  4. boid模型的Matlab程序,基于Boid模型以及吸引—排斥模型的沙丁鱼集群运动行为模拟...

    刘培 宫子涵 [摘 要]本文首先为了分析了沙丁鱼集群的运动模式,引入了 Boid 模型.通过个体间的距离划分出了排斥区域.一致区域和吸引区域.当相邻个体处于排斥区域则保持足够的距离,尽量避免碰撞,当处 ...

  5. 排队论模型的monteCarlo法仿真

    排队论模型的monteCarlo法仿真 一.问题的提出 二.问题的分析 三.代码实现 四.结果 在我们的生活中,排队的现象几乎处处可见.看似毫无规则的排队模型其实里面蕴藏者很大的学问.比如说在一般的排 ...

  6. 传染病模型(1)——SI模型及matlab详解

    前言 常见的传染病模型按照具体的传染病的特点可分为 SI.SIS.SIR.SIRS.SEIR 模型.其中"S""E""I""R&q ...

  7. matlab均值方差模型,马科维茨均值方差模型的Matlab实现(10页)-原创力文档

    马科维茨均值方差模型的Matlab 实现 假设投资者可选的基金如下:股票型基金-诺安高端制造股票 (001707).混 合型基金-嘉实主题新动力混合 (070021).债券型基金-博时裕瑞纯债债券 ( ...

  8. matlab倒立摆模型,线性倒立摆模型(LIP)Matlab建模.PDF

    线性倒立摆模型(LIP)Matlab建模.PDF (LIP)Matlab ∗ 2015010445 1 Kajita Introduction to Humanoid Robotics 130 LIP ...

  9. 随机信号的参数建模法--AR模型及Matlab实现

    目录 一.随机信号参数模型 二.AR模型 三.AR模型参数的估计 1. AR 模型参数和自相关函数的关系 2. Y-W 方程的解法--L-D 算法 2-1 前向预测器 2-2 建立更高阶的AR模型 2 ...

  10. MATLAB相干成像系统,光学成像系统的模型及MATLAB仿真

    光学成像系统的模型及MATLAB仿真 本文将给出相干成像系统.非相干成像系统模型,以及像差对成像系统影响的模型,模型和相关概念主要参考goodman的<傅里叶光学>. 一.相干成像系统 相 ...

最新文章

  1. bat贪吃蛇游戏代码_100行python代码,轻松完成贪吃蛇小游戏
  2. Google Map API 学习三
  3. 苏州软件测试11k工资要什么水平,3个月从机械转行软件测试,他的入职薪资是11K...
  4. 夜神模拟器模拟安卓测试_使用模拟进行测试
  5. idea查看一个类的所有子类_java new一个对象的过程中发生了什么
  6. lisp 线性标注自动避让_《数据标注工程》第一章学习笔记及作业:数据标注概述...
  7. CAJ如何转成PDF
  8. Windows server 2003 下载
  9. 黑苹果efi文件_台式机华硕主板黑苹果EFI引导文件分享amp;2020.12.2
  10. 关于Java工具eclipse的基本
  11. 计算机科学管理学专业大学排名,2020管理科学专业大学排名
  12. Uncaught Error: Syntax error, unrecognized expression: |117的js错误
  13. python numpy 矩阵乘法以及列向量与行向量乘法
  14. lua生成随机数,设置随机数种子
  15. 查询大全,肯定有你需要的!
  16. VB.net中金额大写转换
  17. 怎么可以修改pr基本图形中的文字_AE特效文字转PR图形预设
  18. DO - varying
  19. JAVA面试常见问题200+
  20. 计算机无符号是啥,计算机编程中的无符号是什么

热门文章

  1. 爬去当当热销图书信息
  2. 电工学(上)-电工技术 秦曾煌(7版)
  3. Node2Vec实战
  4. html5拼音显示,HTML5:给汉字加拼音?收起展开组件?
  5. 概率图模型之贝叶斯网络的理解与应用
  6. AI头发笔刷_5G大量PS笔刷AI笔刷打包下载(超过1000款笔刷)
  7. 在IDEA中Java项目如何创建测试类(Junit测试工具)
  8. 我要悄悄学习 Java 字节码指令,在成为技术大佬的路上一去不复返
  9. 基于功率分析的侧信道攻击简介
  10. 免费开源PDF复制格式整理神器