一种基于图计算的水文模型并行率定方法和系统与流程

文档序号:24286723发布日期:2021-03-17 00:34阅读:47来源:国知局
一种基于图计算的水文模型并行率定方法和系统与流程

本发明涉及水文率定技术领域,特别是一种基于图计算的水文模型并行率定方法和系统。



背景技术:

水文模型是对自然界中复杂水文现象在计算机中的抽象和概化,是认识复杂水文循环过程和机理的有效手段,同时也是解决诸多实际水文问题的有力工具。在遥感技术和共他传感器技术发展推动下,用于构建水文模型的数据越来越丰富,水文模型研究正逐步向大数据时代发展。在大数据效应的作用下,水文建模的时空范围不断延伸、尺度也越来越细,且人类对水文过程认知水平提高及不断增长的研究应用需求也使得模型中物理、化学和生物过程的描绘也更为精细全面,两者综合作用下模型运行所需的计算资源和时间也随之增长。

同时,模型参数通常无法直接测算得到,需要通过多次将模型模拟结果与观测值进行对比,然后从中优选出一组能够表征所研究流域的模型参数(即所谓的模型率定)。模型率定需要大量的模型迭代模拟,产生了海量的计算需求。解决水文模型率定过程的海量计算问题,已经成为了水文学研究的关键难题。尽管,前人就此开展了大量研究工作,一定程度解决了水文模型率定计算难题,但以图计算作为切入点来解决此问题的方法和装置尚未见报导。有鉴于此,设计出一种基于图计算,能快速实现水文并行率定的方法和装置是非常必要的。



技术实现要素:

有鉴于此,本发明的目的是提出一种基于图计算的水文模型并行率定方法和系统,能快速实现水文并行率定。

本发明采用以下方案实现:一种基于图计算的水文模型并行率定方法,将水文模型分解成子流域模型,进而将模型率定过程转化成有向图表达,并利用pregel算法在spark集群中实现模型率定并行模拟。

进一步地,在将水文模型分解成子流域模型之前还包括步骤:依据用户定义的模型率定参数范围和模型迭代模拟次数,对水文模型的参数进行采样,生成与用户指定迭代次数一致的模型参数组。

进一步地,所述对水文模型的参数进行采样具体为:

根据用户指定参与率定的参数及其取值区间、模型模拟的次数,首先将率定参数取值区间分成与模型模拟的次数一致的等分线段,其次随机排列各率定参数线段,再次在每个线段值区间内随机取一个数据,最后按垂直方向对率定参数进行组合生成率定参数组。

进一步地,所述将水文模型分解成子流域模型具体为:

按照流域的汇流关系,将原流域模型划分成两个以上的子流域模型,子流域模型之间的汇流关系通过点源进行表征,即把上级子流域的模拟输出当作下游子流域的点状输入源。

进一步地,所述将模型率定过程转化成有向图表达具体为:

将每个子流域当作有向图中的节点,依据子流域汇流关系,生成模型的有向图,将迭代模拟的模型当作有向图的一个子集,并添加一个虚拟节点将多次迭代模拟的有向图子集连接在一起,形成模型率定过程的有向图表达。

进一步地,有向图中每个节点均包括三个信息,分别为m1、m2以及m3;其中m1为该节点所代表的子流域的唯一标识,m2为与该节点所代表的子流域直接连接的上游子流域的个数,m3为与该节点所代表的子流域直接连接的上游子流域模型已经完成模拟的个数。

进一步地,所述利用pregel算法在spark集群中实现模型率定并行模拟具体包括以下步骤:

步骤s41:向每个节点发送值为0的初始信息;

步骤s42:每个节点将所有接收信息与本节点m3的值合并,即将所有信息值及m3的值累加在一起,然后将新值更新到本节点的m3中;

步骤s43:判断当前节点m3值是否与m2值相同,若相同则执行步骤s44,若不相同则执行步骤s45;

步骤s44:依据本节点m1的值,执行指定模拟和子流域的模拟,并向本节点的直接下游子流域节点发送值为1的信息;并进入步骤s46;

步骤s45:向本节点直接下游子流域节点发送值为0的信息;并进入步骤s46;

步骤s46:判断所有节点信息队列是否包含未处理信息,若有则返回步骤s42,若无则结束模型率定。

进一步地,还包括步骤:依据用户指定的站点信息,结合模型模拟结果与观测序列,计算每次模拟的目标函数,并优选出目标函数最佳的参数组及模拟结果。

