基于组合预测模型的电力负载预测方法、系统及存储介质与流程

专利2024-08-01  54



1.本技术涉及电力负载预测技术领域,尤其涉及一种基于组合预测模型的电力负载预测方法、系统及存储介质。


背景技术:

2.传统的电力负载预测采用的xgboost采用的是level-wise的增长策略,该策略遍历一次数据可以同时分裂同一层的叶子,容易进行多线程优化与后面的opencl技术想相结合,也好控制模型的复杂度,不容易过拟合。但实际上level-wise是一种低效的算法,因为它不加区分的对待同一层的叶子,实际上很多叶子的分裂增益较低,没必要进行搜索和分裂,带来了很多没必要的计算开销。因此,急需一种基于组合预测模型的电力负载预测方法及系统,用于解决现有技术效率低的问题。


技术实现要素:

3.为了解决现有的技术问题,本技术提供了一种基于组合预测模型的电力负载预测方法,包括以下步骤:
4.基于gru网络和lightgbm模型,构建用于电力负载预测的组合预测模型;
5.基于第一时间区间,采集gru网络和lightgbm模型的预测值误差与真实值误差,通过获取负荷采样总数,生成组合预测模型的偏移矩阵;
6.基于偏移矩阵,通过拉格朗日乘子法,分别获取gru网络的第一权重系数和lightgbm模型的第二权重系数,其中,第一权重系数和第二权重系数的和为1;
7.基于第二时间区间,通过采集电力负荷数据,根据gru网络获取第一负荷预测结果,以及根据lightgbm模型获取第二负荷预测结果,其中,第二时间区间小于等于第一时间区间,或第二时间区间大于第一时间区间;
8.基于第一负荷预测结果和第一权重系数、第二负荷预测结果和第二权重系数,生成电力负荷数据的负荷预测结果。
9.优选地,在进行电力负载预测过程中,将gru网络设置于cpu模块,将lightgbm模型设置于gpu模块;
10.基于postgerssql,建立cpu模块与gpu模块的数据交互关系,将哈希排序后的电力负荷数据通过cpu模块的线程传输到gpu模块,生成具有映射关系的第一负荷预测结果和第二负荷预测结果。
11.优选地,在建立cpu模块与gpu模块的数据交互关系的过程中,将postgerssql中的pycopg2模块与python相连接,构建数据交互关系。
12.优选地,在生成第二负荷预测结果的过程中,基于gpu模块,通过lightgbm模型,生成决策树;
13.基于决策树的叶子节点的分裂方式,通过计算得到直方图,根据直方图并行前缀和操作,找到分裂增益最大的叶子节点进行分裂,并进行循环迭代。
14.优选地,在将gru网络设置于cpu模块的过程中,基于opencl模块分配cpu模块的计算任务,建立基于opencl模块和gpu模块的并行运算空间。
15.优选地,在建立并行运算空间的过程中,opencl模块包括全局内存、局部内存和私有内存;
16.基于电力负荷数据的访问频次,将全局内存的数据分配到局部内存和/或私有内存中,其中,当访问频次为低频次时,将全局内存的数据分配到局部内存中,当访问频次为高频次时,将全局内存的数据分配到私有内存中。
17.优选地,在建立并行运算空间的过程中,通过隐藏gpu模块的指令延迟,用于保证并行运算空间的并发性。
18.本技术还公开了一种基于组合预测模型的电力负载预测系统,包括:
19.数据采集模块,用于采集电力负荷数据;
20.电力负载预测模块,用于通过建立基于gru网络和lightgbm模型的组合预测模型;基于第一时间区间,采集gru网络和lightgbm模型的预测值误差与真实值误差,通过获取负荷采样总数,生成组合预测模型的偏移矩阵,通过拉格朗日乘子法,分别获取gru网络的第一权重系数和lightgbm模型的第二权重系数,并基于第二时间区间,通过采集电力负荷数据,根据gru网络获取第一负荷预测结果,以及根据lightgbm模型获取第二负荷预测结果;
21.预测结果生成模块,用于基于第一负荷预测结果和第一权重系数、第二负荷预测结果和第二权重系数,生成电力负荷数据的负荷预测结果。
22.可选地,所述系统包括存储器和分别与所述存储器连接的cpu与gpu,所述存储器包括全局内存、局部内存和私有内存。
23.另一方面,本技术还提供一种存储介质,具体地,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的基于组合预测模型的电力负载预测方法的步骤。
24.本技术公开了以下技术效果:
25.与现有技术相比,本技术通过通过gpu的加速计算提升了算法的算力,提升了运算速度和运算精度,为电力负载预测提供了高性能计算的技术思路。
附图说明
26.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1为本技术一实施例的gru模型的输入输出结构图。
28.图2为本技术一实施例的gru与lightgbm组合预测流程图。
29.图3为本技术一实施例的异构计算框架示意图。
30.图4为本技术一实施例的opencl加速原理图。
31.图5为本技术一实施例的lightgbm模型的opencl并行模式框架图。
32.图6为本技术一实施例的单一模型和组合模型的预测曲线对比图。
33.图7为本技术一实施例的电力负载预测方法流程图。
具体实施方式
34.下为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.第一实施例
36.本技术公开了一种基于组合预测模型的电力负载预测系统,包括:
37.数据采集模块,用于采集电力负荷数据;
38.电力负载预测模块,用于通过建立基于gru网络和lightgbm模型的组合预测模型;基于第一时间区间,采集gru网络和lightgbm模型的预测值误差与真实值误差,通过获取负荷采样总数,生成组合预测模型的偏移矩阵,通过拉格朗日乘子法,分别获取gru网络的第一权重系数和lightgbm模型的第二权重系数,并基于第二时间区间,通过采集电力负荷数据,根据gru网络获取第一负荷预测结果,以及根据lightgbm模型获取第二负荷预测结果;
39.预测结果生成模块,用于基于第一负荷预测结果和第一权重系数、第二负荷预测结果和第二权重系数,生成电力负荷数据的负荷预测结果。
40.可选地,本技术提供的一种基于组合预测模型的电力负载预测方法及系统,包括以下过程:
41.一、数据处理:
42.可选地,在数据库方面舍弃了市面现在功能强大的oracle数据库管理系统,采用postgerssql,它是一种小众数据库,postgerssql比oracle更方便操作,在处理单条数据上的功能也相对于oracle数据库强大,这里假设电能表采集数据来自测量点数据表a和日冻结电能表b,表a中的每条记录最多对应表b中的2条记录,然后对其数据按照用户id大小进行排序,记录两个表的id相同完成a表和b表的映射关系,在一般的电力负载预测的负荷数据,大多数人会选择先对数据库内的数据采用二分法对其进行排序,这里使用哈希排序,二分法对于数据集较大时,是需要很长的时间才能处理数据,而使用哈希排序只需要消耗空间,在时间上优于二分法排序。
43.二、组合模型
44.2.1、gru模型:
45.图1为本技术一实施例的gru模型的输入输出结构图。
46.可选地,请参考图1,gru是循环神经网络的一种,是为了解决长期记忆和反向传播中的梯度等问题提出来的,gru模型有一个当前的输入x
t
,和上一个节点传递下来的隐状态(hiddenstate)h
t-1
,这个隐状态包含了之前节点的相关信息。结合x
t
和h
t-1
,gru会得到当前隐藏节点的输出y
t
和传递给下一个节点的隐状态h
t

