首页> 中国专利> 一种对大规模可再生能源数据进行快速概率建模方法

一种对大规模可再生能源数据进行快速概率建模方法

摘要

本发明公开了一种对大规模可再生能源数据进行快速概率建模方法,包含以下过程:基于Spark和HDFS为新能源快速建模搭建分布式并行框架,使该框架与可再生能源现有的存储系统兼容;利用RDD容错和基于内存计算的特点,构建求解Wakeby分布的血缘图,从而实现基于RDD的新型Wakeby分布快速估计算法;推导了该并行估计算法的计算时间与样本数据量以及Spark两个重要的可调参数的函数关系。发明推导的算法的时间消耗与样本大小、并行度、分区数的函数关系有助于在给定的样本数据量下帮助程序员在Spark平台上程序调优、在给定配置下的时间消耗预测以及在期望时间下的硬件配置。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-31

    授权

    授权

  • 2018-02-13

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20170920

    实质审查的生效

  • 2018-01-19

    公开

    公开

说明书

技术领域

本发明属于可再生能源领域,具体涉及基于Spark平台的弹性分布数据集和Wakeby分布模型,对大规模新能源数据进行快速概率建模。

背景技术

为应对资源环境挑战,实现“高比例可再生能源”是“世界能源发展进入无碳化为核心的第三次能源变革时代”的重要标志。由于可再生能源(如风、光、水)的不确定性,高比例可再生能源接入电网势必会给电力系统带来诸多挑战。为了合理评估可再生能源不确定性对电力系统的影响,建立可再生能源的概率分布模型至关重要。概率模型一般基于样本数据通过参数或非参数估计方法获得。随着信息技术的快速发展,可再生能源样本数据量越来越大,虽然大数据样本携带了海量的信息,但也使得概率建模的计算负担急剧增加。

近几十年来,国内外提出了基于近似技术和并行计算的概率建模方法以减少计算时间。近似技术主要采用快速傅里叶变换和快速高斯变换,但它们都会在一定程度上降低概率模型的估计精度。此外,Wakeby分布具有天然的并行特征。

并行方法主要针对多处理器计算或集群计算。随着数据量的增长和处理器速度发展缓慢,多处理器计算的处理能力不能跟上数据的增长。因此,大规模数据的计算必须在可扩展的集群中进行处理。电力系统中的传统集群计算主要基于MPI标准或Matlab集群,因为它们易于使用、部署和扩展。

但是,它们不仅缺乏相应的分布式文件系统来支持大规模数据的存储和访问,而且它们不支持容错,不能处理集群中节点故障的问题,这将会极大地影响应用程序的性能。

发明内容

本发明的目的是提供一种基于Spark平台弹性分布式数据集(ResilientDistributed Dataset,RDD)的可再生能源快速概率建模方法,即基于在大规模可再生能源(Renewable Energy Sources,RES)数据样本下,针对现有概率建模方法数据处理速度不足的问题,提出一种基于Spark和Hadoop分布式文件系统(Hadoop Distributed FileSystem,HDFS)的Wakeby分布的并行估计算法。

为了实现以上目的,本发明通过以下技术方案实现:

一种对大规模可再生能源数据进行快速概率建模方法,包含以下过程:基于Spark平台和HDFS为可再生能源数据建模搭建分布式并行框架,使所述分布式并行框架与所述可再生能源数据的存储系统兼容;利用RDD容错和基于内存计算的特点,构建求解Wakeby概率分布模型,实现基于RDD的Wakeby分布快速估计算法。

优选地,所述基于Spark和HDFS的分布式并行框架包含相互作数据传输的基于RDD的Spark计算引擎、hadoop分布式文件系统、数据集市、可视化库与商品硬件。

优选地,所述建立基于Spark和HDFS的分布式并行框架进一步包含以下过程:

步骤S1.1、采用基于RDD的Spark计算引擎实现在内存中对Wakeby分布等概率模型的快速并行计算。

