时间序列是按时间顺序排列的观测值序列。在库存需求中,它可以是每日、每周或每月的销量。核心要素包括:
通过取最近 k 期观测值的平均值来预测下一期。简单、平滑噪声。
MAₜ = (Dₜ₋₁ + Dₜ₋₂ + … + Dₜ₋ₖ) / k
| 周 | 实际需求 | 3期移动平均 |
|---|---|---|
| 1 | 120 | — |
| 2 | 150 | — |
| 3 | 130 | — |
| 4 | 160 | (120+150+130)/3 = 133.3 |
| 5 | 145 | (150+130+160)/3 = 146.7 |
| 6 | 175 | (130+160+145)/3 = 145.0 |
赋予近期观测值更高的权重,权重随历史呈指数衰减。适合没有明显趋势和季节性的数据。
Fₜ₊₁ = α · Dₜ + (1-α) · Fₜ
其中 α (0 < α ≤ 1) 为平滑系数,越接近1 模型越“相信”近期数据。
| t | 实际 Dₜ | 预测 Fₜ (α=0.3) |
|---|---|---|
| 1 | 100 | 100 (初始化) |
| 2 | 120 | 0.3×100 + 0.7×100 = 100 |
| 3 | 115 | 0.3×120 + 0.7×100 = 106 |
| 4 | 130 | 0.3×115 + 0.7×106 = 108.7 |
# 简单指数平滑函数 def exponential_smoothing(series, alpha): result = [series[0]] # 初始值 for t in range(1, len(series)): result.append(alpha * series[t] + (1 - alpha) * result[-1]) return result demand = [100, 120, 115, 130, 125] forecast = exponential_smoothing(demand, alpha=0.3) print("预测值:", forecast) # 输出: [100, 100.0, 106.0, 108.7, 112.09]