3. 服务水平参数基础:Fill Rate vs Cycle Service Level、缺货概率与安全库存公式推导
在供应链计划系统中,服务水平参数是连接需求波动、库存策略与客户满意度的核心杠杆。本章将系统梳理两种最常用的服务水平度量——订单满足率(Fill Rate)与周期服务水平(Cycle Service Level, CSL),推导缺货概率与安全库存的数学关系,并对比两者在仿真场景中的适用差异。
3.1 两种服务水平的定义与核心差异
| 维度 | 订单满足率(Fill Rate) | 周期服务水平(CSL) |
|---|---|---|
| 定义 | 从库存立即满足的订单需求量占总需求量的百分比 | 在一个补货周期内不发生缺货的概率 |
| 关注点 | 缺货的数量影响 | 缺货的频率影响 |
| 计算公式 | FR = 1 − (期望缺货量 / 周期期望需求量) | CSL = P(周期内总需求 ≤ 再订货点) |
| 典型应用 | 零售、分销、高价值单品 | 制造补货、BOM 物料、连续补货 |
| 对安全库存的敏感度 | 高——少量增加安全库存可显著提升 FR | 中——CSL 提升需要更大幅度的安全库存增加 |
关键认知:Fill Rate 直接衡量客户体验(缺了多少货),CSL 衡量库存策略的稳健性(多久缺一次货)。在仿真系统中,两者不可互换,必须根据业务目标选择主导指标。
3.2 缺货概率与周期服务水平的关系
缺货概率(Stockout Probability)是 CSL 的互补概率:
缺货概率 = 1 − CSL
假设补货提前期 L 内的总需求服从正态分布 N(μL, σL),再订货点 ROP = μL + SS,则:
CSL = Φ( SS / σL )
缺货概率 = 1 − Φ( SS / σL )
其中 Φ(·) 为标准正态累积分布函数。下表给出常见 CSL 目标对应的安全因子 z:
| CSL 目标 | 缺货概率 | 安全因子 z | 说明 |
|---|---|---|---|
| 90.0% | 10.0% | 1.28 | 低缺货容忍度 |
| 95.0% | 5.0% | 1.64 | 常见商业标准 |
| 97.5% | 2.5% | 1.96 | 关键物料 |
| 99.0% | 1.0% | 2.33 | 高值/战略品 |
| 99.9% | 0.1% | 3.09 | 生命攸关/合规物料 |
仿真调试提示:当 CSL 目标超过 97.5% 后,安全库存呈非线性陡增。在数据传输调试中,需注意安全库存字段的精度与溢出边界。
3.3 安全库存公式推导(基于 CSL)
安全库存(Safety Stock, SS)的核心公式推导分三步:
- 设定 CSL 目标:确定期望的周期服务水平,例如 CSL = 95%。
- 查表或计算安全因子 z:z = Φ−1(CSL)。
- 乘以提前期需求标准差:SS = z × σL。
其中 σL 的计算取决于需求与提前期的独立性:
若需求与提前期独立:
σL = √( L × σd² + μd² × σLT² )
若仅需求波动(提前期固定):
σL = σd × √L
符号说明:
- μd:单位时间平均需求
- σd:单位时间需求标准差
- L:平均提前期
- σLT:提前期标准差
常见错误:直接使用 σd × √L 而忽略提前期波动,会导致安全库存低估 20%~40%。在仿真数据调试中,务必校验 σLT 字段是否被正确传入安全库存计算模块。
3.4 基于 Fill Rate 的安全库存公式
Fill Rate 导向的安全库存计算需要引入期望缺货量(Expected Shortage per Cycle, ESC):
FR = 1 − ESC / (Q × D)
其中:
ESC = σL × [ f(z) − z × (1 − Φ(z)) ]
f(z) = 标准正态概率密度函数
Φ(z) = 标准正态累积分布函数
Q = 订货批量
D = 周期期望需求量
给定 FR 目标,需通过迭代求解 z,再计算 SS = z × σL。下表对比两种方法的安全库存结果:
| 服务水平目标 | CSL 法 SS(σL 倍数) | Fill Rate 法 SS(σL 倍数) | 差异说明 |
|---|---|---|---|
| 95% | 1.64 | 1.28 ~ 1.45 | FR 法通常更低,因考虑批量缓冲 |
| 97.5% | 1.96 | 1.65 ~ 1.80 | 差距随目标升高而缩小 |
| 99% | 2.33 | 2.05 ~ 2.20 | 高目标下两者趋近 |
3.5 服务水平参数选择决策流程
3.6 数据传输调试中的关键字段映射
在供应链计划系统的数据接口中,服务水平参数通常以以下字段传递:
| 字段名 | 数据类型 | 取值范围 | 调试要点 |
|---|---|---|---|
SERVICE_LEVEL_TYPE |
VARCHAR(10) | 'CSL' / 'FILL_RATE' | 枚举值必须大写,否则解析失败 |
SERVICE_LEVEL_TARGET |
DECIMAL(5,4) | 0.5000 ~ 0.9999 | 注意精度:0.95 应传 0.9500 |
SAFETY_FACTOR_Z |
DECIMAL(6,4) | 0.0000 ~ 4.0000 | 由系统计算或外部传入,需校验非负 |
DEMAND_STD_DEV_LT |
DECIMAL(12,4) | ≥ 0 | 提前期需求标准差,单位与需求一致 |
SAFETY_STOCK |
DECIMAL(12,2) | ≥ 0 | 最终输出,四舍五入到两位小数 |
仿真调试案例:某项目将 CSL=95% 误传为 0.95(缺少两位小数填充),导致下游安全库存计算模块解析为 0.9500 但四舍五入逻辑触发边界错误,最终安全库存偏差 +12%。修复方案:在数据管道中增加
FORMAT(SERVICE_LEVEL_TARGET, '0.0000') 强制格式化。
3.7 本章小结
- Fill Rate 与 CSL 是两种本质不同的服务水平度量,分别对应缺货数量与缺货频率。
- 安全库存公式的核心是 SS = z × σL,但 z 的求解路径因服务水平类型而异。
- CSL 法直接查标准正态分位数;Fill Rate 法需通过 ESC 迭代求解。
- 提前期波动(σLT)不可忽略,否则安全库存严重低估。
- 数据传输调试中,字段精度、枚举值大小写、四舍五入边界是三大高频故障点。