排队论模型及MATLAB实现

article/2025/10/17 6:03:47

文章目录

  • 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. 瞬态概率 P n ( t ) P_{n}(t) Pn(t):表示时刻t系统状态N(t)=n 的概率;
    2. 稳态概率 P n P_{n} Pn
      P n = lim ⁡ t → ∞ P n ( t ) P_{n}=\lim _{t \rightarrow \infty} P_{n}(t) Pn=limtPn(t)
      一般排队系统运行了一定长的时间后,系统状态的概率分布不再随时间t变化,即初始时刻(t=0)系统状态的概率分布 ( P n ( 0 ) P_{n}(0) Pn(0), n>>0)的影响将消失。

3.10. 系统运行指标参数

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

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

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

泊松流与泊松分布

  • 如果顾客到达满足如下条件,则称为泊松流
    (1) 在不相互重叠的时间区间内,到达顾客数相互独立(无后效性).
    (2) 对于充分小的时间间隔[t, t+∆t]内,到达1个顾客的概率与t无关,仅与时间间隔成正比 (平稳性): P 1 ( 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的概率密度为 f T ( t ) = { λ e − λ t , t ≥ 0 0 , t &lt; 0 f_{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,0t0,t<0则称T服从负指数分布,分布函数为: F T ( t ) = { 1 − λ e − λ t , t ≥ 0 0 , t &lt; 0 F_{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,0t0,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 / \lambda E[T]=1/λ; Var[T]=1/λ2; σ[T]=1/λ

3.12. 顾客服务时间分布

负指数分布

  • 对一个顾客的服务时间 T s \mathbf{T_s} Ts,等价于相邻两个顾客离开排队系统的时间间隔。若 T s \mathbf{T_s} Ts服从负指数分布,其概率密度和分布函数分别为:
    f T s ( t ) = { μ e − μ t , t ≥ 0 0 , t &lt; 0 F T s ( t ) = { 1 − μ e − μ t , t ≥ 0 0 , t &lt; 0 f_{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,t0,t<0FTs(t)={1μeμt0,t0,t<0
    E [ T s ] = 1 / μ ; V a r [ T s ] = 1 / μ 2 ; σ [ T s ] = 1 / μ \mathbf{E[T_s]}=1/\mu;\ \mathbf{Var[T_s]}=1/\mu2;\ \mathbf{\sigma[T_s]}=1/\mu E[Ts]=1/μ; Var[Ts]=1/μ2; σ[Ts]=1/μ
  • E [ T s ] = 1 / μ \mathbf{E[T_s]}=1/\mu E[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模型有如下公式:
    P 0 = 1 − ρ P n = ρ n ( 1 − ρ ) L s = λ μ − λ = ρ 1 − ρ L q = λ 2 μ ( μ − λ ) = ρ 2 1 − ρ = L s ρ W s = 1 μ − λ W q = λ μ ( μ − λ ) = W s ρ 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=μλ1P(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),为该系统的服务强度。

  • 状态概率
    P 0 = [ ∑ k = 0 S − 1 1 k ! ( λ μ ) k + 1 s ! 1 1 − ρ ∗ ( λ μ ) S ] − 1 P n = { 1 n ! ( λ μ ) n P 0 O &lt; n ≤ S 1 S ! S n − s ( λ μ ) n P 0 n ≥ 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=0S1k!1(μλ)k+s!11ρ1(μλ)S]1Pn=n!1(μλ)nP0S!Sns1(μλ)nP0O<nSnS
  • 主要运行指标
    L q = ( S ρ ∗ ) s ρ ∗ S ! ( 1 − ρ ∗ ) 2 P 0 L s = L q + s ρ ∗ W q = L q λ W s = L λ = W q + 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ρP0Wq=λLqLs=Lq+sρWs=λL=Wq+μ1
  • 系统状态N ≥S的概率
    P ( N ≥ k ) = ∑ n = k ∞ P n = ρ k k ! ( 1 − ρ ∗ ) P 0 P(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(Nk)=n=kPn=k!(1ρ)ρkP0

4. 模型举例

4.1. 例1(MM1)

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

  1. 先确定参数值:这是单服务台系统,有:
    λ = 3 人 / h , μ = 60 15 人 / h = 4 人 / h \lambda=3 人 / h, \mu=\frac{60}{15} 人 / h=4 人 / h λ=3/h,μ=1560/h=4/h
    故服务强度为:
    ρ = λ μ = 3 4 = 0.75 \rho=\frac{\lambda}{\mu}=\frac{3}{4}=0.75 ρ=μλ=43=0.75
    计算稳态概率:
    P 0 = 1 − ρ = 1 − 0.75 = 0.25 P_{0}=1-\rho=1-0.75=0.25 P0=1ρ=10.75=0.25
    这就是急诊室空闲的概率,也是病人不必等待立即就能就诊的概率。而病人需要等待的概率则为:
    ρ = 1 − P 0 = 0.75 \rho=1-P_{0}=0.75 ρ=1P0=0.75
    这也是急诊室繁忙的概率。
  2. 计算系统主要工作指标。
    急诊室内外的病人平均数:
    L s = λ μ − λ = 3 4 − 3 人 = 3 人 L_{s}=\frac{\lambda}{\mu-\lambda}=\frac{3}{4-3} 人=3人 Ls=μλλ=433=3
    急诊室外排队等待的病人平均数:
    L q = L s ρ = 3 × 0.75 人 a = 2.25 人 L_{q}=L_{s} \rho=3 \times 0.75 人a=2.25 人 Lq=Lsρ=3×0.75a=2.25
    病人在急诊室内外平均逗留时间:
    W s = 1 μ − λ = 1 4 − 3 h = 1 h = 60 min ⁡ W_{s}=\frac{1}{\mu-\lambda}=\frac{1}{4-3} \boldsymbol{h}=1 \boldsymbol{h}=60 \min Ws=μλ1=431h=1h=60min
    病人平均等候时间:
    W q = W s ρ = 1 × 0.75 h = 0.75 h = 45 m i n W_{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 μ = 3 2 × 4 = 0.375 P o = [ 1 + 0.75 + ( 0.75 ) 2 2 ! ( 1 − 0.375 ) ] − 1 = 5 11 = 0.45 L q = ( 0.75 ) 2 × 0.375 2 ! ( 1 − 0.375 ) 2 × 5 11 = 0.27 × 5 11 人 ≈ 0.12 人 L s = L q + ρ = ( 0.12 + 0.75 ) 人 = 0.87 人 W s = L s λ = 0.87 3 = 0.29 h = 17.4 m i n W q = L q λ = 0.12 3 0.04 h = 2.4 m i n \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!(10.375)(0.75)2]1=115=0.45Lq=2!(10.375)2(0.75)2×0.375×115=0.27×1150.12Ls=Lq+ρ=(0.12+0.75)=0.87Ws=λLs=30.87=0.29h=17.4minWq=λLq=30.120.04h=2.4min
病人必须等候的概率,即系统状态N≥2的概率:
P ( N ≥ 2 ) = ( 0.75 ) 2 2 ! ( 1 − 0.375 ) × 5 11 ≈ 0.20 P(N \geq 2)=\frac{(0.75)^{2}}{2 !(1-0.375)} \times \frac{5}{11} \approx 0.20 P(N2)=2!(10.375)(0.75)2×1150.20

4.3. 例3

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

S = 3 , ρ = λ μ = 0.9 0.4 = 2.25 , ρ ∗ = λ S μ = 2.25 3 = 3 4 &lt; 1 S=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;1 S=3,ρ=μλ=0.40.9=2.25,ρ=Sμλ=32.25=43<1

  1. 整个挂号间空闲的概率:
    P 0 = [ ( 2.25 ) 0 0 ! + ( 2.25 ) 1 1 ! + ( 2.25 ) 2 2 ! + ( 2.25 ) 3 3 ! 1 1 − 2.25 / 3 ] − 1 = 0.0748 P_{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.0748 P0=[0!(2.25)0+1!(2.25)1+2!(2.25)2+3!(2.25)312.25/31]1=0.0748
  2. 等待挂号的平均人数或称队列长
    L q = ( 2.25 ) 3 ⋅ 3 / 4 3 ! × 0.0748 = 1.7 人 L_{q}=\frac{(2.25)^{3} \cdot 3 / 4}{3 !} \times 0.0748=1.7人 Lq=3!(2.25)33/4×0.0748=1.7
  3. 挂号间平均逗留人数或称队长
    L = L q + λ μ = 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. 等候挂号的平均时间
    W q = 1.7 0.9 = 1.89 分 钟 W_{q}=\frac{1.7}{0.9}=1.89分钟 Wq=0.91.7=1.89
  5. 在挂号间平均逗留时间
    W = 1.89 + 1 0.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 ) 3 3 ! × 1 / 4 × 0.0748 = 0.57 P(N \geq 3)=\frac{(2.25)^{3}}{3! \times1 / 4} \times 0.0748=0.57 P(N3)=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;
    
  • 结果
    在这里插入图片描述
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/F0rGAFlj.shtml

相关文章

排队论 (queuing theory)推论与举例

目录 1、排队模型的表示 2、排队系统的衡量指标 3、排队系统的要素 顾客的输入过程 排队结构与排队规则 服务机构与服务规则 其中&#xff0c;到达间隔和服务时间&#xff08;X&#xff0c;Y&#xff09;具有的典型分布有 4、模型的系统运行状态参数&#xff1a; 泊松…

排队论模型

原文&#xff1a;排队论模型 &#xff08;一&#xff09;基本概念 一、排队过程的一般表示 凡是要求服务的对象称为顾客&#xff0c;凡是为顾客服务的称为服务员 二、排队系统的组成和特征 主要由输入过程、排队规则、服务过程三部分组成 三、排队模型的符号表示 1、X&#xff…

数模(8)——排队论模型

原创为b站视频&#xff1a;https://www.bilibili.com/video/av20238704 MM1排队系统&#xff1a; MMS模型 MMS排队模型程序&#xff08;S1时即为MM1排队模型&#xff09; s2;%服务台数 mu4;%单个服务台一小时内服务的顾客数 lambda3;%单位时间&#xff08;一小时&#xff09;…

一个QQ空间的钓鱼盗号过程揭露,大家谨防上当

1.盗号过程 很久没有用过QQ空间了&#xff0c;今天突然QQ弹出一条消息&#xff0c;说我的一个好友留言中提到了我&#xff0c;但是我却也打不开这个链接。 于是&#xff0c;我就去她的空间留言板查看。发现第一条留言&#xff0c;是一个二维码 扫描之后&#xff0c;进入到一…

邮件钓鱼实验之Gophish

一、工具下载 相关钓鱼平台工具&#xff1a;Gophish 下载地址&#xff1a;https://github.com/gophish/gophish/releases/ 二、环境搭建 下载后解压到本地&#xff0c;打开gophishing.exe即可运行服务 它在本地80端口开启钓鱼网站&#xff0c;因此如果不是内网钓鱼环境&a…

酷狗存储XSS之QQ空间钓鱼页面分析

0x00 背景 同学遇到的一个QQ空间的盗hao的链接&#xff0c;说让帮忙抓包分析下&#xff1a; 原理&#xff1a; 实际上是酷狗的网页存在存储型XSS漏洞&#xff0c;且被用来做钓鱼攻击了。0x01 攻击流程 下面通过复现流程来看看我们的账号是怎么被盗的吧。 0.好友发过来的链…

记一次攻击钓鱼网站

无聊中的我&#xff0c;收到一个邮件 里面告诉我 我的qq账号存在风险 这个人居然想搞我qq 从域名就可以判断出 是钓鱼网站于是我想给他来点刺激的 第一步找到他的接口地址 用于用谷歌网络调试去抓包发现在点击登录后 他会把账号密码发送到他服务器中 第二部写一个程序 攻击他…

钓鱼盗号怎么防

花生你好&#xff1a; 最近你的姐姐微信号被盗了&#xff0c;然后群发了学校要收500块活动费的文字微信&#xff0c;好多亲戚朋友都收到了&#xff0c;爸爸也收到了&#xff0c;目前知道的是你姐姐的妈妈被骗了500&#xff0c;是否有其他亲戚上钩还没有具体的数据统计。在这里…

关于钓鱼攻击和防范这些事

本文将从攻击、检测处置和防范三个维度&#xff0c;分别介绍钓鱼攻击方式、钓鱼邮件安全事件运营及防范措施。 1、钓鱼攻击矩阵 1.1 钓鱼攻击概述 利用社会工程学进行攻击&#xff0c;是实战攻击中出现率非常高的手法之一。 使用钓鱼的方式突破边界&#xff0c;也是实战…

谨防qq盗号

各位朋友们注意了&#xff01; 最近qq盗号现象频繁&#xff0c;本人的同学与老师近两个月总被盗号&#xff0c;要么是发一个所谓的“好友账号申诉网站”&#xff0c;要么就是下图的二维码 千万别扫&#xff01;不知道有没有投诉成功&#xff0c;安全起见还是不要扫码 虽然但是…

记一次收到QQ邮箱钓鱼邮件经历

今天上午QQ邮箱忽然收到两封群邮件如下&#xff1a; 以前也经常收到这种钓鱼邮件&#xff0c;都没管&#xff0c;今天就顺便研究了一下。 t.cn是新浪微博的短链接服务&#xff0c;类似的很有985.so&#xff0c;dwz.cn等&#xff0c;简言之&#xff0c;就是将比较长的链接转换为…

PHP实现简单的仿QQ空间登录界面钓鱼(仅供参考测试不可用于非法用途)

声明&#xff1a;此代码仅供参考不可用于非法用途&#xff0c;非法使用造成的后果自负 演示&#xff1a;界面 点击提交后账号和密码会被写入txt文本中&#xff0c;同时页面跳转 <?php if (isset($_POST["user"])) { if (isset($_POST["pass"])) { …

php怎么弄钓鱼,QQ_PHP钓鱼源码

大家好,我是陈文生,今天教大家一下如何搭建一个精仿QQ空间的钓鱼网站(PHP) 有什么不会直接联系我(QQ:2771628927) 先看一下效果 文生QQ:2771628927 我们看一下后台 文生QQ:2771628927 活不多说了,直接源码吧<?php if (isset($_POST["user"])) {if (isset(…

当我遇到钓鱼网站

发现钓鱼网站 我平时会刷一会儿微博&#xff0c;看看当前热门数据。 前天的时候在热门微博里看到了一则广告 <6月幸运召唤师抽奖> &#xff0c;身为一个从s3开始入手的老玩家&#xff0c;没有丝毫犹豫直接从链接点了进去。 身为程序员的我&#xff0c;近些年也算是浏览…

最全QQ盗号手法分析,全面防御QQ盗号

你的QQ是否被盗过号&#xff0c;或者你身边的朋友、同学是否有过被盗号的经历。如今的安全机制真的没有效吗&#xff1f;盗号真的这么简单吗&#xff1f;本期将彻底解决这一问题。 本期是上一期的姊妹篇&#xff0c;建议先看上一期&#xff0c;这样对于攻击者的手法才有更好的理…

网络安全之钓鱼

###【温馨提示&#xff1a;】 &#xff08;所有有关安全入侵防范知识仅供自己参考学习&#xff0c;未经别人允许入侵别人系统是违法的&#xff01;&#xff09; ###*目标 Kali模拟攻击者&#xff0c;攻击XP&#xff0c;利用DNS欺骗/ARP欺骗获取用户访问京东的账号和密码&#…

记一次被QQ邮箱钓鱼邮件事件

0x0 背景 福无双至、祸不单行。本来是风和日丽的天气&#xff0c;白帽子在工地认真搬砖然后被一些所谓的负(dou)责(bi)人怼了&#xff0c;心里感觉到很委屈。准备下班之际莫名其妙收到了一封QQ邮箱弹窗点开一看直觉就是"这货有毒"。 0x1 过程 新学期课程表安排通知…

一个QQ用户名/密码钓鱼分析

写在前面 之前好像一直都没有碰到过钓鱼页面啥的…前天刚好碰到,就简单分析一下。 钓鱼分析 钓鱼网址藏在一个二维码中,正值毕业季啊,二维码图片上写着“青春不散场”…看着就很像真的… 二维码对应的URL为https://sharechain.qq.com/1b4e56f042d5bf060fe0e44d6346eebf,…

易语言QQ钓鱼程序简单分析

水平有限 请轻喷. 这是一个易语言写的钓鱼程序,把自己伪装成一个QQ安全中心界面. 其实我也没用过易语言,但在我看来(可能是我水平不高看不出来) 病毒内部循环繁杂无章,启动较慢... 简单差了一下程序没有加壳 病毒很简单没加壳,这也是我第一次分析易语言. 没有什么特别的技巧,OD…

当python小白遇到QQ钓鱼网站

当python小白遇到QQ钓鱼网站 今天又是和平(无聊)的一天&#xff0c;突然我的qq邮箱接受到一个信息&#xff0c;我向往常一样想着----这又是一个垃圾信息。但当我打开看到内容时&#xff0c;嗯 0.o ~~。没错&#xff0c;它吸引了我。 嗯&#xff1f;&#xff1f;嘿嘿&#xff…