APP下载

长短期记忆网络在光伏与风电功率预测中的应用

2022-03-15周岳明镜

科技风 2022年7期
关键词:光伏发电风力发电

周岳 明镜

关键词:功率预测;风力发电;光伏发电;长短期记忆网络

随着近年来新能源发电的不断发展,我国光伏和风电装机容量的增长极为迅速,并已于2010年年底超越美国成为全球风电装机容量第一的国家,于2016年超越德国成为光伏发电量世界第一的国家。我国各个地区新能源装机量都有大幅度增加,尤其是西北地区,新能源装机总量已经超过35%,新能源渗透率不断升高,风电与光伏的不稳定性所带来的影响也逐步加大,对未来的风电与光伏功率预测显得更为重要。

风电和光伏功率预测一般采用包括传统预测方法和人工神经网络方法方法,传统预测方法包括时间序列、回归分析和趋势外推等方式,其模型简单,运算高效,但对风电和光伏等随机性较大的系统预测能力不足。随着计算机算力的不断增加,人工智能算法,如小波分析、支持向量机和人工神经网络等均在功率预测方面有了长足发展。

本文介绍的长短期记忆网络算法,是一种人工神经网络算法,适合于功率预测等时序数据的分析和处理。并在此基础上,提出一种数据优化方式,提高预测准确性。

一、长短期记忆网络

(一)人工神经网络

人工神经网络是一种模拟生物神经元的算法,理论方面不再赘述,本文仅从具体的实现上进行说明。一个人工神经网络包括输入层、输出层、中间层(隐藏层),层中还包括激活函数等,计算过程需要使用损失函数进行参数优化。

中间层一般包括一层或多层,每一层的输入为上一层的各个节点,对节点的数据进行线性计算,并将结果通过激活函数进行非线性化后,形成这一层的输出。对于下一层而言,获取上一层的输出后,同样进行线性计算,再通过激活函数后形成非线性的输出,直到系统最终的输出层。对于激活函数,如果使用線性激活函数,则整个系统最终也会是一个线性系统。所以要体现出系统的非线性,必须使用非线性激活函数。常见的激活函数包括tanh函数、sigmod函数、relu函数等,观察此类函数的模型,sigmod和tanh函数实现了一种从0-1和从-1-1的类线性化,而在0-1和从-1-1之外,函数的输出近似为-1、0或1,可见此类激活函数的功能,是将输出的一部分“提取出来”,其他部分弃之不用。对于此类激活函数,神经网络一定程度上可以看出是由若干个线性系统片段合成的一个非线性系统。Relu函数是通过0点的突变提供非线性,当输入低于0时,输出为0,输入高于0时,输出等于输入。使用此激活函数,程序计算效率比sigmod更高。除上述函数外,还有多种激活函数,一般实际使用中会酌情选择,也可以多尝试进行选优。

损失函数用以表示计算(预测)结果和实际结果之间的误差,损失函数越小,则计算结果和实际结果越接近,神经网络也越能近似实际系统。损失函数往往选用均方误差、平均绝对值误差、指数损失函数、对数损失误差等。对于回归计算,往往采用均方差误差损失函数,但异常数据较多时,平均绝对值误差的适应性可能更好。实际使用也应当对各种损失函数进行测试。另外,不同损失函数的损失值不能直接比较,因此如果相比较采用不同损失函数后,所训练出的模型的优劣,需要对数据制定额外的评分标准。

(二)循环神经网络

人工神经网络有一个问题是,数据都只能单独处理一个或一组输入,前一个和后一个输入完全没有关系。而在实际数据中,上一组输入输出往往跟当前的输入输出有明显的关联,数据也往往是有序的,传统神经网络并不能有效处理这种情况。因此产生一种循环神经网络。

循环神经网络的中间层,会增加一个与之并列的循环层,循环层会保留中间层的权重矩阵,并提供给下一次中间层进行计算。通过这种中间层和循环层相互配合,上一次的输入就可以影响到下一次的输出。

(三)长短期记忆网络

循环神经网络的输出,由当前输入和上一次输入决定。对于一个序列数据,比如一串时序数据较多时,当输人为最后的数据时,第一个数据的权重会不断降低到几乎无法使用,或者不断增加到梯度爆炸。

为了解决这个问题,长短期记忆网络使用一组门代替循环神经网络的循环层。这组门可以记住重要的信息,忘记不重要的信息,相比如循环神经网只能无差别的记忆叠加,对历史输入信息有了选择性。可以认为,长短期记忆网络是在循环神经网络的循环层进行强化,使其拥有了遗忘、选择、决定输出的能力。遗忘功能是根据当前的输入和上一次的输出,共同决定节点状态中的信息的保留程度;选择功能是根据当前的输入和上一次的输出,决定更新哪些信息;决定输出是根据这些信息通过激活函数实现当前节点的输出。通过训练,长短期记忆网络对时序数据有良好的应用效果。

