基于综合集成平台的洪水预报及集成应用
2011-07-16解建仓
解建仓,赵 杰,张 刚,王 蕾
(西安理工大学 水利水电学院,陕西 西安 710048)
0 引言
洪涝灾害是我国损失最为严重的自然灾害,随着社会经济的发展和城市化进程的加速,洪水造成的损失越来越大。洪水预报是调度决策的重要依据,在防洪减灾中发挥着重要的技术支撑作用。洪水预报系统是各项洪水预报技术的集成,是一项重要的防洪减灾的非工程措施[1]。本文结合当前先进的信息、软件开发技术,基于综合集成平台[2-3],采用组件[4-6]、Web Service[7-8]等技术将洪水预报模型和参数率定方法划分并实现为功能相互独立的组件,形成模型组件库和参数率定方法库。在综合集成平台上,通过知识图、业务组件搭建洪水预报系统,实现洪水预报集成应用。
1 洪水预报系统及应用模式存在的问题
随着软件开发技术的不断发展及洪水预报需求的不断提升,传统的洪水预报系统及应用模式存在的问题也越来越突出。
传统模式在洪水预报模型开发方面存在的主要问题如下:
1)模型难以重用。由于模型通常是与洪水预报系统绑定在一起,在开发别的洪水预报系统时,这些模型无法重用,需重新开发。
2)模型不灵活。传统的洪水预报系统通常是针对某一流域、断面等进行模型的制作,模型与模型的参数联系在一起,制作出来的模型只适用于该流域或断面,不能应用于别的流域或断面,缺乏灵活性。
3)缺乏参数率定及修正能力。传统的洪水预报系统大都是针对流域、断面等而开发的,系统中的模型也都只能应用与该流域或断面,模型的参数率定没有和模型自身分离,使得系统缺乏参数的修正能力。
4)低水平重复开发。由于模型和参数绑定在一起,缺乏灵活性,加之缺乏标准的参数估计方法,使得针对不同部门或地域的洪水预报系统、模型都必须重新开发,造成人力和物力的浪费,增加系统的建设成本。
传统模式在洪水预报系统建设方面存在的主要问题如下:
1)系统可扩展性差,难以满足业务需要。传统的洪水预报系统大多采用面向对象方法,系统一旦建成,新的预报模型或方法很难加入到系统中,不能满足实际业务需要。
2)系统功能单一,缺乏实用性。传统的洪水预报系统在功能上缺乏扩展性,在业务上缺乏扩充性,在应用上缺乏灵活性,在表现形式上缺乏多样性,在操作上缺乏交互性。预报模型方法单一,缺乏多模型、多方案对比,决策支持能力欠缺。
3)系统灵活性差,低水平重复开发。模型和软件系统耦合在一起,使得系统难以重用。
针对洪水预报系统及应用模式存在的问题,结合最新的软件开发技术及洪水预报需求,本文探讨了基于综合集成的洪水预报及集成应用模式,其基本思路是:在面向服务的体系架构(SOA)下,将洪水预报模型组件化,采用 Web Service 技术将洪水预报模型封装成标准的组件,形成洪水预报模型组件库;采用知识图来组织模型和描述业务逻辑(流程);通过平台、组件、知识图搭建洪水预报系统,实现洪水预报的集成应用。
2 洪水预报模型组件化及模型搭建
2.1 洪水预报模型组件化过程
洪水预报模型组件化可分为模型组件划分、封装和搭建 3 个阶段,具体过程如下:
1)根据洪水预报模型的计算过程,将模型划分各个独立的子模型,各个子模型留有参数、输入和输出接口。这一过程可由 Java 实现,每个子模型可以看作是 1 个类;
2)利用 Web 服务技术,将各个子模型封装成模型组件;
3)将已经封装好的组件存入相应的模型组件库;
4)利用各个子模型搭建洪水预报模型。
洪水预报模型组件化过程如图1 所示。
2.2 洪水预报模型组件化实例
2.2.1 新安江模型组件化
1)新安江模型组件划分。新安江模型强调从降雨到形成径流的时间和空间上的变化过程,预报过程比较复杂,且可以分割为多个子系统,如蒸发、产流、水源划分、流域汇流和洪水演进等子系统。根据新安江模型的各个组成部分,将新安江模型分为蒸散发、产流、水源划分和汇流计算等 4 类组件。为便于组件的通用和重用,又将蒸散发计算划分为一层、二层和三层蒸散发计算等 3 个标准组件;将汇流计算划分为坡地汇河网和河道汇流计算 2 个组件;将水源划分分为二水源、三水源和四水源等 3 个组件。
2)组件业务逻辑分析。业务逻辑分析过程主要分析模型组件的参数、初值和输出(模型组件的计算结果)。下面以三层蒸散发组件为例来说明组件的业务逻辑。
参数是和该模型相关的一些流域的参数。其中 K 为蒸散发折算系数;SM为自由水需水容量;KG为地下径流出流系数;KSS为壤中流出流系数;KKG为地下水库消退系数;KKSS为壤中流消退系数;CS为河网蓄水消退系数;WM= WUM+ WLM+ WDM为蓄水容量,是上层蓄水容量 WUM、下层蓄水容量WLM、深层蓄水容量 WDM之和;IMP 为不透水面积比例;B 为蓄水容量曲线系数;C 为深层蒸散发系数;EX为自由水容量分布指数;UH 为单位线;KE为马斯京根模型参数;XE为流量比重因素;A 为流域面积。
初值:主要有 2 个来源,一个是流域在各个时段上的初值,其中,P 为降雨量;另外一个是别的模型或者是模型本身的计算结果,其中,WU为上层土壤含水量,WL为下层土壤含水量,WD为深层土壤含水量,EI为蒸发量,属于三层蒸发模型本身的时段计算结果,这个结果又可作为下一时段的初值。
输出:也是 2 个部分。一部分是输出给其他模型的计算结果,其中,R 为总径流量;RS为地表径流量;RSS为壤中流径流量;RG为地下径流量;QRS为地表径流;QRSS为壤中流;QRG为地下径流;Q 为计算出流量。另一部分是流域在这个时段内使用该模型发生改变的状态(属于该模型的初值)如三层蒸发模型中计算出的 WU,WL,WD,又要作为下一时段土壤含水量的初值。
新安江模型共由 5 个模型组件构成,由模型的原理可知,这 5 个组件之间并不完全独立,各个组件之间存在一定逻辑关系,具体逻辑关系如图2 所示。这种逻辑关系就是组件组装新安江模型的依据。
图2 新安江模型各组件的关系
3)新安江模型组件的实现。新安江模型组件的实现是将划分好的各个组件,根据组件开发标准,通过编程实现其业务功能。新安江模型总共要实现 9 个模型组件,各组件的类名、关键方法及功能如表1 所示。
2.2.2 洪水预报模型参数优选组件化
参数优选方法是借助一定的数学方法,如最小二乘法、单纯形法,以及近年来出现的遗传、粒子群、蚁群等算法来实现模型参数优化,完全由计算机实现。
考虑到优化算法在参数优选方面的优势,本文对 SCE-UA、改进粒子群(SMSE-PSO)、并行遗传(PGA)和免疫克隆选择(ICSA)等算法按照模型组件化过程进行组件化。
2.2.3 洪水预报模型组件库
随着洪水预报模型组件的增多,将形成预报模型组件库。组件库的主要任务是对外提供组件,需要的组件只要从组件库“取”即可。对组件库中的各组件进行分类,以便于其应用,组件分类如表2 所示。
2.3 洪水预报模型搭建
预报模型的搭建模式是模型组件化的核心,搭建模式的好坏直接决定着代码重用率的高低。组件的重用率越高,越节省资源,而且能真正体现组件化的最终目的。
2.3.1 多模型共用 1 个或多个组件
对于多个模型共用 1 个或多个组件,以新安江和陕北模型为例,可以将新安江模型划分为蒸散发、蓄满产流、水源划分、汇流和河道汇流(马斯京根模型)等组件;可以将陕北模型划分为蒸散发、超渗产流、汇流和河道汇流等组件。由于都有蒸散发、汇流和河道汇流 3 个组件,因此这 3 部分可以共用,而这 3 部分共包含 7 个组件,则可以共用的组件有 7 个。组件共用示意图如图3 所示。
当然组件共用远不止这些,组件越多,共用机会就越多,越能充分发挥组件共用的作用。随着组件越来越多,各个组件的共用机率也会越来越大。
表1 新安江模型各组件的实现
表2 洪水预报模型组件分类
图3 组件共用示意图
2.3.2 多个组件的组合搭建
多个组件组合搭建的情况以新安江模型为例,根据各个组件的详细分类,将这些组件组合应用,即可搭建成不同类型的新安江模型。组合搭建示意图如图4 所示。一共可以组合成一层蒸发二水源单位线汇流马斯京根模型、二层蒸发二水源划分单位线汇流马斯京根模型等 54 个模型。
3 洪水预报模型集成应用
在已有组件库的基础上,运用洪水预报模型搭建模式可快速搭建多个洪水预报模型并实现应用;对于 1 个流域或断面,可同时应用多个模型进行预报,为此,本文提出多模型洪水预报的集成应用模式。集成应用模式主要分为洪水集成预报和预报方案集成发布。
3.1 洪水集成预报
洪水集成预报一般有 2 种方法,一种是综合线性集成方法;另一种是黑箱模型集成方法,如神经网络、支持向量机等。
图4 组件组合搭建示意图
3.1.1 综合线性集成
综合线性集成可用下式表示:
式中:R#预报结果;Ri是第 i 种模型的预报结果;Wi是第 i 种模型的权重系数 = 1 且 Wi> 0,i =1,2, …, n。综合线性集成应用非常简单,难点在于如何选择权重系数。为此本文提供 2 种权重系数的选择方法,一种是参数率定组件中的优化算法,选取多年资料进行预报,为目标函数 (R 为实测结果),进行权重系数的优选。
另一种是采用多年资料,用每种模型对多场次洪水进行模拟,取其中 1 种模型所有场次洪水模拟的确定性系数的平均值作为这种模型的可信度 DCi,采用下式计算出每种模型的权重系数:)
3.1.2 黑箱模型集成
神经网络和支持向量机在洪水预报方面应用比较多,本文将这 2 种方法用于洪水集成预报,即将各个模型的预报和实测结果作为神经网络的训练资料,从而确定神经网络和支持向量机的参数,建立基于神经网络和支持向量机的洪水集成预报模型。当然,这 2 种方法的参数也可以采用优化算法来求解。
3.2 洪水预报方案集成发布
洪水预报方案的发布主要要求 3 个数据,即洪峰流量、峰现时间和洪水总量。本文提出 2 种预报方案发布方法,一种很简单,直接采用集成预报的结果,提取这 3 个数据即可。但本文认为,此法非常不太人性化,预报方案发布是为决策服务的,采用了多个模型进行预报,各个模型的特点不一,应该集成各个模型的预报思想,实现方案的集成发布。为此,提出具有可选性的预报方案,即将每个模型的这 3 个数据提取出来,以这 3 个数据的最小和最大值的闭区间作为预报方案,这样做,使得方案更加接近实际情况,也更加人性化。
4 应用实例
组件开发好以后,可根据组件搭建模式将组件搭建成模型,而模型组件的展示需要 1 个平台,课题组开发了知识可视化综合集成支持平台,可以在此平台上对组件的运行情况进行展示。对冯家山水库入库洪水进行了模拟,如图5 所示。
图5 冯家山水库洪水模拟
图5 中左上角每个方框代表1 个组件,点击每个组件可查看组件的运行结果,本文同时采用 4 个模型对冯家山水库进行集成预报,集成预报结果见图5 右边。
5 结语
考虑到目前洪水预报系统中存在的问题,本文提出洪水预报模型组件化及应用。针对洪水预报模型在结构和逻辑上的特性,将各个模型划分为多个相互独立的模块,在面向对象的编程语言 JAVA 基础之上,运用 Web Service 组件封装技术和 SOA 组件模型将各个划分好的模块封装成组件;同时,针对洪水预报模型结构特性,提出洪水预报模型搭建模式,并在此基础之上提出洪水预报集成应用模式,并针对具体流域实现其应用。应用结果表明,组件化的洪水预报模型及其集成应用模式无论对于软件开发还是洪水预报而言都有极大的意义,具体如下:
1)可移植性强。对于任何一个流域,只需更改部分组件,即可搭建适合该流域的模型。
2)代码重用率高。从组件的共用和组件组合搭建可以看出,组件被大量重用,从而也实现了代码的重用,节省了资源。
3)可扩展性好。洪水预报模型组件库的建立有利于组件的进一步扩展,可以将新模型封装成组件,从而壮大组件库,有利于应用。
4)可维护性好。各个组件之间相互独立,1 个组件出现问题,不会影响到其他组件,只需更改 1 个组件即可解决问题。
5)展示效果好。以往洪水预报系统常常只能显示最后结果,而组件化的模型实施细节透明,每个模块是 1 个组件,每个模块的计算状况都可以显示。
6)预报精度更高。集成预报结果一般优于任何单模型的预报结果,从而可以提高预报的精度。
7)预报方案更加人性化。具有可选的方案才是更加贴切实际,更加人性化的预报方案。
[1]章四龙. 洪水预报系统关键技术研究与实践[M]. 北京:中国水利水电出版社,2006: 35-39.
[2]解建仓,张刚,魏娜,等. 基于综合集成平台的洪水演进及错峰调度[J].水利信息化,2011 (1): 19-24.
[3]解建仓,罗军刚. 水利信息化综合集成服务平台及应用模式[J]. 水利信息化,2010 (5): 18-22.
[4]张世现,张文娟. 基于软件体系结构的可复用构件制作和组装[J]. 软件学报,2001, 12 (9): 1351-1359.
[5]黄平. 基于构件的软件开发方法在金融中间业务系统中的应用[J]. 浙江理工大学学报,2007, 24 (4): 453-456.
[6]战德臣,王忠杰. 一种基于构件的复杂应用系统开发过程[J]. 哈尔滨工业大学学报,2002, 34 (6): 751-755.
[7]岳昆,王晓玲,周傲英. Web 服务核心支持技术研究综述[J]. 软件学报,2004, 15 (3): 428-434.
[8]柴晓路,梁宇奇. Web Service 技术、架构和应用[M]. 北京:电子工业出版社,2003: 45-47.