案例088 汤洒了赔 15

案例088 汤洒了赔 15

摘要:一次洒漏赔 15 元,加固包装 1.5 元/单可把洒漏率从 18% 降到 5%,专箱 380 元可用 2 年可降到 2%。以 \(z_1,z_2\) 与接单变量 \(x_i\) 建 16 变量 MILP,目标为毛利减赔偿期望、加固费与专箱摊销,组合项 \(z_1z_2\) 与 \(z\cdot\sum x_i\) 全部线性化。求得日 10 单时最优为专箱、不加固,日净收益 52.48 元、年 19155 元,比加固多 6928 元、比无措施多 8570 元、比"全部不接"多 19155 元。核心是固定成本折单均:专箱 0.52 元/天在日 0.267 单(97 单/年、约 8 单/月)处与加固持平,之上的量全归专箱;加固对无措施是严格支配(省 0.45 元/单),故"不投入"段被压成一点,只在洒漏率低于 15% 时重新张开。赔偿额涨到 30 元,门限降到 0.217 单/天。

关键词:固定成本摊销;盈亏平衡单量;措施组合;0-1 线性化;洒漏风险定价

1 问题提出

1.1 问题是什么

一单汤,洒了赔 15 元。骑手有两条路:花 1.5 元加一层防洒包装(洒漏率 18% 降到 5%),或者一次性花 380 元买一个专用汤箱(洒漏率降到 2%,可用 2 年)。也可以什么都不做,承担 18% 的洒漏;还可以干脆不接汤品单。

数字先摆出来。一个骑手一天能接到 10 单汤品(数据表按距离 1.2—7.4 km 排列,单均净收益 4.2—8.0 元,均值 5.6 元),一天的账是:不接 0 元;无措施 56.0 − 27.0(赔偿期望)=29.0 元;加固 56.0 − 7.5 − 15.0(加固费)=33.5 元;专箱 56.0 − 3.0 − 0.52(日摊)=52.48 元。一年放大到 6928 元的差距(专箱比加固多赚的),这不是"要不要讲究"的问题。

难的地方不在算账,在两种成本的性质不同。加固费 1.5 元是变动成本:接一单付一单,不接就不付。专箱 380 元是固定成本:一次付清、摊 730 天,日均 0.52 元,接的单越多越便宜。固定成本只有折成"单均"才和变动成本可比——这就是本案的全部内容。

1.2 为什么要优化

三条理由。其一,两种成本不可直接相加:1.5 元/单是变动、380 元是固定,不折成同一口径就没法比,折错方向(把专箱按"每次用都花 380 元"算)会把结论从"买"翻成"不买"。其二,"不接"是隐性成本最高的一项:表面 0 支出,实际扔掉 20440 元/年毛利。其三,洒漏率与赔偿额共同决定措施:18% 的基准率在 15 元赔偿下让加固只赚 0.45 元/单,赔偿涨到 30 元结论就变。

1.3 Gurobi 如何求解

建模(16 变量、13 约束),预处理用候选集规模 \(n=10\) 收紧三个乘积变量的界;分支定界在根节点即得整数解(0-1 变量仅 4 个);对偶价从 LP 松弛读措施的单均影子价;参数扫描在 \(N\)、\(f\)、\(p_0\) 三维网格上做,切换点用年成本曲线的解析解与数值扫描双保险。

2 数学模型

2.1 符号说明

符号:汤品日单量 \(N\)(基准 10 单/天,行业常见 3 单/天);第 \(i\) 单净收益 \(\bar w_i\)(4.2—8.0 元,均值 5.6 元);一次洒漏赔偿 \(f=15\) 元;三档洒漏率 \(p_0=0.18,p_1=0.05,p_2=0.02\);加固费 \(c_1=1.5\) 元/单;专箱价格 \(B=380\) 元、寿命 \(T=2\) 年、年摊 \(B/T=190\) 元;0-1 变量 \(z_1,z_2\)(加固、专箱)与 \(x_i\)(接第 \(i\) 单)。

