本文提出了一个实用的分析流域洪水计算的拓扑分析方法。此方法的核心思想就是将流域概化为一张节点图,对节点的属性、联接方式以及拓扑关系进行分析,运用邻接表、邻接矩阵和深度优先遍历的方法解决了模型之间的集成问题。该方法能够应用于流域洪水预报调度决策支持系统当中,提高系统运行的效率,是一个简明但行之有效的流域洪水计算模型系统集成的方法。 我国是一个洪涝灾害频繁的国家,随着社会经济的发展、人口的不断增长,人们对防洪的要求越来越高。在防洪方面,人们普遍认为从实时洪水预报系统过渡到防洪决策支持系统是当前的发展趋势。发达国家竞相开展这类研究和开发工作,但目前仍处于只针对系统开发中的关键技术进行探索并在中小河流流域试验开发的阶段[2].防洪决策支持系统中的一个关键技术就是如何将相对独立的各个模型集成在一个大的系统内进行整体计算,解决好模型之间数据的传递,提高系统运行的效率。目前国内外的研究还没有提出一个方便、有效的模型系统集成的办法。有人在尝试建立全流域的洪水模拟模型,对各部分统一求解。但这种办法在交互式预报调度时会遇到诸多不便,而且对于各个不同的流域不可能用相同的全流域的洪水模拟模型。因此研究一种方便的模型系统集成办法具有重要意义。本文提出了一个实用的流域洪水计算系统集成的办法。对于河道特征比较复杂、水利工程比较多的流域来说,洪水计算首先要将流域水系进行概化,将流域概化成互相联系的不同类型的节点,不同类型的节点用到相应不同的计算模型。一些常见的水文或水力学模型已经为我们熟知,模型的编制问题不大,但是在模型的集成时却会遇到很棘手的问题,那就是节点之间的联接问题。只有搞清楚节点间是怎样联接的、节点间是怎样交换数据的、节点的计算顺序是怎样的等问题才能将一个个分散的模型组成有机的整体,才能模拟出洪水在整个流域中的流动情况。节点的有机联接就涉及到节点之间的拓扑关系,解决好了流域的拓扑关系,就能易如反掌地解决复杂流域洪水计算的模型集成问题。 1流域洪水计算拓扑结构中的节点类型 进行流域洪水计算时人们要用到流域洪水模拟技术,运用各种模型来计算洪水过程。为了计算方便,首先要对流域水系进行概化,即把流域看成是由不同类型的节点联接在一起的一个有机整体。节点类型主要有产汇流分区、河道洪水演进、水量交汇点、水库、闸门和平原区。各种不同类型的节点其计算方法是不同的,如P类(产汇流分区)节点所采用的是产汇流模型,计算产汇流的方法可以用新安江模型或其他方法;R类(河道洪水演进)节点所采用的是水文学或水力学模型,如马斯京干法、一维非恒定流法等;W类(水库)节点采用的是水量平衡法进行水库调度等等。图1节点类型图例(略)。 2节点联接方式 流域内各个节点之间的联接方式大致分为3种:串联,并联以及复杂联接(既有串联又有并联)。对某些简单流域,可能所有节点之间的联接都是串联,而对复杂流域,一般各种联接方式都存在。图2表示了产汇流分区节点(P)、河道洪水演进节点(R)、水库节点(W)以及水量交汇点(N)与其他节点之间的联接关系。各个符号的意义同前。产汇流分区是洪水产生的源节点,因此该类节点没有入流节点,而且它的出流节点只有一个,故此类节点与其他节点之间的联接为串联。河道洪水演进节点是洪水在河道中演进的概化,它应该有一个入流节点和一个出流节点,所以它与其他节点的联接方式也为串联。水量交汇节点是支流洪水交汇的节点,它又分为汇流节点、分流节点及复杂节点(既有汇流,又有分流),所以联接方式一般为并联或复杂联接。水库是流域中对水流进行控制的节点,一般它应该有一个或多个入流节点和一个出流节点,故为串联或复杂联接。闸门也是流域中对水流进行控制的节点,它与其他节点的联接方式与水库节点类似。平原区是流域中洪水泛滥的地方,它的情况一般非常复杂,在洪水计算中通常都对它的边界条件进行简化。 3节点联接的拓扑表示法 流域洪水计算中,通常是要把流域进行概化,图3是一幅流域概化节点图。这样一张节点图能够直观地反映洪水在流域内的流动方向,也反映了洪水计算的顺序。在某些节点没有计算之前,其他节点是不能计算的。最常见的情况就是一些节点的入流就是其他节点的出流,我们只有计算出上节点的出流,才能计算下节点的洪水过程。 在许多情况下,流域概化节点图在数据结构上是图而不是树。图和树的区别在于:图中的任意两个节点之间都有可能相关,节点之间的邻接关系是任意的;而在树形结构中,节点具有层次关系,每一层的节点只能与上一层中最多一个节点相关。图结构描述了一种复杂的数据对象,具有广泛的应用。 图2几种类型节点的联接方式 这里首先引入数据结构中图的定义和术语。图(Graph)G是由两个集合V和E组成,记为G=(V,E)。V是图中顶点(vertex)的集合;E是边的集合。顶点和顶点之间的连线称为边,若边是有向的,则图成为有向图,否则成为无向图[4].若v,w是两个顶点,则从v到w的有向边成为一条狐,记为,从v到w的无向边则记为(v,w)。 图是一张有向的连通图。为了知道节点之间的计算先后顺序,用一种最简单的拓扑关系来表达节点之间的联接:将图拆分成最小的子图,子图只包括一个起始节点、一个终止节点以及这两个节点的联接。只需在数据库中建立一张节点邻接表(NodesLink),就可以把所有的子图的联接关系反映在数据库里,从而搞清楚整个流域内节点的联接关系。图3的节点邻接表如表1所示。 图3流域概化节点(图)图4节点邻接矩阵表1节点邻接 图的存储结构还可以用邻接矩阵来表示。图3可以用图4所示的矩阵来表示。流域共有28个节点,所以该矩阵是28×28的方阵。该矩阵具有如下的性质: 其物理意义也很清楚,例如,A[1,3]=1表示P1和R1是连通的,而且方向是从P1指向R1.而A[3,1]=0则表示虽然P1和R1连通,但是方向不能逆转,即不能从R1指向P1.这样一来,整个流域内洪水的流动方向都可以从该矩阵中得到了反映。 用邻接矩阵表示法来存储图,在计算机程序中可用如下方法实现:定义一个一维数组来存储各个节点的信息,例如节点类型等;定义一个二维数组来存储图4所示的邻接矩阵;定义两个整型变量分别储存图的节点数和边数;定义一个整型变量来表示图的类型,例如用0表示无向图,1表示有向图等等。 4流域洪水计算 流域洪水计算就是要搞清楚水在流域内的运动、分布和存储情况。计算包括暴雨模拟、产汇流、河道洪水演进、流域内水利工程调度、平原区洪水泛滥以及潮位模拟等一系列过程直到洪水流入大海。降水量扣除蒸散发、植物截留、洼地储蓄以及补充土壤含水量等水量损失,剩下的部分为净雨量,即产生径流的雨量。净雨量的计算称之为产流计算。分布在流域各处的净雨,从不同地方向流域出口断面汇集的过程乃是流域汇流的过程,汇流计算的目的就是计算流域出口断面的洪水过程。洪水在河槽中的运动过程,我们称之为河道洪水演进。洪水水流受到水利工程(如闸门、水库)的调蓄和控制,需要进行洪水的调度计算。另外洪水在平原区的流动情况我们称之为平原区的洪水泛滥。无论是产汇流计算,还是洪水演进计算,以及洪水泛滥的计算等,都有比较成熟的水文、水力学模型来实现。问题是用什么样的办法才能把流域洪水计算的模型有机地结合在一起,实现流域内洪水计算的一体化。 图5深度优先遍历算法的程序框表2R类节点属性表3P类节点属性 前面介绍了如何把流域概化成为节点图,下面将分析如何利用节点图来帮助进行洪水计算。假设我们采用节点邻接表(如表1)来表示图的存储结构,再建立节点属性表,节点属性表包括节点编号、节点所采用的计算模型及其参数等信息。表2、表3是节点属性表。 在进行洪水计算时,可以选择流域内任意一个节点V,用深度优先遍历法对其上游节点搜索。深度优先遍历的思想是:从图中V节点出发,从节点邻接表中任意选择一个未被访问的V的邻接节点W,从W出发,继续深度优先搜索,直到图中所有和V有路径相通的上游节点都已经计算完毕,再开始计算V节点。这样我们可以方便地知道流域内任何节点的洪水情况。注意不同类型的节点所选用的计算模型是不同的,模型的选择以及模型参数正是通过节点属性表进行选择。下面以图5(取名为G)为例给出深度优先搜索的非形式算法的框图,算法中设一个标志数组visited,该数组设为全局变量,数组长度就是图的顶点数,初始值都设为0,表示均未被访问,当某个节点Vi被访问过,则把visited数组所对应的分量设为1。 将这种办法应用到防洪预报调度决策支持系统当中,可以很方便地解决决策者与系统的交互问题。例如,决策者可以选择任意一个自己所关心的节点,设定好预报调度方案后,针对该节点进行计算,系统会自动向上搜索与该节点相关的节点,在计算完这些节点以后回到该节点,此时该节点计算的边界条件已经确定,就可以对该节点进行计算了。如果决策者对此次计算的结果不满意,还可以重新设定预报调度方案,然后再次对该节点进行计算直到得出满意的结果。如果决策者想要一次计算流域内所有的节点,可以选择流域出口节点作为计算的节点,这样当计算完出口节点之后,流域内所有的节点也就计算完了。可以直接通过结果查看界面查看所有节点的信息。 5结束语 本文分析了流域洪水计算模型系统拓扑关系的方法:先对复杂流域进行概化,得到一张流域节点图,然后建立流域内各个节点之间的联接关系(可以用邻接表或邻接矩阵来表示),并将这种关系反映在数据库当中,用深度优先遍历的方法并与模型库相结合进行计算就可以顺利完成系统集成。这种方法概念清晰。灵活有效,而且能够使模型库与系统有机结合。用节点联接替代原先的模型耦合的办法有如下好处: (1)计算时对同一类型的节点可以方便地选择不同的计算模型,例如,产汇流模型可以用新安江模型也可以用水箱模型,这充分体现了模型库建设的思想; (2)用节点联接的方式来集成模型系统大大提高了系统的灵活性,例如,我们可以方便地添加、删除节点或者改变节点的联接方式以使流域节点图能最真实地反映实际情况; (3)模型相对独立体现了系统设计模块化的思想,符合当今计算机技术、计算模拟技术发展的潮流。该方法在鳝流域洪水预报调度决策支持系统中得到应用,实践证明,这种办法可以提高系统运行的效率,大量减少程序运行的时间。此法用于复杂河网(例如有环行水流)的计算时有缺陷,如环形结构中两个节点往往互为条件,在递归调用的时候会出现死循环。水文工作者可以在不断的应用中还可以根据实验情况做相应的变换和改进,以完善这种方法。况做相应的变换和改进,以完善这种方法。
信息发布:广州名易软件有限公司 http://www.myidp.net
|