4. 静态阈值配置(一):基于历史平均消耗量的固定安全库存天数设定

静态阈值是缺料预警体系中最基础、最易实施的配置方式。本章聚焦于固定安全库存天数的设定方法,即根据物料的历史平均日消耗量,将安全库存量表达为“可维持供应X天”的形式。这种方法适用于消耗模式相对稳定、提前期波动较小的物料。

4.1 核心概念与计算公式

固定安全库存天数法的核心逻辑是:安全库存量 = 历史平均日消耗量 × 固定安全库存天数。其中,历史平均日消耗量通常取过去N天的移动平均值,固定安全库存天数则由计划员根据物料的重要度、供应风险和服务水平要求来设定。

参数 符号 说明 典型取值
历史平均日消耗量 ADU 过去N天(如30/60/90天)的总消耗量 ÷ N 按物料品类取30天或90天
固定安全库存天数 SSD 计划员设定的固定天数,代表安全库存可覆盖的供应中断天数 A类:7~14天;B类:3~7天;C类:1~3天
安全库存量 SS SS = ADU × SSD 计算结果向上取整
预警触发点 ROP ROP = 提前期消耗量 + SS 提前期消耗量 = ADU × 提前期天数
实践建议:对于首次配置静态阈值的物料,建议先采用30天历史数据计算ADU,并设置保守的SSD值(如3~5天),运行2~4周后再根据预警准确率逐步调整。

4.2 配置步骤与参数决策树

固定安全库存天数的配置需要经过以下五个步骤,每一步都涉及关键参数的选择:

  1. 确定历史数据窗口:选择计算ADU的时间范围。窗口过短(如7天)易受随机波动影响;窗口过长(如180天)则对近期趋势变化反应迟钝。
  2. 计算ADU:排除异常值(如促销、停产导致的突增/突降)后,计算日均消耗量。
  3. 设定SSD:根据物料ABC分类、供应提前期稳定性、缺料后果严重度三个维度综合赋值。
  4. 计算SS与ROP:代入公式得到安全库存量和再订货点。
  5. 校验与微调:将计算结果与历史缺料记录对比,确认预警阈值是否合理。
参数决策矩阵(示例):
物料类别 供应稳定性 缺料后果 建议SSD(天) 数据窗口(天)
A类 低(供应商交期波动>20%) 产线停线 10~14 90
A类 高(供应商交期波动<10%) 产线停线 5~7 60
B类 中 影响排产 3~5 30
C类 高 可替代 1~3 30

4.3 静态阈值配置流程(SVG)

下图展示了从历史数据采集到预警阈值生效的完整配置流程,其中固定安全库存天数(SSD)是计划员唯一需要手动输入的核心参数:

固定安全库存天数配置流程 ① 历史数据采集 取过去N天消耗记录 ② 异常值清洗 剔除促销/停产数据 ③ 计算ADU 总消耗量 ÷ N ④ 设定SSD 计划员根据ABC分类赋值 ⑤ 计算SS与ROP SS=ADU×SSD ⑥ 校验与生效 对比历史缺料记录 关键参数 ADU:历史平均日消耗量 SSD:固定安全库存天数 SS:安全库存量

4.4 配置示例与代码实现

以下是一个基于Python的静态阈值配置示例,演示如何从历史消耗数据中计算ADU,并根据设定的SSD生成安全库存量和预警阈值:

import pandas as pd
import numpy as np

# 示例:某物料过去30天的日消耗量(单位:件)
daily_consumption = [120, 115, 130, 125, 118, 122, 128, 135, 110, 105,
                     125, 130, 120, 115, 128, 132, 118, 122, 126, 130,
                     124, 119, 127, 133, 121, 116, 129, 131, 123, 117]

# 参数配置
N = 30                     # 历史数据窗口(天)
SSD = 7                    # 固定安全库存天数(计划员设定)
lead_time = 5              # 供应商提前期(天)

# 计算ADU(排除异常值:采用中位数或截尾均值)
series = pd.Series(daily_consumption)
# 使用IQR方法剔除异常值
Q1 = series.quantile(0.25)
Q3 = series.quantile(0.75)
IQR = Q3 - Q1
filtered = series[(series >= Q1 - 1.5*IQR) & (series <= Q3 + 1.5*IQR)]
ADU = round(filtered.mean(), 1)

# 计算安全库存量和再订货点
SS = round(ADU * SSD)          # 安全库存量
ROP = round(ADU * lead_time) + SS  # 预警触发点(再订货点)

print(f"历史平均日消耗量 (ADU): {ADU} 件/天")
print(f"固定安全库存天数 (SSD): {SSD} 天")
print(f"安全库存量 (SS): {SS} 件")
print(f"预警触发点 (ROP): {ROP} 件")
print(f"当前库存低于 {ROP} 件时触发缺料预警")
注意事项:
  • ADU计算必须排除异常值,否则会导致安全库存量虚高或虚低。建议使用IQR或3σ方法进行数据清洗。
  • SSD的设定不宜过大,否则会造成库存积压;也不宜过小,否则无法有效应对供应波动。建议从保守值开始,逐步调优。
  • 对于季节性明显的物料,固定安全库存天数法可能不适用,应考虑动态阈值或季节性分解方法。

4.5 静态阈值与动态阈值的适用场景对比

固定安全库存天数法属于静态阈值配置,与动态阈值方法相比,各有优劣。下表帮助您快速判断何时选择静态方案:

对比维度 静态阈值(固定SSD) 动态阈值(自适应SSD)
消耗模式 稳定、低波动 波动大、有趋势或季节性
配置复杂度 低,计划员手动设定即可 高,需算法模型支持
维护成本 低,定期复核即可 高,需持续监控模型效果
响应速度 慢,需人工调整SSD 快,系统自动调整
适用物料 C类、部分B类 A类、关键B类
过渡策略:对于初次实施缺料预警的企业,建议先对所有物料采用静态阈值配置(固定SSD),运行1~2个季度积累数据后,再对A类物料逐步切换为动态阈值方案。