2.2 目标函数与约束条件

设汤品日单量为 \(N\),单均净收益 \(\bar w=5.6\) 元;一次洒漏赔 \(f=15\) 元;加固 \(c_1=1.5\) 元/单;专箱 \(B=380\) 元、寿命 \(T=2\) 年、年摊 \(B/T=190\) 元。三档洒漏率 \(p_0=0.18\)、\(p_1=0.05\)、\(p_2=0.02\)。

措施组合与洒漏率。 令 \(z_1,z_2\in\{0,1\}\) 分别为加固、专箱,组合效应写成双线性式:

\[p(z)=p_0-(p_0-p_1)z_1-(p_0-p_2)z_2+(p_0-p_1)z_1z_2\tag{1} \]

式 (1) 的三个系数都有含义:单独加固省 \(p_0-p_1=0.13\)、单独专箱省 \(p_0-p_2=0.16\),两者同开时回到 \(p_2\)(专箱已是 2%,加固叠上去不再降),这就是 \(+0.13z_1z_2\) 这一项的存在理由。

年成本曲线。 一年 \(365N\) 单,三种措施的年成本是三条射线,只有专箱带截距:

\[C_{\mathrm{no}}(N)=365N\,fp_0,\qquad C_{\mathrm{add}}(N)=365N\,(c_1+fp_1),\qquad C_{\mathrm{box}}(N)=365N\,fp_2+\frac{B}{T}\tag{2} \]

代入数值:\(C_{\mathrm{no}}=985.5N\)、\(C_{\mathrm{add}}=821.2N\)、\(C_{\mathrm{box}}=109.5N+190\)。只有第三条有截距,所以只有涉及专箱的比较才有非零的盈亏平衡量——这是本案与"两个变动成本比大小"最根本的区别。

目标。 接单 \(x_i\in\{0,1\}\),一天 10 个候选单:

\[\max\ Z=\sum_{i=1}^{10}\bar w_i x_i-f\,p(z)\sum_{i=1}^{10}x_i-c_1z_1\sum_{i=1}^{10}x_i-\frac{B}{T}z_2\tag{3} \]

\(\sum x_i=0\) 就是"全部不接",此时 \(Z=0\)——这个选项一直在可行域里,不需要额外约束,模型自然会拿它和其他三项比。

线性化。 式 (3) 有两处乘积。\(z_1z_2\) 用 \(w\le z_1\)、\(w\le z_2\)、\(w\ge z_1+z_2-1\) 处理;\(z\cdot S\)(\(S=\sum x_i\))用

\[g\le nz,\qquad g\le S,\qquad g\ge S-n(1-z)\tag{4} \]

\(n=10\) 取候选集规模,不用 \(10^6\)。展开后目标对 \(g_1,g_2\) 的系数为负、对 \(g_w\) 为正,最小化时三个乘积变量自动落到端点,\(g\equiv Sz\) 精确成立。

2.3 规模与性质

16 个变量(10 个 \(x_i\) + 3 个措施 0-1 + 3 个乘积辅助)、13 条约束,纯 MILP、无连续决策。措施只有 4 种组合,故最优解可由"逐单阈值 + 四组合枚举"闭式复核,与 Gurobi 相差 0(数值零)。

3 Gurobi 求解实现

3.1 建模要点

模型 10 个 \(x_i\)、\(z_1,z_2,w\) 三个 0-1、\(g_1,g_2,g_w\) 三个连续辅助,共 16 个变量、13 条约束,单次求解 0.001 秒。

loss = F*P0*S + (c1 - F*(P0-P1))*g1 - F*(P0-P2)*g2 + F*(P0-P1)*gw
m.setObjective(-(rev - loss - fix*z2), GRB.MINIMIZE)
for g, z in ((g1, z1), (g2, z2), (gw, ww)):
    m.addConstr(g <= n*z); m.addConstr(g <= S); m.addConstr(g >= S - n*(1-z))

