🧠 第九章 政务与教育:AI赋能治理与教学创新实践
📄 一句话概括

到达率每分钟 1.8 人、每窗每分钟服务 0.6 人。 1 个窗口 ρ=3.00,平均等 478.6 分钟;2 个 119.7 分钟;3 个 ρ=1.00,12.0 分钟; 4 个 ρ=0.75,0.9 分钟。 从 3 个加到 4 个,利用率只降 0.25,等待却掉到十三分之一。

📝 本节和前面几节的关系

9.1 讲的是训练前的三道关:隐私、融合、脱敏。从这一节开始讲「训出来的模型怎么用在具体业务上」。 第一个场景最朴素——办事大厅到底该开几个窗口。

一、排队论只回答一个问题

现在这几个窗口,够不够?它不需要模型、不需要训练,只要三个数: ① 到达率 λ:每分钟来多少人。② 单窗服务率 μ:一个窗口每分钟能办完几个。 ③ 窗口数 c:现在开了几个。 算出来的是一个比值:利用率 ρ = λ ÷ (c × μ)。这个数小于 1,队伍迟早能清空; 大于 1,队伍从数学上就不可能清空——加多少人也不会,只能减少积压速度。 ρ 是这一节唯一需要记住的量。但它不是结论,结论是「老百姓站多久」。 所以要再看两个数:平均等待和95 分位等待。 为什么要看分位?因为平均会把极端值抹平。 「平均等 12 分钟」听起来能接受,但如果 7% 的人等了半小时以上,投诉就全从这 7% 里来。 政务服务考核里,分位比平均更接近真实体感。

二、四个窗口,四行数

Demo 按 1.8 人/分钟、0.6 人/窗口/分钟,模拟 40 个工作日、每天 8 小时, 把 1 到 4 个窗口都跑了一遍:

窗口数 利用率 ρ 平均等待 95 分位 等超 30 分
1 3.00 478.6 分 912 分 97%
2 1.50 119.7 分 239 分 87%
3 1.00 12.0 分 34 分 7%
4 0.75 0.9 分 4 分 0%
1 个窗口那行的 478.6 分钟没有实际意义。ρ=3.0 意味着服务能力只有需求的三分之一,
队伍只会一直变长——这个数只说明「到下班还排着」。
2 个窗口 ρ=1.5,仍然过载,平均等 119.7 分钟。
很多单位觉得「两个人总比一个人强」,但过载就是过载,从排 8 小时变成排 2 小时,体验上没区别。
3 个窗口是临界点:ρ 正好 1.00,平均 12.0 分钟,95 分位 34 分钟,还有 7% 的人等超半小时。
临界点最危险的地方是「看起来能用」——平时没事,一遇到月初、开学、年底集中办件就崩。
4 个窗口 ρ=0.75,平均 0.9 分钟、95 分位 4 分钟、等超 30 分的 0%。
这一格才是「服务」。

三、为什么多开一个窗口效果这么大

从 3 个加到 4 个,人力只多三分之一, 平均等待从 12.0 分钟掉到 0.9 分钟,是十三倍。这不是线性的,看 ρ 就明白: 3 个窗口 ρ=1.00,4 个 ρ=0.75。 排队模型的等待时间里有一项 1 ÷ (1 − ρ)。ρ=0.75 时它是 4,ρ=0.90 时是 10,ρ=0.99 时是 100。 ρ 越接近 1,这一项越像个悬崖。 所以这里有个很实用的判断:利用率 100% 不是好成绩,是危险信号。把「窗口全忙、 没人闲着」当效率高来表扬,在排队系统里等于把系统推到悬崖边上——任何一点波动(有人请假、 系统卡一次)都会让等待时间翻几倍。 工程上的经验值是 ρ 控制在 0.7 到 0.85。低于 0.7 人力浪费,高于 0.85 体验崩。 这个区间不是拍脑袋来的,就是那条 1/(1−ρ) 曲线决定的。

