华北电力大学控制与计算机工程学院 罗 毅 吴佳玮
随着“碳达峰”“碳中和”概念的提出,新能源装机容量不断提高,电力系统现有平衡机制受到挑战,构建新型电力系统迫在眉睫[1]。为了深入了解各个地区用电需求,合理安排新能源装机容量,以匹配发电与负荷双向不确定因素,实现新形态下的电力系统平衡,负荷预测工作的准确度有必要进一步提升。
由于电力负荷受天气、节假日等因素影响较大、随机性较强,经典传统方法如回归分析法、时间序列法等已无法满足预测精度要求,支持向量机法、神经网络法[2]等智能算法逐渐成为当前负荷预测方法的主流。支持向量机法难以训练大规模数据集,参数和核函数选择复杂[3]。神经网络算法有着较为良好的非线性映射能力、高度的自适应自学习能力、良好的泛化能力,以及容错能力,被广泛应用于负荷预测,但当数据较多时易出现“长期依赖”,影响预测效果,长短期记忆(Long Short Term Memory, LSTM)神经网络可有效解决此问题[4]。改进后的门控循环单元(Gated Recurrent Unit, GRU)网络在预测结果相近的情况下,拥有更为简洁的结构与参数[5]。
为了解决GRU 网络参数选择过于主观的问题,并最大化利用已有信息,提升预测精度,本文建立了一种新的负荷预测模型,针对智能优化算法中的混合蛙跳算法进行改进,以此优化神经网络超参数,将当日天气、是否为工作日等作为影响负荷的因素纳入考虑,并用注意力机制对输出进行处理,从而提高短期电力负荷预测准确度。
粒子群算法(Particle Swarm Optimization,PSO)作为最早被提出的群智能优化算法,其理论不够完善,在实际搜索过程中易陷入局部最优。混合蛙跳算法(Shuffled Frog Leaping Algorithm,SFLA)参数更少、全局搜索能力更强[6]。
在觅食过程中,青蛙总数为F,子群数为m,每个子群内青蛙个数为n,即三者满足关系式F=m×n。记子群内最优个体为Pb,最差个体为Pw,全局最优个体为Pg,对应适应度分别为Fb、Fw、Fg,青蛙每次的更新步长为D。每个子群内青蛙个体更新公式见式(1)。
式中,r为[0,1]内的随机数,更新步长D由随机数r与子群内最优个体Pb及最差个体Pw之差决定。如果更新后的青蛙适应度比原有适应度好则保留,如并未得到改善则利用全局最优个体Pg通过式(2)再次进行更新。
如二次更新后适应度仍未得到改善,则随机生成一个新的个体取代原有个体。详细算法流程如下。
第一,初始化相关参数,确定各参数定义域、青蛙总数、子群数、更新步长、进化次数等。第二,初始化青蛙群,随机生成F个个体并按适应度排序,依次分配到m个子群中,排名1~m的个体分别进入第1~m个子群,m+1~2m的个体同理,以此类推,直至所有个体分配完毕。第三,选出全局最优个体Pg,每个子群内最优个体Pb及最差个体Pw,根据公式对子群内的青蛙进行局部更新,重复此操作直至达到子群进化次数。第四,将更新后的子群混合,重新计算适应度,并重复第三步,直至达到全局最大循环次数,输出Pg及Fg。
基础的混合蛙跳算法由于每次只更新子群内最差青蛙的位置,导致算法收敛速度较慢,且容易陷入局部最优,基于此对混合蛙跳算法进行改进。与原有混合蛙跳算法相比,改进的混合蛙跳算法青蛙总数及子群划分不变,原来的局部更新改进为除子群最优个体外全部更新,即对于非最优的个体进行批量更新,记为批处理混合蛙跳算法。BSFLA 更新后见式(3)。
式中,r为[0,1]内的随机数,Pb为子群内最优个体,Pr为子群内其余个体,更新步长D由随机数r与子群内最优个体Pb及其余个体Pr之差决定。如果更新后的青蛙适应度比原有适应度好则保留,如并未得到改善则利用全局最优通过式(4)再次进行更新。
如二次更新后仍未改善则随机生成一个新的个体替代原个体。
为了更直观地展示BSFLA 寻优效果,现采用Rastrigin 函数对两种算法进行寻优能力测试。Rastrigin 函数公式见式(5)。
式中,d为变量维度,此处d=2,xi(i=1,2,…,d)表示多维变量。Rastrigin 函数全局最小值为0,具有多个局部极小值,极易陷入局部最优,可用作检测算法跳出局部最优的能力。
BSFLA 及SFLA 在Rastrigin 函数中寻优结果如图1所示。可以看出,BSFLA 的收敛速度较快,且多次跳出局部最优值,在约350次迭代时成功找到全局最小值0。
图1 寻优能力对比
LSTM 常用于处理序列信号,但参数多,计算所需内存较大,存在过拟合风险。GRU 将LSTM结构中的遗忘门和更新门合并为一个更新门,用以对上一个时刻和此时的输入值进行选择性保留。在最终预测结果相近的情况下,GRU 比LSTM 减少一个门,参数数量有所降低,降低了过拟合和“梯度爆炸”风险,极大地节约了计算时间。综合上述因素,本篇选择GRU 作为最终训练网络,其基本单元结构如图2所示。图中xt为输入向量,ht-1为上一单元输出,ht为当前单元输出,σ、tanh 代表使用的激活函数Sigmoid 和tanh,图中“*”代表矩阵对应元素相乘。Γu、Γr为门控单元,二者取值范围均为[0,1];Γu越大,新信息的占比就越多。
图2 GRU 基本单元
在模型训练过程中,Γu会自动更新以寻找最优值,从而摆脱梯度消失现象。对应表达式见式(6)。
式中,Wu、Wr、Wh为对应权重,为模块之间的记忆单元,“·”代表矩阵相乘。
双向门控循环单元在GRU 的基础上进行了一定改进,可视作两个单向GRU 的组合。其输出不仅与历史信息有关,也受到未来信息的影响,这种双向结构有助于神经网络充分利用现有信息,进一步提升预测精度。其结构如图3所示。
图3 BiGRU 神经网络结构
图中xi(i=1,2,3,…,t)为输入,(i=1,2,3,…,t)为前向传播隐藏状态,(i=1,2,3,…,t)为反向传播隐藏状态,yi(i=1,2,3,…,t)为对应输出,其内部计算公式见式(7)。
式中,wt、vt分别表示t时刻、对应的权重,bt为t时刻yt对应偏置量。
Attention 机制通过模拟人脑处理信息的方式,可有效提高训练效果,实现信息资源的最优利用。负荷数据具有相似性,引入Attention 机制可以更好地对历史数据信息进行学习。本文所用Attention 基本结构如图4所示。图中xi(i=1,2,3,…,t)为输入,(i=1,2,3,…,t)为前向传播隐藏状态,(i=1,2,3,…,t)为反向传播隐藏状态,αi(i=1,2,3,…,t)为Attention 机制计算所得权重,y为对应输出。
图4 Attention 机制结构
Attention 机制内部计算公式见式(8)~式(10)。
式中,et为t时刻输入和输出的匹配度,u、w为权重系数,b为偏置量;αt为归一化后的权值;yt为经加权后求得的输出。
在神经网络算法中,超参数往往由网格法或经验法确定,此种方法不仅难以找到最优解,也缺乏客观性和严谨性。PSO 作为最经典的群智能优化算法,难以找到全局最优解。本文引入混合蛙跳算法,该算法参数更少,寻优能力更强,且在此基础上对SFLA 进行改进,以达到更佳的寻优能力。
GRU 通过引入门控单元,有效解决了数据特征难以寻找的问题;在此基础上,BiGRU 相比GRU增加了反向传播过程,能更好地提取未来负荷中包含的关联信息,提升预测精度。Attention 机制通过更改分配在各个隐藏状态上的权重,合理利用历史负荷数据,强化了关键数据对预测结果的影响。
本文模型由输入层、BiGRU 层、Attention 层、输出层组成,其结构如图5所示。历史负荷数据作为输入进入BiGRU 网络进行学习,BiGRU 层对输入数据进行特征提取,采用Adam 算法对其进行优化。BiGRU网络隐藏层的最终状态作为输出进入Attention 层,Attention 机制根据上文公式自动分配权重,迭代选出最优权重矩阵,加权求和得到最终输出。
图5 BSFLA-BiGRU-Attention 模型结构
影响GRU 训练效果的参数主要有三个,即隐藏神经元个数、隐藏层数,以及训练次数,将这三个变化量作为青蛙个体特征,选取部分数据集进行训练,适应度函数定义为均方误差(Mean Square Error, MSE),见式(11)。
训练过程中相关参数设置见表1。
表1 参数设置
本文选取第九届“中国电机工程学会杯”全国大学生电工数学建模竞赛A 题所提供的标准数据集中某地区2012年1月10日至2015年1月10日的电力负荷数据,采样间隔为15分钟,每日96个数据点,包含天气因素(如日最高温、日最低温、日平均温度、相对湿度等信息)及日期类型数据。
为了保证预测结果的准确性,首先需要对负荷数据进行预处理。根据电力负荷具有的连续性和日相似性及周相似性对数据分别做水平预处理及垂直预处理,波动过大的数据以前后时刻或前后天此刻的平均值参与训练。
负荷数据受日期类型、当日气温等因素影响较大,因此将相关气象因素纳入考虑。另外,由于电力负荷与温度、湿度等气象因素不属同一量级,如不加处理直接进行训练,容易导致GRU 只注重负荷信号,而忽略了其他因素对预测结果的影响,因此需对负荷值及温度进行归一化处理;湿度数据本身即为相对湿度,取值范围为[0,1],无须处理。归一化公式见式(12)。
鉴于工作日和节假日负荷呈现出较大区别,特对负荷所属日期类型进行划分,周一至周五记为0.1,周六记为0.5,周日及节假日记为1。
为验证上述模型的科学性及有效性,选取该地区2014年11月20日至2015年1月10日的电力负荷数据作为数据集,其中11月20日至12月31日为训练集,1月1日至1月3日为验证集。为全面体现预测效果,将2015年1月4日至1月10日共一周的数据作为预测集对预测结果进行校验。
模型误差采用平均绝对百分比误差yMAPE(Mean Absolute Percentage Error, MAPE)和准确率A进行评判。平均绝对百分比误差计算方法见式(13)。
准确率计算方法见式(14)、式(15)。
本文所建立模型的七日预测结果如图6所示。
图6 本文模型负荷预测曲线
为全面展示本文所提模型寻优效果,另加入PSO 算法和基于麻雀搜索算法(Sparrow Search Algorithm, SSA)的最小二乘支持向量机(Least Squares Support Vector Machine, LSSVM)模型[7]进行对比,分别用PSO、SFLA 和对GRU 参数进行寻优,将寻优结果代入模型进行计算,并与本文所建立模型进行对比。各模型评判结果见表2。
表2 各模型预测对比(%)
从预测结果平均值角度分析,本文所提出的模型拥有最低误差1.705%和最高准确度97.57%。相比于其他模型,本文模型预测误差分别降低了2.183%、1.574%和0.568%,且1月6日至1月10日本文模型误差均在1.2%左右,可见本文模型与其他模型相比有显著优势。为更清晰表明该模型预测效果,表3给出了该算法1月10日部分时间点真实值与预测值对比,并用yMAPE和平均绝对误差yMAE(Mean Absolute Error, MAE)对模型预测误差进行评判。平均绝对误差计算方法见式(16)。
表3 1月10日预测误差对比
为了更加直观地展示本文模型的预测效果,给出各模型1月10日的负荷预测曲线,如图7所示。从图中可以看出,本文所提模型在几种模型中具有最好的预测效果。
图7 1月10日预测曲线结果对比
本文针对15分钟粒度的短期电力负荷预测,建立了一种基于注意力机制和BSFLA 算法的BiGRU 预测模型。该方法通过BSFLA 算法优化BiGRU 相关神经网络参数,利用Attention 机制重新分配输出权重,并将天气及工作日等因素纳入考虑,从而提高原有模型精度。与传统SFLA 算法相比,BSFLA 算法的收敛速度更快,更易跳出局部最优点,寻优效果更佳。将该模型与基础PSO-GRU 和SFLA-BiGRU、SSA-LSSVM 的预测结果进行多项误差对比得出,改进后的BSFLA-BiGRU- Attention 模型在单日及平均预测结果上均可有效提高负荷预测准确度。
目前较多地区每日负荷仍呈现“双峰”型,本文所提出的模型可作为参考协助新能源站和水电站提前安排次日、次周发电计划,削峰填谷,平滑日负荷曲线,以较低的经济损失实现能源的最大化利用。