步骤S1.2、利用HDFS对大规模RES数据进行存储,并提供具有高吞吐量的数据访问接口;将Spark与HDFS结合使应用程序在其所运行的数据附近快速执行。

步骤S1.3、通过所述数据集市将现有RES存储系统的大规模数据事先转移到HDFS中,本地文件可以直接上传到HDFS中,关系型数据库则通过Sqoop数据传输工具上传到HDFS中。

非关系型数据库的底层存储系统是HDFS,作为新能源的数据库实现大规模新能源数据的存储、实时访问和离线的统计分析功能。

步骤S1.4、结合专业可视化库在浏览器上显示数据。

步骤S1.5、基于分布式模式下的Spark的主或从架构,将所述商品硬件部署为一个主节点和许多工作节点;完成建立基于Spark和HDFS的分布式并行框架。

优选地,所述建立Wakeby概率分布模型包含以下过程:

五个参数Wakeby分布的定义表达式为:

式中,F≡F(x)=P(X≤x)为累积概率分布函数;x(F)为对应给定F值的分位数值;ξ为位置参数;α和β为尺度参数;γ和σ为形状参数;

Wakeby分布的概率密度函数为:

f(x)=[α(1-F)β-1+γ(1-F)-σ-1]-1

式中,f(x)为概率密度函数。

优选地,采用L-阶矩估计方法估计所述Wakeby概率分布模型的五个参数,其进一步包含:

将所述Wakeby的五个参数通过令样本的前五阶矩等于Wakeby概率分布模型的前五阶L-阶矩的方程;

根据样本数据计算前五阶线性矩,并令每阶矩等于由L-阶矩定义式推导得出的对应五阶矩;

第r个样本线性矩为:

其中,令x1,x2,…,xn作为n个样本,x1:n≤x2:n≤L≤xn:n作为有序样本。

优选地,所述基于RDD的Wakeby分布快速估计算法包含以下过程:通过Spark的textfile()方法从HDFS读取文本文件,并将其作为字符串型的首个RDD或父RDD返回,将RDD分成j个分区,其中j=1,2,...,Pn,并将各个分区缓存到内存中。通过map操作将分割每个分区的每行的数据,并将每个数据映射为双精度类型,以便新创建的RDD可以被下一个操作计算,且对各个分区的每个转换的结果都保存在内存中。通过reduce转换操作使每个分区的所有元素聚合生成每个分区的表示数据顺序的变量Bj。通过combine转换操作将所有分区的最终结果组合并求和,获得在n个样本下的当k=0,1,2,3,4时的bk的值,计算样本线性矩。基于所述样本线性矩,构造关于Wakeby概率分布模型的五个参数的方程,并用最小二乘法求解五个方程得到Wakeby分布的计算结果;通过save动作操作将所述Wakeby分布的计算结果保存在HDFS中。

优选地,基于以下算式计算所述bk值;通过两个辅助变量来表述各个分区中样本数据的顺序;

Ej=n1+n2+…+nj

其中,j=1,2,...,Pn

其中,k=0,1,2,3,4。

优选地,快速概率建模方法进一步包含以下过程:通过并行估计算法的计算时间与样本数据量以及Spark的集群并行数与分区数的函数关系使得Spark集群的分区数与硬件配置相匹配。

集群并行度:

式中,N是工作节点的数量,Ei是节点i中的执行器数量,Ci是节点i中每个执行者所拥有的物理内核数量;Ti是节点i中每个核的线程数。

并行计算Wakeby的时间消耗:

式中,Pn表示RDD的分区数,s是每次并行计算的通信时间;为计算一个拥有n个样本分区的bk,k=0,1,2,3,4值所需的时间;tcon为计算样本线性矩与通过最小二乘法求解关于Wakeby分布的五个参数方程组的时间。

本发明与现有技术相比,具有以下优点:

本发明设有的基于Spark和HDFS的分布式并行框架可以与RES的现有存储系统兼容,具有高吞吐量访问和高容错性等优势,同时基于RDD开发的新能源并行估计算法可以利用Wakeby概率分布模型进行快速估计RES的概率分布,有效提高大规模数据样本情况下的快速计算性能。

