数学建模之排队论基本模型与LINGO求解

974 阅读9分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

读书使人充实,讨论使人机智,笔记使人准确...。凡有所学,皆成性格。 ———— (英国)培根

排队论模型-----基本模型与LINGO求解

排队论又称随机服务系统, 它应用于一切服务系统, 包括生产管理系统、 通信系统、 交通系统、 计算机存储系统。 现实生活中如排队买票、 病人排队就诊、 轮船进港、 高速路上汽车排队通过收费站、 机器等待修理等等都属于排队论问题。 在历年数模竞赛中, 排队论模型应用的全国数模竞赛中2009B的眼科病床的合理安排问题, 美国数模竞赛中2005B收费站最佳配置问题, 2017D机场安检问题。本部分内容分为三部分: 排队论基本构成与指标, 排队论的四种重要模型, 排队论的计算机模拟。

排队论基本构成与指标

==排队论的基本构成==

  • 输入过程。 输入过程是描述顾客是按照怎样的规律到达排队系统。 包括 ①顾客总体: 顾客的来源是有限的还是无限的。 ②到达的类型: 顾客到达是单个到达还是成批到达。 ③相继顾客到达的时间间隔: 通常假定相互独立同分布, 有的是等间 隔到达 , 有的是服从负指数分布, 有的是服从k阶Erlang分布。
  • 排队规则 排队规则指顾客按怎样的规定的次序接受服务。 常见的有等待制, 损 失制, 混合制, 闭合制。
  • 服务机构 服务机构主要包括: 服务台的数量; 服务时间服从的分布。 常见的有定长分布、 负 指数分布、 几何分布等。

==排队系统的数量指标==

  • 队长与等待队长 队长(记为LsL_{s})是指系统中的平均顾客数(包括正在接受服务的顾客)。 等待队长(记为LqL_{q})指系统中处于等待的顾客的数量。 队长等于等待队长加上正在服务的顾客数

  • 等待时间 等待时间包括顾客的平均逗留时间(记为WsW_{s}) 平均等待时间 (记为WqW_{q}​)

    顾客的平均逗留时间,是指顾客进入系统到离开系统这段时间,包括等待时间和接受服务的时间。

  • 忙期 从顾客到达空闲的系统, 服务立即开始, 直到再次变为空闲, 这段时间 是系统连续繁忙的时期, 称之为系统的忙期。

​ 服务强度=忙期/服务总时间=1─闲期/服务总时间

==排队论中的符号表示== 排队论中的记号是20世纪50年代初由D.G.Kendall引入的, 由3~5个字母组成, 形式为: A/B/C/n

A表示输入过程, B代表服务时间, C代表服务台数量, n表示系统容量。

  • (1) M/M/S/∞表示输入过程是Poisson流, 服务时间服从负指数分布, 系 统有S个服务台平行服务, 系统容量为无穷大的等待制排队系统。
  • (2) M/G/S/∞表示输入过程是Poisson流, 服务时间服从一般概率分布, 系 统有S个服务台平行服务, 系统容量为无穷大的等待制排队系统。
  • (3)D/M/S/K表示顾客相继到达时间间隔独立、 服从定长分布, 服务时间服 从负指数分布,系统S个服务台平行服务,系统容量K个的混合制系统。
  • (4) M/M/S/S表示输入过程是Poisson流, 服务时间服从负指数分布, 系 统有S个服务台平行服务, 顾客到达后不等待的损失制系统。
  • (5)M/M/S/K/K表示输入过程是Poisson流, 服务时间服从负指数分布, 系 统S个服务台平行服务,系统容量和顾客容量都为K个的闭合制系统。
排队论中四种重要模型

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

该模型中顾客到达服从参数为λ的 Poisson分布, 在[0,t]时间内到达的顾客数X(t)X(t)服从的的分布为:

P{X(t)=k}=(λt)keλtk!P\{X(t)=k\}=\frac{(\lambda t)^{k} \cdot e^{-\lambda t}}{k !}

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

