案例 154 上牌与年检:38.75 元买断每个月 84 元的扣车风险
案例 154 上牌与年检:38.75 元买断每个月 84 元的扣车风险
摘要:电动自行车必须上牌,无牌上路被查即扣车 3 天。上牌一次性花 38.75 元(工本费 30 元 + 半天误工 8.75 元),不上牌每月有 8% 的概率损失 1050 元,月度期望 84 元。模型只有 1 个 0-1 变量、1 条法规约束,求解是常数时间,重点全在口径:把一次性成本与月度风险直接相比,临界概率是 3.69%/月,低于它账面上"不上更省"——这正是很多人拖着不办的理由。补上状态递推(扣车即补牌、风险终结)后,12 个月等待的期望支出是 688.5 元、为 17.8 倍,而且临界概率在多期口径下不复存在:只要 \(p>0\),立即上牌恒优。最后给出概率 3%/8%/15% 与耗时 0.5/1/2 天的灵敏度分区,并拆开"3 天停业"与 1050 元损失之间的重复计算陷阱。
关键词:上牌合规;0-1 规划;状态递推;期望成本;临界概率
1 问题提出
1.1 问题是什么
广州对电动自行车实行登记上牌管理。上牌要跑一趟车管所:工本费 30 元,加上验车、排队、往返,半个工作日就没了。不上牌也能跑,但被查就是扣车,取车要等 3 天,这 3 天不能接单。
| 项目 | 数值 | 说明 |
|---|---|---|
| 上牌工本费 | 30 元 | 一次性 |
| 上牌耗时 \(\tau\) | 0.5 天 | 可排在上午低谷 |
| 低谷时间影子价格 \(\eta\) | 17.5 元/天 | 这半天本来只跑 2—3 单 |
| 上牌总成本 \(C\) | 38.75 元 | 一次性,终身有效 |
| 月扣车概率 \(p\) | 8% | 片区执法强度折算 |
| 单次扣车损失 \(L\) | 1050 元 | 3 天收入 1038.46 元 + 拖车 11.54 元 |
| 月度期望损失 | 84 元 | \(p\times L\),每月重复 |
| 月收入目标 | 9000 元 | 日均 346.15 元(26 天) |
单看这张表,结论像是显然的:38.75 元换掉每月 84 元的风险,值。但两个数直接相减是错的——一个是只付一次的钱,一个是每个月都在发生的期望。84 元不是"一共 84 元",而是"这个月 84 元、下个月还有 84 元";38.75 元也不会在第二个月再收一遍。真正要比的是累计值,而累计怎么算,取决于扣车之后会发生什么。
1.2 为什么要优化
- 口径错了结论就错。按单期比较,只要概率低于 3.69%/月,模型就说"别上牌",可这个结论只在一个月的时间尺度上成立,而骑手要跑几年。
- 扣车不是终点而是转折点。被扣之后必须补牌才能取车,补牌那一刻风险就终结了。所以"先不上、等被扣再说"的期望成本不是线性的 \(12\times84\),而是一条饱和曲线——这正是写成状态递推的理由。
- 法规不在目标函数里。目标函数只算钱,法规把 \(z\) 钉死为 1。两件事分开写:约束决定可行域,目标函数只负责解释"这条约束不是负担"。
1.3 Gurobi 如何求解
模型只有 1 个 0-1 变量、1 条约束,分支定界在根节点结束。计算量全在反复解:基准与时点 6 次、口径校准 3 次、灵敏度 9 点、二维网格 20 点、扫描 20 点,共 36 次。每个点重新建模、不套解析式——改参数就是改模型,避免手推公式与代码走岔。
2 数学模型
2.1 符号说明
| 符号 | 含义 | 取值 |
|---|---|---|
| \(z\) | 是否上牌,1 上牌 | 0 或 1 |
| \(C\) | 上牌一次性总成本 | 38.75 元 |
| \(\tau,\ \eta\) | 上牌耗时、低谷时间影子价格 | 0.5 天、17.5 元/天 |
| \(p\) | 月扣车概率 | 8% |
| \(L\) | 单次扣车总损失 | 1050 元 |
| \(N\) | 考察月数 | 12 |
| \(q_{t}\) | 第 \(t\) 月月初仍未上牌的概率 | \([0,1]\) |
| \(y_{t}\) | 第 \(t\) 月主动上牌的概率份额 | \([0,1]\) |
2.2 目标函数
单期口径先把题面的账摆平:上牌付 \(C\),不上付月度期望 \(pL\)。
其中 \(C=30+17.5\times 0.5=38.75\) 元。式 (1) 两项量纲不同(一次性对每月),只在一个月的时间窗内自洽——第 4 节会反复用到这一点。
2.3 约束条件
法规约束把可行域压成一个点:
多期口径需要状态递推。设 \(q_{t}\) 为第 \(t\) 月月初仍未上牌的概率,\(y_{t}\) 为当月主动上牌的概率份额,则
第二项 \((1-p)q_{t}\) 就是"这个月没被扣、风险继续"的那部分人;被扣的 \(p q_{t}\) 当月即补牌,退出状态。\(N\) 月内的期望支出为
等比求和得闭式,并令其等于 \(C\) 求临界概率:
式 (6) 只在单期口径成立。代入式 (5) 会发现 \(W(N)-C=L[1-(1-p)^{N}]\ge 0\) 对任何 \(p>0\) 恒成立,多期口径没有临界概率。
2.4 规模与性质
单期模型 1 变量 1 约束;时点模型 \(N+1\) 个 0-1 变量、1 条指派约束;递推本身是 \(O(N)\) 的代数运算。目标关于 \(z\) 线性、约束是等式,最优解必在端点;式 (5) 关于 \(N\) 单调递增且上凸(饱和到 \(L+C\)),关于 \(p\) 单调递增。
3 Gurobi 求解实现
3.1 建模要点
z = m.addVar(vtype=GRB.BINARY, name="z")
m.addConstr(z == 1, name="law") # 法规先钉死可行域
m.setObjective(z * CREG + (1 - z) * P * L, GRB.MINIMIZE)
上牌时点用另一支 MIP:\(y_{k}\) 表示"第 \(k\) 月才上牌",系数由式 (4) 逐月递推算出,再让 Gurobi 在 \(N+1\) 个候选月里选一个。
y = m.addVars(N + 2, vtype=GRB.BINARY)
m.addConstr(gp.quicksum(y[k] for k in range(1, N + 2)) == 1) # 只能上一次
m.setObjective(gp.quicksum(E[k] * y[k] for k in range(1, N + 2)), GRB.MINIMIZE)
一个实现细节:\(E(k)\) 不用闭式,用循环累加 \(p(1-p)^{t-1}(L+C)\) 再加 \(C\)。这样"改概率就是改模型",且递推与闭式在基准点相差 0.000 元,互校通过。
3.2 求解结果
| 模型 | 设置 | \(z\) 或 \(k\) | 目标值 / 元 |
|---|---|---|---|
| 基准(法规) | \(z=1\) | 1 | 38.75 |
| 只算钱 | 无法规约束 | 1 | 38.75 |
| 强制不上 | \(z=0\) | 0 | 84 |
| 上牌时点 MIP | \(N=12\) | \(k=1\) | 38.75 |
| 时点 MIP(锁 \(k\ge 2\)) | 不许首月上牌 | \(k=2\) | 122.7 |
时点 MIP 选 \(k=1\):第一个月就办。锁定 \(k\ge 2\) 后最优变成 \(k=2\),代价 122.7 元——晚一个月就贵了 84.0 元,正好是一个月的期望损失,是上牌费的 2.2 倍。
4 结果分析
4.1 一次性成本与月度风险不在同一个量纲上

