将最近 k 期实际需求的算术平均值作为下一期预测。适合需求无明显趋势或季节的稳定场景。
✅ 计算简单 · 噪声抑制 · 滞后性
赋予近期需求更高权重,平滑常数 α (0<α<1) 控制衰减速度。适用于无趋势、无季节的序列。
✅ 自适应 · 存储需求小 · 适合实时
在指数平滑基础上增加趋势因子 β,同时平滑水平与趋势。适合有线性趋势但无季节性的需求。
✅ 趋势追踪 · 中短期预测 · 补货利器
| 模型 | 核心参数 | 趋势处理 | 数据要求 | 安全库存适配 |
|---|---|---|---|---|
| 移动平均法 | k (期数) | 滞后,无显式趋势 | 近期 k 期数据 | 基础静态安全库存 |
| 指数平滑法 | α (平滑常数) | 无趋势假设 | 历史需求 + 上一期预测 | 动态安全库存 (MAD) |
| 趋势调整指数平滑 | α, β (平滑+趋势) | 线性趋势显式建模 | 历史需求 + 初始趋势 | 趋势性安全库存 (MSE) |
根据需求特征选择合适模型,优化补货与安全库存
def holt_forecast(demand, alpha=0.3, beta=0.1, initial_trend=0, m=1):
"""趋势调整指数平滑 (Holt's linear)"""
level = demand[0]
trend = initial_trend
forecast = []
for t in range(1, len(demand)):
last_level = level
level = alpha * demand[t] + (1 - alpha) * (level + trend)
trend = beta * (level - last_level) + (1 - beta) * trend
forecast.append(level + m * trend)
return forecast
# 示例:周需求 [120, 135, 128, 145, 152]
demand_series = [120, 135, 128, 145, 152]
pred = holt_forecast(demand_series, alpha=0.4, beta=0.2)
print("下一期预测:", round(pred[-1], 1)) # 输出 160.2