47.先通过上一个传输下来的状态h
t-1
和当前节点的输入x
t
来获取两个门控状态。
48.得到门控信号之后,首先使用重置门控来得到“重置”之后的数据h
t-1

=h
t-1

r,再将h
t-1

与输入x
t
进行拼接,再通过一个tanh激活函数来将数据放缩到-1~1的范围内,可
以得到一个激活结果h’。
49.与lstm相比,gru内部少了一个“门控”,参数比lstm少,但是却也能够达到与lstm相当的功能。其中:
50.(1-z)
⊙ht-1
:表示对原本隐藏状态的选择性“遗忘”。这里的(1-z)可以想象成遗忘门(forgetgate),忘记h
t-1
维度中一些不重要的信息。
51.z
⊙h′
:表示对包含当前节点信息的h

进行选择性“记忆”。与上面类似,这里的1-z同理会忘记h

维度中的一些不重要的信息。或者,这里我们更应当看做是对h

维度中的某些信息进行选择。
52.h
t
=(1-z)
⊙ht-1
+z
⊙h′
:结合上述,这一步的操作就是忘记传递下来的h
t-1
中的某些维度信息,并加入当前节点输入的某些维度信息。
53.gru使用同一个门控z就同时可以进行遗忘和选择记忆,可以节约硬件的计算能力和时间成本。
54.基于gru网络的负载预测模型改造:
55.对于gru网络预测模型首先需要确定其输入和输出序列。不同于传统的神经双网络需要将t-1到t-n各个滞后时刻数据作为多个特征输入,gru网络因其独特的记忆结构可以直接将整个时间序列作为单个特征,大大减小了网络结构,提高了节点参数的计算效率。本文的输入数据x主要由以下特征组成:历史负荷、温度份当月的第几日当日的第几小时、是否为周末(周六日)以及是否为法定节假日,分别用和表示。由于待预测日的负荷数据与前一周负荷具有很大的相关性,故选取前一周每小时(共168h)的特征数据作为输入,输出则为待预测日24h的负荷值。示例性地,获取待预测24个时刻的负荷预测结果,获取的方式为根据gru网络的输入一周每小时的特征数据,最后输出24个时刻的负荷预测结果。
56.输入和输出数据确定后,需对其进行归一化处理,这样不仅能够消除特征之间量纲不同的影响,还可以使模型快速收敛。将各个特征序列归一化在[0,1]范围内,周末及法定节假日特征均以哑变量来表示,其中0表示非,1表示是。归一化公式为:
[0057][0058]
其中式中:x
t
和分别为归一化前后的值;x
max
和x
min
分别为原数据24个时刻数据中的最小值和最大值。模型网络的前一个隐藏层的输出作为后一个隐藏层的输入,实现对输入的深度提取,最后输出归一化,得到24个时刻的负荷预测值。示例性地,归一化预测值包括温度数据,日期数据,节假日信息等等。
[0059]
2.2、lightgbm模型:
[0060]
可选地,lightgbm模型是为了避免xgboost的缺陷在能够在不损害准确率的条件下加快gbdt模型的训练速度,lightgbm在传统的gbdt算法上进行了优化,是一种改进的梯度提升决策树框架,它的基本思想是通过m棵弱回归树线性组合为强回归树。
[0061][0062]
式中:f(x)为最终的输出值;fm(x)为第m棵弱回归树的输出值。
[0063]
lightgbm模型改进主要在两个方面一个是直方图算法,把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。在遍历数据的时候,根据离散化后的值作为索引在直方图中累计统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。特征离散化具有存储方便、运算更快、鲁棒性强、模型更加稳定等。
[0064]
另一个方面是带深度限制的leaf-wise算法,lightgbm放弃了大多数gbdt工具使用的按层生长(level-wise)的决策树生长策略,而使用带有深度限制的按叶子生长(leaf-wise)算法。传统的电力负载预测采用的xgboost采用的是level-wise的增长策略,该策略遍历一次数据可以同时分裂同一层的叶子,容易进行多线程优化与后面的open cl技术想相结合,也好控制模型的复杂度,不容易过拟合。但实际上level-wise是一种低效的算法,因为它不加区分的对待同一层的叶子,实际上很多叶子的分裂增益较低,没必要进行搜索和分裂,因此带来了很多没必要的计算开销。lightgbm采用leaf-wise的增长策略,该策略每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此通level-wise相比,leaf-wise的优点是可能在分裂次数相同的情况下,leaf-wise可以降低更多的误差,得到更好的精度。
[0065]
基于lightgbm模型的负荷预测模型构造:
[0066]
与lightgbm模型的输入输出结构与gru网络有所不同,它无法一次性得到预测24h的负荷值,因此需要利用训练好的模型对每一个时刻分别进行预测。选取待预测的气温预报值,对应的月份、当月几日几小时、是否为周末、是否为法定节假日以及前一天对应时刻的负荷值等作为该模型的输入,输出为待预测时刻的负荷值。示例性地,计算过程是将输入数据x主要由以下特征组成:历史负荷、温度份当月的特定日的特定小时、是否为周末(周六日)以及是否为法定节假日。由2.2.1下面的数据表示,将输入数据放入训练好的lightgbm模型中,最后得到输出数据。
[0067]
由于lightgbm模型是基于概率的决策树模型,无须对输入特征做归一化操作,只要对其适当编码即可。
[0068]
输入数据:
[0069][0070]
输出数据:
[0071]
2.3、组合预测模型:
[0072]
图2为本技术一实施例的gru与lightgbm组合预测流程图。
[0073]
可选地,请参考图2,在分别采用gru网络和lightgbm模型得出负荷预测的结果之后,需要确定权重系数来将两者进行线性组合,采用的方法是最优加权组合的线性组合方法。
[0074]
求出偏移矩阵e,即:
[0075]
[0076]
式中:n为负荷采样总数;e
1te2t
分别为gru网络和lightgbm模型在t时刻的预测值与真实值的误差。
[0077]
通过拉格朗日乘子法可以求出最优权值,如下式所示:
[0078][0079]
式中:ω1ω2分别为gru网络和lightgbm模型的权重系数,系数之和为1;[1,1]
t
。其中r为元素全为1的m维行向量。可选地,r保证非负最优加权系数可使得线性组合模型有效地提高预测精度。
[0080]
综上,可以得出最终的负荷预测结果如下:
[0081][0082]
式中:为组合模型在t时刻的负荷预测结果;和分别为gru网络和lightgbm模型在t时刻的负荷预测结果。示例性地,y1t的意思是第一个预测模型在t时刻的预测值。y2t的意思是第二个预测模型在t时刻的预测值。
[0083]
组合预测流程:
[0084]
可选地,请继续参考图2,首先对原始数据进行预处理并划分训练集,验证集和测试集。其中,训练集用于训练每个模型的连接值等普通参数。根据验证集的评估效果,可以对迭代次数等超参数进行调优。测试集则用于实际的负荷预测试验。在经过模型训练与参数调优后,对待测试集中的待预测日进行独立预测,最后通过最优加权法得出组合预测的结果。
[0085]
2.4、聚类分析:
[0086]
可选地,考虑到各地电力负荷的多样性,这里采用均值漂移算法,相比较于k-means聚类算法进行的聚类分析而言,不需要知道有多少类或者组,在密度算法相比于k-means受均值影响也许比较小,可以很好的减少分析时间。首先通过均值漂移算法进行聚类分析,然后采用组合模型对区域内多个台区的日负荷情况进行统一建模预测。
[0087]
表1为台区特征作为聚类分析输入数据。通过因子分析法,将多个类聚数量,在未被分类的聚类数据点中随机选择一个点作为中心点,找出离中心点距离在带宽之内的所有点记作集合m,认为这些点属于簇c。计算从中心点开始到集合m中每个元素的向量,将向量相加,得到偏移向量。中心点会发生移动,移动距离是偏移向量的模,重复上述步骤,直到偏移向量的大小满足设定值,中心点更换为此点,将其所有点归类,根据每个类,对每个点的访问频率,取访问频率最大的类作为当前点集的所属类。
[0088]
示例性地,首先设置需要的因子个数,因子得分和综合得分,用kmo值判断标准是否大于0.6和bartleft检验对应p值是否小于0.05,提取出因子个数将其按照表2-1分成8类,因此因子个数设为8,然后根据指标旋转前每个因子的贡献程度,值越大,则因子的贡献就越大,最后根据因子得分,得分越高的的因子,就是效果最好的聚类数量。
[0089]
表1
[0090]
序号台区信息字段说明1edrl额定容量
2yxrl运行容量3pjglys平均功率因数4gdl供电量5sdl售电量6dlbphl电流不平衡率7dybphl电压不平衡率8xsl线损率
[0091]
表2为所选的输入特征值针对聚类结果,对于每一类别台区进行模型训练,选取历史负荷数据,天气信息,时间规则3个方面特征作为输入数据,从而预测未来一天的日负荷数据。历史负荷数据除了前一天和前一周的负荷数据,还对过去一周的负荷和负载率做均值处理,使得输入数据更加平滑。天气信息包括每个台区每日的平均温度和平均湿度。时间规则信息包括了预测目标对应的星期、日期、月度、季节以及是否属于节假日。为了防止各个连续数据间互相影响,对于时间规则的特征采用独热编码的离散处理形式。
[0092]
表2
[0093][0094]
三、gpu加速负荷预测:
[0095]
3.1、数据集预处理:
[0096]
可选地,为了解决大规模数据的并行计算,本设计使用opencl多线程技术完成多个并行计算任务,全称opencomputinglanguage,开放运算语言,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(cpu)、图形处理器(gpu)、cell类型架构以及数字信号处理器(dsp)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。openmp是用来处理cpu中的并行,opencl是用来处理异构系统中的gpu并行,此设计需要异构计算框架完成cpu与gpu之间
的任务分配,而且相对实际来说,opencl不光是nvgpu/xeonphi可以用,intel的核芯显卡甚至altera的fpga都能用,在现在的高性能计算中,也是可以跨平台的技术。
[0097]
因为电信息采集的数据量过大,所以将电信息统计计算的工作从cpu设备放到gpu设备中去,将postgerssql中的pycopg2模块与python相连接,cpu擅长处理复杂逻辑运算任务,gpu擅长处理计算密集型的任务,将其哈希排序后的数据根据流通过cpu线程放入gpu计算网格中,cpu一个线程控制gpu的一个网格计算,实现计算的独立和并行,得到a表和b表的数据映射关系,完成后将不同网格中的计算结果进行汇总,回传到cpu中,通过pycopg2模块返回到postgerssql中,得到数据集。
[0098]
3.2、组合模型加速:
[0099]
gru本质上是线性代数运算,用cpu或者gpu都可以。可选地,组合模型中的gru采取cpu进行训练,而lightgbm可以在gpu上实现决策树的生成,从而加速训练过程。针对叶子节点的分裂方式,gpu先并行计算得到直方图,然后根据直方图并行前缀和操作来找到分裂增益最大的叶子,然后分裂,如此循环迭代,而gpu有浮点计算速度和内存带宽方面的优点,可以提高效率。
[0100]
3.3、异构计算框架方案:
[0101]
图3为本技术一实施例的异构计算框架示意图。
[0102]
可选地,请参考图3,复杂逻辑运算和流程控制任务在cpu上完成,密集型的数值计算任务在gpu上并行完成,减少cpu和gpu之间的数据流动开销。因此,cpu负责数据集预处理,负荷数据清洗,台区聚类分析,特征分析,训练gru模型等环节。示例性地,cpu负责数据集预处理,也可以负责电信息的统计计算。通过opencl分配计算任务,gpu负责完成电信息统计的并行计算和lightgbm模型的训练等环节。
[0103]
3.4、opencl加速计算过程:
[0104]
图4为本技术一实施例的opencl加速原理图。
[0105]
可选地,请参考图4,在opencl计算模型中,主机端程序在cpu上运行,整个计算由cpu控制,用于解决初始化、内存分配,kernel也是在主机端上定义,由主机端发出命令队列,把kernel提交在一个opencl设备上执行,以较低开销来高效管理复杂的并发程序,cpu的计算主要体现在cpu-gpu数据传送、kernel的调用。主机端程序执行步骤严格按照opencl执行流程进行。opencl在编程时,cpu被视为主机,gpu被认为是能够并行执行多个线程的设备。在主机端ndrange,work-group和work-item都被定义为逻辑上的3维。启动ndrange后kernel会在gpu上运行。在gpu上创立大量逻辑上三维物理上的一维的work-item,每个work-item可以独立的并发执行。电信息的统计计算处理和lightgbm模型在gpu-opencl并行实现基于网格节点与work-item之间的对应关系,在该方法中并行任务由每个网格节点由一个work-iten计算。
[0106]
图5为本技术一实施例的lightgbm模型的opencl并行模式框架图。
[0107]
可选地,在具体计算任务执行过程中,主机端先创建内核对象并初始化内核参数,然后将内核通过命令队列发送到计算设备端执行,内核执行完成后生成的结果数据依然保存在计算设备端,在opencl计算设备执行完网络的最后一层的内核后,主机需要将结果数据从设备内存读取到主机内存,这一步依然要使用命令队列调用openclapi函数执行。这里需要注意的一点是,虽然在模型运行的过程中,每一层前向传播内核执行完之后都需要在
主机端重新创建新的内核,再将内核发送到设备上执行,但是内核的输入数据一直都是在设备内存中。opencl程序设计应该尽量减少主机与计算设备之间的数据通信。在结束程序前,主机需释放之前创建的一系列opencl对象。
[0108]
3.5、opencl内存模型设计:
[0109]
可选地,由opencl的内存模型可知,opencl设备内存分为全局内存、局部内存和私有内存,三种内存的容量和访存速度是负相关的,全局内存容量最大,但访存最慢,访存延时是私有内存的数百倍。opencl设备的优势之一在于拥有可管理的局部内存和私有内存。局部内存和私有内存在概念上类似于cpu的各级缓存,这就给了程序设计者极大的发挥空间,合理地使用opencl局部内存和私有内存可以带来极大的性能提升。内存设计如下:
[0110]
(1)对全局内存的访问是否高效。在同一线程束的工作项能否进行合并访存,从而充分利用全局内存的带宽。由于全局内存的访问延迟较高,opencl内核工作项在执行工程中,除了输入数据的读取和计算结果的写入,减少对全局内存的访问。
[0111]
(2)局部内存和私有内存的利用是否高效。局部内存和私有内存的容量远小于全局内存,但它们的访存速度远快于全局内存。由于局部内存对同一工作组内的所有工作项可见,对于同一工作组内的所有工作项都需要使用的全局内存数据,将这些数据先拷贝至局部内存,再由各工作项取用,从而减少对全局内存的访问。对于工作项需要高频次访问的数据,将这些数据拷贝至每个工作项的私有内存中,相较于局部内存,私有内存有更低的访存延迟。
[0112]
(3)指令延迟能否充分隐藏。指令可以分为算术指令和内存指令,在指令发出和完成之间的时钟周期被定义为指令延迟。gpu是为处理大量并发和轻量级线程以最大化吞吐量设计的,当每个时钟周期中的所有的线程调度器都有一个符合条件的线程束时,通过其他常驻线程束中发布其他指令,可以隐藏gpu的每个指令的延迟,从而达到计算资源的完全利用。计算资源的利用率与常驻并发线程束的数量直接相关,因此,通过内核的合理设计从而保证足够的并发性,达到计算资源的充分利用,从而提高计算性能。
[0113]
四、模型验证:
[0114]
可选地,硬件环境采用cpu+gpu异构高性能能集群上进行的,该集群配置了tesla k20m gpu和tesla m2090 gpu两种类型的gpu设备,表3为硬件设备参数图。
[0115]
表3
[0116]
平台nvidia tesla k20mnvidia tesla m2090处理器核数2486448内存总线类型ddr5gddr5设备内存大小5gb6gb双精度峰值1.17tflops515gflops最大工作频率825mhz1.15ghz内存带宽208gb/s177gb/sopencl版本opencl1.1opencl1.1
[0117]
超参数的设置对于gru网络和lightgbm模型的收敛速度及预测效果有重要影响,可选地,采用网格搜索法得出2种模型的最优超参数,其中,gru网络的层数为2层,神经元个数为100,学习率0.01,迭代次数为100。lightgbm模型的弱回归树数量为200,叶子数为55,
学习率为0.07,l1和l2正则化参数分别为0.1和0.9,迭代次数为3000次。
[0118]
不同模型的预测结果对比中,数据集采用的是开源数据集,2012年全球能源预测竞赛数据公开数据集,分别采用不同模型和组合模型对一天的数据进行短期负荷预测。
[0119]
可选地,选取平均绝对百分比误差e
mape
和平均方根误差e
rmse
作为实验的评价指标,分别用以下两个式子表示:
[0120][0121][0122]
式中:y
t
为t时刻负荷的真实值。
[0123]
表4为cpu+gpu计算时间与数据库计算性能分析。如下表4所示,存储过程中串行计算方案的性能与异构结构下进行对比,两种方案总耗时分别为70.63s和652.8s,虽然cpu+gpu异构方案牺牲了一定的时间进行数据交互和预处理,但是gpu却可以加速用电信息的计算。日负荷量计算在数据库方案中需要456.12s,而在异构结构中只需要2.3s,效率提高了两个数量级,总体加速比提高到了18.52倍。
[0124]
表4
[0125][0126]
通过表5可以看出组合模型和单一模型相对比的评价结果,组合模型的误差得到了显著的降低。
[0127]
表5
[0128]
模型名称e
mape
/%e
rmse
/kwlightgbm2.155273.31gru2.065332.28组合模型1.624232.12
[0129]
图6为本技术一实施例的单一模型和组合模型的预测曲线对比图。
[0130]
请参考图6,在负荷的峰谷点附近,由于负荷变化的不确定性会大大增加,则单一模型的误差均较大,组合模型的预测则可以有效的降低这些极端时刻的误差。综合来说组合模型的误差变化更加平稳,可以一直保持在较低水平,更好的拟合出负荷变化的趋势。
[0131]
第二实施例
[0132]
图7为本技术一实施例的电力负载预测方法流程图。
[0133]
请参考图7,本技术还提供了一种基于组合预测模型的电力负载预测方法,包括以下步骤:
[0134]
s10:基于gru网络和lightgbm模型,构建用于电力负载预测的组合预测模型。
[0135]
s20:基于第一时间区间,采集gru网络和lightgbm模型的预测值误差与真实值误
差,通过获取负荷采样总数,生成组合预测模型的偏移矩阵。
[0136]
s30:基于偏移矩阵,通过拉格朗日乘子法,分别获取gru网络的第一权重系数和lightgbm模型的第二权重系数,其中,第一权重系数和第二权重系数的和为1。
[0137]
s40:基于第二时间区间,通过采集电力负荷数据,根据gru网络获取第一负荷预测结果,以及根据lightgbm模型获取第二负荷预测结果,其中,第二时间区间小于等于第一时间区间,或第二时间区间大于第一时间区间。
[0138]
s50:基于第一负荷预测结果和第一权重系数、第二负荷预测结果和第二权重系数,生成电力负荷数据的负荷预测结果。
[0139]
示例性地,分别采用gru网络和lightgbm模型得出负荷预测的结果之后,可以确定权重系数来将两者进行线性组合,采用的方法可以是最优加权组合的线性组合方法。可选地,对原始数据进行预处理并划分训练集,验证集和测试集。其中,训练集用于训练每个模型的连接值等普通参数。根据验证集的评估效果,可以对迭代次数等超参数进行调优。测试集则用于实际的负荷预测试验。在经过模型训练与参数调优后,对待测试集中的待预测日进行独立预测,最后通过最优加权法得出组合预测的结果。
[0140]
示例性地,请参考图3,复杂逻辑运算和流程控制任务在cpu上完成,密集型的数值计算任务在gpu上并行完成,减少cpu和gpu之间的数据流动开销,以构建gpu加速的高性能计算的组合预测模型。因此,cpu负责数据集预处理,负荷数据清洗,台区聚类分析,特征分析,训练gru模型等环节。可选地,cpu负责数据集预处理,也可以负责电信息的统计计算。通过opencl分配计算任务,gpu负责完成电信息统计的并行计算和lightgbm模型的训练等环节。通过gpu的加速计算提升了算法的算力,提升了组合预测模型的运算速度和运算精度。
[0141]
优选地,在进行电力负载预测过程中,将gru网络设置于cpu模块,将lightgbm模型设置于gpu模块;
[0142]
基于postgerssql,建立cpu模块与gpu模块的数据交互关系,将哈希排序后的电力负荷数据通过cpu模块的线程传输到gpu模块,生成具有映射关系的第一负荷预测结果和第二负荷预测结果。
[0143]
示例性地,复杂逻辑运算和流程控制任务在cpu上完成,密集型的数值计算任务在gpu上并行完成,减少cpu和gpu之间的数据流动开销。因此,cpu负责数据集预处理,负荷数据清洗,台区聚类分析,特征分析,训练gru模型等环节。通过opencl分配计算任务,gpu负责完成电信息统计的并行计算和lightgbm模型的训练等环节。
[0144]
优选地,在建立cpu模块与gpu模块的数据交互关系的过程中,将postgerssql中的pycopg2模块与python相连接,构建数据交互关系。
[0145]
示例性地,将电信息统计计算的工作从cpu设备放到gpu设备中去,将postgerssql中的pycopg2模块与python相连接,cpu擅长处理复杂逻辑运算任务,gpu擅长处理计算密集型的任务,将其哈希排序后的数据根据流通过cpu线程放入gpu计算网格中,cpu一个线程控制gpu的一个网格计算,实现计算的独立和并行,得到a表和b表的数据映射关系,完成后将不同网格中的计算结果进行汇总,回传到cpu中,通过pycopg2模块返回到postgerssql中,得到数据集。
[0146]
优选地,在生成第二负荷预测结果的过程中,基于gpu模块,通过lightgbm模型,生成决策树;
[0147]
基于决策树的叶子节点的分裂方式,通过计算得到直方图,根据直方图并行前缀和操作,找到分裂增益最大的叶子节点进行分裂,并进行循环迭代。
[0148]
示例性地,gru本质上是线性代数运算,用cpu或者gpu都可以。可选地,组合模型中的gru采取cpu进行训练,而lightgbm可以在gpu上实现决策树的生成,从而加速训练过程。针对叶子节点的分裂方式,gpu先并行计算得到直方图,然后根据直方图并行前缀和操作来找到分裂增益最大的叶子,然后分裂,如此循环迭代,而gpu有浮点计算速度和内存带宽方面的优点,可以提高效率。
[0149]
优选地,在将gru网络设置于cpu模块的过程中,基于opencl模块分配cpu模块的计算任务,建立基于opencl模块和gpu模块的并行运算空间。
[0150]
优选地,在建立并行运算空间的过程中,opencl模块包括全局内存、局部内存和私有内存;
[0151]
基于电力负荷数据的访问频次,将全局内存的数据分配到局部内存和/或私有内存中,其中,当访问频次为低频次时,将全局内存的数据分配到局部内存中,当访问频次为高频次时,将全局内存的数据分配到私有内存中。
[0152]
示例性地,由opencl的内存模型可知,opencl设备内存分为全局内存、局部内存和私有内存,三种内存的容量和访存速度是负相关的,全局内存容量最大,但访存最慢,访存延时是私有内存的数百倍。opencl设备的优势之一在于拥有可管理的局部内存和私有内存。局部内存和私有内存在概念上类似于cpu的各级缓存,这就给了程序设计者极大的发挥空间,合理地使用opencl局部内存和私有内存可以带来极大的性能提升。
[0153]
优选地,在建立并行运算空间的过程中,通过隐藏gpu模块的指令延迟,用于保证并行运算空间的并发性。
[0154]
示例性地,指令可以分为算术指令和内存指令,在指令发出和完成之间的时钟周期被定义为指令延迟。gpu是为处理大量并发和轻量级线程以最大化吞吐量设计的,当每个时钟周期中的所有的线程调度器都有一个符合条件的线程束时,通过其他常驻线程束中发布其他指令,可以隐藏gpu的每个指令的延迟,从而达到计算资源的完全利用。计算资源的利用率与常驻并发线程束的数量直接相关,因此,通过内核的合理设计从而保证足够的并发性,达到计算资源的充分利用,从而提高计算性能。
[0155]
第三实施例
[0156]
本技术还提供一种存储介质,具体地,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的基于组合预测模型的电力负载预测方法的步骤。
[0157]
在本技术提供的存储介质的实施例中,可以包含任一上述方法实施例的全部技术特征,说明书拓展和解释内容与上述方法的各实施例基本相同,在此不再做赘述。
[0158]
本技术通过构建的组合预测模型,通过gpu的加速计算提升了算法的算力,提升了运算速度和运算精度,为电力负载预测提供了高性能计算的技术思路。
[0159]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0160]
需要说明的是,在本文中,采用了诸如s10、s20等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会
先执行s20后执行s10等,但这些均应在本技术的保护范围之内。
[0161]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

