基于LSTM-GRU-FCN 模型的风电功率短期多步预测研究
2023-11-08刘昱辰许傲然谷彩连
刘昱辰,许傲然,谷彩连,高 阳
(沈阳工程学院 电力学院,辽宁 沈阳 110136)
近年来,风电的开发利用量逐渐增加,但由于风能存在极大的不确定性和不稳定性,导致了发电质量变差,这对电网安全造成了威胁,若能提前对风电功率做出预测,就可以合理规划发电计划,减少此类问题的发生[1-4]。
文献[5]利用BP神经网络,使用粒子群优化其输入参数,经过随机森林模型与其融合得出风电功率预测值。文献[6]对风能数据进行FEEMFD 分解,分配权重以预测风电功率,但其对数据依赖性较高。文献[7]使用混合模型预测法,结合各个模型对未来的风电功率进行预测,但其建模复杂,训练时间长。文献[8]使用遗传-变异优化算法优化神经网络,达到寻优的目的,但运算复杂度高。
本文针对风速和风力的时间序列相关特性,基于声雷达所获取的数据,使用特定的模型对其分别进行多步预测,再经过深度FCN 对风电功率进行训练,得出预测模型,为风电功率多步预测及提前预测提出一种新思路。
1 算法研究
1.1 LSTM网络
普通的循环神经网络(RNN)在进行训练时,其逆向传播过程无法应对一些在递归时发生的梯度爆炸或梯度逐渐消失的问题,而使用LSTM 网络则可以较好地解决这种问题[9]。LSTM 网络具有LSTM 区块,可构成智能网络单元,作用于记忆可定时间长度的变量信息,其结构中的门控可以控制输入变量是否能被神经元计算,以及是否能被输出层的神经元当作输出。
对于风能数据的预测,由于风具有时延性,先前时刻的数据对下一时刻的风能数据存在一定的影响,而其中的门控可以选择是否利用风能数据值。使用LSTM 网络可以达到对风能提前预测、多步预测的理想效果。
廖雪超等[10]将注意力机制和LSTM 网络相结合,提出了风电预测思路,但注意力机制用于风功率预测时无法体现各高度风力的变化特点,也就不能做到功率精细化提前预测。鹿凯等[11]利用自适应模态分解将风数据分频,最后使用支持向量机调参来提高风电预测精准度,但其模型在分频时容易出现数据失真,进而丢失重要风能数据。文献[12]使用粒子群算法优化LSTM 网络,验证了选择好的参数可以使模型收敛更快,预测结果更加准确,但粒子群寻优具有不确定性,且以历史数据作为未来预测参考价值较低,对多步预测的准确度没有太大提高。
LSTM 的遗忘门在训练时会读取上一层输出的ht-1和当前输入xt,该层会决定“丢弃”还是“保留并传输”各风能的历史值。若对两者分别赋一个权重,则可以表示各个时刻风能数据对将来预测值的影响,可用Wf表示:
式中,bf代表偏置,可随训练误差调整;ft为该层的输出。
得到输出后,则要经过sigmoid 层和tanh 层对得到的数据分别进行更新和创建新候选值操作,得到:
最后,通过运行sigmoid 层决定将上一层细胞哪些输出值进行处理并作为输出,然后再次使用tanh 活化函数处理细胞状态,与sigmoid 门输出做相乘处理,便可以得到想要的输出。若使用该模型对影响风机发电功率的因素进行预测,遗忘门则可以决定哪些状态(风能数据)会被保留并当作下一层的输入,以及这些状态对预测值的影响,通过激活函数tanh,得到LSTM网络输出值。
对于短期风速多步预测,式中xt为当前时刻的风速数据,输入到网络单元中,经过σ与下一时刻的风速做相关性处理,则代表上一时刻预测单元为当前时刻所准备的单元状态,应与当前输入结合,获得中间值,进行预测;而下一σ与tanh门则保存了先前时段LSTM 单元所处理的风速数据,再将两个经过处理的风速数据进行相乘等处理以得到当前风速结果。
在将LSTM 网络应用于风电功率预测时,文献[13]通过控制前向传播中输入数据被存储和激活的时机,调整记忆细胞,计算输入数值天气预报数据在各单元中的状态。计算方法:数据经过各单元的记忆功能后,通过sigmoid 函数激活并传给下一层,最终将各个单元状态整合表示为输出。
在本文中,声雷达所获取的风速数据可以作为输入,假设声雷达风速序列向量为X,则其序列中必定有对未来预测较为重要的量和不重要的量,经过式(1)可计算出该序列中的值对未来预测值的“重要程度”,再经过式(2)的权重配置,分别使用sigmoid及tanh激活得出输出值,其表达式为
1.2 GRU
相较于LSTM 网络,GRU 更易于训练,对于较为复杂的风向数据同样能达到期望的精准效果,而且可以简化网络结构,加快训练过程,并解决了潜在的复杂数据下过拟合的问题[14]。GRU 有重置门和更新门2 个门。其中,重置门可以决定如何将刚刚输入的风向数据信息与历史输入信息结合,这需要通过网络训练来实现;更新门则是代表历史记忆变量保存到当前计算过程的量,也就是保存到当前时间段的历史风速数据量。相比于上文的LSTM网络,GRU 仅有2 个门,并且在计算输出时不需要应用二阶非线性。
在重置门中,门控状态表示为
式中,σ为sigmoid 函数,作为门控信号可以将数据变换为0~1 之间的值;xt为当前时刻(第t个时间段)网络节点的输入向量,即当前时刻的风向偏角;Ht-1为上一个单元传输到当前单元的状态,即经过上一单元处理后的风向角度。
在更新门中,时间步t使用以下公式计算门控状态zt:
此时输入风向xt经过线性变换矩阵Wz的作用,与经过线性变换的t-1步的风向信息相加,共同作用到sigmoid激活函数上,这些风向值会被映射到区间[0,1]内,然后将其输出到下一层的神经元中。
最后,GRU网络需要计算ht,这个向量也具有时序特性,可以将先前保留的信息传入到下一单元,此过程使用更新门决定当前时间序列所记忆的变量和上一个时间序列ht-1需要的信息,计算式如下:
其中,zt表示更新门经过激活函数的结果,也以门控方式使信息从该门流入;式中为Hadamard乘积,表示前一个时间序列的风向数据保留到最终记忆单元的风向信息中,这个信息加上当前记忆信息保留到最终记忆单元信息中时,就可以得到GRU输出的风向角度结果。
GRU 作为风向预测模型时,其可以视作是对LSTM 的一种改进。文献[15]确定了输入值与单元状态之间的相关度,通过获得上一时刻的隐藏状态值来调整GRU 网络的特性及性能,将数值天气预报数据经过划分特性输入到模型中,经过权重矩阵处理得出候选值。
本文将声雷达所获取到的风向角度信息输入到GRU网络中,假设用X'表示角度向量,风向预测输出表达式为
声雷达的风向数据在经过2 个节点输入后,乘以对应的权重,使用sigmoid 函数处理这个输出值即可得到rt。门控状态同样经过sigmoid 函数激活,最后使用当前状态信息加上一记忆信息即可得到输出Y'。
2 基于声雷达数据的功率预测建模
2.1 数据的预处理
声雷达可以使用雷达原理探测大气流动以实时遥测大气各个要素,例如风向、风速、气压等。本文使用东北某风电场2019~2020年的风力数据。在声雷达设备获取的各种风功率数据中,不同类型数据量纲是不同的,对风机发电功率的影响也是不同的,所以在建模时应筛去对风机发电功率影响较小的因素,以加快模型收敛速度和优化模型输出结果。本文选取10、30、50、70 m风速和风向为例来预测发电功率。在使用神经网络预测时,需要先去除中间的离群数据及异常数据,使用先前的时刻值填充,使数据集更加平滑,确保神经网络训练的正常进行。最后,使用均值-方差归一化方法按列向量归一化。
2.2 预测模型的设计
LSTM 网络和GRU 网络虽然相似,但也有不同之处,本文通过预测模拟来选取适合二者的预测模型。本文将历史风能数据分别进行训练,将各个高度处的风速输入到LSTM 神经网络中,用历史中多个周期的数据预测未来的数据,将各个高度的风向数据输入到GRU 网络中,得到下一时间段的风向数据。
针对多步预测可能出现的误差累积问题,本文在考虑实际操作流程的同时,经过深度网络优化可以确保该模型的误差在允许范围内。
在得到相关预测数据后,本文将这些数据输入到全连接网络层进行训练,经过多次迭代模拟、学习率及模型隐含层复杂度的选择,得出合适的全连接网络预测模型。
对于全连接网络而言,感知机的输入为
式中,x和w分别表示各个高度处的风速/风向数据及其在网络中的权重。
在全连接层中,首先输入的风能资源数据及功率数据需要经过前向传播处理,这时神经网络将原始风能数据与权重(各个数据与风电功率的相关程度)相乘,再加上一个偏置,经过激活函数即可得出前向传播一层的输出;其次是反向传播,根据遇险者定好的损失函数,对初始权重及偏置进行更新,不断迭代计算损失,当这个值小于允许的阈值时,说明该模型满足实际要求。本文所利用的损失函数为均方误差函数,可用下式表示:
式中,E表示数学期望,代表网络在一个循环中所得到的结果。
式(9)可以衡量神经网络输出风能信息(风速、功率等)与实际值之间的偏差,反映输出的准确性。
综上所述,在预测未来一段时间内的风力发电功率时,把历史数据输入到模型中进行训练,再利用该模型的输入经过LSTM 网络和GRU 网络的输出结果,即可得出生产工作需要的风电功率数据。风力及风向数据与功率的关系可用下式表示:
式中,v代表风速;D代表风向偏角;Φ代表两者与功率的约束条件。
整个神经网络预测结构如图1 所示,其中全连接层即为FCN层。
图1 整个神经网络预测结构
对于LSTM 及GRU 层,预测流程如图2 所示,其中输入为以时间序列为基准的风向或风速值,由LSTM 或GRU 单元决定其被处理的方式,并对以后时刻进行预测,以此类推,当误差验证达到阈值或迭代次数达到阈值时,停止并输出结果。
图2 数据流预测走向
2.3 预测结果及分析
本文中涉及到的声雷达数据来源于东北地区某风电场实测数据,场址编号为J00004。
首先对风速和风向信息进行多步预测,将经过归一化的数据输入到LSTM 神经网络中,经过训练和拟合可以得到风速预测结果,如图3所示。
图3 10 m处风速多步预测结果
从图3 可以看出:预测初期风速相对准确,到后期由于模型特性存在累积误差,虽然有所偏移,但误差均在允许范围内,且大致走势与实际风速相同。然后对风向信息进行预测,将历史风向数据经过归一化后输入到GRU 网络中,可得到如图4 所示的结果。
图4 10 m处风向多步预测结果
仿真结果表明:各个高度的风速均方根误差值可限制在0.2以内,平均误差绝对值为0.04;风向的均方根误差值可以限制在0.024 以内,平均误差绝对值在4.0以内。这样的仿真结果对下一步的全连接层预测是可以接受的。在全连接层使用2 个隐藏层的10-10 结构网络模型,控制学习率为0.001,模型的风电功率预测效果如图5所示。
图5 风电功率预测结果
以上样本点均为顺序时间序列的样本点,其总时间约为72 h。
通过编程计算得知:使用该组合模型的风电功率预测均方根误差相比于其他神经网络有所降低,其值为0.16,平均误差小于1.2;而粒子群优化的BP 网络均方根误差值在0.53 以上,遗传算法优化网络的误差值也在2.0以上。本模型满足预期结果且优于其他常见模型,可以为实际生产提供参考。如果能配合电力电子器件滤波,风机发电功率则会更加平滑,预测结果准确度也会进一步提高。预测结果如表1所示。
表1 LSTM-GRU-FCN模型预测效果
3 结论
本文提出了基于LSTM-GRU 的风电功率多步预测模型,以及全连接网络多步预测的一种风电功率预测方法。该方法可以通过前一时段声雷达获取的风速和风向的数据,在训练时给予分配不同的权重得到未来时刻的预测结果,且可以利用上一步的输出,再循环预测,做到多步预测。研究结果表明:首先使用LSTM-GRU 预测风速和风向,然后再经过全连接网络计算输出值,这比以往单纯一个或多个模型结合权重配置的预测精度要高,对其他以时序为基础的可再生能源序列预测有一定参考意义。
本文所提出风电功率预测模型所达到的效果如下:
1)使用声雷达实时获取的数据比数值天气预报的有所提高;
2)针对不同的变量选择了不同的多步预测模型,根据数据的收敛要求有针对性的提高了运算效率;
3)为了解决全局多步预测的误差累积问题,本文在后期应使用全连接网络进行预测。
本文所使用的模型可以推广到实际生产应用中针对单个风机建模,可以得出未来一段短期时间内的功率预测,这对现场生产与操作有着指导意义。如果未来能将数值天气预报使用联网等方式实时传入系统,参与神经网络训练,则可以进一步提高预测精准度。