图 1 上牌成本与扣车损失的棒棒糖对照
图 1 把七个数字排在一起:上牌 38.75 元(工本费 30 + 误工 8.75);单次扣车 1050 元(3 天收入 1038.46 + 拖车 11.54);月期望 84 元。单次扣车是上牌成本的 27.1 倍。**唯一不能直接比的就是 38.75 与 84**:前者只发生一次,后者按月重复。 ### 4.2 概率越高,等待越像在赌
图 2 月扣车概率与 12 个月期望总支出(气泡为 12 月内被扣概率)
图 2 横轴 1%—20%,纵轴是等待策略 12 个月的期望支出,而上牌那条水平线一直停在 38.75 元。概率 3% 时等待是 333 元、8% 时 688 元、20% 时 1014 元。气泡是被扣概率:8% 对应 63.2%——三分之二的人在一年内会被扣一次。曲线在低概率端几乎是平的,这正是"小概率无所谓"的错觉来源。 ### 4.3 四个方案:等待的代价是十七倍
图 3 四种策略的 12 个月期望支出对比
永不上牌 1008 元是违规上界(风险不终结);等待 688.5 元(窗口内被扣才补);期末对齐补牌 702.7 元;立即上牌 38.75 元。差额 664 元,18.1 倍。第三个柱子比第二个高 14.2 元,那是"一年都没被扣、最终仍要办"的 36.8% 人群的补牌费,只有做终点对齐才计入。 ### 4.4 时序:累计曲线是凹的,这恰好证明风险会终结
图 4 12 个月累计期望支出:立即上牌、等待(风险终结)、永不上牌
图 4 是关键的一张。等待那条线不是直线:第 1 月涨 84 元,第 12 月只涨 34.8 元,因为 $q_{t}$ 按 $(1-p)^{t-1}$ 衰减。永不上牌那条虚线是直的,12 个月 1008 元。两条线的差 320 元,就是"扣车后补牌终结风险"这件事的价值——忽略它会把等待成本高估 46.4%。第 6 个月等待已累计 429 元,是上牌成本的 11.1 倍;摊薄到每月只要 3.23 元,**0.46 个月就回本**。 ### 4.5 灵敏度:3% 与 15% 的分区,以及耗时的影响
图 5 扣车概率与上牌耗时的单期净收益(阴影为「不上」区)
图 5 三条线对应耗时 0.5/1/2 天,与零线的交点分别是 3.69%、4.52%、6.19%——耗时翻两番只把临界概率从 3.69% 抬到 6.19%,因为 30 元工本费占了大头。阴影区(概率低于 3.69%)里单期模型翻成"不上",这就是"概率低到 3% 以下才开始显得不划算"的来源。但那个区里法规约束 $z=1$ 不动;把 12 期写成式 (5),$p=3\%$ 时差额仍有 321 元,也翻不过来。
图 6 扣车概率与单次损失的决策分区(含耗时 2 天的分界线)
图 6 把概率与损失两个维度铺开。蓝区是单期口径的"不上"区,分界线是双曲线 $L=38.75/p$;虚线是耗时 2 天的分界($L=65.00/p$),把边界往右推了一点。星标是本案(8%、1050 元),落在红区,与 Gurobi 的解一致。但真正要读的是这句话:**12 期口径下整张图都是上牌,包括蓝区**。 ### 4.6 时间尺度、前沿与分布
图 7 时间尺度对等待成本的影响(右轴为上牌成本的月度摊薄)
图 7 横轴换成月数,三条曲线对应 3%/8%/15%。3% 那条 24 个月才涨到 565 元,15% 那条半年就到 678 元。右轴是上牌成本的月度摊薄 $C/N$,12 个月摊到 3.23 元、24 个月 1.61 元,一条反比曲线。三条等待曲线最终都饱和在 $L+C=1088.75$ 元,即"迟早被扣一次并补牌"的确定成本——时间越长,等待越接近这个上界,也越显荒谬。
图 8 上牌时点 k 的成本—停业天数前沿(阴影为成本不可达区)
图 8 每个点是一个上牌时点 $k$:横轴 12 个月期望支出,纵轴期望无法接单天数(上牌误工 0.5 天 + 3 天 $\times$ 期望扣车次数)。$k=1$ 在左下角(38.75 元、0.5 天),$k=13$ 在右上(703 元、2.40 天)。两个维度同向恶化,帕累托前沿退化成**一个点**:不存在"多花钱换安全"的取舍,最便宜的同时也最安全。
图 9 首次被扣月份的分布与累计概率
图 9 是几何分布:中位第 9 月,均值 $1/p=12.5$ 月。12 个月累计 63.2%,24 个月 86.5%。换句话说,不上牌的骑手平均跑不到 13 个月就会碰上第一次扣车,而一次的损失就是上牌成本的 27.1 倍。 ### 4.7 成本构成与重复计算
图 10 三种策略 12 个月期望支出的构成分解
图 10 把 1050 元拆开:3 天收入 1038.46 元 + 拖车保管 11.54 元。**这里有个容易犯的重复计算**:1050 元里已经含了 3 天停业,若再说"另外还有 3 天停业、折 1038 元收入",就把同一笔损失算了两次。正确做法二选一:要么用 1050 元(含收入 + 拖车 + 罚款),要么用 3 天收入 1038.46 元再加显性费用。本文全篇取前者,所以图 10 里"3 天收入损失"只是 1050 元的内部拆项,不是额外项。若再叠加 200 元罚款,$L=1250$,临界概率降到 3.10%/月。 ### 4.8 口径校准:把误工按日均可支配收入算 题面的时间影子价格 17.5 元/天(半天 8.75 元)是"上牌排在低谷"的口径。若保守按日均收入 346.15 元计,上牌成本变成 203.08 元:单期 $z=0$(203 > 84,账面不上),但 12 期等待是 867.0 元、为立即上牌的 4.3 倍,仍然上牌。**结论对时间价值不敏感,对时间尺度极其敏感**:换成日均口径,单期临界概率从 3.69% 升到 19.34%,12 期照样翻不过来。 ## 5 结论- 上牌的真实成本 38.75 元(工本费 30 + 半天误工 8.75),一次性、终身有效;不上的月度期望损失 84 元,是成本的 2.17 倍。
- 单期临界概率 3.69%/月只在"只算一个月"时成立;把它当长期判据,会抹掉"三分之二骑手一年内必被扣"这个事实。
- 状态递推 \(q_{t+1}=(1-p)q_{t}-y_{t+1}\) 是关键增量:扣车即补牌、风险终结,等待成本是饱和曲线而非直线,12 个月 688.5 元、17.8 倍;忽略终结会把成本高估 46%。
- 多期口径下临界概率消失:\(W(N)-C=L[1-(1-p)^{N}]\ge 0\) 恒成立,只要 \(p>0\) 立即上牌就是最优,时点 MIP 也选 \(k=1\);晚一个月贵 84.0 元,是上牌费的 2.2 倍。
- 灵敏度上,概率 3%—15%、耗时 0.5—2 天,单期口径只在概率低于 6.19%(耗时 2 天)时才翻转;成本与风险两个维度同向,前沿退化成一个点——法规要求的那件事,恰好也是最省钱的那件事。
参考文献
[1] Gurobi Optimization LLC. Gurobi Optimizer Reference Manual[Z]. 2024.
[2] Puterman M L. Markov Decision Processes: Discrete Stochastic Dynamic Programming[M]. 2nd ed. Hoboken: John Wiley & Sons, 2014.
[3] Ross S M. Introduction to Probability Models[M]. 12th ed. London: Academic Press, 2019.
[4] 司守奎, 孙玺菁. 数学建模算法与应用[M]. 3 版. 北京: 国防工业出版社, 2021.
复现方式:python batch_154.py;数据与结果见同目录 data_154.csv / results_154.json,图见 figs/

浙公网安备 33010602011771号