女装/决策与优化/求解运行与性能
L3O15P1
设计稿 v2.0
‹ 仿真与 What-if 沙盘参数自动调优 ›☰ 总览功能地图
王
王运营
总部 · 商品运营

求解运行与性能

候选池怎么变成决策结果、求解规模多大、多久出结果、超时了怎么办。核心是两件事:过滤规则要可解释,超时必须降级而不是失败。

i业务价值:O15 —— 决策批次是有时间窗的(凌晨 02:10 起跑,必须在出单前完成)。行业实践是"分品类拆网 → 贪心/最小成本流 → 局部 MIP 精修"分层求解,并设硬超时与降级启发式:宁可给一个稍差但按时可用的方案,也不能让整批决策失败。前置条件:候选池生成规则、分层拆网配置、超时阈值与降级策略、批次快照可回溯(否则事后无法复算)。功能编号 O15O10G1
候选池行数
14,968行
规则生成的款店组合
决策结果行数
330行
过滤率 97.8%
总耗时
4分12秒
SLA ≤ 10 分钟
硬超时阈值
180秒
超时自动降级启发式
MIP gap
0.8%
达到 1.0% 即提前收敛
降级次数
0次
本批次未触发降级

候选池 → 决策结果:过滤规则逐步拆解

业务误读高发区:14,968 与 330 是两个口径,分母不同不可直接比较
O15D5
STEP 1
取候选池
14,968 行
STEP 2
字段过滤
6,240 行
STEP 3
约束过滤
2,180 行
STEP 4
门槛过滤
880 行
STEP 5
收益过滤
412 行
STEP 6
包裹合并
330 行
步骤过滤规则(可解释)输入行数输出行数剔除行数累计过滤率耗时
① 取候选池目标库存 > 现有库存(含在单在途)的款店组合,按品类拆网—14,96800.0%18s
② 字段过滤关键字段缺失(门店画像/陈列容量/尺寸曲线)、未进入模型(#999999)、脏数据14,9686,2408,72858.3%42s
③ 约束过滤不允许调出(#ff595e)/ 不允许调拨入(#896bb3)/ 不允许补货入(#3e8965)/ 保护期内6,2402,1804,06085.4%56s
④ 门槛过滤缺口 < 起调量 2 件、单包裹 < 2 件、单店包裹 > 15 个、全国库存 < 80 件集中处理2,1808801,30094.1%38s
⑤ 收益过滤调拨收益 ≤ 0(X4)、追单未通过五项检查、清货回收额 < 物流成本88041246897.2%31s
⑥ 包裹合并同调出门店同线路合并包裹、尺码凑整(SKC→SKU 分解后)4123308297.8%27s
候选池 14,968 行 → 决策结果 330 行,逐级可解释;每一级都可下钻到被剔除的具体行
每页

求解规模与分层策略

分品类拆网 → 贪心/最小成本流 → 局部 MIP 精修
O10
层级方法规模耗时状态
L1 分品类拆网按中类 + 区域拆成独立子网络(外套/针织/裙装/裤装/羽绒/衬衫/大衣)7 个子网 / 14,968 行1分38秒完成
L2 贪心初始解就近分配 + 缺口优先(TOP 款优先、销量大优先)2,180 行候选46 秒完成
L3 最小成本流区域内调拨作为线性网络流求解(运输问题)2,180 行 → 412 行21 秒完成
L4 局部 MIP 精修仅对跨区 + 固定费用 + 起调量的争议行求 MILP,设 gap 1.0%66 行 / 24 个包裹变量1分03秒gap 0.8%
L5 包裹后处理包裹合并、凑整、2 件起调与 15 包裹上限校验412 → 330 行24 秒完成
合计 4 分 12 秒;分层的关键是"先降维再精确",不要把 1.5 万行整体送进 MILP
每页

求解过程监控

每一步都可断点续跑,失败不从头再来
STEP 1
候选池
02:10:00
STEP 2
字段过滤
02:10:42
STEP 3
约束过滤
02:11:38
STEP 4
分层求解
02:12:14
STEP 5
出单
02:14:12
02:10:00 · 取数窗口开启
载入决策日快照 14,968 行候选(冻结快照 ID SNAP20251021)
02:10:42 · 字段过滤完成
剔除 8,728 行(字段缺失 6,912 / 未进入模型 926 / 脏数据 890)
02:11:38 · 约束过滤完成
剔除 4,060 行(不允许调出 3,120 / 不允许调拨入 640 / 不允许补货入 300)
02:12:14 · 分层求解启动
7 个子网并行,并发度 4;L4 局部 MIP 求解中(gap 0.8%)
02:14:12 · 求解完成
330 行决策结果,耗时 4 分 12 秒,未触发降级
02:15:00 · 待出单
等待人工确认后下发 WMS

求解耗时分布(近 32 个批次)

越稳定越可信:耗时波动主要来自 L4
单批次耗时(秒)均值 268 秒 / 峰值 312 秒 / SLA 600 秒
P50 耗时
268 秒
P95 耗时
312 秒
最慢环节
L4 局部 MIP(1 分 03 秒,占 25%)
并发度
4(受 ERP 取数接口限流约束)
超时告警
耗时 > 480 秒触发预警;> 600 秒判定 SLA 违约

硬超时与降级启发式

宁可给稍差但按时的方案,也不能整批失败

降级必须留痕

降级方案与正常方案在决策表里必须可区分(标注"降级启发式解 + 未达 gap 目标"),并且强制人工复核。最怕的是降级了但业务看不出来,把近似解当成最优解执行。

资源与瓶颈

CPU 峰值利用率32 核 / 4 并发
内存峰值18.4 GB / 32 GB
ERP 取数接口占用限流 60%–80%
MIP 求解器许可占用4 / 8 个实例

规模上限与压测基线

当前规模
382 SKC × 85 门店 = 32,470 组合(14,968 行候选)
设计上限
2,000 SKC × 400 门店 = 800,000 组合
压测基线
80 万组合下分品类拆网后单子网 ≤ 12 万行,L2+L3 ≤ 90 秒
推荐配置
32 核 / 32 GB / MIP 许可 4 并发
扩展策略
拆网粒度从"中类"细化到"中类 + 价格带"

异常与兜底

异常触发条件处理
求解超时单子网 > 60s该子网降级为贪心解
MIP 不可行约束互斥放松起调量 → 再放松跨区
快照缺失无决策日快照任务中断并告警(不可复算)
取数延迟POS 延迟 > 6h按门店剔除该店候选
内存溢出> 28 GB拆网粒度细化 + 落盘中间解
!口径提示:本页所有比例的分母都是候选池 14,968 行(不是决策结果 330 行)。第 ② 步剔除 8,728 行里,"未进入模型"(#999999)占 926 行 —— 这一项最容易被业务误读成"模型漏算了",实际是本次决策范围之外的款店组合,需在导出说明里写清楚。