二、气象数据分析

(一)气象预测数据

常用的气象预测数据一般包括:不同高度的风速、不同高度的风向、短波辐射通量、长波辐射通量、气压、云量、温度、湿度、总降水、大尺度降水、对流降水,还有其他动量通量、潜热通量、感热通量等。对于风电和光伏功率预测,一般选用相关性较高的部分信息作为输入数据,选择输出功率作为输出数据。

对数据的选择一般需首先对输入输出数据进行相关性分析,相关性较高的数据作为输入数据。对于可能产生影响的数据,也可酌情选为输入数据。一般来说,对于风电功率预测,风速、风向、温度、气压等信息应当作为输入数据;对于光伏功率预测,短波辐射通量、云量、温度等信息应当作为输入数据。

除了上述有明显相关性的数据,部分数据符合逻辑的数据也应当作为输入项,例如光伏数据有明显的周期性,包括日周期和年周期,一般也会将光伏数据的时间和日期作为参数;沿海地区的风速和风向随着昼夜变化,一般也会体现出一定的周期性,也可考虑将时间作为输入参数。

(二)预测数据准确性

对比气象预测数据和气象实测数据可知,气象预测数据往往能够预测出气象数据的整体变化趋势,但对于实际数据的波动性难以准确预测。且相较于光照信息、风速等信息的预测精度较差。考虑到风速的预测随机性较大,算法进行训练时应格外注意过拟合问题。

三、功率预测算法实现

(一)数据预处理

一般情况下,得到的原始数据里面会存在有问题的数据,此类数据会影响预测的精度,甚至让模型在某些情况得到完全错误的输出结果,因此需要对原始数据中不合理的部分进行处理。数据处理一般包括以下几类:

1.数据错误

数据错误包含情况较多,例如时间数据为从1970年的无效数据;0数据表示数值为0还是空,数据的单位不一致,此类情况均需酌情处理。如果本身训练数据较为丰富,可以直接将有问题的数据进行识别和删除。

2.缺失值和重复值

重复值一般情况下是删除重复项即可,但如果是时间相同但数值不同的重复数据,则需要根据上下文数据进行筛选。缺失值的处理一般按照缺失值多少进行处理,当缺失值较少时,一般使用均值或中位数进行填补;缺失值较多时,长短期记忆网络由于大量数据缺失导致无法给网络提供一系列稳定的时序数据组,因此一般不建议使用长短期记忆网络。

3.离群值

离群值指部分有一个或少数几个数值与其他数值差异较大,一般情况下离群值并不能表示整个系统的一般特性,在没有特殊要求的情况下可以对离群值进行剔除。数据较少时,离群值可以通过绘图后手动确}人,并进行处理,当数据较多时,一般需要对数据进行聚类后,确定离群值并处理。

(二)功率预测的流程

本文选择使用Pvthon程序及其人工智能库keras等进行开发。Pvrhon由于其开发简单,可用的机器学习库十分丰富,且可以免费使用,在人工神经网络等应用方面得到了广泛应用。Keras库的使用一般包含下述几个步骤:

1.读取数据

一般使用pandas库从csv等表格文件中读取输入输出数据。渎取后的数据类型为dataframe,是一种易于使用的数据结构。

2.数据预处理

数据的预处理根据实际情况而定,一般会处理错误数据、离群数据等,另外需要将输入输出数据的时间严格对应,即同组的输入输出必须为同一时刻。

3.数据选择

处理后的数据需要从中选择输入、输出,部分算法还需要对输入输出进行归一化。

4.训练与测试数据

一般情况下,为了验证预测模型的准确性,会将数据分为训练集和测试(验证)集,训练集的数据进行模型训练,测试集的数据用来测试模型的准确性。对于长短期记忆网络,每次的输入数据除了当前时刻,还包含当前时刻之前的多个数据组。

5.搭建模型

使用keras提供的层进行模型的搭建,选择合适的模型参数和类型,一般情况下使用默认参数可以满足大部分需求。

6.模型训练和测试

将分好的数据放入keras进行训练,完成训练后使用测试数据进行预测,并将测试数据中的实际值和模型输出的预测值进行比较。训练后的模型可以储存下来重复训练和使用,这也让模型具备持续学习的能力。

通过上述过程,可以实现风电和光伏功率预测模型的训练,如果在服务器设备上定期执行气象数据获取和预测任务,可以实现持续的功率预测。

(三)预测算法的实现