技术特征:
1.一种基于组合预测模型的电力负载预测方法,其特征在于,包括以下步骤:基于gru网络和lightgbm模型,构建用于电力负载预测的组合预测模型;基于第一时间区间,采集所述gru网络和所述lightgbm模型的预测值误差与真实值误差,通过获取负荷采样总数,生成所述组合预测模型的偏移矩阵;基于所述偏移矩阵,通过拉格朗日乘子法,分别获取所述gru网络的第一权重系数和所述lightgbm模型的第二权重系数,其中,所述第一权重系数和所述第二权重系数的和为1;基于第二时间区间,通过采集电力负荷数据,根据所述gru网络获取第一负荷预测结果,以及根据所述lightgbm模型获取第二负荷预测结果,其中,所述第二时间区间小于等于所述第一时间区间,或所述第二时间区间大于所述第一时间区间;基于所述第一负荷预测结果和所述第一权重系数、所述第二负荷预测结果和所述第二权重系数,生成所述电力负荷数据的负荷预测结果。2.根据权利要求1所述一种基于组合预测模型的电力负载预测方法,其特征在于:在进行电力负载预测过程中,将所述gru网络设置于cpu模块,将所述lightgbm模型设置于gpu模块;基于postgerssql,建立所述cpu模块与所述gpu模块的数据交互关系,将哈希排序后的所述电力负荷数据通过所述cpu模块的线程传输到所述gpu模块,生成具有映射关系的所述第一负荷预测结果和所述第二负荷预测结果。3.根据权利要求2所述一种基于组合预测模型的电力负载预测方法,其特征在于:在建立所述cpu模块与所述gpu模块的数据交互关系的过程中,将所述postgerssql中的pycopg2模块与python相连接,构建所述数据交互关系。4.根据权利要求3所述一种基于组合预测模型的电力负载预测方法,其特征在于:在生成所述第二负荷预测结果的过程中,基于所述gpu模块,通过所述lightgbm模型,生成决策树;基于所述决策树的叶子节点的分裂方式,通过计算得到直方图,根据直方图并行前缀和操作,找到分裂增益最大的所述叶子节点进行分裂,并进行循环迭代。5.根据权利要求4所述一种基于组合预测模型的电力负载预测方法,其特征在于:在将所述gru网络设置于cpu模块的过程中,基于opencl模块分配所述cpu模块的计算任务,建立基于所述opencl模块和所述gpu模块的并行运算空间。6.根据权利要求5所述一种基于组合预测模型的电力负载预测方法,其特征在于:在建立并行运算空间的过程中,所述opencl模块包括全局内存、局部内存和私有内存;基于所述电力负荷数据的访问频次,将所述全局内存的数据分配到所述局部内存和/或所述私有内存中,其中,当所述访问频次为低频次时,将所述全局内存的数据分配到所述局部内存中,当所述访问频次为高频次时,将所述全局内存的数据分配到所述私有内存中。7.根据权利要求6所述一种基于组合预测模型的电力负载预测方法,其特征在于:在建立并行运算空间的过程中,通过隐藏所述gpu模块的指令延迟,用于保证所述并行运算空间的并发性。8.一种基于组合预测模型的电力负载预测系统,其特征在于,包括:数据采集模块,用于采集电力负荷数据;电力负载预测模块,用于通过建立基于gru网络和lightgbm模型的组合预测模型;基于
第一时间区间,采集所述gru网络和所述lightgbm模型的预测值误差与真实值误差,通过获取负荷采样总数,生成所述组合预测模型的偏移矩阵,通过拉格朗日乘子法,分别获取所述gru网络的第一权重系数和所述lightgbm模型的第二权重系数,并基于第二时间区间,通过采集电力负荷数据,根据所述gru网络获取第一负荷预测结果,以及根据所述lightgbm模型获取第二负荷预测结果;预测结果生成模块,用于基于所述第一负荷预测结果和所述第一权重系数、所述第二负荷预测结果和所述第二权重系数,生成所述电力负荷数据的负荷预测结果。9.根据权利要求8所述的一种基于组合预测模型的电力负载预测系统,其特征在于,所述系统包括存储器和分别与所述存储器连接的cpu与gpu,所述存储器包括全局内存、局部内存和私有内存。10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于组合预测模型的电力负载预测方法的步骤。

技术总结
本申请公开一种基于组合预测模型的电力负载预测方法、系统及存储介质,基于GRU网络和LightGBM模型,构建用于电力负载预测的组合预测模型;基于第一时间区间,采集组合预测模型的预测值误差与真实值误差,通过获取负荷采样总数,生成组合预测模型的偏移矩阵,并获取GRU网络的第一权重系数和LightGBM模型的第二权重系数;通过采集电力负荷数据,根据GRU网络获取第一负荷预测结果,以及根据LightGBM模型获取第二负荷预测结果;基于第一负荷预测结果和第一权重系数、第二负荷预测结果和第二权重系数,生成电力负荷数据的负荷预测结果。通过GPU的加速计算为电力负载预测提供高性能的预测计算方案。计算方案。计算方案。


技术研发人员:唐斌
受保护的技术使用者:天纳能源科技(上海)有限公司
技术研发日:2022.06.22
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-9104.html

最新回复(0)