三个系数一次写清:\(c_1-f(p_0-p_1)=-0.45\)(加固的净单价)、\(-f(p_0-p_2)=-2.40\)(专箱的变动节省)、\(+f(p_0-p_1)=1.95\)(组合项回收)。第一个系数是负的、第二个更负:专箱每单比无措施省 2.40 元,加固只省 0.45 元,这就是胜负手。

校验。 措施只有四种组合,每种组合下的最优接单策略是解析的——接当且仅当 \(\bar w_i>f p(z)+c_1z_1\)。四种组合各算一遍取最大得 52.48 元,与 Gurobi 的 52.48 元相差 0(数值零)(数值零)。

表 1 四种措施组合的日成本与年净收益(日 10 单)

措施 z1,z2 洒漏率 单均成本 / 元 年措施成本 / 元 年净收益 / 元
全部不接 — — 0 0 0
无措施 0,0 18% 2.70 9855 10585
加固 1,0 5% 2.25 8212 12227
专箱 0,1 2% 0.35 1285 19155
加固+专箱 1,1 2% 1.85 6760 13680

表 1 最后一行是"多此一举"的量化版:专箱已把洒漏率压到 2%,再加固一分钱也降不下来,1.5 元/单纯属白花,一年白扔 5475 元。

3.2 求解结果

Gurobi 在根节点即收敛:\(z_1=0,z_2=1\),10 单全接,日净收益 52.48 元、年 19155 元,与四组合枚举的 52.48 元完全一致。最优解的结构很干脆——买箱子、不加固、单照接,三项决策互不纠缠。

4 结果分析

4.1 结构:三档洒漏率与单均成本

图 1 三档措施的洒漏率(柱)与单均总成本(菱形,右轴,日 10 单口径)

图 1 把两条量纲不同的曲线放在一起:柱是洒漏率 18%/5%/2%,菱形是折算到单均的总成本 2.70/2.25/0.35 元。柱高与成本不同序——洒漏率不是目标,率乘 \(f\) 再加措施费才是。加固的柱只降到 5%,成本却几乎贴着无措施,差 0.45 元,正是"1.5 元买 1.95 元"的结果。

图 2 汤品日均单量—年措施成本的三条曲线(气泡大小反映年单量)

图 2 是结构图里最关键的一张:三条线都是直线,但只有专箱那条有截距 190 元。横轴左端(日 0.1 单)专箱贵得离谱,右端(日 30 单)几乎贴着横轴。两个交点就是后文的两个盈亏平衡量:79 单/年与 97 单/年。加固线与无措施线永不相交(斜率 2.25 对 2.70,后者处处在上),这是纯变动成本的必然结果。

4.2 三个盈亏平衡量与分段结论

图 3 四种方案的年净收益对比(柱=毛利与措施成本,菱形=净收益)

图 3 是结论图。日 10 单:不接 0 元、无措施 10585 元、加固 12227 元、专箱 19155 元。专箱比加固多 6928 元/年、比无措施多 8570 元/年。"全部不接"这一档的代价是 19155 元/年——它并没有省下 0.52 元/天的摊销,而是扔掉了 20440 元毛利。这就是"最省事的选项最贵"的算术版。

三个盈亏平衡量由式 (2) 解出,与图 2 的交点逐位一致:

表 2 三个盈亏平衡汤品单量

比较 单/天 单/年 单/月 判别
加固 vs 专箱 0.267 97 8 低于加固、高于专箱
无措施 vs 专箱 0.217 79 7 专箱固定成本摊平点
无措施 vs 加固 0 0 0 无内部交点,恒省 0.45 元/单