f(t)={μeμtt>00f(t)=\left\{\begin{array}{cc} \mu e^{-\mu t} & t>0 \\ 0 & \end{array}\right.

每个顾客接受服务的平均时间为 1μ\frac{1}{\mu}​ 。

下面分别给出S=1和S>1的一些主要结果。 ==只有一个服务台S=1情形==

当系设稳定状太下系统有 ii 个顾客的概率为 pi(i=0,1,2,)p_{i}(i=0,1,2, \cdots)

p0p_{0} 表示系统空闲的概率。则 i=0pi=1pi0,i=1,2,,K\sum_{i=0}^{\infty} p_{i}=1 \quad p_{i} \geq 0, i=1,2, \cdots, K

平衡方程为: \quad{λP0=μP1λPk1+μPk+1=(λ+μ)Pkk=1,2,3,.\left\{\begin{array}{l}\lambda P_{0}=\mu P_{1} \\ \lambda P_{k-1}+\mu P_{k+1}=(\lambda+\mu) P_{k}\end{array} \quad k=1,2,3, \ldots .\right.

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

计算出稳定状态下系统有 nn 个顾客的概率

pn=(1ρ)ρnn=0,1,2,3p_{n}=(1-\rho) \rho^{n} \quad n=0,1,2,3 \cdots​​ ​ 其中 ρ=λμ\rho=\frac{\lambda}{\mu}​​​ 称为系统的服务强度

系统中顾客平均队长:

Ls=n=0npn=(1ρ)n=0nρn=ρ1ρ=λμλ\quad L_{s}=\sum_{n=0}^{\infty} n \cdot p_{n}=(1-\rho) \sum_{n=0}^{\infty} n \cdot \rho^{n}=\frac{\rho}{1-\rho}=\frac{\lambda}{\mu-\lambda}

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

Lq=n=1(n1)pn=(1ρ)n=1(n1)ρn=ρ21ρ=λ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)}

系统中顾客平均逗留时间: Ws=1μλ\quad W_{s}=\frac{1}{\mu-\lambda}

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

容易得到:

Ls=λWs,Lq=λWqWs=Lsλ,Wq=LqλL_{s}=\lambda W_{s}, \quad L_{q}=\lambda W_{q} \quad W_{s}=\frac{L_{s}}{\lambda}, \quad W_{q}=\frac{L_{q}}{\lambda}

该公式称为Little公式。在其它排队论模型中依然适用。

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

当系设稳定状太下系统有 ii 个顾客的概率为 pi(i=0,1,2,)p_{i}(i=0,1,2, \cdots)

p0p_{0} 表示係统空闲的概率。则 i=0pi=1pi0,i=1,2,,K\sum_{i=0}^{\infty} p_{i}=1 \quad p_{i} \geq 0, i=1,2, \cdots, K

平衡方程为: {μP1=λP0(k+1)μPk+1+λPk1=(λ+kμ)Pk1ks1sμPk+1+λPk1=(λ+sμ)Pkks\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.

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

系统中顾客平均队长: Ls=sρ+(sρ)sρs!(1ρ)2p0L_{s}=s \rho+\frac{(s \rho)^{s} \rho}{s !(1-\rho)^{2}} \cdot p_{0} 其中 p0=[k=0s1(sρ)kk!+(sρ)ss!(1ρ)]1p_{0}=\left[\sum_{k=0}^{s-1} \frac{(s \rho)^{k}}{k !}+\frac{(s \rho)^{s}}{s !(1-\rho)}\right]^{-1}, 表示服务台都空闲的概率。 系统中顾客的逗留时间为: Ws=Lsλ\quad W_{s}=\frac{L_{s}}{\lambda} 系统中顾客的平均等待时间为: Wq=Ws1μW_{q}=W_{s}-\frac{1}{\mu} 系统中顾客的平均等待队长为: Lq=λWqL_{q}=\lambda W_{q}

==LINGO中的相关函数及相关参数计算公式==

(1) 顾客等待概率的公式: Pwait =@\mathrm{P}_{\text {wait }}=@​ peb (load,S)(\operatorname{load}, \mathrm{S})​ 其中 S\mathrm{S}​ 为服务台服务台个数, load 为系统到达的牫荷, 即 load=λμ\operatorname{load}=\frac{\lambda}{\mu}​ 。 (2) 顾客的平均等待时间公式: Wq=Pwait TSload\mathrm{W}_{\mathrm{q}}=\mathrm{P}_{\text {wait }} \frac{\mathrm{T}}{\mathrm{S}-\mathrm{load}}​ 其中 T\mathrm{T}​ 为顾客接受服务的平均时间, 有 T=1μT=\frac{1}{\mu}​. (3)系统中顾客的平均逗留时间 Ws=Wq+1μW_{s}=W_{q}+\frac{1}{\mu}​ (4) 系统中顾客的的平均队长 Lt=λWsL_{t}=\lambda W_{s}​ (5) 系统中顾客的的平均等待队长 Lq=λWqL_{q}=\lambda W_{q}

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

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

解答: (1) 该问题属于M/M/1/∞排队模型

S=1,λ=8,μ=9S=1,\lambda=8,\mu=9 需计算来访人员平均等待时间WqW_{q},等候的平均人数LqL_{q}

LINGO程序为:

model:
lp=8;
u=9;
T=1/u;
load=lp/u;
S=1;
Pwait=@PEB(load,S);!等待概率;
W_q=Pwait*T/(S-load);!平均等待时间;
L_q=lp*W_q;!顾客的平均等待队长;
end

计算结果: 平均等待时间 Wq=0.89W_{q}=0.89​ 小时=53分WqW_{q}​,等待队长 Lq=7.1L_{q}=7.1​​人

 (2)该问题属于 M/M/S/ 排 minS 队模型的优化问题。  求最小的使,来访人员的  平均等待时间 Wq0.5 优化模型为:  s.t. {Pwait =@peb(load,S)load=λ/μT=1/μWq=Pwait TS load Lq=λWqWq0.5SN\begin{array}{l} \text { (2)该问题属于 } \mathrm{M} / \mathrm{M} / \mathrm{S} / \infty \text { 排 } \quad \min S\\ \begin{array}{l} \text { 队模型的优化问题。 } \\ \text { 求最小的使,来访人员的 } \\ \text { 平均等待时间 } W_{q} \leq 0.5 \\ \text { 优化模型为: } \end{array} \quad \text { s.t. }\left\{\begin{array}{l} \mathrm{P}_{\text {wait }}=@ \mathrm{peb}(\mathrm{load}, \mathrm{S}) \\ \operatorname{load}=\lambda / \mu \\ T=1 / \mu \\ \mathrm{W}_{\mathrm{q}}=\mathrm{P}_{\text {wait }} \frac{\mathrm{T}}{\mathrm{S}-\text { load }} \\ L_{q}=\lambda W_{q} \\ W_{q} \leq 0.5 \\ S \in N \end{array}\right. \end{array}

实现的LINGO程序为:

model:
min=S;
lp=20;
u=9; !服务率;
T=1/u;
load=lp/u;
Pwait=@PEB(load,S);!接待人员的等待概率
W_q=Pwait*T/(S-load);!平均等待时间;
W_q<=0.5;
L_q=lp*W_q;!顾客的平均等待队长;
TT=W_q*60;
!S>=3@gin(S);
end

计算结果: 最少需要接待人员S=3人 来访人员等待概率为0.55 平均等待时间为 Wq=4.7W_{q}=4.7分钟 平均等待队长为 Lq=1.58L_{q}=1.58

损失制模型M/M/S/S M/M/S/S模型表示顾客到达人数服从Poisson分布, 单位时间到达率为 , 服务台服务 时间服从负指数分布, 单位时间服务平均人数为 。 当S个服务台被占用后, 顾客自动 离开, 不再等待。

我们给出LINGO中的有关函数及相关参数的计算公式

(1) 系统损失概率 Plost =@pel(load,S)\quad \mathrm{P}_{\text {lost }}=@ \operatorname{pel}(\mathrm{load}, \mathrm{S})

其中 S\mathrm{S} 为服务台个数, load\mathrm{load} 为系统到达的载荷, 即 load=λμ\mathrm{load}=\frac{\lambda}{\mu}

(2) 单位时间内进入系统平均顾客数 λe=λ(1Plost )\quad \lambda_{e}=\lambda\left(1-\mathrm{P}_{\text {lost }}\right)

(3)系统中顾客的平均队长(系统在单位时间内占用服务台比值) Ls=λeμL_{s}=\frac{\lambda_{e}}{\mu}​​

(4) 系统中顾客的平均逗留时间(服务时间) Ws=1μ=TW_{s}=\frac{1}{\mu}=T

(5)系统服务台的效率 η=Lss\quad \eta=\frac{L_{s}}{s} 在损失制排队模型中, 顾客平均等待时间 Wq=0W_{q}=0,平均等待队长 Lq=0L_{q}=0​, 因为没有顾客等待。

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

解: 电话交换台服务分为两部分, 一类是内线打外线, 一类是外线打内线。

内线打外线的服务强度(每小时通话平均次数)(到达率)

λ1=(6030×30%+6070×70%)×300=1.2×300=360\lambda_{1}=\left(\frac{60}{30} \times 30 \%+\frac{60}{70} \times 70 \%\right) \times 300=1.2 \times 300=360

外线打内线的服务强度(到达率) λ2=600.5=120\lambda_{2}=\frac{60}{0.5}=120

总强度为 λ=λ1+λ2=360+120=480\lambda=\lambda_{1}+\lambda_{2}=360+120=480

电话平均服务时间为 T=360=0.05T=\frac{3}{60}=0.05​ 小时,服务率 μ=603=20\mu=\frac{60}{3}=20​​​ 个

对该问题, 目标求最小电话交换台数S,使顾客(外线电话)损失率不超过5%, 即

Plost 5\mathrm{P}_{\text {lost }}\leq5%

建立的优化模型为:

minPlost =@pel(load,S)load=λμPlost 0.05λe=λ(1Plost )Ls=λ/μη=Ls/SSN\begin{array}{l} \min\\ \begin{array}{l} \mathrm{P}_{\text {lost }}=@ \operatorname{pel}(\operatorname{load}, \mathrm{S}) \\ \operatorname{load}=\frac{\lambda}{\mu} \\ \mathrm{P}_{\text {lost }} \leq 0.05 \\ \lambda_{e}=\lambda\left(1-\mathrm{P}_{\text {lost }}\right) \\ L_{s}=\lambda / \mu \\ \eta=L_{s} / S \\ S \in N \end{array} \end{array}

LINGO程序为:

model:
min=S;
lp=480;!每小时平均到达电话数;
u=20; !服务率;
load=lp/u;
Plost=@PEL(load,S);!损失率;
Plost<=0.05;
lpe=lp*(1-Plost);
L_s=lpe/u;!顾客的平均队长;
eta=L_s/S; !系统服务台的效率;
@gin(S);
end  

计算结果为: 最小的电话交换台为S=30 电话损失率为P=0.04 实际进入系统的电话平均为A=460.7 平均队长 LL=23.037 系统服务台的效率刀 η=0.768\eta=0.768