何健伟, 曹渝昆
(1.广东电网有限责任公司 江门市供电局, 广东 江门 529000; 2.上海电力大学 计算机科学与技术学院, 上海 200090)
从2010年起,我国的风机装机容量,无论是总装机容量还是新增装机容量,都已跃升为世界第一[1]。但随着装机容量的日渐增大,部分地区的弃风现象开始变得严重起来。2017第一季度的弃风现象虽有减缓,但仍不容乐观。一般来说,风电功率预测可划分为超短期、短期和中长期3个时间尺度。超短期的预测是指超前0~3 h的预测,时间分辨率不小于15 min,用于风电实时的调度;短期预测是预测未来1~3日的数据,时间分辨率为0.5~1 h;而中长期的预测,时间分辨率多为24 h,超前72 h以上预测发电量。超短期和短期的风电出力预测能够为风电并网和实时调度提供技术性的参考指标;而中长期的风电预测,能够协助风电的资源评测,方便风电场的机组检修安排,从宏观上也能减少弃风,提高风电场的发电量和容量系数,为风电的长期发展以及电网的建设调度提供辅助支撑。
目前,根据预测原理,风电发电量预测模型主要分为统计模型和物理模型两类[2]。前者可以细分为时序外推法和人工智能法。时序外推法一般使用发电量的历史数据对未来值进行预测,一般使用自回归积分滑动平均(Auto Regressive Integrated Moving Average,ARIMA)模型和卡尔曼滤波法[3];而人工智能法多采用神经网络[4]和支持向量机(Support Vector Machine,SVM)[5],利用数值天气预报(Numerical Weather Prediction,NWP)的历史数据和未来的预测数据,寻找历史输入与输出的对应关系。
单一的输入数据和方法难以满足精度要求日渐严苛的风电预测[6],因此不少研究者提出了组合的预测方式。文献[7]结合物理模型和统计模型,提出了混合预测的方法。文献[8]提出了多气象变量模型的组合预测方法,利用多个气象的变量历史和未来预测数据,但NWP的预测数据往往与风电场的实测数据存在一定的偏差,不加处理会造成不必要的误差。另外,文献[9]指出,历史和当前的气象状态决定了未来的大气运动趋势,所以必须结合历史气象数据对未来数值进行预测。目前的风电功率预测研究大多集中于短期或超短期的预测方面,在中长期的预测方面相对偏少。
此外,虽然研究者们对风电预测的方法提出了不少改进之处,但涉及的算法也仅限于BP神经网络和SVM等浅层的学习方法。这些学习方法对输入的处理能力有限[10],在处理较为复杂的分类和回归任务时,泛化能力不佳。目前,深度学习已经在图像识别[11]、视频分类、自然语言处理[12]等应用上取得了十分喜人的效果,而在电力自动化领域的应用研究仍然处于起步阶段,在风电功率预测领域的应用更少。近年来,随着计算机计算能力的大幅度提高以及深度学习算法的飞速发展,将为风电预测的方案开辟出一条新的道路[13]。常用的深度学习模型有卷积神经网络、深度置信网络、堆栈自动编码器、长短期记忆网络(Long Short-Term Memory,LSTM)等,其中,LSTM专门用于处理时间序列性的数据,能够学习到输入序列的元素之间的关系。
本文将深度学习算法应用于风电功率预测,提出了一个基于LSTM和随机森林(Random Forest,RF)的中长期风电预测的模型。通过风电场的实测数据对该方法进行误差评估和分析,对比BP神经网络及SVM和ARIMA模型,基于LSTM和RF的组合风力预测模型从多个评价指标上均显示出较好的精度,能够很好地满足国家对风电预测要求的标准,能够为电网调度提供辅助支撑。
本文所提方法具体步骤如下。
步骤1 整理原始数据,获得每一天风电场所对应的总发电量、平均风速、平均温度,以及天气预报的平均风速和平均温度等数据。
步骤2 对原始数据进行预处理,使其满足LSTM模型所对应的输入需求。
步骤3 按照任务的需求,采用不同的归一化方法去归一化原始数据。
步骤4 训练LSTM模型,并输出训练集的迭代曲线,优化LSTM的参数。
步骤5 输入测试集,输出预测结果,并按照不同的评价标准,对比不同的预测模型,对输出结果进行分析。
步骤6 采用RF算法对NWP数据进行修正,并将修正后的气候特征和LSTM首次预测的值输入到新的RF模型中,进行二次预测。
步骤7 输出测试结果并进行误差分析。
步骤8 得出结论。
其总体框架如图1所示。
图1 方法框架示意
一般的时间序列回归分析预测使用的是自回归模型(Auto Regression Model,AR模型)、滑动平均模型(Moving Average Model,MA模型)或者是ARIMA模型,其中ARIMA模型的应用较为广泛。一个确定的ARIMA(p,d,q)模型需要确定3个系数,其中:p为自回归项,d为时间序列成为平稳时所作的差分次数,q为移动平均项数。确定这3个系数一般要对时间序列数据进行平稳性的判断,非平稳性序列一般要对其进行差分处理,平稳化后一般会根据Box-Jenkins的模型识别方法[14],对序列的自相关和偏自相关函数进行判断,根据其截尾性和拖尾性判断序列所属的类型。模型类型确定后,根据对应的准则函数,对所选模型的阶数进行确定。因此,使用时序外推法利用ARIMA模型对风电场的历史数据进行建模,需要对原始数据进行相对复杂的预处理,而且模型的选择需要对序列的自相关函数的图像和偏相关函数的图像进行观察,会存在一定的主观因素,且精度不高。使用历史发电数据的基于BP神经网络和SVM的人工智能预测方法,需要固定一个“观察窗口”,即使用t时刻的前k步作为输入,去预测t时刻的输出。此外,当前的输入仅与观察窗口输入的数据相关,与观察窗口外的历史数据无关,就会把影响输出的某些历史数据忽略掉,从而影响预测结果。此外,需要对k值的选择进行反复的测试才能达到较好的效果。另外,使用NWP数值人工智能预测方法,通过NWP的历史数据建立气象数据和风电输出之间的映射,受训练样本集影响较大,鲁棒性较差。
LSTM网络模型属于循环神经网络(Recurrent Neural Networks,RNN)的一种,是一个循环的网络结构,具有保留历史信息的能力。一般的RNN,权重矩阵W的最终梯度是各个时刻的梯度之和,即
(1)
与t时刻相距比较远的时刻点,往往会引起梯度消失或者梯度爆炸[15]。这就是传统的RNN在训练中无法解决长距离依赖的原因。LSTM网络增加的单元状态Ct能够保存长期的单元信息,即能够保留与当前状态距离较远的历史状态信息,并根据网络的评价函数决定保留信息的多少,从而解决了长距离依赖问题。
LSTM网络通过一个“门”的结构来对记忆单元(下称“单元”)的状态量,进行信息的增加和删减操作。单个时间点的LSTM基本结构如图2所示。
图2 LSTM结构
一般的LSTM网络有3种门结构,分别是遗忘门、输入门和输出门。
遗忘门的作用是决策出一个遗忘系数ft(介于0和1之间的数或者向量)来决定要遗忘单元中的哪些信息。具体的运算公式为
ft=σ(Wf·[ht-1,xt]+bf)
(2)
式中:σ——sigmoid激活函数;
Wf——遗忘矩阵;
ht-1——前一时间点的输出;
xt——当前输入;
bf——遗忘门的常量向量。
it=σ(Wi·[ht-1,xt]+bi)
(3)
(4)
(5)
式中:Wi——输入矩阵;
bi——输入门的常量向量;
WC——候选状态量矩阵;
bC——候选状态量的常量向量。
最后的输出门取决于Ct,用tanh层把单元状态映射到-1到1之间,并与sigmoid门输出的值相乘得出最终的输出。
ot=σ(Wo[ht-1,xt]+bo)
(6)
ht=ot×tanh(Ct)
(7)
式中:ot——t时刻的输出系数;
Wo——输出矩阵;
bo——输出门的常量向量;
ht——t时刻的输出。
随机森林是集成学习中的一种基于Bagging算法的改良算法。集成学习通过建立多个基学习器去完成学习的任务,本质上是通过组合多个弱的学习器,形成一个强的学习器,来完成学习任务,多用于分类和回归的任务中。标准的Bagging算法只是通过从原始样本中进行n次的Bootstrap重采样,通过样本的差异实现单个基学习器的“多样性”。与标准的Bagging算法不同的是,RF加入了来自属性的扰动,即从原始的T个属性中选取t个属性(t 使用随机森林作为第二次预测的学习器,能够减少学习模型参数的调节,而且训练速度也较快,便于最后作输入特征的修正和拟合。 本文提出的组合模型可分为两个部分,并从两个方面(历史发电量数据和NWP数据)综合对传统的风电预测方法进行改进。组合模型如图3所示。 图3 组合模型示意 图3中,第一部分利用风电场的历史日发电量数据,使用LSTM模型对历史数据与预测日发电量数据进行训练和学习,对未来7日的日发电量进行预测,输出首次的预测值。第二部分就是利用经过RF修正后的NWP数据和LSTM模型的预测值,一并输入到另一个新的RF模型中,输出新的发电量预测值。该方法能够充分利用发电量的历史数据和NWP数据,为更高的预测精度提供可能性。 本文以我国某风电场(总装机容量1.5×105kW)从2014年1月1日—2016年12月31日的实测数据作为模型训练和测试的样本。具体的数据如表1所示。 表1 风电场实测数据部分样例 由于神经网络中存在激活函数,所以一般在数据的预处理上都需要对输入数据进行归一化或标准化处理,本质上是对数据的一种尺度变换。一般神经网络的激活函数是sigmoid函数,但sigmoid函数存在两个缺陷:一是函数的两个尾部陷入饱和,容易导致梯度弥散问题;二是函数不以零为中心。因此,本文采用比sigmoid函数性质要好的tanh函数,因为tanh以零为中心,能够更快地进行收敛,而且tanh活跃的区间在[-1,1],故本文利用式(8)将原始数据放缩到[-1,1]之间。 (8) 式中:yi——放缩后的第i个数据值; xi——第i个原始数据; xmax,xmin——原始数据中的最大值和最小值。 此外,归一化后,作为神经网络的输入,还需要对归一化的序列数据进行转换,以满足LSTM的输入要求。以LSTM的输入为例,数据集的输入实际上是一个张量,如样本数、时间步、输入维度等。输入维度根据考虑的内外因素的个数确定,如只考虑历史数据,则输入维度为1,如同时考虑历史数据和平均风速的话,则输入维度为2,以此类推。假设原始序列中一共有a+b个数据点,输入的时间步为a步,那么经过转换后的数据共有b条数据,如图4所示。 图4 原始序列数据转换示意 对于回归预测问题,一般会结合几种不同的评价指标,综合评价所建立模型的优劣。常用的模型评价标准有MAE(Mean Absolute Error)、RMSE(Root Mean Squared Error)、MAPE(Mean absolute Percentage Error)等。具体计算公式为 (9) (10) (11) 式中:N——预测的时序长度; MAE与RMSE类似,都是衡量预测值和实际值之间的绝对误差,对于两个不同容量的风电场(假设风电场1的容量是风电场2的10倍),同样的MAE值和RMSE值,风电场2的发电量预测值误差就要比风电场1大很多,以此来评价模型的优劣是不妥当的。MAPE是衡量预测值和实际值之间的相对误差,但是,当实际值pi较小时,MAPE值会非常大,对评价模型的优劣也是不利的。因此综合考虑,纵向误差指标选择NMAE(Normalized Mean Absolute Error)。NMAE修复了MAPE的不足,而横向误差指标[17]选择相关性系数CC(Correlation Coeficient),可以最直接描述预测值与实际值之间的相关程度,CC>0.8表示两个变量具有很强的相关性。NMAE和CC的计算公式为 (12) (13) 式中:pinstalled——标准化的尺度值,常设为样本中的最大值和最小值的差; 除了纵横的两个评价指标外,在后面的章节还会加入对误差值分布的评价方法。 另外,根据国家能源局发布的《风电场功率预测管理暂行办法的通知》给出的预测预报要求,准确率r1为 (14) 式中:PMk——k时刻实际的功率; PPk——k时刻预测的功率; Cap——风电场开机的容量。 合格率r2为 (15) 式中:Bk——是否合格的标志,1为合格,0为不合格。 其中, (16) 训练样本选取了2014年1月到2016年6月的数据。使用预测日前14日的数据作为输入向量,预测方法采用单点滑动窗口预测方法,即先用前14日的数据预测第15日的发电量,然后输入向量的窗口向后滑动1日,把预测出来的第15日的发电量加入输入向量,把最先的1日的发电量数据从输入向量中删除,预测第16日,如此类推,一共预测7日。 本文采用的LSTM模型是3层的LSTM层加上1层的神经网络全连接层。LSTM层的激活函数为tanh函数,全连接层采用的liner函数,采用Adam算法进行网络的训练,各层的神经元个数分别是14,30,8,1。批训练样本个数为75,模型的训练迭代次数为400。图5为模型的迭代与误差示意。 图5 模型训练迭代与误差示意 选取2016年7月3日到8月17日(下称“时间段1”)和2016年9月21日到2016年11月5日(下称“时间段2”)两个时间段的发电量数据作为模型的测试集。两个时间段发电量的分布指标如表2所示。 表2 测试样本的发电量分布指标 单位:104 kWh 这两个时段的发电量的大小所覆盖的范围都比较广,而且时间段1和时间段2的发电量的分布也存在较大的不同,时间段1的发电量均值比时间段2大,但极差和标准差均比时间段2小,而时间段2中既有日发电量大于3.0×106kWh的样本,也有因为天气原因导致发电量连续在3.0×106kWh以下的样本。因为这两个时间段的发电量各有特点,所以测试的结果更能够体现出模型的泛化能力。 将时间段1和时间段2对应的数据输入已经训练好的LSTM神经网络中,输出从第1日预测到第7日预测的结果,并根据式(12)和式(13)计算NMAE和CC值,具体数据如表3所示。 表3 LSTM中不同日数的预测结果 由表3可以看出,LSTM神经网络在时间段1上的预测精度比时间段2的高,而且时间段1从第1日到第4日的预测值与实际值的CC值都大于0.8,显示出很强的相关性;但对比第5日到第7日的预测,虽然LSTM神经网络在时间段1上的精度依然比时间段2高,但时间段2中随着时间的推移,精度的下降幅度小于时间段1,也体现出LSTM网络结构中记忆门和遗忘门在处理较长历史依赖方面的优势。 由于篇幅原因,本文只给出预测第6日和第7日的实际值和预测值的折线图,如图6和图7所示。 图6 第6日两个时间段的预测值和实际值对比 由图6和图7可以看出,对于第6日和第7日的预测,LSTM的预测值和实际值的大小以及变化趋势也是比较吻合的,尤其是时间段1中前半部分的预测结果。 图7 第7日两个时间段的预测值和实际值对比 图8为第6日和第7日两个时间段预测值的误差值。 图8 第6日和第7日两个时间段预测值的误差值 结合图6~图8可以看出,在相邻日期出现较大发电量偏差的部分日期中,误差值较其他时段大。经过查阅对应点的气候数据,发现误差较大的原因很可能是由于气候因素的影响导致误差的增大。 另外,可以通过描述误差分布的盒状图来比较LSTM与BP神经网络、SVM和ARIMA(1,2,5)模型的预测精度。由于篇幅问题,本文只给出第4日到第7日的误差分布盒状图,如图9所示。由图9可知,虽然LSTM也会出现误差较大的几个异常点,但无论从误差的各四分位数的大小或误差分布范围去考虑模型的预测精度,LSTM在只根据历史数据建模后的精度都高于其他3个模型。 图9 第4~7日各模型的误差分布盒状图 针对图8中出现的部分时间点误差值过大的情况,加入对应日期的气候数据。由于监测点与风电场现场的地理位置有一定距离,故需要对输入的气候数据进行修正。本文使用随机森林回归树模型(树的个数为150)对包括当前预测日的未来7日的平均风速和平均气温作修正,并将修正后的数据经式(8)归一化处理后输入到新建立的随机森林回归树模型中,并输出结果。对于时间段1和时间段2(以第6日和第7日的预测为例),修正后的误差曲线如图10所示。 图10 第6日和第7日两时间段修正后的误差曲线 对比图8可知,加入气候特征的新模型,其预测误差分布更为平均。不同模型纵横指标对比如表4所示。由表4可知,随着预测天数的增加,LSTM和RF组合模型的纵横指标全面领先单LSTM和SVM模型,而且随着预测时间的增加,组合模型精度下降的幅度都比单LSTM模型和SVM模型要小,由此可见组合模型在预测结果上的优越性。 另外,准确率衡量的是模型的总体平均水平,而合格率衡量的是预测值与实际值偏差是否过大。从表4可以看出,组合模型的准确率和合格率依然比单LSTM和SVM模型高,而且在预测前3日的合格率达到100%,即没有出现误差绝对值大于开机容量25%的情况;而以SVM为代表的浅层模型,在合格率方面,虽然在前2日的精度与单LSTM模型和LSTM与RF的组合模型相距不大,但在后几日的合格率精度上,差距与其他两个模型逐渐拉大,体现了LSTM的深层结构在预测时间延长时所展现出的优势。 采用滑动窗口单点预测的方法,利用LSTM网络对风电场单日的发电量历史数据进行风电场的中长期出力预测。凭借LSTM网络结构中的记忆门和遗忘门的作用,解决了对较长期历史数据的记忆和使用问题,对比BP神经网络及SVM和ARIMA(1,2,5)模型,在预测未来7日发电量的任务上,LSTM模型的预测误差值分布较其他3个模型集中,各四分位数也均小于其他3个模型。 表4 不同模型纵横指标的对比 在加入修正后的气候特征后,模型的预测精度进一步提高,在单一历史数据输入情况下的某些异常点预测误差过大的情况也得以缓解,精度有所提升。 准确的中长期风电功率预测能够辅助风电场制订检修维护计划,减少因停运检修造成的发电量损失。目前国内中长期的风电功率预测研究并不多,关于风电功率预测的模型基本上是一些浅层模型,难以学习到较为复杂的问题。本文提出了一种通过LSTM和RF组合模型来对未来7日的风电场发电量进行预测,采用了风电场的历史发电量数据对LSTM模型进行训练学习,再利用RF对NWP预测日的平均风速和平均气温进行修正并再次预测。实验结果表明,对比BP神经网络、SVM和ARIMA模型,本文所提方法的预测结果更为准确,预测值和实际值的误差分布更为集中,对应的NMAE和CC值也更准确,而且提前7日的预测精度也满足国家的相关标准,能够在天气突变的情况下,减小预测误差。本文提出的方法,能够为全面考虑影响风电场发电量的一些非直接影响因素,如机组的故障时间及可运行的机组台数等的研究提供相关参考。2.4 LSTM和RF的组合模型
3 算例分析
3.1 数据集说明
3.2 数据预处理
3.3 模型的评价指标
3.4 网络的构建与训练
3.5 测试集的选取
3.6 单LSTM的预测结果及对比分析
3.7 LSTM和RF组合模型的预测结果
3.8 实验结果分析
4 结 语