跳到正文
格致开物MATHWIKI

排队论与利特尔定律

排队论研究随机到达的任务在有限服务能力下如何等待。例如医院检查窗口平均每小时来四人、每小时能完成六人,并不表示每个来访者都立刻获得服务;有人集中到达,就会出现队列。需要分别问三个量:系统里平均有多少人、每人平均待多久、等待的尾部风险有多大。本篇先建立与分布假设无关的利特尔定律,再求一个可手算的单服务台模型。

先分清队列与系统

把检查窗口前尚未接受服务的人称为队列;把正在接受服务的人也算进去,称为系统。记长期平均到达并最终离开的速率为 λ(人/小时),系统内平均人数为 L,每位来访者从到达到离开的平均时间为 W(小时)。队列中相应的量记为 Lq,Wq。

单位已经提示一个关系:每小时进入 λ 人,每人平均停留 W 小时,系统内平均人数应是两者乘积。利特尔定律精确表达为 L=λW,Lq=λWq. 这里的平均必须对应同一套稳定运行的系统、同一批次的进入与离开口径。它不要求到达一定服从泊松分布,也不要求服务时间一定服从指数分布;若人不断积压、观察窗只有开业最初几分钟或中途有大量失访,不能只把三个样本均值相乘就声称得到稳态关系。

利特尔定律从时间面积得到

令 N(t) 为时刻 t 在系统里的人数。在一段长度为 T 的观察时间内,图像 N(t) 下的面积 ∫0TN(t)dt 以“人·小时”为单位。换一个方向累计:每个人在区间内占据系统的时间长度加起来,也恰是同一块面积,因为他在场的每一小段时间都为 N(t) 贡献一人。

若期间完成的服务人数为 D(T),完成者的平均停留时间为 W‾T,两种面积的差只来自观察窗起点已经在场、或终点尚未离开的人的截断部分。在系统稳定、这些边界贡献相对 T 可忽略时,除以 T 并令 T 增大,有 1T∫0TN(t)dt⏟⟶L≈D(T)T⏟⟶λW‾T⏟⟶W. 这就给出 L=λW。只累计进入服务前的等待面积,同样得到 Lq=λWq。这个推导说明它是人数与停留时间的守恒账,并没有推断等待时间的具体分布。

一个可以逐人核对的服务台

用教学数据演示排队的时序。四位来访者的到达时刻分别为 0,0.1,0.4,1.0 小时,服务各需 0.2,0.3,0.1,0.25 小时;先到先服务且不插队。令第 i 人到达时刻为 Ai、服务时长为 Bi、开始服务时刻为 Si、完成时刻为 Ci。上一位尚未完成时不能开始,故 Si=max⁡(Ai,Ci−1),Ci=Si+Bi,Wq,i=Si−Ai. 第一位到达即开始,在 0.2 完成;第二位 0.1 到达却到 0.2 才开始,完成于 0.5;第三位在 0.5 开始,完成于 0.6;第四位到达时窗口已空闲。核算如下:

人员 到达 Ai 服务时长 Bi 开始 Si 完成 Ci 排队 Wq,i
1 0 0.2 0 0.2 0
2 0.1 0.3 0.2 0.5 0.1
3 0.4 0.1 0.5 0.6 0.1
4 1.0 0.25 1.0 1.25 0

第二人的总停留时间是 0.5−0.1=0.4 小时,其中等待 0.1、服务 0.3。这个有限的非随机例子只说明怎样算时序,不足以把这四个人的平均数当作长期稳态预测。

单服务台的 M/M/1 模型

若来访者独立地按恒定速率 λ 到达,单位时间的到达人数服从泊松分布;服务时间独立、服从均值为 1/μ 的指数分布,且只有一位服务者,称为 M/M/1 模型。μ 的单位也是人/小时。服务者忙碌比例记为 ρ=λ/μ。只有 ρ<1 时,等待人数才有正常化的稳态分布。

令 pn 为稳态时系统有 n 人的概率。从状态 n 向上跳的速率为 λ;从状态 n+1 向下跳的速率为 μ。相邻状态流量平衡给出 pnλ=pn+1μ,所以 pn+1=ρpn。用全部概率之和为一,且 ρ<1,得到几何级数 pn=(1−ρ)ρn,n=0,1,2,…. 系统人数的期望为 L=∑n=0∞n(1−ρ)ρn=ρ1−ρ. 其中利用 ∑n≥0ρn=(1−ρ)−1 两边求导后乘以 ρ。稳态完成率等于到达率 λ,利特尔定律于是给出 W=Lλ=1μ−λ,Wq=W−1μ=λμ(μ−λ). 系统总停留时间等于等待加自己的服务时间,最后一步扣去平均服务时间 1/μ。再乘 λ,得 Lq=ρ2/(1−ρ)。

回到每小时平均来四人、每小时平均服务六人的窗口:ρ=4/6=2/3,L=2 人,W=1/(6−4)=1/2 小时,Wq=1/2−1/6=1/3 小时,即平均排队二十分钟。模型下服务者空闲概率是 p0=1/3;这不表示每三位来访者一定有一位完全不用等。由于泊松到达看到的状态分布与时间平均一致,来访者抵达时遇到忙碌窗口的概率为 ρ=2/3。

固定每小时服务六人的单窗口,横轴利用率从零到一,纵轴平均系统停留时间;曲线在利用率接近一时陡增,利用率三分之二时对应半小时
保持服务速率不变时,需求接近能力上限,平均停留时间并非线性增长。标出的点对应每小时来四人、服务六人的例子。

图上曲线来自 W=1/[μ(1−ρ)],其中 μ=6。当 λ 从四增到五人/小时,利用率从 2/3 增到 5/6,平均总停留时间却从半小时变为一小时。需求只增四分之一,时间翻倍。只用“服务能力大于平均到达率”说明窗口足够,容易漏掉这种高负荷下的等待成本。

在建模题中使用与检验

医院、安检和出租车站首先要画出任务流向、识别并行窗口数量、优先级和有限等待空间。只知“每天 480 人、八小时营业”只能给出日均 60 人/小时;若人群集中在早晨,必须估计分时段到达率,不能直接套用恒定 λ 的稳态公式。服务时间若受到病例复杂度、设备故障或班次切换影响,也不满足独立同分布的指数假设。

实际检查至少包括:以分时段原始数据估计到达率和服务时长分布;画出队长与等待时间的经验分位数;检查系统是否持续积压;在不同日子验证预测的平均值和尾部。若多个窗口、预约、插队、故障或时间变化明显,可保留利特尔定律作账目核对,用离散事件仿真按实际规则计算,而不是把 M/M/1 的 1/(μ−λ) 公式硬套给所有系统。

参考资料与相关词条