900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 排队论模型及MATLAB实现

排队论模型及MATLAB实现

时间:2019-11-04 15:43:28

相关推荐

排队论模型及MATLAB实现

文章目录

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. 例35. 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),包括“排队顾客数”和“正被服务顾客数”;系统状态概率: 瞬态概率Pn(t)P_{n}(t)Pn​(t):表示时刻t系统状态N(t)=n 的概率;稳态概率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)队长: 系统中的顾客数(n)期望值记为LsL_{s}Ls​;

(2)排队长: 系统中排队等待服务的顾客数;

期望值记为LqL_{q}Lq​逗留时间与等待时间

(1)逗留时间:指一个顾客在系统中的全部停留时间;期望值,记为WsW_{\mathrm{s}}Ws​

(2)等待时间:指一个顾客在系统中的排队等待时间;期望值,记为WqW_{\mathrm{q}}Wq​

WsW_{\mathrm{s}}Ws​= WqW_{\mathrm{q}}Wq​ + E[服务时间]其他相关指标

(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人。试对此排队队系统进行分析。

对此排队队系统分析如下:

先确定参数值:这是单服务台系统,有:

λ=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

这也是急诊室繁忙的概率。计算系统主要工作指标。

急诊室内外的病人平均数:

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

整个挂号间空闲的概率:

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等待挂号的平均人数或称队列长

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人挂号间平均逗留人数或称队长

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人等候挂号的平均时间

Wq=1.70.9=1.89分钟W_{q}=\frac{1.7}{0.9}=1.89分钟Wq​=0.91.7​=1.89分钟在挂号间平均逗留时间

W=1.89+10.4=4.39分钟W=1.89+\frac{1}{0.4}=4.39分钟W=1.89+0.41​=4.39分钟就诊者到达后必须等待(即系统中就诊者不少于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%PROGRAMLANGUAGEPROGRAMLANGUAGEevents(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%PROGRAMLANGUAGEPROGRAMLANGUAGEevents(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%PROGRAMLANGUAGEPROGRAMLANGUAGEevents(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;

结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。