BULLWHIP EFFECT · 供应链仿真实验台
多级供应链里,越往上,订单波动越被放大——这就是牛鞭效应。在这个浏览器实验台里,你可以亲手调整 供货延迟、信息共享、仓库容积等参数,看波动怎么被放大、库存怎么积压、订单满足率怎么变化, 用真实数据理解供应链的"蝴蝶效应"。
Demo · Bullwhip Effect
五条波形是同一股需求信号:最下面的顾客需求几乎平稳,越往上游,订单波动越被放大——这就是牛鞭效应。
不用从头调参数——挑一个贴近你的问题,系统会自动配好一套参数,进入实验台即可直接计算。
我是饮料公司的供应链经理,上游动不动就缺货爆仓,想量化一下信息共享到底值不值。
课本说"订单越传越抖",我想亲眼看清楚每一级供应链是怎么把波动一步步放大的。
我是物流公司运营,想知道上游突然停供、仓库又放不下时,订单满足率会掉多少。
从上方三张卡片里挑一个贴近你的问题,参数已自动配好,也可以随时换成预设模板。
LadybugDB Wasm 引擎在浏览器内跑完仿真,三张图 + 一句人话结论直接呈现。
改"供货延迟""信息共享"等参数再点一次计算,看订单波动放大倍数怎么变。
一条线:供应商 → 制造商 → 经销商 → 零售商。越往上游,订单波动被放大得越厉害(节点色=BWR 状态,标签 BW 即波动放大倍数)。
APS 的核心数据全部是「图」:BOM 树、工艺路线、供应链网络、需求明细。图 = 约束生成器,CPLEX 在图上做 MIP 优化。
条件(输入)
成品→组件→子件的父子关系 + 每边用量系数 qty_per
结果(输出)
材料需求展开(BOM 爆炸):独立需求 × 沿路用量累乘 = 各层毛需求
图算法
树遍历、路径用量累乘、subgraph_isomorphism 找共享子件
条件(输入)
工序先后(precedence)+ 每工序 processing_time / 机器 / setup_time
结果(输出)
排程:工序最早开始/完工时间、关键路径、机器负载
图算法
topological_sort(工序排序)、critical path(最长 lead_time 路径)
条件(输入)
层级节点(lead_time / holding_cost / backorder_cost / capacity)+ 有向边(物料流)
结果(输出)
Bullwhip Effect BWR 逐层放大 / 库存放大 NSAmp / 缺货传播
图算法
链式 BWR、topological_sort、graph_signature、detect_drift_points
条件(输入)
独立需求(MPS)+ BOM 结构
结果(输出)
相关需求(MRP):按 BOM 沿路展开到各层件,需求波动沿树放大
图算法
需求传播(自底向上汇总、自顶向下展开)
| 图结构 | 决策变量 | 约束(由图生成) |
|---|---|---|
| BOM 树 | x_{ijt}:订单 i 在资源 j 时段 t 的生产量 | 物料守恒:产量 × qty_per ≥ 下游组件消耗 |
| 工艺路线 | y_{ijt}:0/1 开工指示 | 工序先后(precedence);每机器产能 Σ processing_time × x ≤ 可用 |
| 供应链网络 | I_{it}:库存;B_{it}:欠货 | 库存平衡:I_t = I_{t-1} + 到货 - 需求 + B 调整 |
| 需求明细 | D_{it}:满足量 | 需求满足 / 允许欠货上限 / 服务水平 |
| 目标:min 总成本 = 持有 + 缺货 + 换型 + 加班 | ||
流程:LadybugDB 存图 → 遍历图生成约束系数矩阵(MIP)→ CPLEX 分支定界+割平面求解 → 结果(计划/排程/库存)写回图。 图是约束生成器,CPLEX 是图上定义的 MIP 求解器。
同一组数据:全时域口径 CUM_BWR=3.64(把冷启动瞬态误判为"信息共享残留"),warm-up ≥10 期后收敛到 ≈1.0。有限时域方差会把瞬态污染成机制效应——评估 Bullwhip Effect 必须用稳态口径。
判定 A:命题 4 成立,依赖 φ_i iid 同分布假设(双口径一致、单调递减、Welch 单侧 p<1e-6)。此前 315 格扫描的脆弱性是固定 φ + 短时域的测量伪影,非命题本身问题。