1.本发明属于电力负荷预测领域,尤其涉及基于综合形状误差和时间误差的长期电力负荷预测方法。
背景技术:2.电力负荷预测作为能源管理的重要组成部分,在电力系统中有着重要的意义和作用。准确的负荷预测,可以经济合理的安排电网内部发电机的启停,保持电网运行的安全稳定性,减少不必要的旋转储备容量。电力负荷预测工作的水平是衡量一个电力企业管理是否现代化、科学化的重要标志,已经成为电力系统理论研究的重要目标。
3.早期的电力负荷预测方法大多基于数理统计理论中的相关模型。一般分为两类方法,一是假设负荷数据是时间序列信号,通过时间序列分析以获得所需的结果。如自回归模型(ar)、滑动平均模型(ma) 及自回归滑动平均模型(arma)等。电网条件正常,气候等因素变化不大时,预测结果较好。但当随机因素变化较大或有不良数据时,预测结果不理想。二是使用回归分析获得用电量和气温、湿度等天气变量之间的关系。使用的方程包括指数函数回归方程、多元线性回归方程等等。
4.随着各种数据传感器在电力系统广泛安装,以大数据为支撑的神经网络算法在电力系统尤其负荷预测中得到了广泛应用。例如,基于小波神经网络(iwnn)、小波预处理和广义极限学习机(gelm)的电力负荷混合预测方法。或运用一种因果马尔可夫埃尔曼神经网络 (cmen),以表征多网络系统中异构时间序列之间的相互依赖性,并在多网络系统中进行负载预测。然而,现有方法难以捕捉长期依赖关系,未充分挖掘时间序列数据自身之间的相关信息,这在多步预测尤其是多输出策略中无法发挥最佳性能。本发明结合多输出策略方法 seq2seq架构,提出了一种新的基于双注意力机制及双向gru(bigru) 的序列到序列框架。采用双注意力机制,第一层注意力机制可以从编码器输出的时序隐藏状态中获取与待测数据的关系,对时序特征进行有效抉择,增加预测精度;第二层采用自注意力机制 (self-attention),挖掘解码层输出的时序隐藏状态之间的内部关系,通过训练权重矩阵修正最终预测结果;使用多输出策略,可有效结合 dilate损失函数,改善使用mse损失函数的rnn神经网络在时间序列预测中的滞后问题。
技术实现要素:5.本发明的目的在于提出基于综合形状误差和时间误差的长期电力负荷预测方法,缓解长期预测累积的误差,减少对外部信息的依赖,降低模型偏差,提高预测精度的长期负荷预测方法,并最终将预测结果应用于电网规划,满足电网的可靠运行需求。
6.为实现上述目的,本发明提供了基于综合形状误差和时间误差的长期电力负荷预测方法,包括:
7.采集原始数据,基于所述原始数据进行数据预处理,获取训练集和测试集,基于所述训练集和所述测试集分别进行数据归一化处理,获得归一化处理后的归一化训练集和归
一化测试集;
8.构建负荷预测模型,将所述归一化训练集输入到所述负荷预测模型中进行训练,获得训练好的负荷预测模型;将所述归一化测试集输入到所述训练好的负荷预测模型中,获得预测结果。
9.优选的,构建负荷预测模型,包括编码器,包含两个隐藏层,编码器计算过程包括:当前时刻的隐藏状态时,会首先计算一个候选状态而在计算候选状态时,会考虑重置门r
t
的取值:
10.r
t
=σ(wr[h
t-1
,x
t
])
ꢀꢀꢀ
(1)
[0011]
使用sigmoid函数使得门的取值限定为[0,1]之间,当重置门近于0,当前候选值会忽略前一个隐藏状态h
t-1
,并用当前的输入x
t
来计算,有效地让隐藏状态抛弃任何将来发现的不相关信息:
[0012][0013]
计算出来候选值之后,通过更新门来控制前一个隐藏状态有多少信息可以传递到当前隐藏状态,更新门z
t
为:
[0014]zt
=σ(wz[h
t-1
,x
t
])
ꢀꢀꢀ
(3)
[0015]
最后当前时刻的隐藏状态h
t
可以计算为:
[0016][0017]
优选的,构建负荷预测模型包括解码器,所述解码器中包含一个未来层,所述未来层结合两个隐藏层,将结合后的数据输入到自注意力机制中,所述解码器的计算过程包括:
[0018][0019][0020][0021]
其中gru()函数表示对输入的数据的非线性转换;u
t
与v
t
分别为 bigru所对应的前向隐含层状态和反向隐含层状态所对应的权重; b
t
表示t时刻隐含层状态所对应的偏置;解码器将输入序列x分步输入,其在t时刻的gru神经元隐藏层状态由t-1时刻gru神经元隐藏层状态和t时刻输入x
t
共同决定,即:
[0022]ht
=f(h
t-1
,x
t
)
ꢀꢀꢀ
(8)
[0023]
式中:h
t
为t时刻gru神经元隐藏层状态;h
t-1
为t-1时刻gru神经元隐藏层状态;x
t
为时刻输入的数据;则编码器输出的中间状态c为:
[0024]
c=q([h1,h2,h3,...,hn])
ꢀꢀꢀ
(9)
[0025]
式(8)与式(9)中的q与f为非线性函数。
[0026]
优选的,所述解码器结合自注意力机制对编码器的隐藏层状态进行加权,解码器通过将联合概率分解为有序条件来定义输出数据y
′
的概率为:
[0027]
[0028]
对于rnn来说,每个条件的概率模型为:
[0029]
p(y
′i∣{y
′1,
…
,y
′
i-1
},c)=g(y
′
i-1
,si,c)
ꢀꢀꢀ
(11)
[0030]
其中g是一个非线性、输出y
′i概率的函数,si为解码器在i时刻的隐藏层状态:
[0031]
si=f(s
i-1
,y
′
i-1
,ci)
ꢀꢀꢀ
(12)
[0032]
当i=1时,也就是当解码器第一次进行解码操作时,此时还没有生成上一时刻的隐藏层状态和预测值,则使用编码器中的最后一次编码时的隐藏层状态hn和原始序列的最后一个数据xn会充当上一时刻的解码器隐藏层状态和预测值:
[0033]
s1=f(hn,xn,c1)
ꢀꢀꢀ
(13)
[0034]
其中ci为编码器隐藏序列(h1,...hn)通过注意力权重α
ij
进行加权得到的不同时刻编码器输出的中间状态:
[0035][0036]
优选的,权值计算包括:采用多层感知机将最终输出的预测值与编码器隐藏层状态进行关联度分析得到注意力权值。
[0037]
优选的,获取预测结果包括:通过捕获输出时间序列间的关系,纠正解码器输出并改进预测,然后将数据传递给全连接层输出最终预测值。
[0038]
优选的,还包括损失函数更新模型参数,基于形状损失和时间损失进行误差识别,获得预测值和真实值。
[0039]
优选的,基于所述预测值和所述真实值,获取最优路径预测结果包括:
[0040]
1)基于所述预测值与真实值定义代价矩阵,通过查找每一步的最小值,获得时间形状损失;
[0041]
2)引入光滑算子计算时间形状损失函数和时间损失函数,获得最优路径预测结果。
[0042]
本发明技术效果:本发明公开了一种基于综合形状误差和时间误差的长期电力负荷预测方法,缓解长期预测累积的误差,减少对外部信息的依赖,降低模型偏差,提高预测精度的长期负荷预测方法。并最终将预测结果应用于电网规划,满足电网的可靠运行需求。
附图说明
[0043]
构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
[0044]
图1为本发明实施例基于综合形状误差和时间误差的长期电力负荷预测方法的流程示意图;
[0045]
图2为本发明实施例基于dilate损失函数测试四种模型示意图;
[0046]
图3为本发明实施例三种算法评估示意图。
具体实施方式
[0047]
需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
[0048]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的
计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0049]
如图1-3所示,本实施例中提供了基于综合形状误差和时间误差的长期电力负荷预测方法,对负荷原始数据序列预处理,将预处理后的数据分成训练集和测试集并分别进行归一化处理。建立负荷预测模型,将处理后的训练集数据输入负荷预测模型中进行训练;将处理后的测试集数据输入训练好的负荷预测模型中进行预测。为了评估所建立的负荷预测模型精度,通过选择评价指标对模型的拟合程度和预测准确度进行评价。
[0050]
一、数据预处理
[0051]
数据预处理的目的是为了清理历史负载数据时确保数据集的质量。对数据集中的缺失值和异常值进行检查,以防止其对预测精度的影响。将异常值删去,当作缺失值进行处理。通过历史负荷数据对缺失值进行修复。
[0052]
将预处理后的数据分成训练集和测试集,然后分别进行数据归一化处理。归一化是把数据转化到0~1范围内的操作,可更好的提取数据特征,同时加快神经网络训练时的收敛速度,提高预测精度。
[0053]
二、建立负荷预测模型
[0054]
(1)gru
[0055]
gru在计算当前时刻的隐藏状态时,会首先计算一个候选状态而在计算候选状态时,会考虑重置门r
t
的取值:
[0056]rt
=σ(wr[h
t-1
,x
t
])
ꢀꢀꢀ
(1)
[0057]
使用sigmoid函数使得门的取值限定为[0,1]之间。如果重置门近于0,当前候选值会忽略前一个隐藏状态h
t-1
,并用当前的输入x
t
来计算。这可以有效地让隐藏状态抛弃任何将来发现的不相关信息:
[0058][0059]
计算出来候选值之后,通过更新门来控制前一个隐藏状态有多少信息可以传递到当前隐藏状态,更新门z
t
为:
[0060]zt
=σ(wz[h
t-1
,x
t
])
ꢀꢀꢀ
(3)
[0061]
最后当前时刻的隐藏状态h
t
可以计算为:
[0062][0063]
(2)bigru
[0064]
gru神经网络采用循环结构来长期存储和检索信息,但该神经网络只考虑预测点过去时刻的信息而无法考虑未来时刻的状态,使得预测精度无法进一步提高。双向gru(bigru)网络有一个未来层,让数据序列在相反的方向上进行预测以克服这个问题。该网络使用两个隐藏层从过去和未来中提取信息,并且两者都连接在同一个输出层中。
[0065]
在bigru中:
[0066][0067]
attention)、乘法(multiplicative
ꢀꢀ
attention)和加法(additive attention)。本文通过一个多层感知机 (multilayer perceptron,mlp)将最终输出的预测值与编码器隐藏层状态进行关联度分析得到注意力权值α
ij
,权值α
ij
计算方法为:
[0089]
α
ij
=mlp(y
′i,hj)
ꢀꢀꢀ
(15)
[0090]
当第一次计算权值时,因为此时还没有第一时刻的预测输出值,所以使用原始序列中的最后一个数据xn充当此时的预测值:
[0091]
α
11
=mlp(xn,h1)
ꢀꢀꢀ
(16)
[0092]
解码器中的bigru神经网络通过不断迭代计算,最终解码器将输出预测序列y
′
=[y
′1,y
′2,y
′3,...,y
′n]。
[0093]
(5)自注意力机制
[0094]
本模型的自注意力自制模块将解码器的输出作为输入。通过捕获输出时间序列间的关系及相互影响,把握长期时序依赖关系,以进一步纠正解码器输出并改进预测,之后将数据传递给全连接层输出最终预测值。基本方法为:
[0095]
将原始输入中的构成元素y
′
=[y
′1,y
′2,y
′3,...,y
′n]
t
想象成是由一系列的 《key-value》数据对构成,此时给定目标输出中的某个元素query,通过计算query和各个key的关联程度,得到每个key对应的value 的权重系数,让后对value进行加权求和,即得到了最终的注意力数值。具体步骤如下:
[0096]
1)将序列[y
′1,y
′2,y
′3,...,y
′n]中的每一个数据转化成嵌入向量;
[0097]
2)嵌入向量分别乘以权重矩阵wq,wk,wv得到q,k,v三个向量,分别对应query,key,value;
[0098]
3)计算每一个query(q)和各个key(k)的相似度,同样使用mlp,得到每个key(k)对应value(v)的权值[α
′1,α
′2,α
′3,...,α
′n];
[0099]
4)使用softmax函数将权值进行归一化,得到权重系数 [α1,α2,α3,...,αn];
[0100]
5)把权重系数和相应的value(v)进行加权求和,通过计算序列其他数据对v的影响来对v进行最终提纯,获取预测数值 y
′
=[α1y
′1,α2y
′2,α3y
′3,...,α
ny′n]
t
;
[0101]
6)将预测值y
′
输出到线性层获取最终预测结果y。
[0102]
自注意力机制减少了对外部信息的依赖,能够把输入序列中不同位置的信息联系起来,更擅长捕捉数据或特征的内部相关性。此外,计算q,k,v的权重矩阵wq,wk,wv均可以在模型的训练过程中进行学习,从而增强了模型的泛化性能。
[0103]
(6)dilate
[0104]
在训练预测模型过程中,需要使用损失函数来更新模型参数。以往时间序列预测上大部分应用的是基于欧氏距离的损失函数。其根据每个数据点严格一对一的映射来进行预测值与真实值的损失计算,忽略了时间序列的形状和时间等信息。dilate损失函数弥补了这方面的缺陷。
[0105]
dilate损失函数同时考虑了形状损失和时间损失,从两个维度上进行误差的识别。
[0106]
其公式如下:
[0107]
[0108]
其中β∈(0,1)用来平衡γ
shape
和γ
time
的权重,γ
shape
代表形状损失函数,γ
time
代表时间损失函数,代表预测值,yi代表真实值。
[0109]
形状损失函数是基于动态时间规整(dynamic time warp,dtw) 理论而来,dtw允许每个数据点进行一对多的映射,以此实现对时间序列数据的扭曲,进行相似性比较,确定两个时间序列数据间的差异性。dtw算法步骤如下。
[0110]
1)根据序列与定义代价矩阵其中为两个序列点的欧式距离。
[0111]
2)根据得到的代价矩阵,通过查找每一步的最小值,得到使得整体代价最小的最优代价路径。
[0112]
为识别代价矩阵的最优路径,定义二进制矩阵a,若与在代价矩阵中的最优曲线处于路径中,则矩阵a中a
hj
的值为1,否则a
hj
的值为0。定义是所有在约束条件下可以从(1,1)到(n,n) 的路径集合。由于dtw是离散不可微的,引入光滑算子:
[0113][0114]
且γ>0使其可微。由此可以得到形状损失函数。
[0115][0116]
时间损失函数的目的是惩罚和yi之间的时间延迟。定义来表示预测值和真实值yi之间的最佳路径。定义惩罚方阵ω=[w
b,j
],其中由此可以定义时间损失指数tdi。
[0117][0118]
tdi对最佳路径a
*
做出了时延惩罚。由于tdi中包含两个不可微矩阵ω和δ所以不能使用通过引入光滑算子的方法进行可微化处理。但由于所以可以定义一个平滑近似值再基于可以得到一个平滑的时间损失函数。
[0119][0120]
[0121]
三、评估模型预测效果
[0122]
考虑4种不同的评估指标,即mse、rmse、mae及dilate。其中, rmse和mae是两个尺度相关的度量。rmse是mse的平方根,使得预测结果在数量级上更加直观。将dilate拆分为dtw和tdi两个指标,从而可以分别考察预测结果在形状和时间上的误差。
[0123]
本发明以中国北方某城市电网提供的2018全年共计8760个小时的历史负荷数据进行测试。训练和测试时均以小时为单位。在训练和测试时采用滑动窗口策略。训练时采用真实值进行每个窗口训练集的补位,以进行监督学习。
[0124]
实验第一部分为验证所提算法在长期测试方面的有效性。取全部负荷数据的85%共计7440个小时为训练集,15%共计1320小时为测试集。测试时使用预测值代替真实值进行窗口的补位,随着预测时间的增加会逐渐累积误差。随后将模型与lstm、gru和ls-svm的预测方法进行了对比。
[0125]
实验第二部分为验证dilate损失函数是否能改善传统rnn网络的滞后性问题。为更清晰的展示预测效果,本部分进行了短期单步测试。测试时用真实值进行窗口的补位。取全体负荷数据的97.5%共计 8550个小时为训练集,2.5%共计210小时为测试集。随后将模型与使用mse损失函数的lstm、gru等rnn算法进行了对比。测试的四种模型的参数设置如表1所示。
[0126]
表1超参数设置
[0127][0128]
如附图2所示,图中虚线代表真实值,实线代表预测值。其中图 (a)是采用的是基于seq2seq架构的gru,图(c)采用的是ls-svm 预测模型。图(d)采用的是本发明模型。gru及lstm方法的预测结果有着明显的周期性,仅能在前400小时有着较好的表现,之后由于序列信息的遗漏以及迭代误差的累积,已无法抓取序列的变化。而图(c) 以ls-svm进行预测的结果相比lstm和gru更差。与图(a)(c)对比,本发明所用的dual attention-dilate模型好于以上三种模型,在序列后期仍成功的对曲线实现了部分跟踪。根据表2所示,dualattention-dilate模型在各个评估指标都要优于其他三种对比模型。
[0129]
表2四种算法评估指标对比
[0130][0131]
由附图3和表3可以看出,由于每次迭代均使用真实值进行窗口的补位,三种模型的拟合程度都较好,但由于gru及lstm使用了mse 损失函数,因此导致了不同程度的滞后。本发明提出的dualattention-dilate模型针对时间误差进行了修正,预测结果没有滞后现象,预测精度更高。
[0132]
表3三种算法评估指标对比
[0133][0134]
以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。