以风电为例,首先对数据进行相关性分析,相关性较高的数据为风速和风向,因此选用不同高度的风速和风向作为输入数据,可酌情增加温度等信息。输出数据为风力发电站的实测功率。

將输入输出的数据时间对应,对于完整的数据,直接选择共同的起始时间,选择合适的数据长度。对于可能不完整的数据,需要按照时间将所有数据一一对应。

异常数据处理,对于气象数据和发电站发电数据,首先确定正常的数据类型为一定范围内的数字,对数据的处理首先清理掉所有非数字的内容,比如空数据,或者“一”等表示空的字符。利用pyrhon中的isNum等函数可以判断进而剔除掉非数字项。对于可能越限的数据,首先指定数据的合理范围,比如发电功率应当不超过发电站的装机容量,风向的范围是0-360,风速的范围大于0,且不超过当地的历史最大风速。

对于超出范围的数据,需人工核查,已确定前期指定的范围是否合理。如发电功率在少数情况下,是会呈现略低于0的负数,这是因为无风无光的情况下,变电站会从电网取少量电能,此类情可以视数据为合理值。实践中可将略低于0的发电功率人为修改为0,修改后对训练模型无明显影响。

本文使用长短期记忆网络,需将输入数据及其之前一定时间内的输入数据合并为更高纬数据,例如上述风速风向的输入数据为1x6的数组,如果采用1小时的4组数据,则组合为1x6x4的数组作为输入数据。如果这一个小时内存在异常数据,则该组输入数据应当舍弃,从而确保输入数据是连续的、无误的一个小时气象数据。

建立基本模型结构,选择LSTM层+Dense层的组合,层数与节点数量需根据实际情况多次试验选定。本文所使用的数据,选择使用3层中间层,每层128个节点的模型已有较好效果,再增加层数或节点数差异不大。

设置参数后进行模型学习和预测,预测结果如图1左:

图1左中是预测3天风力发电站的输出功率,其中两条曲线分别是实际功率和预测功率。可以看出通过预测天气数据进行预测的功率能够大致描述出风力发电站的输出功率,但细节和精度较为一般。

对比图1右这3天的实际功率和实际风速曲线可以清晰看出,功率与风速有非常明显的相关性,这也符合我们对风力发电设备的预期。由此也可以得出结论,气象预测数据中的风速预测是产生预测偏差的主要原因。

以光伏为例,首先对数据进行相关性分析可知,光伏发电功率与短波辐射通量呈明显的强相关性,而对其他部分的关联性均不明显。可酌情增加温度和风速等信息作为输入数据。

对数据的预处理与风电站基本相似,并额外考虑光功率资源的周期性,一般光伏的辐照强度及发电功率会呈现明显的周期性,在夜间数据应当在0值附近,如果超出范围则应当为异常数据。

设置参数后进行模型学习和预测,预测结果如图2左:

图2左中是预测3天光伏发电站的输出功率,两条曲线分别是实际功率和预测功率。可以看出通过预测天气数据进行预测的功率能够大致描述出光伏发电站的输出功率,但部分情况下难以准确描述具体的变化细节。

对比图2右这3天的实际功率和实际测光数据可以看出,测光数据(法向直射辐照度)与实际功率的相关性较高,光伏发电受云层遮挡影响较大,气象预测无法准确计算具体时刻的云层位置和密度,因此通过气象预测进行功率预测也难以预测出由于云层飘过导致功率暂降等情况。

结语

本文从数据处理、模型分析到编程思路等方面讨论了长短期记忆网络在光伏与风电功率预测中的应用方式,通过该方式可以实现风电或光伏发电站的功率预测,可作为风电和光伏发电站运行的参考信息。模型具备持续学习的能力,能够随着不断使用,逐步优化预测模型,提升预测精度。

风光功率预测十分依赖气象预测数据,气象数据与实际功率的相关性直接决定了预测的准确度。通过对比实际功率和实际风速、实际光照可知,风速、光照与发电功率呈强相关性,功率预测产生偏差的主要环节是气象预测数据与实际风速和实际光照的差异。由于气象预测一般难以准确预测出实际风速和光照的变化细节,仅可以表述出大体的变化趋势.因此预测出的功率一般也只能表现出整体趋势。

本文中预测准确度整体较一般,在下一步研究中应当结合相似日等优化算法与人工智能算法相结合,进一步提高预测准确度。

猜你喜欢

光伏发电风力发电
风力发电机组的电气控制
基于单片机的太阳能路灯控制器
电池储能技术在风力发电系统中的应用
基于ARIMA模型的光伏客户需求服务预测研究
大型并网光伏发电站选址分析
中国西北地区光伏发电的环境影响评估
风力发电机组电气与控制系统快速检修思路探索