基于生成对抗网络的用电高峰时段居民负荷占比计算方法
技术领域
本发明属于博弈论、深度学习、电力系统等交叉技术领域,特别涉及一种基于生成对抗网络的用电高峰时段居民负荷占比计算方法。
背景技术
随着今年来计算机计算能力的不算提高,原先止步于理论数学领域的及其学习算法得以进行实际应用,例如特征提取、大规模数据计算等原先难以实现的技术在强大的计算帮助下变得可行。
随着联网管理,电力系统中存在大量具有潜在价值的统计数据与待发掘的科研问题,探究数据所反应出的电网现象有助于更好地维护电网的稳定运行。居民用电数据是反映家庭生活习惯、用电特性、甚至健康状况的重要数据。居民的用电数据分析在国家三型两网的发展目标下具有较高的分析价值。
目前的居民用电负荷数据采集方法为在居民家中安装能够每隔15分钟采集一次数据的电表,再选择满意既定质量要求的数据录入数据库中。传统的居民用电负荷数据采集具有难以采集、采集成本高、数据质量低、及用户隐私的问题,因此对于居民用电负荷的研究的成本与时间花费较高,研究时间较长。
生成居民用电负荷的数据主要分为两个部分,一是需要能够生成满足原数据分布的数据;二是需要能够进行大规模数据的生成及运算。
时至今日,对居民用电的负荷分析及估算仍需要大量的工作,本案由此产生。
发明内容
本发明的目的,在于提供一种基于生成对抗网络的用电高峰时段居民负荷占比计算方法,其可完成对于居民用电负荷数据的仿真,有效地产生按照原样本数据分布的仿真居民用电负荷数据。
为了达成上述目的,本发明的解决方案是:
一种基于生成对抗网络的用电高峰时段居民负荷占比计算方法,包括如下步骤:
步骤1,从已取得的电网历史数据库中调用居民负荷数据,建立生成对抗网络的样本数据组:
步骤2,定义生成对抗网络的基本框架结构,定义判别器模型D有4层神经网络,以及训练生成模型G为4层神经网络;
步骤3,基于真实数据训练判别器模型D,直到判别器模型能够学习真实数据的分布,并能准确判断真实数据;
步骤4,通过训练生成模型G生成假数据,并且代入判别器模型D进行二分判断;
步骤5,用判别器模型D的二分结果训练生成模型G,直到判别器模型D不能准确判断数据的真实来源;
步骤6,通过RMSE及JS的方法检查生成模型G的收敛性,若收敛结果不符合预设,则重复步骤3至步骤5,直至收敛结果符合预设;
步骤7,基于已训练的优化的生成模型G,根据目标居民用户数量生成居民用电负荷数据;
步骤8,与全网用电负荷相比,计算出高峰时段居民负荷在全网负荷中的占比。
上述步骤1的具体过程是:
步骤11,从已取得的电网历史数据库中调用居民负荷数据,按相同间隔获取负荷值,一天共获取M个负荷值,定义为xit,表示用户i在时刻t的原始负荷值,其中t∈[1,M],i∈[1,N]:
步骤12,对得到的负荷数据进行整理,包括清理异常值、基于负荷规律的数据补齐;
步骤13,将负荷数据变形为N×M的二维矩阵X,其中N为已采集到的数据样本中的总居民户数;
步骤14,对负荷数据进行标准化处理,得到标准化后的矩阵
维度为N×M。
上述步骤2中,判别器模型D的输入是真实样本以及生成的假样本,这两个样本的标签分别为Real(1)和Fake(0);生成模型G用线性整流函数作为激活函数,并在输出层上用双正曲切值作为输出,输出数值在-1到1之间的生成数据。
上述步骤3的具体过程是:
步骤31,建立深度生成对抗网络的输入变量
为负荷数据值,输入变量为原始数据值;
步骤32,将负荷数据作为输入值代入判别器模型D,判别器模型D的目标函数V(G,D)为:
V=Ex~pdata(x)[log(D(x))]+Ez~pz(z)[log(1-D(G(z)))]
循环优化直到找到D*:
其中,pdata(x)为样本数据的概率分布,pz(z)为生成数据的概率分布。
上述步骤5的具体过程是:
步骤51,随机产生分布于N~(0,1)的噪声数据组ZN×96;
步骤52,将噪声数据组ZN×96输入生成模型G中,通过4层神经网络生成假数据组Xgen,维度与真实数据组相同,均是N×M;
步骤53,将相同维度的生成假数据组Xgen与真实数据组Xreal同时代入判别器模型D中,用sigmoid激活函数进行二分判断,真实的数据标记为1,生成数据标记为0,训练4层神经网络构成的判别器模型D。
上述步骤6中,计算生成样本和真实样本的均方根误差RMSE,计算如下:
同时,计算生成样本与实际样本之间的Jenson-Shannon距离,公式如下:
RMSE与JS距离越小则说明两个样本越接近,从而检查生成数据的准确性,判断训练收敛效果。
上述步骤7的具体内容为:
基于已训练的优化的生成模型G,根据目标居民用户数量N',生成居民用电负荷矩阵S,维度为N'×M,按列累加得到总的居民用电负荷矩阵Ssum,维度为1×M,具体公式为:
其中,sij为居民用电负荷矩阵S中第i个用户在第j个时刻的负荷值,其中i∈[1,N'],j∈[1,M]。
上述步骤8的具体内容为:
根据获取到的地区全网总负荷,将负荷数据矩阵变形为1×M的二维矩阵C1×M,确定用电高峰时段,在此时段内有P个时间点,对应负荷矩阵第a列到b列;计算出P个时间点下训练生成的居民用电负荷的平均值在全网总用电负荷平均值中的占比,计算公式为:
最终得到用电高峰时段居民负荷在全网负荷中的占比结果。
采用上述方案后,本发明可以有效地提高数据生成中的计算复杂问题,有效的生成大规模的、基于原样本数据分布的居民用电负荷数据集。该方法首先读入已有的小样本居民用户用电数据矩阵。在规定训练循环次数k次中,将原样本数据矩阵及神经网络生成数据带入判别器模型D,进行神经网络训练学习,用sigmoid激活函数进行二分判断。使用随机梯度上升的方法直到收敛,训练D直到找到模型可以最大化正确判别输入样本来源。同时训练生成模型G,带入随机向量噪声数据,经由神经网络产生一组假数据,使用随机梯度下降的方法直到收敛,训练G最小化log(1-D(G(z))),使得生成数据最接近真实样本。最后在训练结束,达到收敛后,通过优化过的生成模型G生成数据。本发明可以有效解决居民用电负荷数据难以获取及难以生成贴近真实数据的科研问题,计算出居民用电负荷在全网负荷中的占比,从而指导居民用能服务,有着较好的生成准确率、灵活性及实践性。
附图说明
图1是本发明的流程图;
图2是生成居民用电负荷曲线与原始样本居民用电负荷曲线比较图;
图3是居民用电总负荷曲线与全网负荷曲线比较图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种基于生成对抗网络的用电高峰时段居民负荷占比计算方法,包括以下流程:
步骤1具体为:
从已取得的电网历史数据库中调用居民负荷数据,获取的数据格式为每15min取一个负荷值,一天24小时内共计有96个负荷值,建立生成对抗网络的样本数据组:
步骤1.1数据整理,包括清理异常值、基于负荷规律的数据补齐。异常值清理包括清理电表读取时的错误负值及不符合用电事实规律的特大负荷值。数据补全方法为如果前一时段为缺失数据,则按照再前一时段的负荷值补全,直到找到补全值,符合用电负荷规律特性。
步骤1.2数据变形,将负荷数据矩阵变形为(N×96)的二维矩阵X,其中N为已采集到的数据样本中的总居民户数。
步骤1.3数据标准化处理,数据标准化处理将负荷数据标准化为取值范围为-1到1之间的数值,具体方法为:
其中,x
it是用户i在时刻t的原始负荷值,其中t∈[1,96],i∈[1,N];X
imean是用户i负荷的平均值,X
imax是用户i负荷的最大值,X
imin是用户i负荷的最小值;
是数据标准化处理后的用户i在时刻t的负荷值,构成了标准化后的矩阵X
real,维度为(N×96)。
步骤2具体为:
定义生成对抗网络(GAN)的基本框架结构,定义判别器模型D有4层神经网络,以及训练生成模型G为4层神经网络。
步骤2.1定义判别器模型D为一个4层神经网络模型,D的作用是区分真实样本与生成样本,D的输入是真实样本以及生成的假样本,这两个样本的标签分别为Real(1)和Fake(0);
步骤2.2定义生成模型G为一个4层神经网络模型,用线性整流函数(ReLU)作为激活函数,并在输出层上用双正曲切值(tanh)作为输出,输出数值在-1到1之间的生成数据。
步骤3具体为:
基于真实数据训练判别器模型D,直到判别器模型可以学习真实数据的分布,并能准确判断真实数据。
步骤3.1建立深度生成对抗网络的输入变量
为原始负荷值,输入变量为原始数据值;
步骤3.2将负荷数据作为输入值代入判别器模型D,训练模型直到模型可以学习真实数据的分布情况,能够准确地判别真实数据;
判别器模型D的目标函数V(G,D)为:
其中,x指原始负荷值,D(x)的输出结果为1或0,x~p
data(x)表示x满足原始数据的分布条件,z~p
z(z)表示z满足生成数据的分布条件。
为模型D可以准确判别数据来源为原始数据的数学期望,
为模型D可以准确判别数据来源为生成数据的数学期望。V为模型可以有效判断数据来源的数学期望。
循环优化直到找到D*:
式(3)目标为在控制G不变的情况下,找到可以使函数V达到最大值的D*。其中,pdata(x)为样本数据的概率分布,pz(z)为生成数据的概率分布。步骤4具体为:
通过训练生成模型G生成假数据,并且代入判别器模型D进行二分判断;
步骤4.1训练优化生成模型G,使判别器模型无法准确地判断数据来源。
生成模型G的目标函数为:
步骤5具体为:用判别器模型D的二分结果训练生成模型G,直到判别器模型D不能准确判断数据的真实来源。
步骤5.1随机产生分布于N~(0,1)的噪声数据组ZN×96;
步骤5.2将噪声数据组ZN×96输入生成模型G中,通过四层神经网络生成假数据组Xgen,维度与真实数据组相同,均是(N×96);
步骤5.3将相同维度的生成假数据组Xgen与真实数据组Xreal,同时代入判别器模型D中,用sigmoid激活函数进行二分判断,真实的数据标记为1,生成数据标记为0,训练四层神经网络构成的判别器模型D。
步骤6具体为:
通过RMSE及JS的方法检查生成模型的收敛性,重复步骤3至5直至满足收敛条件;
为了验证相似性,计算生成样本和真实样本的均方根误差(RMSE),RMSE可计算如下:
同时,计算生成样本与实际样本之间的Jenson-Shannon距离(J-S),公式如下:
RMSE与JS距离越小则说明两个样本越接近,从而检查生成数据的准确性,判断训练收敛效果。
步骤7具体为:
基于已训练的优化的生成模型G,根据目标居民用户数量N',生成居民用电负荷矩阵S,维度为(N'×96),按列累加得到总的居民用电负荷矩阵Ssum,维度为(1×96),具体公式为:
其中,sij为居民用电负荷矩阵S中第i个用户在第j个时刻的负荷值,其中i∈[1,N'],j∈[1,96]。
步骤8具体为:
与全网用电负荷相比,计算出高峰时段居民负荷在全网负荷中的占比。
根据获取到的地区全网总负荷,将负荷数据矩阵变形为(1×96)的二维矩阵C1×96,确定用电高峰时段为21:00至22:30,每十五分钟一个取一个时间点,共计7个时间点,具体表现为负荷矩阵第84列到90列。计算出7个时间点下训练生成的居民用电负荷的平均值在全网总用电负荷平均值中的占比,计算公式为:
最终得到用电高峰时段居民负荷在全网负荷中的占比结果。
实施例:
实例中选取某一地区的居民用户数据进行分析,样本选取25组居民数据进行训练学习,训练生成居民用电负荷曲线与原始样本居民用电负荷曲线比较图如图2所示。
计算得到的归一化的原负荷数据与生成负荷数据的RMSE和JS分别为:0.0101及0.0352。
两个值均接近于0,验证模型具有较高的准确性。
该地区的居民总数47.56万户,输入已训练的优化的生成模型G,得到居民用电总负荷曲线,同时根据全网负荷数据绘制得到居民用电总负荷曲线与全网负荷曲线比较图,如图3所示。
最终得到用电高峰时段居民用电负荷在全网总用电负荷中的占比为40.9%。
可以根据该方法,为计算用电高峰时段居民用电负荷在全网总用电负荷中的占比提供可靠依据。
以上对本发明的原理以及具体实施方式做了详细的阐述,根据该方法,即可实现用电高峰时段居民用电负荷在全网总用电负荷平均值中的占比的计算。
总之,本发明的一种基于生成对抗网络的用电高峰时段居民负荷占比计算方法,将博弈论、深度学习、电力系统等技术领域进行交叉。利用对抗生成神经网络算法,模拟生成居民用户负荷数据,验证模型的准确性,计算得到用电高峰时段居民负荷在全网负荷中的占比,为推广针对居民的综合用电服务,掌握居民用电整体规律,具有十分重要的意义。