3、风功率预测技术:数值天气预报、统计预测方法、机器学习预测模型、预测误差分析

风功率预测,说白了就是给风电场装个「天气预报大脑」。

我做了这么多年储能系统,最深的体会就是:预测不准,储能白干。你想想看,如果不知道明天风怎么吹,储能系统要么充不满,要么放不出,收益全打水漂。

这一章,我把风功率预测的四个核心模块掰开揉碎了讲。都是我在项目里踩过的坑和攒下的经验。

3.1 数值天气预报(NWP)—— 预测的「地基」

数值天气预报,简称NWP。它是所有预测方法的基础。

原理其实不复杂:把大气运动方程扔进超级计算机里算。但这里有个关键点——分辨率

核心参数:

  • 全球模型(如GFS):分辨率约25km,适合72小时以上预测
  • 区域模型(如WRF):分辨率可到1km,适合48小时内预测
  • 我建议:做风储项目,至少用区域模型降尺度到3km以内

我在内蒙古一个项目里吃过亏。当时直接用了全球模型的数据,结果预测风速和实际差了4m/s。储能系统按预测来充放电,一天亏了十几万。后来换成WRF模型降尺度到1km,误差才降到1.5m/s以内。

实战技巧:

NWP数据不是拿来就能用的。一定要做「站点订正」。我习惯用最近3个月的实测数据,做一个线性回归校正。简单,但有效。

3.2 统计预测方法 —— 老办法,但管用

统计方法,说白了就是「用历史数据说话」。

常用的有几种:

  • 持续法(Persistence):假设未来风速和现在一样。适合超短期(15分钟内)预测。我一般用它做基准线,看看其他方法有没有进步。
  • 时间序列法(ARIMA):把风速当成时间序列来建模。适合1-4小时预测。嗯,这里要注意:ARIMA对数据平稳性要求高,我通常先做差分处理。
  • 卡尔曼滤波:动态修正预测值。我特别喜欢这个方法,因为它能实时吸收新数据。

举个例子。我在甘肃一个风电场做过对比:

方法 1小时预测误差(RMSE) 4小时预测误差(RMSE)
持续法 12.3% 18.7%
ARIMA 9.1% 14.2%
卡尔曼滤波 7.8% 11.5%

你看,统计方法虽然老,但用好了,误差能降不少。

3.3 机器学习预测模型 —— 现在的「主力军」

机器学习,这几年在风功率预测里火得不行。

我常用的模型有三类:

  1. 随机森林(Random Forest):抗过拟合能力强。我习惯用200棵树,特征选风速、风向、温度、湿度、气压。
  2. XGBoost:梯度提升树,精度高。但要注意调参,我一般用网格搜索找最优参数。
  3. LSTM(长短期记忆网络):专门处理时间序列。适合捕捉风速的时序特征。

给你看一段我常用的LSTM代码框架:

# 风功率预测 LSTM 模型示例
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

def build_lstm_model(input_shape):
    model = Sequential()
    model.add(LSTM(64, return_sequences=True, input_shape=input_shape))
    model.add(Dropout(0.2))
    model.add(LSTM(32, return_sequences=False))
    model.add(Dropout(0.2))
    model.add(Dense(16, activation='relu'))
    model.add(Dense(1))  # 输出预测功率
    model.compile(optimizer='adam', loss='mse')
    return model

# 输入数据格式:[样本数, 时间步长, 特征数]
# 我习惯用过去6小时数据,每15分钟一个点,共24个时间步

避坑指南:

我曾经犯过一个低级错误:直接把NWP数据扔进LSTM,没做归一化。结果模型训练了三天,loss死活不降。后来发现风速范围0-25m/s,气压范围850-1050hPa,量级差太多。记住:一定要做Min-Max归一化

3.4 预测误差分析 —— 知道错在哪,才能改

预测不可能100%准确。关键是知道误差长什么样。

我常用的误差指标:

  • RMSE(均方根误差):对大误差惩罚大。适合评估极端情况。
  • MAE(平均绝对误差):直观,容易理解。
  • MAPE(平均绝对百分比误差):看相对误差。但风速接近0时会爆炸,要小心。

更重要的是误差分布分析。我习惯画误差直方图:

# 误差分布分析示例
import matplotlib.pyplot as plt
import numpy as np

errors = y_true - y_pred
plt.hist(errors, bins=50, edgecolor='black')
plt.xlabel('预测误差 (MW)')
plt.ylabel('频次')
plt.title('风功率预测误差分布')
plt.axvline(x=0, color='red', linestyle='--')
plt.show()

# 如果误差呈正态分布,说明模型没有系统性偏差
# 如果偏态,说明有未捕捉到的模式

我的经验:

误差分析最容易被忽视的是「时序相关性」。我见过一个项目,整体RMSE很好看,但误差在每天傍晚突然变大。后来发现是NWP对海陆风转换模拟不准。这种系统性误差,光看RMSE是发现不了的。

另外,我建议做「分风速段误差分析」:

风速区间 样本占比 RMSE MAE
0-3 m/s 15% 0.8 MW 0.5 MW
3-8 m/s 45% 2.1 MW 1.4 MW
8-15 m/s 30% 3.5 MW 2.2 MW
>15 m/s 10% 5.2 MW 3.8 MW

你看,风速越高,误差越大。这很正常,因为高风速时湍流更强。但知道了这个规律,你就可以在储能策略里做针对性补偿。

实战建议:

我习惯把预测误差分成三块:

  1. NWP误差:来自气象模型本身
  2. 模型误差:来自预测算法
  3. 随机误差:完全不可预测的部分

前两块可以改进,第三块只能接受。做储能调度时,我会留出10-15%的容量裕度来应对随机误差。

风功率预测技术知识体系 风功率预测 数值天气预报 NWP (GFS/WRF) 统计预测方法 ARIMA / 卡尔曼滤波 机器学习模型 XGBoost / LSTM 预测误差分析 RMSE / MAE / 分布分析 分辨率 1-25km 站点订正 持续法 / ARIMA 卡尔曼滤波 随机森林 XGBoost / LSTM RMSE / MAE / MAPE 误差分布分析 分风速段分析 目标:提升预测精度 → 优化储能收益

最后说一句:风功率预测没有银弹。NWP、统计方法、机器学习,各有各的适用场景。我个人的做法是:多模型融合。用NWP做长期趋势,用统计方法做短期修正,用机器学习捕捉非线性关系。三个模型投票,比任何一个单独用都靠谱。

专注资料整理