四、千万不能按日均算

上面那组数用的是 1.8 人/分钟的全天平均。 但真实大厅不是均匀到达的:上午 9 点到 10 点可能是 4 人/分钟, 下午 3 点可能只有 0.5 人/分钟。 按 4 人/分钟算,一个窗口的服务率 0.6,要 7 个窗口 ρ 才回落到 0.95。而按全天平均算,3 个就够。 这两个答案差了 4 个窗口。 所以排班的正确做法是:按时段切片算,再按时段配人。 不是「一天开几个窗口」,是「9 点到 10 点开几个、10 点到 11 点开几个」。 这就是「弹性排班」的全部内容。 更进一步:排队数据本身就能反推需求曲线。取号机、叫号系统里都有精确到分钟的到达时刻, 把这些记录按小时聚合,就是 λ(t)。 这一步不需要任何 AI,一个透视表就够——但它是后面所有优化的前提。

五、落地:先量三个数,再谈加不加人

第一步,量 λ 和 μ。λ 从取号记录数出来; μ 从「办结时刻减叫号时刻」算,注意要按事项类型分开算——办身份证和办营业执照的耗时差好几倍, 混在一起算出的 μ 没有意义。 第二步,定服务水平。不是「平均等待小于 X 分钟」,而是「95% 的人等待小于 X 分钟」。 前者可以靠少数人吃大亏来满足,后者不能。 第三步,算 c。 有了 λ、μ 和目标分位,c 是解出来的,不是猜的。 每个时段解一次,得到的就是排班表。 最后一句提醒:这个模型假设「先来先办」。如果大厅有预约优先、老年人优先、企业专窗, 那实际等待会比模型算的长——因为普通号被插队了。遇到这种情况要分队列建模,不能直接套。

六、动手 Demo:窗口排班:4 个窗口平均等 0.9 分钟,3 个要 12.0 分钟

到达率 1.8 人/分钟、每个窗口 0.6 人/分钟(平均 100 秒一人),模拟 40 个工作日、每天 8 小时。 窗口数从 1 取到 4,每次记录每个办事人的等待时长,最后统计平均、95 分位和「等超 30 分钟」的比例, 同时按 ρ=λ/(cμ) 算出利用率。

lam, mu = 9.0 / 5.0, 3.0 / 5.0          # 1.8 人/分、0.6 人/分
T, days = 8 * 60, 40
for c in (1, 2, 3, 4):
    waits = []
    for _ in range(days):
        t, free = 0.0, [0.0] * c
        while True:
            t += rg.exponential(1.0 / lam)   # 下一个人到达
            if t > T:
                break
            j = int(np.argmin(free))         # 最早空出的窗口
            start = max(t, free[j])
            waits.append(start - t)          # 这一等多久
            free[j] = start + rg.exponential(1.0 / mu)
    res[c] = np.array(waits)

实跑输出:

--------------------------------------------------------------------
办事窗口排班:4 个窗口平均等 0.9 分钟,3 个要 12.0 分钟
--------------------------------------------------------------------
  窗口数   利用率 ρ   平均等待(分)   95 分位(分)   等超 30 分
  ----------------------------------------------------------
       1       3.00          478.6           912          97%
       2       1.50          119.7           239          87%
       3       1.00           12.0            34           7%
       4       0.75            0.9             4           0%

  到达率 **每分钟 1.8 人**、每个窗口每分钟服务 **0.6 人**(平均 100 秒一人),
  模拟 40 个工作日、每天 8 小时。
  **一个窗口 ρ=3.0,超过 1,队伍从数学上就不可能清空**——平均等待 479 分钟,这个数没有意义,
  它只说明「到下班还排着」。
  两个窗口 ρ=1.5,仍然过载(平均 120 分钟)。**三个窗口 ρ=1.0,正好临界**:平均 12.0 分钟,
  95 分位 34 分钟。
  四个窗口 ρ=0.75,平均 **0.9 分钟**。排队论的价值就在这里:
  它把「要不要多开一个窗口」变成了一个数。
  注意 ρ 接近 1 时等待会爆炸式上升,不是线性涨——M/M/c 的等待时间里有 1/(1-ρ) 这一项。
  ρ=1.0 到 0.75 只差 0.25,等待从 12 分钟掉到 0.9 分钟。
  实务含义:**窗口数要按峰值算,不能按日均算。**日均 1.8 人/分钟,
  但上午 9 点到 10 点可能是 4 人/分钟,**那一个小时就能把全天平均等待拉坏。**