本发明推导的算法的时间消耗与样本大小、并行度、分区数的函数关系有助于在给定的样本数据量下帮助程序员在Spark平台上程序调优、给定配置下的时间消耗预测以及期望时间下的硬件配置。

本发明可广泛应用于可再生能源的概率建模,特别适用于大数据级别的风速、潮汐流速等新能源样本的快速概率建模。

附图说明

图1为本发明一种快速概率建模方法的基于Spark平台和HDFS的分布式并行框架图;

图2为本发明一种快速概率建模方法的弹性分布式数据集RDD的血缘图;

图3为本发明一种快速概率建模方法的基于弹性分布式数据集RDD的Wakeby分布的血缘图;

图4为本发明一种快速概率建模方法的潮汐流速度的曲线图和直方图;

图5表示本发明一种快速概率建模方法的Spark和Matlab集群中Wakeby的时间消耗。

具体实施方式

以下结合附图,通过详细说明一个较佳的具体实施例,对本发明做进一步阐述。

本发明一种对大规模可再生能源数据进行快速概率建模方法,包含以下过程:首先,基于Spark和HDFS为新能源快速建模搭建分布式并行框架,使该框架与可再生能源现有的存储系统兼容;在此基础上,利用RDD容错和基于内存计算的特点,构建求解Wakeby分布的血缘图,从而实现基于RDD的新型Wakeby分布快速估计算法;此外,推导了该并行估计算法的计算时间与样本数据量以及Spark两个重要的可调参数的函数关系。最后,以潮汐流速为新能源实验数据,在构建的分布式并行框架上实现了基于RDD的Wakeby分布并行估计算法,分析了本发明的实现效果并验证了所推导公式的正确性。其具体过程如下:

步骤S1、建立基于Spark和HDFS的分布式并行框架,其进一步包含以下过程;

如图1所示,基于Spark和HDFS的分布式并行框架包括5部分:Spark计算引擎、hadoop分布式文件系统、数据集市、可视化库与商品硬件。

步骤S1.1、采用基于RDD的Spark计算引擎实现在内存中对Wakeby分布等概率模型的快速并行计算。

步骤S1.2、利用HDFS对大规模RES数据进行存储,并提供具有高吞吐量的数据访问接口;将Spark与HDFS结合使应用程序在其所运行的数据附近快速执行。

步骤S1.3、通过上述数据集市将现有RES存储系统的大规模数据事先转移到HDFS中,本地文件可以直接上传到HDFS中,关系型数据库则通过Sqoop数据传输工具上传到HDFS中。非关系型数据库(Hive,Hbase)的底层存储系统是HDFS,可以同时作为新能源的数据库实现大规模新能源数据的存储、实时访问和离线的统计分析功能。

步骤S1.4、结合专业可视化库(例如Highchar,Echarts和Hue)在浏览器上显示数据。

步骤S1.5、基于分布式模式下的Spark的主/从架构,将商品硬件部署为一个主节点和许多工作节点。完成建立基于Spark和HDFS的分布式并行框架。

步骤S2、建立基于RDD的Wakeby分布的并行估计算法;其进一步包

含以下过程:

基于上文步骤S1所述的基于Spark和HDFS的分布式并行框架,提出了基于RDD的Wakeby分布式的并行估计算法,从而提升大规模RES样本数据的概率建模性能。

步骤S2.1、建立Wakeby概率分布模型;

Wakeby分布用于对RES中潮汐能和风能进行分析,五个参数Wakeby分布的定义表达式由以下分位函数给出:

式中,F≡F(x)=P(X≤x)为累积概率分布函数,没有解析表达式;x(F)为对应给定F值的分位数值;ξ为位置参数;α和β为尺度参数;γ和σ为形状参数。

Wakeby分布的概率密度函数可以表示为:

f(x)=[α(1-F)β-1+γ(1-F)-σ-1]-1(2)

式中,F为累积概率分布函数;f(x)为概率密度函数。

