📦 需求预测模型

移动平均 · 指数平滑 · 趋势调整

📐 移动平均法

SMA · 基础平滑

将最近 k 期实际需求的算术平均值作为下一期预测。适合需求无明显趋势或季节的稳定场景。

Ft+1 = (At + At-1 + … + At-k+1) / k

✅ 计算简单 · 噪声抑制 · 滞后性

📈 指数平滑法

SES · 加权递减

赋予近期需求更高权重,平滑常数 α (0<α<1) 控制衰减速度。适用于无趋势、无季节的序列。

Ft+1 = α·At + (1−α)·Ft

✅ 自适应 · 存储需求小 · 适合实时

🚀 趋势调整指数平滑

Holt’s 线性模型

在指数平滑基础上增加趋势因子 β,同时平滑水平与趋势。适合有线性趋势但无季节性的需求。

Lt = α·At + (1−α)·(Lt-1+Tt-1)
Tt = β·(Lt−Lt-1) + (1−β)·Tt-1
Ft+m = Lt + m·Tt

✅ 趋势追踪 · 中短期预测 · 补货利器

模型参数与适用场景

模型 核心参数 趋势处理 数据要求 安全库存适配
移动平均法 k (期数) 滞后,无显式趋势 近期 k 期数据 基础静态安全库存
指数平滑法 α (平滑常数) 无趋势假设 历史需求 + 上一期预测 动态安全库存 (MAD)
趋势调整指数平滑 α, β (平滑+趋势) 线性趋势显式建模 历史需求 + 初始趋势 趋势性安全库存 (MSE)

🧩 预测模型选择架构

📋 历史需求 时间序列数据 趋势? 季节? 移动平均法 k=3,5,7… 指数平滑法 α=0.1~0.3 趋势调整指数平滑 α, β 双参数 📦 预测值 → 安全库存

根据需求特征选择合适模型,优化补货与安全库存

🐍 Python 快速实现 (趋势调整指数平滑)

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