第一行结论:ρ=3.00 时平均等 478.6 分钟,95 分位 912 分钟。这两个数都超过一天的工作时长, 说明它不是「等很久」,是「今天办不上」。 2 个窗口 ρ=1.50,平均 119.7 分钟——仍然是过载。 过载状态下,等待时间随模拟时长线性增长,不是稳定值。所以这一格严格说也没有意义, 只是没 1 个窗口那么离谱。 3 个窗口 ρ=1.00 是关键对比点: 平均 12.0 分钟看着还行,但 95 分位是 34 分钟、7% 的人等超半小时。 只报平均的话,这个 7% 完全看不见。 4 个窗口 ρ=0.75:平均 0.9 分钟、95 分位 4 分钟。从 3 到 4,ρ 只降了 0.25,等待掉到十三分之一。 这条非线性关系是这一节最该带走的东西。 要说明:这是 M/M/c 的仿真,假设到达服从泊松、服务时间服从指数分布。 真实大厅的到达有明显的时间聚集(早高峰),服务时间也不是指数分布(有的人 2 分钟办完, 有的人 20 分钟)。所以这组数用来看趋势和量级是对的,绝对值要拿真实数据校准。

30 秒实验

  1. 把到达率从 1.8 改成 2.1(涨 17%),看 3 个窗口的等待变成多少。 ρ 从 1.00 变成 1.17,直接过载——需求涨一点,体验掉一大截。
  2. 把窗口数改成 5,看平均等待还能不能压到 0.1 分钟以下。 能压到 0.2 左右,但边际收益已经很小——4 个窗口是这条曲线的拐点。
  3. 把每天的模拟时长从 8 小时改成 10 小时,看 3 个窗口的平均等待。 会涨:ρ=1.00 时排队是累积的,开门越久积压越多。

常见误区

  1. 「窗口全忙说明效率高」。 ρ 到 1.0 就是悬崖边,一点波动就让等待翻几倍,正确区间是 0.7 到 0.85。
  2. 「按日均人流量算窗口数」。 日均 1.8 人/分钟,早高峰 4 人/分钟时 3 个窗口根本不够。要按时段算。
  3. 「平均等待能接受就行」。 3 个窗口平均 12 分钟,但 7% 的人等超半小时,投诉全来自这里。要看 95 分位。
自测三问(点开对答案) 1. 利用率 ρ 是怎么算的,ρ 大于 1 意味着什么? —— ρ = 到达率 ÷(窗口数 × 单窗服务率)。 大于 1 说明服务能力低于需求,队伍不可能清空,等待时间会一直增长。 2. 为什么 3 个窗口加到 4 个,等待能掉到十三分之一? —— 因为等待时间里有 1/(1−ρ) 这一项。 ρ 从 1.00 降到 0.75 时,这一项从趋于无穷降到 4,所以是非线性下降。 3. 排班为什么不能按日均人流量算? —— 到达在一天内极不均匀。日均 1.8 人/分钟对应的窗口数,在早高峰 4 人/分钟时完全不够。 必须按时段切片。

窗口数能算,是因为「等待」可以直接量。 但政策效果不能直接量——你没法同时看到「发了政策」和「没发政策」的两个世界。 下一节讲怎么用双重差分去逼近它。

相关笔记