Wakeby分布的累积概率分布函数或概率密度函数没有解析表达式,本发明采用L-阶矩估计方法估计Wakeby分布的五个参数。L-阶矩估计方法估计Wakeby分布五个参数的基本思路是:根据样本数据计算前五阶线性矩,并令每阶矩等于由L-阶矩定义式推导得出的对应五阶矩。

令x1,x2,…,xn作为n个样本,x1:n≤x2:n≤L≤xn:n作为有序样本,第r个样本线性矩定义为:

其中,

Wakeby的五个参数可以通过令样本的前五阶矩等于Wakeby分布的前五阶L-阶矩的方程来获得。至此,基于Wakeby概率分布模型搭建完成。

步骤S2.2、建立基于RDD的Wakeby分布并行估计算法;

通过上述分析可知,Wakeby分布在样本量较大时会面临累加和带来的极大时间消耗的问题。Spark基于RDD的血缘图可以有效地并行累加和,进而减少时间消耗。

如图2所示,其为RDD的血缘图,实框代表RDD,其各个RDD内部分为多个分区,箭头代表操作。其中,标有a、b、c、d和e的分区被分配到各个工作节点并且被并行执行。此外,RDD只支持两种类型的操作:转换(transformation)和动作(action)。所有转换操作(包括map,reduce,union)都是惰性的,它们不会马上计算出结果。相反,他们只记得RDD的血缘图以构建每个阶段的有向无循环图(Database Availability Group,DAG)。血缘图使得每个阶段包含尽可能多的可流水线计算的转换,最大程度地实现并行化,并使应用程序的逻辑清晰有助于程序员对应用程序的调节。只有当像存储(save)这样的动作需要返回最终结果才能计算转换操作,这样可以避免返回数据量大的中间结果。因此,RDD可以通过数据并行和计算并行来提高计算速度。

通过以上分析,为了在大规模RES样本数据下,提高Wakeby分布对大规模RES样本数据的并行估计性能,首先创建求解Wakeby分布的首个RDD或父RDD以实现数据并行,其次设计RDD转换操作形成血缘图以实现Wakeby分布的并行估计。

如图3所示,步骤S2.3、数据并行,其包含以下过程:

假设RDD是被分成Pn个分区,即Pn是一个总的分区数,j指Pn个分区里面任意一个分区,即j=1,2,….,Pn,nj指对应j分区里面对应的元素个数。由于样本线性矩如公式(3)(4)的计算和样本数据的顺序相关。因此,样本数据和它的序列号需要被捆绑在一起作为首个/父RDD以便于分布在各个工作节点的分区可以被并行计算。

步骤S2.4、计算并行,其包含以下过程:

对于Wakeby分布的计算并行特性,本发明通过两个辅助变量来表述分区中样本数据的顺序。

Ej=n1+n2+…+nj(6)

其中,j=1,2,...,Pn

为了求解到公式(4)中的bk,对RDD的转换操作描述如下:

其中,k=0,1,2,3,4,n是样本个数。

基于步骤S2.3所述的首个RDD或父RDD以及公式(7)(8)描述的转换操作,可以设计出计算bk的血缘图。根据图3的血缘图,基于RDD的Wakeby分布式并行估计算法的计算步骤具体如下:

步骤S2.4.1、通过Spark的textfile()方法从HDFS读取文本文件,并将其作为字符串型的首个RDD或父RDD返回,将RDD分成多个分区,并将分区缓存到内存中。

步骤S2.4.2、映射(map)操作将分割每行的数据,并将每个数据映射为双精度类型,以便新创建的RDD可以被下一个操作计算。此外,对分区的每个转换的结果都保存在内存中。

步骤S2.4.3、简化(reduce)转换操作使每个分区的所有元素聚合生成每个分区的Bj

步骤S2.4.4、通过合并(combine)转换操作将所有分区的最终结果组合并求和,以获得最终公式(4)在n个样本下的b0~b4,然后通过式(3)计算样本线性矩。