前两个是单量、第三个退化成一个点,原因写在式 (2):\(C_{\mathrm{no}}\) 与 \(C_{\mathrm{add}}\) 都过原点,斜率 2.70 对 2.25,平行即支配,加固从第 1 单起就赢。所以本案"最优措施随单量变化"只有两段:\(N<0.267\) 单/天(约 8 单/月)加固,\(N>0.267\) 专箱;"不投入"那一段被压成 \(N=0\) 一个点。

分段结论的完整形态要看的不是 \(N\) 一条轴,而是 \((N,p_0)\) 平面(图 7):不投入/加固/专箱三块由两条线划开——洒漏率门槛 \(p^{*}=c_1/f+p_1=15\%\)(与单量无关),单量门槛 \(N^{*}=0.267\)(与洒漏率无关)。本案 \(p_0=18\%>15\%\),站在门槛右侧,所以只看到后两段。行业常见量日均 3 单:专箱年净 5613 元 > 加固 3668 元 > 无措施 3175 元,仍选专箱——门槛只有 97 单/年(约 8 单/月),低到几乎是"只要长期做,就买"。

4.3 累计过程:380 元多久摊平

图 4 两年 730 天的累计措施成本(专箱在第 0 天一次性付 380 元)

图 4 把固定成本摊开的过程画出来:专箱那条线在第 0 天跳到 380 元,之后斜率 3.0 元/天;加固是斜率 22.5 元/天的直线。两线在第 19 天相交(0.6 个月),此后专箱永远在下。两年累计专箱 2570 元、加固 16425 元,差 13855 元——380 元的"重投入" 19 天就回本。右轴虚线是累计均摊,从 380 元/天降到 1.04 元/天。

4.4 灵敏度:赔偿额 15 元→30 元与洒漏率

图 5 赔偿额对最优年净收益(左轴)与加固/专箱分界单量(右轴)的影响

图 5 的右轴就是本案要的答案:赔偿额从 15 涨到 30 元,加固/专箱的分界单量从 0.267 掉到 0.217 单/天,门槛下移 23%。赔偿越贵,固定投入越该早花,最优措施整体上移一档。左轴两条:赔偿翻倍,日 10 单的年净收益从 19958 掉到 17038 元(−15%),日 3 单从 5854 掉到 4978 元(−15%)——小单量更脆,因为摊销占比高。

图 6 赔偿额 × 日均单量 的最优措施分区(星号为本案 10 单、15 元)

图 6 是二维分区:横轴单量(对数)、纵轴赔偿额,灰是无措施、橙是加固、绿是专箱。分界线是斜的——赔偿额涨,绿色向左扩;单量涨,绿色向下扩。星标 \((10,15)\) 落在绿区中央,说明本案结论对参数不敏感。

图 7 无措施洒漏率 × 日均单量 的三区图(虚线为 15% 加固门槛)

图 7 补上第三维:洒漏率。水平虚线 \(p_0=15\%\) 以上加固才值得(\(c_1/f+p_1\)),以下无措施更省;右侧全归专箱。三个区第一次同框:左下无措施、左上加固、右侧专箱。本案 18% 只比门槛高 3 个百分点,加固的净赚只有 0.45 元/单——薄,这解释了"加固好像没什么用"的直觉:一旦洒漏率降到 15% 以下,加固立刻变成亏本买卖。

4.5 前沿、分布、分解与"不接"的代价

图 8 年单量—单均措施成本的下包络(阴影为 2% 洒漏的不可行区)

图 8 把纵轴换成单均成本,固定成本的形状才显出来:无措施 2.70、加固 2.25 是两条水平线,专箱是 \(190/N+0.30\) 的双曲线,单量越大越贴 0.30 元的下界。包络在 97 单/年处从加固切到专箱,之后一路下滑并无限逼近阴影上边界——那条缝就是 190 元/年的摊销。阴影是不可行区:任何措施都做不到低于 2% 洒漏,单均成本不可能低于 0.30 元。规模越大越贴极限,尾巴上唯一还能再降的手段是换更低的 \(p_2\),不是省钱。