本法民还提供了一种基于上文所述的方法的系统,包括数据预处理服务器与spark服务器集群,所述数据预处理器与spark服务器集群通过网络相连;

所述预处理服务器上运行的方法包括:将水文模型分解成子流域模型,进而将模型率定过程转化成有向图表达;

所述spark服务器集群上运行的方法包括:利用pregel算法在spark集群中实现模型率定并行模拟。

进一步地,所述spark服务器集群上运行的方法还包括:依据用户指定的站点信息,结合模型模拟结果与观测序列,计算每次模拟的目标函数,并优选出目标函数最佳的参数组及模拟结果。

与现有技术相比,本发明有以下有益效果:本发明通过将水文模型分解成子流域模型,进而将模型率定过程转化成有向图表达,并通利用pregel算法在spark集群中实现模型率定并行模拟,可有效提高水文模型的率定计算速度。同时,基于pregel算法实现的并行模拟可获得spark平台的支持,从而充分spark平台扩展、容错及大吞吐的数据处理能力,且鉴于主流的云计算服务都支持pregel算法,因此本方法较易在云计算服务平台实施。而模型分解采用的是子流域的分解形式,分解仅涉及模型配置文件的重构,无需对水文模型进行源代码的重构,相比按领域分解方法更易实施。

附图说明

图1为本发明实施例的系统结构示意图。

图2为本发明实施例的方法流程示意图。

图3为本发明实施例的参数采样示意图。

图4为本发明实施例的有向图表达示意图。

图5为本发明实施例的有向图表达流程示意图。

图6为本发明实施例的并行率定示意图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

如图1至图6所示,本实施例提供了一种基于图计算的水文模型并行率定方法,将水文模型分解成子流域模型,进而将模型率定过程转化成有向图表达,并利用pregel算法在spark集群中实现模型率定并行模拟。

在本实施例中,在将水文模型分解成子流域模型之前还包括步骤:依据用户定义的模型率定参数范围和模型迭代模拟次数,对水文模型的参数进行采样,生成与用户指定迭代次数一致的模型参数组,如图2所示。

在本实施例中,如图3所示,所述对水文模型的参数进行采样具体为:

根据用户指定参与率定的参数及其取值区间、模型模拟的次数,首先将率定参数取值区间分成与模型模拟的次数一致的等分线段,其次随机排列各率定参数线段,再次在每个线段值区间内随机取一个数据,最后按垂直方向对率定参数进行组合生成率定参数组。

在本实施例中,所述将水文模型分解成子流域模型具体为:

按照流域的汇流关系,将原流域模型划分成两个以上的子流域模型,子流域模型之间的汇流关系通过点源进行表征,即把上级子流域的模拟输出当作下游子流域的点状输入源。

在本实施例中,所述将模型率定过程转化成有向图表达具体为:

将每个子流域当作有向图中的节点,依据子流域汇流关系,生成模型的有向图,将迭代模拟的模型当作有向图的一个子集,并添加一个虚拟节点将多次迭代模拟的有向图子集连接在一起,形成模型率定过程的有向图表达。

在本实施例中,有向图中每个节点均包括三个信息,分别为m1、m2以及m3;其中m1为该节点所代表的子流域的唯一标识,m2为与该节点所代表的子流域直接连接的上游子流域的个数,m3为与该节点所代表的子流域直接连接的上游子流域模型已经完成模拟的个数。所述的虚拟节点包含的信息也有三个,分别为值为“-1”的虚拟节点标识(命名为m1),模型率定需要迭代次数(命名为m2),以及当前已经完成模拟次数(命名为m3)。

如图4所示,图4中的(a)为一个由5个子流域构成的流域以及其可转化成的5个节点的有向图,每个子流域与有向图节点一一对应,子流域模型的汇流并系通过有向图连接边来表征。在单个模型的有向图中,每个节点包含3个信息,即该节点所代表的子流域的唯一标识,与该节点所代表的子流域直接连接的上游子流域个数,与该节点所代表的子流域直接连接的上游子流域模型已经完成模拟的个数。图4中的(b)进一步说明了在迭代模拟的情况下,多次的迭代模拟怎么转换成有向图表达。当迭代模拟时,每个节点代表一个子流域模型的特定状态,或一个子流域模型与特定参数组合。因此,此时节点的唯一标识由模拟号和子流域编号共同组成,此外还需要一个虚拟节点将多次模拟连接在一起。该虚拟节点用“-1”来特别标识,同时节点还包含两个属性,分别用来记录当前率定过程包含几次的模拟及当前已经完成了模拟次数。