步骤S2.4.5、关于Wakeby分布,在得到样本线性矩后,构造出关于Wakeby分布的五个参数的方程,并用最小二乘法求解五个方程得到Wakeby分布。通过save动作操作可以将Wakeby分布的计算结果保存在HDFS中。

在五个步骤之后,可以建立大规模新能源采样数据的Wakeby分布。通过将累积和转换为RDD的转换操作形成血缘图,并且所有分区都被流水线计算,故累积和是完全被并行计算的。因此,本发明提出的基于RDD的Wakeby分布并行估计算法可以显著提高其并行计算性能。此外,本发明所提出的算法思想也可以应用于需要应对大规模样本数据或遭受巨大时间消耗的其他概率模型,其中大规模样本数据可以来自RES,电动汽车,智能电表,大规模建筑物负荷等。

S3、构建时间消耗与Spark平台参数、样本量的函数关系;

推导出上述算法的时间消耗与Spark平台的两个重要可调参数(并行度和分区数)以及样本数据量之间的函数关系,这有助于Spark平台的时间消耗预测、硬件配置设置和程序微调。

在Spark中,每个工作节点都有几个执行者,执行者对每个分区运行计算和存储数据,因此有两个重要参数影响并行效率。一个是可手动设置的分区数Pn。另一个是集群并行度,它表示可以同时执行多少个分区。集群并行度按如下公式计算。

式中,N是工作节点的数量,Ei是节点i中的执行器,Ci是节点i中每个执行者所拥有的物理内核数量。Ti是节点i中每个核的线程数。通过公式(9),可以看出Spark集群的并行度和硬件配置密切相关。

根据公式(4),假设当n=2时,计算bk需要个时间单位,则计算一个拥有n个样本分区的bk值就需要个时间单位。如果将数据分成Pn个分区,并且PT个分区同时计算,则每个分区平均有n/Pn个数据,所有分区需要计算机并行次才被执行完毕。假设s是每次并行计算的通信时间,忽略s随Pn和PT的微小变化,通过公式(3)计算样本线性矩和通过最小二乘法求解5个方程组的时间为tcon,由于b0-b4是被并行执行的,因此并行计算Wakeby的时间消耗可按公式(10)估算。

通过公式,我们会直观地认为Pn越少越好,但是我们忽略了s的变化,我们可以容易地想到分区数越多,通讯频率越高,内存压力越小。因此,合理数量的分区可以提高Spark应用的性能,优选地,建议Pn等于(2~4)×PT,这将在实验结果中得到验证。当样本数据量足够大时使得s和tcon的值相对很小以至于它们可以忽略不计,因此在通过实验估算时将不考虑公式(10)中的s和tcon。至此,Spark平台参数与样本大小的函数关系求解步骤结束。

本发明的一个优选的实施例为:在5台Sugon A620r-G服务器上搭建了一个主节点和四个工作节点的集群,每个节点根据网上官方文件都安装了Spark1.4.1、HDFS 2.4.1以及Matlab 2015b,进行数值模拟对所提出的方法进行验证。此外,基于Spark和HDFS的分布式并行框架中的数据集市、可视化库和商品硬件均按照官方文件进行布置。

一、输入Spark平台配置参数

由于Matlab是国际公认的优秀的数学应用软件,在本实施例中,为了测试基于RDD算法的性能,以在Matlab上实现Wakeby分布的性能作为对比,以下表1为两平台的参数详情。

表1、设备参数配置表

二、基于Spark平台构建Wakeby分布模型

第一步配置完成设计框架参数之后,在本实施例中,选择潮汐流速作为RES的对象,进行数值模拟。73178个数据样本采样于旧金山湾区(37°48.5',122°20.7'W),总数据的大小为0.5MB。此外,为测试在所提算法在大规模数据上的性能,这里通过复制的方式扩充以上0.5MB的原始数据。在Spark平台上配置Wakeby分布模型,根据图3的血缘图,基于RDD的Wakeby分布式并行估计算法,这些模型在Spark上具体实现步骤如下:

步骤1、通过Spark的textfile()方法从HDFS读取文本文件,并将其作为字符串型的首个RDD或父RDD返回,将RDD分成多个分区,并将分区缓存到内存中。

步骤2、map操作将分割每行的数据,并将每个数据映射为双精度类型,以便新创建的RDD可以被下一个操作计算。此外,对分区的每个转换的结果都保存在内存中。

步骤3、reduce转换操作使每个分区的所有元素聚合生成每个分区的Bj

步骤4、通过combine转换操作将所有分区的最终结果组合并求和,以获得最终公式(4)在n个样本下的b0~b4,然后通过式(3)计算样本线性矩。

步骤5、关于Wakeby分布,在得到样本线性矩后,构造出关于Wakeby分布的五个参数的方程,并用最小二乘法求解五个方程得到Wakeby分布。通过save动作操作可以将Wakeby分布的计算结果保存在HDFS中。

如图4、图5所示,其分别为运行程序得到在Spark和Matlab平台上实现Wakeby模型的概率分布曲线图和时间消耗对比图。

如图4所示,在Spark上实现Wakeby分布得到的概率密度曲线结果与Matlab的相同,因此,可以证明本发明所述的算法的正确性。

如图5所示,其显示了不同样本数据量情况下通过Spark集群和Matlab集群计算Wakeby分布的时间。Spark花费的时间小于Matlab,甚至可以只花费Matlab所需要时间的20%,而随着数据量的增加,Spark与Matlab之间的计算时间差距越来越大。可以推断,对于较大规模的数据,Spark的优点将更加明显。另外值得一提的是,当数据容量大于5.12×109时,Matlab因为数据溢出内存的原因停止计算,但Spark没有这样的问题。由此,我们可以总结出所提算法在设计框架的实现可以极大地提高并行计算性能,并且在处理大规模数据或超大规模的数据上很有优势。

在本实施例中,可以看出通过使用Spark平台弹性数据集的可再生能源概率建模方法,大规模样本数据的概率分布建模时间有了明显缩短。

三、验证时间消耗与Spark平台参数、样本大小函数关系的准确性

在Spark中,每个工作节点都有几个执行器,它们为每个分区运行计算和存储数据,然后有两个重要参数影响并行效率。一个是手动设置的分区数。另一个是并行度,表示可以同时执行多少个分区。通过公式(9)计算集群并行度

式中,PT是Spark集群中的并行度,N是节点的数量,Ei是节点i中的执行器数量,Ci是节点i中每个执行器中物理内核数量。Ti是节点i中每个核心中的线程数。Spark集群的并行度和硬件配置密切相关。

在本实施例中,实现Spark集群的并行度为

并行运算时间消耗函数是本发明推导出的Spark平台参数与样本大小之间的函数,如公式(10)所示:

在本实施例中,设置textFile()和parallelize()的第二个参数可以配置分区数Pn,在本实施例中,通过设置Pn=(1~10)×PT,观察计算时间变化,结果如表2所示。从表2中可以看出,样本量为7.3ⅹ108时,最优计算时间为21.557秒;当样本量为1.46ⅹ109时,最优计算时间为37.725秒;和最优计算之间差距最大的值往往出现在Pn过小或过大的时候,而当Pn=(1~10)×PT时,对应的计算时间往往很接近于最优时间甚至会等于最优计算时间。因此,设置Pn=(2~4)×PT是合理的,这有助于程序调优。

表2为不同Pn值下的Wakeby分布时间消耗表

设置Pn=128,PT=32,n=7.3×108,通过实验仿真在忽略s和tcon的情况下,估算得到秒。取Pn=384,PT=128通过改变n得到公式(10)计算的理论值和仿真得到的实际值。从表3可以看出理论值与实际值的绝对误差不超过2秒,相对误差最大不超过3%。由于误差皆在可接受的范围之内,从而可证明所推导的公式是正确的。因此,在给定样本数据量下,用户可以使用推导的函数关系来预测在给定配置下算法的时间消耗或在期望的计算时间下合理配置硬件。

表3为不同样本量下计算时间的理论值与实际值

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号