图 9 每 30 单洒漏次数的分布(柱)与累计概率(线,右轴)

图 9 用 6000 次二项抽样:无措施平均 5.4 次/30 单、加固 1.5 次、专箱 0.6 次(比值 9:1)。但"一次都不洒"的概率差得更狠:专箱 55%、加固 22%、无措施 0.2%。期望值决策买的是均值,骑手真正怕的是"这个月别出事"——图 9 就是这个差别的可视化。

图 10 单均措施成本的分解:赔偿期望、加固费、专箱摊销

图 10 把单均成本拆成三块。无措施 2.70 元全是赔偿期望;加固 2.25 元=0.75 赔偿 + 1.5 加固费;专箱日 10 单只有 0.35 元、日 3 单涨到 0.47 元。同一只箱子,单量差 3 倍,摊销差 0.12 元/单——这就是固定成本的全部脾气:它不随单量变,只随单量被摊薄。

单均净收益 5.6 元、无措施的期望赔偿 2.70 元,前者是后者的 2.1 倍。只要这个比值大于 1,接单就一定优于不接——洒漏是概率事件,赔的是 15 元、赚的是 5.6 元,接 3 单的毛利就够赔 1 次。所以"怕洒就不接汤品"是把 2.70 元的概率风险当成 15 元的确定损失来定价。要让"不接"翻身,赔偿额得涨到 \(f^{*}=(\bar w-c_1)/p_1=82\) 元,是现在的 5.5 倍。真正该优化的不是"接不接",而是"用什么接":19155 元/年已是这条曲线的上界,再往下只有两条路——把 \(p_2\) 压得更低,或把 \(N\) 做大。

5 结论

(1)固定成本要折成单均才能比:专箱 380 元摊 730 天=0.52 元/天,日 10 单时折 0.052 元/单,日 3 单时折 0.17 元/单。同一只箱子,单量一变,结论就变;把 380 元按"每次用都花"计,会把答案从"买"翻成"不买"。
(2)三个盈亏平衡量:加固↔专箱 0.267 单/天(97 单/年、8 单/月);无措施↔专箱 0.217 单/天(79 单/年);无措施↔加固无内部交点,加固从第 1 单起就省 0.45 元/单,等价临界赔偿额 11.54 元。
(3)分段结论:\(N<0.267\) 加固、\(N>0.267\) 专箱;"不投入"段只在 \(p_0<15\%\) 时张开(图 7)。本案日 10 单选专箱、不加固,年净收益 19155 元;行业常见日 3 单同样选专箱,年净 5613 元。
(4)"全部不接"是最贵的选项:它省下 0.52 元/天,却扔掉 20440 元/年毛利;单均收益 5.6 元是无措施期望赔偿 2.70 元的 2.1 倍,"怕赔 15 元就不接 5.6 元的单"在算术上不成立,除非赔偿额涨到 82 元。
(5)赔偿额上移措施:\(f\) 从 15 涨到 30 元,加固/专箱门限从 0.267 降到 0.217 单/天(图 5),降幅 23%。赔偿越贵越该提前花固定投入;洒漏率越低(图 7)越该退回变动成本的加固——两个方向相反,门限就是它们的交点。


参考文献

[1] Gurobi Optimization LLC. Gurobi Optimizer Reference Manual[Z]. 2024.

[2] Kellerer H, Pferschy U, Pisinger D. Knapsack Problems[M]. Berlin: Springer, 2004.

[3] Martello S, Toth P. Knapsack Problems: Algorithms and Computer Implementations[M]. Chichester: John Wiley & Sons, 1990.

[4] 司守奎, 孙玺菁. 数学建模算法与应用[M]. 3 版. 北京: 国防工业出版社, 2021.

复现方式:python batch_088.py;数据与结果见同目录 .csv / .json,图见 figs/

posted @ 2026-11-12 18:01  小青蛙电气  阅读(3)  评论(0)    收藏  举报