基于残差卷积模块的非侵入式居民用户负荷分解方法
技术领域
本发明涉及电力系统技术领域,尤其涉及一种基于残差卷积模块的非侵入式居民用户负荷分解方法。
背景技术
大规模的电表部署以及配套的通信网络与数据系统共同组成了高级量测系统,其测量所得数据通过数据挖掘等数据分析技术可以得出用户用电行为习惯以及各电器用电量等信息;这一过程就是负荷分解。
负荷监测分为侵入式负荷监测和非侵入式负荷监测两种,其中侵入式负荷监测是在用户的每个家用电器上安装检测设备,以便获得相关电器运行信息;但这种方式成本高,实现困难,并难以保护用户的隐私,大范围推广难以实现;非侵入式负荷监测又称为负荷分解,仅通过分析用户总表数据,得出该用户家用电器的种类、开关状态以及有功功率损耗等信息,更充分的挖掘电表数据的信息价值;这种方式成本较低,实现难度小,容易获得用户认同,是未来负荷监测的主要方向。
基于深度学习的非侵入式负荷分解方法是负荷分解的常用方法之一;深度学习模型中有许多网络变体,如去噪自动编码器(DAE)、RNN、seq2point常规卷积等等,但现有的分解方法具有分解精度低及未对电器进行筛选的问题。
发明内容
本发明的目的是为了提供基于残差卷积模块的非侵入式居民用户负荷分解方法,提高居民负荷分解的准确性。
为解决以上技术问题,本发明的技术方案为:基于残差卷积模块的非侵入式居民用户负荷分解方法,包括:
步骤1:获取训练数据并进行数据预处理;
步骤1.1:获取公开数据集中家庭总有功功率和各电器有功功率;
步骤1.2:根据各电器有功功率选取目标电器,得到目标电器有功功率;
步骤1.3:对数据集进行归一化处理,训练数据为真实值,包括总有功功率和目标电器有功功率;根据目标电器运行时常分别设定序列样本长度,根据序列样本长度使用滑动窗口得到总有功功率序列;
步骤2:构建并训练负荷分解模型;
步骤2.1:训练数据中的总有功功率序列输入残差卷积模块,在残差卷积模块中,以CNN模型作为基础学习有功功率特征,通过跨层连接将原输入数据与通过CNN学习到的特征数据相加,将所得数据进一步输入到GRU网络学习时序特征,输出目标电器有功功率的预测值;
步骤2.2:将目标电器有功功率的预测值与真实值进行比较,不断调整负荷分解模型的网络参数使预测值与真实值之间误差不再下降时,停止训练,得到训练好的负荷分解模型;
步骤3:通过训练好的负荷分解模型对待分解的用户总有功功率进行分解,获得目标电器的有功功率分解结果。
进一步的,负荷分解模型包括:CNN层、ADD层、GRU层和Dense层;CNN层和ADD层将残差网络与CNN组成残差卷积模块;CNN层用于学习负荷有功功率数据特征,ADD层将CNN层的输入数据与CNN所得到特征数据相加,并将相加后的数据送入GRU层;GRU层用于提取数据中隐藏的时序特征并将结果输入Dense层,经过两Dense层输出目标电器的有功功率分解结果。
进一步的,步骤2.1具体为:
步骤2.11:将CNN模型作为残差卷积模块的基础,CNN模型中具体计算过程如下:
zt=f(WTPt:t+W-1+b)
rt=Max(zt)
xτ=F(rt)
其中,Pt:t+k-1代表输入时间序列,k为卷积核大小;WT表示卷积网络中的共享权重参数,b表示卷积网络中的共享偏置;f(X)为激活函数;zt为CNN计算样本所得出的特征值,Max(x)函数为最大池化函数;F(x)为全连接映射函数;
步骤2.12:引入残差网络,残差网络位于ADD层,通过残差网络将原CNN卷积神经网络输入和CNN所得到特征相加作为下一层的输入;通过捷径将CNN卷积神经网络输入和CNN得出的特征相加:
yi,j=xi,j+zi,j
其中,xi,j为网络输入,zi,j为CNN学习到的特征值,yi,j为输入与特征值之和;
步骤2.13:结合GRU模型,学习特征间的时序联系,GRU层中的GRU模型具体计算过程如下,假设GRU的时间步数为t:
rt=Sigmoid(Wrxxt+Wrhht-1)
zt=Sigmoid(Wzxxt+Wzhht-1)
其中,在时间步t下,对于重置门rt而言,首先分别获得输入xt与其权重Wrh的乘积及前一时间步t-1下的状态输出ht-1与其权重Wrh的乘积,然后对两部分乘积求和再经过Sigmoid函数将输出缩放至0到1之间;对于更新门zt而言,首先分别获得输入xt同其权重Wzx的乘积及前一时间步t-1下的状态输出ht-1同其权重Wzh的乘积,然后对两部分乘积求和再经过Sigmoid函数将输出缩放至0到1之间;针对当前候选状态输出对前一时间步t-1下的状态输出ht-1与重置门rt求哈达玛积实现对过去信息的保留,然后分别获得其与权重Wch以及输入xt与其权重Wcx的乘积,最后对两部分乘积求和再经过tanh函数将输出缩放至-1到1之间;当前状态输出ht保存着当前GRU学习到的信息,将会在神经网络中继续往后传递;首先用1减去更新门zt中每个数据,再将得到的差与前一状态输出ht-1相乘得到经过丢弃操作之后剩下的信息;之后将更新门zt同当前候选状态输出/>相乘得到该单元记忆的信息,最后将两部分信息相加得到当前状态输出ht。
步骤2.14:经过两Dense层完成目标电器的有功功率预测,输出目标电器的有功功率分解结果。
进一步的,步骤2.2中,预测值与真实值之间误差采用分解误差指标评定,分解误差指标包括:平均绝对误差Mae、召回率RE和F1分数F1,具体为:
其中,PRE表示准确率;x’t与xt分别表示负荷在时间点t功率消耗的预测值和真实值;TP表示负荷真实状态为运行而预测状态也是运行的总数;FP表示负荷真实状态为关闭而预测状态为运行的总数;TN表示真实状态为关闭而预测状态也是关闭的总数;FN表示真实状态为运行而预测状态也是关闭的总数。
进一步的,步骤1.1中的公开数据集为公开数据集UK-DALE。
进一步的,步骤1.2中,目标电器的评定标准包括:
条件一:电器运行有功功率PN≥1kw;
条件二:运行功率可调节;
条件三:运行时间可调节;
若电器符合上述任一条件即设为目标电器。
进一步的,步骤1.3中训练数据归一化处理的方法为:
其中,xnew为原始数据x变换得来的新数据,xmax和xmin分别为原始数据中的最大值和最小值。
进一步的,所述步骤1.3中,序列样本为一定长度的总有功功率;目标电器序列样本长度所代表时间大于该电器完整运行周期:
Xi=[xi,1,xi,2,…xi,K…xi,M],i=1,2,3…
ni*t≥Ti
其中,Xi是第i个目标电器的总有功数据,xi,K是第i个目标电器总有功数据中的第K个数据,M第i个目标电器总有功数据的总数,xi,j是第i个目标电器的第j个样本,是第i个目标电器的第j个样本中的第k个数据,ni是第i个目标电器的样本序列长度,t是有功数据样本采集周期,Ti第i个目标电器的运行周期。
本发明具有如下有益效果:
一、本发明负荷分解模型通过训练建立总有功功率和目标电器有功功率之间的映射关系,给定一个输入总有功功率样本,负荷分解模型能够通过对应的映射关系分解得到目标电器对应消耗的有功功率;负荷分解模型中,在卷积神经网络的基础上,结合残差机制构建了残差卷积神经网络;残差网络在很大程度上避免随着网络层数的增加而产生的梯度消失或爆炸问题,这使得构建极深网络成为现实;基于残差卷积模块,学习训练数据中的隐藏信息,使得分解精度进一步提升;
二、本发明实现了家用电器在稳态运行情况下的负荷分解,分解结果可用于指导用户优化用电行为,降低用电成本,有利于电力系统的安全稳定经济运行;评测用户需求响应潜力,为电网制定需求响应策略,引导居民用户自发调整用电,降低峰谷差提供了参考信息。本发明选取数据为用电设备在稳定运行情况下的有功功率数据作为网络输入,该数据可由目前通用的家庭智能电表测得,不需要额外的硬件成本投入。
附图说明
图1为本发明实施例整体流程示意图;
图2为本实施例中负荷分解模型的结构示意图;
图3为本实施例中残差块A和残差块B的结构示意图;
图4为本实施例中冰箱用电分解对比图;
图5为本实施例中洗衣机用电分解对比图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本发明作进一步详细说明。
请参考图1至图5,本发明为基于残差卷积模块的非侵入式居民用户负荷分解方法,其步骤包括:
步骤1:获取训练数据并进行数据预处理;
步骤1.1:获取公开数据集中家庭总有功功率和各电器有功功率;家庭总有功功率和各电器有功功率是稳态运行状态下的有功功率数据;本实施例中,公开数据集采用的是公开数据集UK-DALE,获取公开数据集UK-DALE中用户1的用电数据,按6秒的采样频率从2012年11月至2016年5月分别采集家庭总表和电器分表有功数据,即总有功功率和各电器有功功率;将所有数据按时间对应顺序排列,形成数据集;
步骤1.2:根据各电器有功功率选取目标电器,得到目标电器有功功率;此步骤用于选取各电器中需求响应潜力较大设备作为目标电器;目标电器的评定标准包括:
条件一:电器运行有功功率PN≥1kw;
条件二:运行功率可调节;
条件三:运行时间可调节;
若电器符合上述任一条件即设为目标电器;本实施例中,从用户1挑选出来的目标电器包括热水壶、面包机、冰箱和洗衣机;
步骤1.3:对数据集进行归一化处理,训练数据为真实值,包括总有功功率和目标电器有功功率;根据目标电器运行时常分别设定序列样本长度,根据序列样本长度使用滑动窗口得到总有功功率序列;
步骤1.3中,训练数据归一化处理的方法为:
其中,xnew为原始数据x变换得来的新数据,xmax和xmin分别为原始数据中的最大值和最小值;
步骤1.3中,序列样本为一定长度的总有功功率;目标电器序列样本长度所代表时间大于该电器完整运行周期:
Xi=[xi,1,xi,2,…xi,K…xi,M],i=1,2,3…
ni*t≥Ti
其中,Xi是第i个目标电器的总有功数据,xi,K是第i个目标电器总有功数据中的第K个数据,M第i个目标电器总有功数据的总数,xi,j是第i个目标电器的第j个样本,是第i个目标电器的第j个样本中的第k个数据,ni是第i个目标电器的样本序列长度,t是有功数据样本采集周期,Ti第i个目标电器的运行周期。经计算确定热水壶、面包机、冰箱和洗衣机的样本序列长度分别为39、29、59和99。
步骤2:构建并训练负荷分解模型;负荷分解模型通过训练建立总有功功率和目标电器有功功率之间的映射关系,给定一个输入总有功功率样本,负荷分解模型能够通过对应的映射关系分解得到目标电器对应消耗的有功功率;
步骤2.1:负荷分解模型包括:CNN层、ADD层、GRU层和Dense层;CNN层和ADD层将残差网络与CNN组成残差卷积模块;CNN层用于学习负荷有功功率数据特征,ADD层将CNN层的输入数据与CNN所得到特征数据相加,并将相加后的数据送入GRU层;GRU层用于提取数据中隐藏的时序特征并将结果输入Dense层,经过两Dense层输出目标电器的有功功率分解结果;
训练数据中的总有功功率序列输入残差卷积模块,在残差卷积模块中,以CNN模型作为基础学习有功功率特征,通过跨层连接将原输入数据与通过CNN学习到的特征数据相加,将所得数据进一步输入到GRU网络学习时序特征,输出目标电器有功功率的预测值;步骤2.1具体为:
步骤2.11:将CNN模型作为残差卷积模块的基础,CNN模型中具体计算过程如下:
zt=f(WTPt:t+W-1+b)
rt=Max(zt)
xτ=F(rt)
其中,Pt:t+k-1代表输入时间序列,k为卷积核大小;WT表示卷积网络中的共享权重参数,b表示卷积网络中的共享偏置;f(X)为激活函数,一般使用ReLU函数或Tanh函数,激活函数为网络引入非线性因素,增强网络学习能力;zt为CNN计算样本所得出的特征值,Max(x)函数为最大池化函数,提取典型特征,降低运算量;F(x)为全连接映射函数;
步骤2.12:引入残差网络,残差网络位于ADD层,通过残差网络将原CNN卷积神经网络输入和CNN所得到特征相加作为下一层的输入,可以有效的避免梯度爆炸等问题;通过捷径将CNN卷积神经网络输入和CNN得出的特征相加:
yi,j=xi,j+zi,j
其中,xi,j为网络输入,zi,j为CNN学习到的特征值,yi,j为输入与特征值之和;
参阅图2,本实施例中采用卷积核不同的残差块A和残差块B,CONV1D指的是一维卷积网络层。在神经网络训练过程中,参数的调整依据主要是依靠各层输出与输入之间的梯度大小,当网络层数较深时,可能会造成梯度爆炸或梯度弥散,使训练难以继续。通过设置卷积核不同的残差块,可以在一定程度上避免这种问题的发生。
步骤2.13:结合GRU模型,学习特征间的时序联系,GRU层中的GRU模型具体计算过程如下,假设GRU的时间步数为t:
rt=Sigmoid(Wrxxt+Wrhht-1)
zt=Sigmoid(Wzxxt+Wzhht-1)
其中,在时间步t下,对于重置门rt而言,首先分别获得输入xt与其权重Wrh的乘积及前一时间步t-1下的状态输出ht-1与其权重Wrh的乘积,然后对两部分乘积求和再经过Sigmoid函数将输出缩放至0到1之间;对于更新门zt而言,首先分别获得输入xt同其权重Wzx的乘积及前一时间步t-1下的状态输出ht-1同其权重Wzh的乘积,然后对两部分乘积求和再经过Sigmoid函数将输出缩放至0到1之间;针对当前候选状态输出对前一时间步t-1下的状态输出ht-1与重置门rt求哈达玛积实现对过去信息的保留,然后分别获得其与权重Wch以及输入xt与其权重Wcx的乘积,最后对两部分乘积求和再经过tanh函数将输出缩放至-1到1之间;当前状态输出ht保存着当前GRU学习到的信息,将会在神经网络中继续往后传递;首先用1减去更新门zt中每个数据,再将得到的差与前一状态输出ht-1相乘得到经过丢弃操作之后剩下的信息;之后将更新门zt同当前候选状态输出/>相乘得到该单元记忆的信息,最后将两部分信息相加得到当前状态输出ht。
步骤2.14:经过两Dense层完成目标电器的有功功率预测,输出目标电器的有功功率分解结果。
步骤2.2:将目标电器有功功率的预测值与真实值进行比较,不断调整负荷分解模型的网络参数使预测值与真实值之间误差不再下降时,停止训练,得到训练好的负荷分解模型;
预测值与真实值之间误差采用分解误差指标评定,分解误差指标包括:平均绝对误差Mae、召回率RE和F1分数F1,具体为:
其中,PRE表示准确率;x’t与xt分别表示负荷在时间点t功率消耗的预测值和真实值;TP表示负荷真实状态为运行而预测状态也是运行的总数;FP表示负荷真实状态为关闭而预测状态为运行的总数;TN表示真实状态为关闭而预测状态也是关闭的总数;FN表示真实状态为运行而预测状态也是关闭的总数。
本实施中,步骤1.3中的数据集分为训练集和验证集,训练集为用于模型训练的训练数据,验证数据用于验证训练好后的负荷分解模型。
步骤3:通过训练好的负荷分解模型对待分解的用户总有功功率进行分解,获得目标电器的有功功率分解结果。待分解的用户总有功功率通过居民用户电表采集,为家庭总用电数据,总表数据作为负荷分解模型输入,对总表数据进行分解即可获得目标电器的有功功率分解结果。
下面给出通过其他分解方法作为对比来验证本申请的准确性。
选取去噪自动编码器(DAE)、RNN、seq2point常规卷积的负荷分解法作为基准分解方法,用于验证本发明所提方法提高分解精度的有效性。不同负荷分解方法进行目标电器分解的MAE误差比较如表1所示,本发明对目标电器进行分解的参考指标如表2所示,结果表明,本发明所提方法能进一步提高居民负荷分解的准确性。综上所述,本发明所提方法较好地拟合了电器有功功率真实值,能较为准确地分解不同类型的居民负荷,具有一定的可行性和实用性。
表1不同算法MAE对比
表2算法参考指标
综上所述,本发明的分解方法可用于分解用户级电力负荷,对电力系统调度、能量管理以及需求响应实施起到重要的指导作用。本发明的方法相较于其他基准负荷分解法,对居民家用负荷根据需求响应潜力进行了筛选,其分解精度得到明显提升,能更准确地分解居民用户负荷,进而为电力系统调度提供有价值的参考,有利于保证电网稳定经济运行。
本发明未涉及部分均与现有技术相同或采用现有技术加以实现。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。