4、负荷预测:短期负荷预测方法(时间序列、回归分析、神经网络)、预测误差评估指标
各位同行,咱们今天聊聊负荷预测。说实话,我在电力系统干了十几年,最头疼的就是这个事。负荷预测不准,后面的调度计划全是白搭。你想想看,发电计划排好了,结果实际负荷差了一大截,要么浪费燃料,要么拉闸限电,两头不讨好。
短期负荷预测,一般指未来几小时到几天的预测。我个人的习惯是,先搞清楚你要预测什么——是系统总负荷,还是某个区域的?时间粒度是15分钟,还是1小时?这些细节决定了你选什么方法。
4.1 时间序列方法
时间序列方法,说白了就是「用过去推测未来」。它假设负荷变化有规律可循,比如每天差不多同一个时间点用电量接近。我最早做项目时,用的就是最简单的移动平均法。
核心思想:负荷数据是一个随时间变化的序列,我们可以从中提取趋势、周期、随机波动三个成分。
常用的模型有这些:
- ARIMA模型:自回归滑动平均模型。它能处理非平稳序列,比如负荷有上升趋势时,先做差分让它变平稳,再建模。我在一个省级电网项目中用过,效果还行,但参数调起来挺费劲。
- 指数平滑法:给近期数据更高的权重。比如Holt-Winters模型,能同时处理趋势和季节性。嗯,这里要注意,季节性周期要选对,比如工作日和周末的负荷模式完全不同。
我的经验:时间序列方法适合数据干净、规律性强的场景。如果遇到节假日、极端天气,预测误差会明显变大。我曾经在春节前预测负荷,忘了考虑工厂停工的影响,结果偏差了15%以上,被领导叫去喝茶了。
4.2 回归分析方法
回归分析就不一样了,它不光看历史负荷,还引入外部因素。比如温度、湿度、星期几、是不是节假日。你想想看,夏天35度和25度,空调负荷能差多少?
常用的回归模型:
- 多元线性回归:假设负荷与各因素呈线性关系。公式长这样:
Load = a0 + a1*Temp + a2*Humidity + a3*IsHoliday + ... - 岭回归/LASSO:当自变量太多时,防止过拟合。我有个项目用了30多个特征,不加正则化,模型在训练集上完美,测试集上一塌糊涂。
避坑指南:我曾经犯过一个错误——把未来才知道的变量放进模型。比如用「当天的实际温度」预测「当天的负荷」,这在预测时根本拿不到。记住,只能用预测时刻之前已知的数据。
回归分析的优点是解释性强。你能清楚看到温度每升高1度,负荷增加多少兆瓦。但缺点也很明显——它假设关系是线性的,实际负荷和温度的关系往往是非线性的,比如超过某个阈值后,负荷增长会变快。
4.3 神经网络方法
说到神经网络,这几年确实火。说白了,它就是用一个复杂的非线性函数去拟合负荷数据。我最早接触是在2018年,当时用了一个三层的BP网络做短期预测,效果比传统方法好了不少。
常用的网络结构:
- BP神经网络:最基础的多层感知机。适合中小规模数据,训练速度快。但容易陷入局部最优,我一般会多跑几次,选最好的结果。
- LSTM(长短期记忆网络):专门处理时间序列的。它能记住长期依赖关系,比如前几天的负荷模式对今天的影响。我在一个地市级电网项目中,用LSTM比ARIMA的误差降低了约8%。
- CNN(卷积神经网络):把负荷数据当成一维图像处理。嗯,这个用得少,但在某些场景下效果意外的好。
关键点:神经网络不是万能的。它需要大量数据,而且调参很玄学。我建议先跑通一个简单模型,再逐步加复杂度。别一上来就搞几十层,容易过拟合。
下面是我画的一个短期负荷预测方法对比图,帮你理清思路:
4.4 预测误差评估指标
模型建好了,怎么评价它好不好?光看拟合曲线没用,得用数字说话。我一般会同时看几个指标,避免被单一指标误导。
| 指标名称 | 公式 | 说明 |
|---|---|---|
| MAE(平均绝对误差) | MAE = (1/n) * Σ|实际值 - 预测值| | 直观反映平均偏差大小,单位与负荷相同 |
| RMSE(均方根误差) | RMSE = sqrt((1/n) * Σ(实际值 - 预测值)²) | 对大误差惩罚更重,适合评估极端偏差 |
| MAPE(平均绝对百分比误差) | MAPE = (100%/n) * Σ|(实际值 - 预测值)/实际值| | 无量纲,便于不同规模系统对比 |
| R²(决定系数) | R² = 1 - (SS_res / SS_tot) | 衡量模型解释了多少方差,越接近1越好 |
注意:MAPE在负荷接近0时会变得很大,甚至无穷大。我遇到过凌晨负荷很低时,MAPE飙到几百%,其实绝对误差并不大。这时候看MAE更靠谱。
举个实际例子。我在一个项目里对比了三种方法:
# 假设某日24小时负荷预测结果(单位:MW)
实际负荷 = [120, 115, 110, 108, 112, 130, 150, 170, 185, 190, 195, 200,
198, 192, 185, 180, 175, 170, 165, 160, 155, 150, 140, 130]
# 时间序列方法预测
pred_arima = [118, 113, 112, 107, 114, 128, 148, 172, 183, 188, 193, 198,
196, 190, 183, 178, 173, 168, 163, 158, 153, 148, 138, 128]
# 计算MAE
mae = sum(abs(a - p) for a, p in zip(actual, pred_arima)) / 24
print(f"MAE = {mae:.2f} MW") # 输出:MAE = 2.33 MW
我个人习惯,做项目时至少同时看MAE和MAPE。如果MAPE在5%以内,算不错;3%以内,相当优秀。当然,不同电网规模、不同时间尺度,标准也不一样。我曾经在一个省级电网项目中,MAPE做到2.1%,领导还挺满意。
小技巧:评估时别忘了分时段看。比如白天和晚上的预测误差可能差别很大。我一般会按峰、平、谷三个时段分别计算误差,这样能发现模型在哪个时段表现差,针对性优化。
好了,关于短期负荷预测的方法和评估指标,今天就聊到这。记住,没有万能的方法,关键是根据你的数据特点、业务需求来选。多试几种,对比着看,总能找到最适合你的那个。