4. 阈值调优的数学基础
在供应商交付流程中,缺料预警阈值的设定并非凭经验拍脑袋,而是建立在成熟的统计学与运筹学基础之上。本章将系统梳理支撑阈值调优的四大数学支柱:正态分布(描述需求波动形态)、标准差(量化波动幅度)、服务水平(定义风险容忍度)以及安全系数 Z 值(连接概率与库存决策的桥梁)。
4.1 正态分布:需求波动的概率模型
在供应链场景中,物料的历史需求量、供应商交付提前期等关键变量,在排除趋势与季节性后,其随机波动部分通常近似服从正态分布。正态分布的概率密度函数由均值 μ 和标准差 σ 唯一确定,其曲线呈对称钟形,68.27% 的数据落在 μ ± σ 区间内,95.45% 落在 μ ± 2σ 区间内,99.73% 落在 μ ± 3σ 区间内。
4.2 标准差:量化波动幅度的核心指标
标准差 σ 衡量数据围绕均值的离散程度。在缺料预警场景中,我们主要关注两个维度的标准差:
| 标准差类型 | 符号 | 计算对象 | 典型数据源 |
|---|---|---|---|
| 需求标准差 | σD | 单位时间(如日/周)需求量 | 历史出库记录、销售预测误差 |
| 提前期标准差 | σLT | 供应商交付周期 | 采购订单收货记录 |
| 综合标准差 | σtotal | 提前期内的总需求波动 | σD 与 σLT 的合成 |
当需求与提前期相互独立时,综合标准差的计算公式为:
σ_total = √(LT_avg × σ_D² + D_avg² × σ_LT²)
其中 LT_avg 为平均提前期,D_avg 为平均单位时间需求量。该公式是安全库存计算的核心合成公式。
numpy.std(ddof=1) 或 pandas.Series.std() 默认使用样本标准差。
4.3 服务水平:风险容忍度的量化表达
服务水平(Service Level, SL)是指在补货周期内不发生缺货的概率。常见的服务水平定义有两种:
- 周期服务水平(CSL): 单个补货周期内不缺货的概率。
- 订单满足率(Fill Rate): 从库存中直接满足的需求比例。
在阈值调优场景中,我们主要使用周期服务水平,因为它直接对应安全系数 Z 值的查表逻辑。以下是常见服务水平与对应 Z 值的对照表:
| 服务水平 (CSL) | 缺货概率 | 安全系数 Z 值 | 适用场景举例 |
|---|---|---|---|
| 90.0% | 10.0% | 1.28 | 低值易耗品、C 类物料 |
| 95.0% | 5.0% | 1.65 | 常规生产物料、B 类物料 |
| 97.5% | 2.5% | 1.96 | 关键工序物料、A 类物料 |
| 99.0% | 1.0% | 2.33 | 战略物料、瓶颈资源 |
| 99.9% | 0.1% | 3.09 | 生命攸关、合规强制物料 |
4.4 安全系数 Z 值:从概率到库存的桥梁
安全系数 Z 值是标准正态分布的分位数,它将服务水平(概率)转换为安全库存的倍数。安全库存的基本计算公式为:
SS = Z × σ_total
其中 SS 为安全库存量,Z 为安全系数,σ_total 为综合标准差。缺料预警阈值(Reorder Point, ROP)则为:
ROP = D_avg × LT_avg + SS = D_avg × LT_avg + Z × σ_total
4.5 Python 实战:计算 Z 值与安全库存
在 Python 中,我们可以使用 scipy.stats.norm 模块的 ppf 方法(Percent Point Function)将服务水平转换为 Z 值,并计算安全库存与预警阈值。
import numpy as np
from scipy import stats
# 输入参数
service_level = 0.95 # 95% 服务水平
D_avg = 100 # 日均需求
sigma_D = 20 # 需求标准差
LT_avg = 7 # 平均提前期(天)
sigma_LT = 1.5 # 提前期标准差(天)
# 计算 Z 值
Z = stats.norm.ppf(service_level)
print(f"安全系数 Z 值: {Z:.4f}") # 输出: 1.6449
# 计算综合标准差
sigma_total = np.sqrt(LT_avg * sigma_D**2 + D_avg**2 * sigma_LT**2)
print(f"综合标准差: {sigma_total:.2f}") # 输出: 158.11
# 计算安全库存
SS = Z * sigma_total
print(f"安全库存: {SS:.0f} 件") # 输出: 260 件
# 计算预警阈值(再订货点)
ROP = D_avg * LT_avg + SS
print(f"预警阈值 (ROP): {ROP:.0f} 件") # 输出: 960 件
4.6 阈值调优的数学决策框架
综合以上概念,阈值调优的数学决策可归纳为以下步骤:
- 数据清洗与正态性检验: 对历史需求与提前期数据进行 Shapiro-Wilk 或 KS 检验,确认是否近似正态分布。
- 参数估计: 计算 D_avg、σ_D、LT_avg、σ_LT。
- 服务水平决策: 根据物料分类(ABC-XYZ 矩阵)确定目标 CSL。
- Z 值查表/计算: 使用
stats.norm.ppf(CSL)获取 Z 值。 - 综合标准差合成: 代入公式计算 σ_total。
- 安全库存与阈值计算: 输出 SS 与 ROP。
- 仿真验证: 使用历史数据回测缺货率,若偏差超过 1%,调整 Z 值或改用非参数方法。
本章的数学基础为后续的阈值动态调优算法提供了坚实的理论支撑。在下一实战章节中,我们将基于这些公式,构建一个完整的缺料预警阈值计算引擎,并处理多物料、多供应商的复杂场景。