李春平,张沛,彭春华,尹瑞,时珉
(1.华东交通大学电气与自动化学院,江西省 南昌市 330013;2.国网河北省电力有限公司,河北省石家庄市 050021)
由于风电的波动性和间歇性特点,并网风力发电在提供清洁能源的同时,给电力系统的安全、稳定运行带来了严峻挑战[1]。精确的实时风电功率预测能够帮助调度滚动地修正日出力计划曲线,在保证电力系统运行的安全性和经济性的同时,提高风电的消纳水平[2]。风电功率预测按预测时间尺度有超短期(0~4 h 内)、短期(1~3 天内)、中长期(数月/年内)[3]。而风电功率实时预测是指自预测时刻起对未来15 min 至4 h 内风电功率进行预测,两个预测值之间间隔为15 min,实时滚动预测各个时间点的风电功率[4]。因此风电功率实时预测为超短期多步预测。
风电功率预测方法可以分为两大类,即物理方法和统计方法。物理方法一般基于数值天气预报先对风速进行预测,然后根据风速-功率曲线得到风电功率的预测值。文献[5]利用美国航天局地球观测系统的全球风速数据,从而得到中国某风电场未来风速,再根据风机的风速-功率特性曲线预测不同时间尺度下的风电功率;文献[6]采用K 均值聚类方法对预测日前20 天的数值天气预报(Numerical Weather Prediction,NWP)数据样本进行聚类,在各类下分别建立模型预测短期风电功率。由于物理方法高度依赖数值天气预报的数据,其精度受数值天气预报精度的影响较大。统计方法则是基于功率、气象历史数据进行预测。目前比较常用的有时间序列法、人工神经网络(Artificial Neural Networks,ANN)法、支持向量机(Support Vector Machine,SVM)法等,以及这些方法的组合方法[7];文献[8]考虑风电功率时间序列波动性特点,建立了多重离群点平滑转换自回归模型进行短期风电功率预测,但未利用NWP时序序列信息会导致其精度随着预测时间增长而降低;文献[9]根据实测功率数据、不同高度的气象数据,建立了基于神经网络的风电功率误差带预测模型,实现了误差带预测,与传统方法相比预测精度有提高;文献[10]根据风速、风向、气温、气压等气象特征,建立了基于SVM 的短期风电功率预测,与ANN 相比其预测精度有所改善;文献[11]将风速分段后在高、低风速段使用最小二乘支持向量机预测模型,中风速段使用高斯模型预测,预测时间与精度优于单一模型。
对于如何提高风电功率实时预测精度,大量文献提出了许多实时预测模型。基本路线是利用历史实际风电功率(Real Wind Power, RWP)时间序列和历史风速、风向等数据对模型进行训练,然后以此模型进行功率预测。文献[12]利用灰色关联关系和标准风速功率曲线建立了基于灰色关联决策的风电功率实时预测模型,相较于完全基于历史风速或者完全基于历史功率的模型,该方法提高了预测精度;文献[13]利用数据挖掘和模糊聚类技术将不同的机组进行分类, 并分别进行实时预测,将预测结果进行累加得到最终的预测结果;文献[14]利用经验模态分解算法将风电功率时间序列分解为若干子序列,以及值点划分法将若干子序列重构为3 个分量,再在每个分量上建立基于集对分析的实时预测模型,最后将各个分量预测结果叠加;文献[15]采用集合经验模态分解算法将风电功率时间序列分解为各个子序列,对各子序列建立相关向量机预测模型,最后将得到的各子序列预测结果叠加得到最终功率预测值。然而这类方法的不足在于:①因为其输入特征只单纯利用历史风电功率时间序列以及历史气象数据预测未来风电功率,而不考虑未来预测时段的NWP 数据,然而NWP 对风电功率的影响是根本性的和趋势性的,所以其预测精度会随着预测时间尺度的增长而快速下降;②风电功率时间序列具有动态特性[16],即系统的输出不仅与当前时刻的输入有关,而且与过去的输入有关,但现有时间序列模型(如Auto Regression Moving Average,ARMA)、常用的神经网络(ANN、SVM 等)结构决定了其并不能学习到风电功率、风速、风向等时间序列间的关联性,因此风电功率预测的精度难于再提高。
文献[17]提出一种基于长短期记忆(long short-term memory, LSTM)网络的超短期风电功率预测模型,因LSTM 网络有短期记忆能力,即能反映前面时刻输出值对当前时刻值的影响,与ARMA、ANN、SVM 等模型相比其预测精度有显著提高。但其不足在于:①其输入特征只单纯利用历史风电功率时间序列以及历史气象数据预测未来风电功率,而不考虑未来预测时段的 NWP数据。所以其难以预测由于气象突变造成的功率突变时的功率值,且随着预测时间尺度的增长这种问题越严重;②其对如何选定LSTM 的输入时间步长,即使用多少个历史时刻来预测下一时刻的输出值未给出依据与方法,而输入步长会直接影响LSTM 预测性能;③所用的LSTM 模型为标准的LSTM,未对其为适合风电功率预测进行优化改进。而气象因素或风电功率的随机性、波动性极强且数值尺度相差极大,因此有必要为风电功率预测对标准LSTM 进行优化改进。
因此,本文提出考虑数值天气预报和风电功率时序间关联关系的随差遗忘长短期记忆风电功率滚动预测方法。首先,采用斯皮尔曼相关性分析方法,对预测时刻的风电功率与历史时刻的风电功率,以及预测时刻的风电功率与预测时刻的NWP 数据(如风速,风向等)进行相关性分析。筛选出相关性强的历史时刻风电功率与数值天气预报的气象信息,作为每步随差遗忘长短期记忆
(Error Following Forget Gate-based LSTM, EFFGbased LSTM)预测模型的多变量输入特征序列。当预测t 时刻时,利用t–1 时刻风电功率预测值和实际值的差值作为EFFG-based LSTM 模型遗忘门的输入来调整遗忘门的输出,以降低t–1 时刻预测误差对t 时刻风电功率预测精度的影响,从而提高滚动预测精度。
气象数据与风电功率都具有时序相关性,即当前时刻气象数据和风电功率与历史时刻风电功率有关。因此需要量化评估当前t 时刻风电功率与历史(t–1、t–2 等)时刻气象数据和风电功率的相关性,以确定EFFG-based LSTM 的输入变量。
由于气象因素和风电功率不服从某种特定概率分布,因此宜采用斯皮尔曼相关系数法来分析风电功率与NWP 特征之间以及风电功率时间序列自相关性。斯皮尔曼相关性系数,也即斯皮尔曼秩相关系数。“秩”可以理解成一种顺序或者排序,它根据原始数据的排序位置进行求解:
式中:n 为样本数量;di为两列第i 个样本数列重新按降序排列后的序号差。
图1 实时预测输入特征序列数据的构建Fig.1 Construction of input feature sequence data for real time prediction
如图1 所示,以斯皮尔曼相关性方法进行风电功率与各NWP 特征相关性量化分析、风电功率时间序列自相关性量化分析后,重新构建了一个包含历史时刻RWP 与预测时刻NWP 的特征序列输入,以此时间序列作为每步预测的输入进行实时滚动的风电功率预测。
在任意时刻(如t 时刻)每个LSTM 单元(cell)输入有3 个:t 时刻LSTM cell 的输入变量 x(t)、t–1时刻 LSTM cell 的输出量 h(t–1)、以及t–1 时刻LSTM cell 的状态量 c(t–1)。在本文中,x(t)为t时刻输入到LSTM 单元中的历史风电功率与t 时刻的预报气象;h(t–1)为t–1 时刻LSTM 单元输出的风电功率预测值;c(t–1)为保存或遗忘了的前t–1 时刻LSTM 单元的历史输出值。输出有2 个:t 时刻 LSTM 输出值 h(t)和t 时刻LSTM 单元状态 c(t),即t 时刻的风电功率预测值和历史风电功率预测值的保存或遗忘状态。在任意时刻每个LSTM 都拥有3 个门,来保护和控制LSTM cell 状态,分别为: 输入门、输出门和遗忘门[18]。图2展示了LSTM 时序预测模型及其内部结构。
图2 LSTM 时序模式及其内部结构Fig.2 LSTM timing mode and its internal structure
遗忘门f(t):根据t–1 时刻输出h(t–1)和t 时的输入x(t),确定了t–1 时刻c(t–1)信息有多少保存到t 时刻的单元状态c(t)中。因此,遗忘门的数学表达式:
式中:s 为sigmoid 激活函数;Wf为遗忘门的权重矩阵;bf为遗忘门的偏置项。
在风电功率实时滚动预测模式下进行t 时刻预测时,t–1 时刻模型的预测值与测量的实际值是已经可以得到,所以就有了实际值与预测值的偏差(误差)。此时的偏差不仅反映了t–1 时刻模型的预测能力也包含了历史时刻信息对预测值到底还能有多少积极的作用。如果计算后发现偏差巨大,那就说明历史时刻值对t 时刻预测已无太大的支持作用了进而要减小历史时刻值对预测输出值的影响。在LSTM 单元中,减小历史时刻信息对当前预测的作用也即减小t–1 时刻的LSTM 单元状态c(t–1),是通过遗忘门来实现的。因此,遗忘门要根据t–1 时刻预测值与实际值偏差情况调整遗忘门大小,即进行随差遗忘。但是从式(2)可知标准LSTM 的遗忘门是由t–1 时刻输出h(t–1)和t 时刻的输入x(t)来确定的,这种更新方式不能计及t–1 时刻预测值与实际值的偏差对t 时刻遗忘门的调整作用。为此,把t–1 时刻预测值与实际值两者的绝对误差来作为遗忘门更新的输入量如:
根据式(3),遗忘门根据t–1 时刻预测值与实际值的误差反馈来调整t 时刻遗忘门的大小,即实现了对历史信息的随差遗忘。在风电功率实时预测模式下,改进后的更新规则更适合于实时功率预测。
随差遗忘长短期记忆网络在t 时刻结构如图3所示。随差遗忘长短期记忆网络与标准的长短期记忆网络相比,除了遗忘门输入改进为预测值ht–1与实际值h’t–1外,其它门的更新方式与标准的长短期记忆一样。随差遗忘长短期记忆网络输入门与输出门的更新方式如下:
图3 随差遗忘LSTM 单元内部结构Fig.3 Unit internal structure of Error Following Forget Gate-based LSTM
输入门i(t):根据t–1 时刻输出h(t–1)和t 时刻的输入x(t)来决定将当前的信息量保存到t 时刻单元状态c(t)中,也可以避免将当前无关紧要的信息进入到c(t)中。因此,输入门的数学表达式为:
式中:Wi为遗忘门的权重矩阵;bi为遗忘门的偏置项。
式中:T 为tanh 激活函数;Wc为输入门的权重矩阵;bc为输入门的偏置项。
新单元状态C(t):由t–1 时刻的单元状态c(t–1)乘以遗忘门 f(t),再用当前输入的单元状态乘以输入门i(t),后将两个积相加。把当前t时刻的记忆和长期的记忆c(t–1) 组合在一起,形成了新的单元状态c(t)。因此,新单元状态C(t)的数学表达式为:
根据式(6)新单元状态,C(t)由于遗忘门的控制,可以保存很久之前的信息,由于输入门的控制,又可以避免当前无关紧要的内容进入记忆。
输出门O(t):根据上个时刻输出h(t–1)和当前的输入x(t)来控制最终单元状态c(t)有多少输出到LSTM 最终输出h(t)中。因此,输出门O(t)的数学表达式为:
式中:Wo为输入门的权重矩阵;bo为输入门的偏置项。
最后,随差遗忘长短期记忆模块的最终输出h(t)为:
至此,由公式(3)~(8)构成一个完整EFFGbased LSTM 单元。
基于EFFG-based LSTM 的风电功率实时预测模型动态结构如图4 所示,假设历史的RWP 取t–1,t–2,t–3 时刻功率;NWP 特征取风速与风向。在预测t 时刻功率时,将由RWP(t–1 时刻功率;t–2 时刻功率;t–3 时刻功率)与NWP(t时刻风速;t 时刻风向)构成的时间序列输入数据输入到EFFG-based LSTM 网络中。然后EFFGbased LSTM 网络模型预测出t 时刻的风电功率。在进行t+1 时刻预测时,把t 时刻实测功率与t–1,t–2 时刻功率和t+1 时刻风速、t+1 时刻风向作为输入数据;同时用t 时刻的预测值和功率实际值作为EFFG-based LSTM 模型遗忘门的输入来更新遗忘门的大小,再预测输出t+1 时刻的风电功率。如此滚动预测出未来每个时刻的风电功率。
图4 基于随差遗忘长短期记忆风电功率预测流程图Fig.4 Flow chart of wind power prediction based on EFFG-based LSTM
基于EFFG-based LSTM 的风电功率实时预测模型在t 时刻的静态网络结构如图5 所示,包含一层输入层(历史RWP 与未来NWP 数据及上一时刻模型预测与功率实际值)、一层隐含层(EFFGbased LSTM 网络层)、一层输出层。
图5 基于随差遗忘长短期记忆风电功率预测模型网络结构图Fig.5 Network structure diagram of wind power prediction model based on EFFG-based LSTM
输入层:输入层即时间序列模式的输入特征量,其中X 为当前t 时刻的过去时刻(t–1,t–2,t–3等)RWP 与t 时刻NWP(风速、风向等)组成一组时间序列及上一时刻模型预测与功率实际值,输入层首先把输入数据根据式(9)进行归一化处理。
式中: xmax为 该变量的极大值; xmin为该变量的极小值。
再把归一化的数据转化为EFFG-based LSTM神经元(cell)输入数据的格式,最后数据进入到隐含层,即EFFG-based LSTM 网络中。
隐含层:隐含层即EFFG-based LSTM 网络,一层隐含层既能保证预测模型较快的预测计算速度;另外不需要考虑由于隐含层过多致使网络过深而可能出现的过拟合现象。隐含层的神经元(cell)即为如图3 所示的EFFG-based LSTM 单元。
输出层:f(.)为输出层激活函数,Y 为下一时刻t 风电功率预测值。输出层把隐含层的输出进行加权与偏置后,输出一维的预测风电功率。因输入层已经把数据归一化,所以在输出层需要按式(10)进行反归一化计算。最后得到实际的风电功率预测值:
本文样本数据来自中国西北某实际风电场的历史数据,即2017 年7 月1 日至7 月21 日的NWP数据与历史实际风电功率。此期间风电场的开机容量为90 MW,风电功率采样时间间隔为 15 min,NWP 预报间隔为 15 min。NWP 包含有170 m、100 m、30 m 处的风速与风向。
首先利用斯皮尔曼相关系数法进行风电功率与NWP 各特征相关性系数的计算、当前风电功率与历史风电功率相关性系数的计算,以此筛选出预测模型输入特征变量。
表1 中数值为风电功率与NWP 各特征量的斯皮尔曼相关系数,数值大小反映了风电功率与NWP 各特征量相关性的强弱。从表1 中可知:此风电场当前t 时刻风电功率与当前t 时刻100 m、30 m 处的风速与风向最相关。因此,此风电场要预测t 时刻的风电功率时需将t 时刻100 m、30 m处的风速与风向计入到新构建的时间序列中。
表1 风电功率与各个NWP 特征量之间的斯皮尔曼相关系数分析结果Table 1 Analysis results of wind power and Spearman correlation coefficients among NWP characteristic quantities
表2 中数值为当前(t 时刻)风电功率与历史(t–1、t–2、t–3 等时刻)风电功率的斯皮尔曼相关系数,数值大小反映了当前时刻风电功率与各历史时刻风电功率相关性的强弱。从表2 中可知:此风电场当前t 时刻功率与t–1、t–2、t–3 历史时刻功率的相关性较强。因此,要预测此风电场t 时刻的功率时需将t 时刻前3 个时刻功率放入到新构建的时间序列中。
表2 t 时刻与前t 各时刻风电功率之间的斯皮尔曼相关系数分析结果Table 2 Spearman correlation coefficient between real wind power at t time and at time t before
EFFG-based LSTM 网络参数设置:由前面的斯皮尔曼相关性计算可知输入步长为4,即前三个历史时刻RWP 与预测时刻NWP。隐含层神经元即EFFG-based LSTM 单元(cell)个数与预测精度(如RMSE)并不是线性关系,即达到一定数目后再增加cell 个数预测精度反而会减小。所以,隐含层神经元数目要根据时间序列中输入特征量的多少、模型训练精度高低来确定,经反复试验验证其设置为12 时预测精度最好。EFFGbased LSTM 各个门激活函数保持为默认值。
最后以2017 年7 月1 日至7 月19 日的数据作为模型训练样本数据,进行两种时间尺度的实时预测。一是预测未来4 h 内,即从7 月20 日10:00 至14:45 的风电功率;二是预测未来24 h 内,即7 月21 日一天内的风电功率。
因为实际风电功率值存在零值,预测效果评估指标中常用的平均绝对百分比误差(mean absolute percentage error,MAPE)将失去意义[19],所以本文采用均方根误差(root mean square error,RMSE)和文献[4]中的准确率AR、合格率QR 指标对预测结果进行评价。
均方根误差RMSE 计算公式:
式中:n 为预测结果个数;P 为目标数据的实际值;P'为目标数据的预测值;i 为实际值、预测值序列编号。
准确率AR 计算公式:
式中:PMK为K 时间段的实际功率平均值;PPK为K 时间段的预测功率平均值;Pcap为风电场对应时段的开机容量;N 为预测总时段数。
合格率QR 计算公式:
为验证和比较本文预测模型的预测性能,本文采用基于SVM 和标准的LSTM 风电功率实时预测模型作为对比模型进行预测结果对比分析。对比模型同样以2017 年7 月1 日至7 月19 日的数据作为训练数据,进行两种时间尺度的实时预测,即7 月20 日10:00 至14:45 的风电功率以及7 月21 日一天内的风电功率。各模型预测结果如图6、7 所示。
图6 3 种模型实时预测4 h 内的风电功率Fig.6 Predicted wind power within 4 hours by three models
图7 3 种模型实时预测24 h 内的风电功率Fig.7 Predicted wind power within 24 hours by three models
从图6、7 可知:无论是在4 h 还是24 h 时间段上的预测,SVM 预测模型是3 个模型中表现最差的,其大致能预测出风电功率的变化趋势,但是具体到单一时间点时,预测值与实际值的绝对误差较大。原因在于SVM 不是适合时间序列预测的模型,无法处理时间序列间关联信息和时间相关性。而且SVM 也不是基于深度学习技术的模型,对大量样本的特征学习能力有限;LSTM与EFFG-based LSTM 预测模型无论是4 h 还是24 h时间段上的预测结果都优于SVM 预测模型,因为其首先利用了深度学习技术来优化网络里的各个参数以达到最优,其次LSTM 与EFFG-based LSTM 网络为一种时间序列网络模型,能较好地处理风电功率时间序列间关联信息和时间相关性,适合于有时序关联性的时间序列的预测。但是在风电功率波动性大的时段,即功率时增时减时段EFFG-based LSTM 预测模型要明显优于LSTM 预测模型。原因在于LSTM 遗忘门的更新仅仅是通过上一时刻输出值与当前的所有输入量,因此不能反映上一时刻模型预测值与功率实际值之间的误差对遗忘门的影响。而EFFG-based LSTM 遗忘门的更新是通过上一时刻模型预测值与功率实际值之间的误差来更新的。所以当误差较大时遗忘门也增大,也即模型的遗忘系数大了,历史输出值将遗忘更多,历史值对模型的作用就更小了。在风电功率突变的时段,下一时刻的功率与上几个时刻功率没有历史关联性,即预测下一时刻功率时其历史值没有支持作用了,所以要减小历史值的作用。EFFG-based LSTM 遗忘门的更新正是契合此种情况,所以EFFG-based LSTM 预测模型在风电功率波动性大的时段的预测效果是最好的。
表3、4 分别为3 个预测模型4 h 和24 h 预测结果的RMSE、准确率AR、合格率QR。
由表3、4 可知:EFFG-based LSTM 测模型无论是在4 h 还是24 h 预测值的均方根误差RMSE、准确率AR、合格率QR 相比于SVM 和LSTM 预测模型都是最优的。其RMSE 虽然在24 h 时段预测时有所增大,但仅仅增大了0.65;在4 h 时段和24 h 时段的准确率、合格率都在90%以上。但是SVM 和LSTM 预测模型由4 h 时段到24 h时段的准确率、合格率都出现了显著下降。特别是RMSE 分别增大了3.98 与2.47。表现较好的LSTM 预测模型准确率、合格率也仅能达到80%左右。因为随着预测时段的增长,包含了更多的风电功率剧烈波动情况,而SVM 与标准LSTM模型都无法有效应对功率剧烈变化的时段的预测。对此问题EFFG-based LSTM 通过改进后的遗忘门得到比较有效的解决,所以无论在短时间段还是长时间段EFFG-based LSTM 预测模型各方面性能都优于SVM 与标准LSTM 模型。
表3 各预测模型预测4 h 风电功率结果的评价指标Table 3 Evaluation indices of predicted results within 4 hours by different prediction models
表4 各预测模型预测24 h 风电功率结果的评价指标Table 4 Evaluation indices of predicted results within 24 hours by different prediction models
本文提出的基于EFFG-based LSTM 风电功率实时预测方法。算例结果表明:
1)采用斯皮尔曼法计算分析不同气象输入 变量与风电功率之间的相关性以及各个历史时刻风电功率序列间的自相关性,据此为预测模型输入变量的筛选提供依据,进而构建了包含历史实际功率和预测时刻NWP 的输入时间序列、为后续的EFFG-based LSTM 输入时间步长的确定提供依据,进而为EFFG-based LSTM 的训练与预测设置合理的输入时间步长。
2)有别于现有的仅利用历史功率进行风电功率预测,本文方法在输入特征上除了利用历史功率外还计及了NWP 数据,即有效利用了多变量信息;其次NWP 数据的加入一定程度上可以使预测模型提高在气象突变引起的风电功率突变时段的预测精度。
3)基于标准LSTM 建立的风电功率预测模型,由于其遗忘门的更新输入会让其有较大历史惯性,导致在风电功率变化剧烈时段的预测精度大大下降。本文对标准LSTM 的遗忘门进行了改进,建立的EFFG-based LSTM 模型优于LSTM 预测模型,特别是在风电功率变化剧烈时段的预测精度。
历史实测气象数据中包含了风电场局部性的气象信息,如何把NWP 与实测气象进行有效结合,以改善NWP 预报的精度从而提高风电功率实时预测精度是有待下一步研究的问题。