在本实施例中,如图5所示,所述利用pregel算法在spark集群中实现模型率定并行模拟具体包括以下步骤:

步骤s41:向每个节点发送值为0的初始信息;

步骤s42:每个节点将所有接收信息与本节点m3的值合并,即将所有信息值及m3的值累加在一起,然后将新值更新到本节点的m3中;

步骤s43:判断当前节点m3值是否与m2值相同,若相同则执行步骤s44,若不相同则执行步骤s45;

步骤s44:依据本节点m1的值,执行指定模拟和子流域的模拟,并向本节点的直接下游子流域节点发送值为1的信息;并进入步骤s46;

步骤s45:向本节点直接下游子流域节点发送值为0的信息;

步骤s46:判断所有节点信息队列是否包含未处理信息,若有则返回步骤s42,若无则结束模型率定。

具体的,如图6所示,本实施例以如图4中的(a)所示的流域为例,阐述通过一系列超步完成图计算并行模拟过程:

st1-1,向有向图中的5个节点发送值为“0”的初始信息;

st1-2,每个节点将所有接收信息、以及m3的值合并,因为接收的信息为“0”,m3的初始值也为“0”,所以每个节点更新后的m3的值仍为“0”;

st1-3,判断m3值是否与m2值相同,此时只有节点1、2及4的m3值是否与m2值相同(加粗节点),则跳转执行st1-4,节点3及5的m3值与m2值不相同,跳转执行st1-5;

st1-4,依据m1的值,执行子流域的1、2及4模拟,并向当前节点直接下游子流域节点发送值为“1”的信息,即分别向3、3及5子流域节点发送值为“1”的信息;

st1-5,向当前节点直接下游子流域节点发送值为“0”的信息,节点3向下游子流域发送信息“0”,节点5没有直接下游子流域所以跳过此步骤;

st1-6,此时节点3和5包含未处理信息,因此需要进入下一个超步;

st2-1,节点3和5接收发送该节点的信息;

st2-2,节点3和5将所有接收信息、以及m3的值合并,并更新m3值,此时节点3的m3值为“2”,节点5的m3的值仍为“1”;

st2-3,节点3和5分别判断m3值是否与m2值相同,此时只有节点3的m3值是否与m2值相同(加粗节点),跳转执行st2-4,节点5的m3值与m2值不相同,跳转执行st2-5;

st2-4,执行子流域的3模拟,并向当前节点直接下游子流域节点发送值为“1”的信息,即向子流域节点5发送值为“1”的信息;

st2-5,向当前节点直接下游子流域节点发送值为“0”的信息,节点5没有直接下游子流域所以跳过此步骤;

st2-6,此时节点5仍包含未处理信息,因此需要进入下一个超步;

st3-1,节点5接收发送该节点的信息;

st3-2,节点5将所有接收信息、以及m3的值合并,并更新m3值,此时节点5的m3的值仍为“2”;

st3-3,判断节点5的m3值是否与m2值相同,此时节点5的m3值与m2值相同(加粗节点),跳转执行st3-4;

st3-4,执行子流域的5模拟,并向当前节点直接下游子流域节点发送值为“1”的信息,因节点5没有直接下游子流域,所以跳过此步骤;

st3-6,此时所有节点均不包含未处理信息,结束并行模拟。

在本实施例中,还包括步骤:依据用户指定的站点信息,结合模型模拟结果与观测序列,计算每次模拟的目标函数,并优选出目标函数最佳的参数组及模拟结果。

所述目标函数可以是nash系数(ens)、相对系数(r2)及相对误差(re)中任意一种,ens、r2及re定义如下:

上述公式中,式中ko,i为实测值,ks,i为模拟值,ko,a为实测平均值,ks,a为模拟平均值,n为观测点的总数量。

本实施例还提供共了一种基于上文所述方法的系统,如图1所示,包括数据预处理服务器与spark服务器集群,所述数据预处理器与spark服务器集群通过网络相连;

所述预处理服务器上运行的方法包括:将水文模型分解成子流域模型,进而将模型率定过程转化成有向图表达;

所述spark服务器集群上运行的方法包括:利用pregel算法在spark集群中实现模型率定并行模拟。

在本实施例中,所述spark服务器集群上运行的方法还包括:依据用户指定的站点信息,结合模型模拟结果与观测序列,计算每次模拟的目标函数,并优选出目标函数最佳的参数组及模拟结果。

图1中的数据预处理服务器、网络和spark集群中服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1