陳立華,滕 翔,嚴(yán) 誠(chéng),黃舒萍,甘富萬(wàn)
(1.廣西大學(xué)土木建筑工程學(xué)院,南寧 530004;2. 廣西防災(zāi)減災(zāi)與工程安全重點(diǎn)實(shí)驗(yàn)室,南寧 530004;3. 廣西大學(xué)工程防災(zāi)與結(jié)構(gòu)安全教育部重點(diǎn)實(shí)驗(yàn)室,南寧 530004)
水資源優(yōu)化調(diào)度模型的基礎(chǔ)工作之一是構(gòu)建水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖[1]。水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖具有普適通用性,能起到簡(jiǎn)化流域系統(tǒng)、降低難度、減少重復(fù)工作量的作用[2],因此將其應(yīng)用于流域水系系統(tǒng),能清晰的得到流域時(shí)空分布信息,且能夠充分表現(xiàn)河網(wǎng)的層次關(guān)系且便于計(jì)算機(jī)實(shí)現(xiàn),對(duì)流域適應(yīng)性強(qiáng)。
任洪玉等[3]利用Arc/Info基于DEM 水文分析生成流域圖和河網(wǎng)圖后,根據(jù)流域和河段的對(duì)應(yīng)關(guān)系,人工進(jìn)行流域拓?fù)潢P(guān)系的建立;劉先龍等[4]基于該方法將河段看作節(jié)點(diǎn),將河段的拓?fù)潢P(guān)系看作節(jié)點(diǎn)的連接邊,從而利用ArcGIS圖表達(dá)河網(wǎng)結(jié)構(gòu);雷曉輝等以DEM為基礎(chǔ)數(shù)據(jù)利用ArcGIS開(kāi)展海河流域劃分研究[5];此類(lèi)方法雖能構(gòu)建流域的拓?fù)潢P(guān)系,但形成的調(diào)度網(wǎng)絡(luò)圖是靜態(tài)的,且系統(tǒng)針對(duì)性較強(qiáng),難以適應(yīng)調(diào)度程序動(dòng)態(tài)變化的需求。唐勇等[6]提出了一個(gè)分析流域洪水計(jì)算的拓?fù)浞治龇?,此方法的核心為通過(guò)建立流域概化圖,以深度優(yōu)先遍歷的遞歸原理為基礎(chǔ),采用可視化編程技術(shù),實(shí)現(xiàn)流域拓?fù)涞慕?;陳玉芬等[7]運(yùn)用此方法基于計(jì)算機(jī)圖論的節(jié)點(diǎn)連接表描述各水源地之間的邏輯聯(lián)系;此種方法能較好地建立流域拓?fù)潢P(guān)系,搜索精確,但搜索量相對(duì)較低,更適用于中小型流域。魏傳江等[8]詳細(xì)論述了水資源系統(tǒng)網(wǎng)絡(luò)圖的基本原理,提出繪制水資源系統(tǒng)網(wǎng)絡(luò)圖的基礎(chǔ)是水量平衡原理,并針對(duì)水資源配置供需平衡分析和耗水平衡分析,將經(jīng)濟(jì)、生態(tài)環(huán)境、水資源系統(tǒng)簡(jiǎn)化和抽象為節(jié)點(diǎn)、計(jì)算單元水傳輸系統(tǒng)、流域單元水傳輸系統(tǒng)三類(lèi)元素,并進(jìn)行了實(shí)例應(yīng)用[9,10]。
西江流域是一個(gè)需同時(shí)滿(mǎn)足防洪、發(fā)電、生態(tài)等各類(lèi)調(diào)度目標(biāo)的復(fù)雜流域系統(tǒng),構(gòu)建水資源調(diào)度系統(tǒng)網(wǎng)絡(luò)圖是解決不同調(diào)度目標(biāo)之間的統(tǒng)籌協(xié)調(diào)問(wèn)題的關(guān)鍵基礎(chǔ)工作。因此,針對(duì)西江流域構(gòu)建水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖,主要以點(diǎn)、線(xiàn)兩大要素構(gòu)成各個(gè)水庫(kù)、水文站、控制斷面及河段邊線(xiàn)之間的網(wǎng)絡(luò)圖形,利用庫(kù)表結(jié)構(gòu)設(shè)計(jì)來(lái)存儲(chǔ)節(jié)點(diǎn)與邊線(xiàn)信息,并采用遍歷關(guān)聯(lián)法識(shí)別各要素之間拓?fù)潢P(guān)系,基于unity3D平臺(tái)動(dòng)態(tài)繪制水網(wǎng)圖,形成以西江流域?yàn)榛A(chǔ)的水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖。
(1)將流域內(nèi)的骨干水庫(kù)群、水文站點(diǎn)、控制斷面及河段邊線(xiàn)概化和抽象為由點(diǎn)、線(xiàn)組成的水網(wǎng)拓?fù)鋱D,該拓?fù)鋱D需滿(mǎn)足一個(gè)條件:即每個(gè)節(jié)點(diǎn)只能連接一個(gè)下游節(jié)點(diǎn),而一個(gè)節(jié)點(diǎn)會(huì)有一個(gè)或多個(gè)上游節(jié)點(diǎn),使得拓?fù)鋱D以直觀的方式展示流域內(nèi)的基礎(chǔ)信息。
(2)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)時(shí),通過(guò)關(guān)聯(lián)屬性字段來(lái)實(shí)現(xiàn)節(jié)點(diǎn)、河段邊線(xiàn)庫(kù)表之間的相互關(guān)聯(lián),從而構(gòu)成完整的流域水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖的數(shù)據(jù)庫(kù)表結(jié)構(gòu);并采用遍歷關(guān)聯(lián)法,即對(duì)各河段邊線(xiàn)的匯出節(jié)點(diǎn)及匯入節(jié)點(diǎn)進(jìn)行遍歷篩選,若某一河段的匯出節(jié)點(diǎn)正好等于另一河段的匯入節(jié)點(diǎn),則兩條河段邊線(xiàn)構(gòu)成上下游關(guān)系,依據(jù)這一方法可確定流域內(nèi)各河段邊線(xiàn)之間的相互關(guān)聯(lián);最后基于unity3D平臺(tái)動(dòng)態(tài)繪制西江流域水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖。其設(shè)計(jì)流程圖如1所示。
圖1 網(wǎng)絡(luò)圖設(shè)計(jì)流程圖Fig.1 Network diagram design flow chart
水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖的庫(kù)表結(jié)構(gòu)設(shè)計(jì)是在網(wǎng)絡(luò)圖繪制的基礎(chǔ)上,將各個(gè)節(jié)點(diǎn)及河段信息反映在數(shù)據(jù)結(jié)構(gòu)中。節(jié)點(diǎn)信息主要包括水利工程節(jié)點(diǎn)、控制斷面節(jié)點(diǎn)及水文站點(diǎn),為將這些節(jié)點(diǎn)信息存儲(chǔ)入數(shù)據(jù)結(jié)構(gòu)中,需要建立節(jié)點(diǎn)屬性表,河流需要建立河段邊線(xiàn)表,兩種屬性表一般用屬性字段來(lái)描述要素的本身性質(zhì)。
流域水文的點(diǎn)線(xiàn)要素屬性表主要是通過(guò)河段邊線(xiàn)作為橋梁連接的,將它分別與水庫(kù)工程節(jié)點(diǎn)、控制斷面節(jié)點(diǎn)、水文站點(diǎn)進(jìn)行關(guān)聯(lián),即可把流域內(nèi)不同的水文要素間接地關(guān)聯(lián)在一起,以便構(gòu)建出不同類(lèi)型要素之間的拓?fù)潢P(guān)系,數(shù)據(jù)庫(kù)表關(guān)聯(lián)字段結(jié)構(gòu)如圖2所示。
圖2 數(shù)據(jù)庫(kù)庫(kù)表關(guān)聯(lián)字段結(jié)構(gòu)圖Fig.2 Database tables associated field structure
具體來(lái)說(shuō),圖2中河段邊線(xiàn)的匯入節(jié)點(diǎn)(F-node)和匯出節(jié)點(diǎn)(T-node)所記錄的是河段邊線(xiàn)端點(diǎn),也就是水文節(jié)點(diǎn)的唯一標(biāo)識(shí)碼,可以是水庫(kù)工程(RESVOIR)、水文測(cè)站(STNM)和控制斷面(XSNM)。流域上以水流流向來(lái)確定水流的匯流方向,分別以匯入河段邊線(xiàn)(RV-in)和匯出河段邊線(xiàn)(RV-out)來(lái)記錄,記錄該河段的唯一標(biāo)識(shí)碼(RVNM)。
根據(jù)設(shè)計(jì)的庫(kù)表結(jié)構(gòu),采用以下規(guī)則確定節(jié)點(diǎn)間的拓?fù)渑判颍焊鶕?jù)前文圖2所知,河流的匯流關(guān)系是通過(guò)各河段邊線(xiàn)的匯入節(jié)點(diǎn)(F-node)和匯出節(jié)點(diǎn)(T-node)屬性來(lái)確定的,通過(guò)這一匯流規(guī)則,對(duì)每一條河段進(jìn)行判斷,即可確定流域的匯流關(guān)系。具體來(lái)說(shuō),將按照以下步驟確定河段的匯流關(guān)系,其遍歷關(guān)聯(lián)法流程圖如圖3所示。
圖3 遍歷關(guān)聯(lián)法流程圖Fig.3 Traverse the correlation method of flow chart
(1)在確定匯流關(guān)系前,首先要對(duì)設(shè)計(jì)的數(shù)據(jù)庫(kù)庫(kù)表進(jìn)行調(diào)用,可用MySqlConnection調(diào)用數(shù)據(jù)庫(kù)中水文節(jié)點(diǎn)及河段邊數(shù)信息,用receiveMessage()獲取數(shù)據(jù)庫(kù)信息函數(shù)。
(2)定義公共類(lèi)public class getMessage,公共類(lèi)中的成員表包括:水庫(kù)節(jié)點(diǎn)數(shù)據(jù)表、水文站及斷面節(jié)點(diǎn)數(shù)據(jù)表、河段邊線(xiàn)數(shù)據(jù)及水庫(kù)類(lèi)別數(shù)據(jù)表;并用狀態(tài)變量數(shù)組ComputerOrderState(i)記錄第i河段是否已經(jīng)確定了匯流的順序,其狀態(tài)設(shè)置TURE
和FALSE,TURE表示已經(jīng)確定了順序,F(xiàn)ALSE表示未確定順序。
(3)確定河段順序:定義整型i、j,對(duì)所有河段進(jìn)行循環(huán)(For i=0 To n)、(For j=0 To n),依次對(duì)匯入河段數(shù)(branch)為0,1,2,3,4,5的河段進(jìn)行判斷,如branch為0的河段即為初始河段,branch為2即為兩條branch為1的河段的匯入河段,branch為3、4、5河段以此類(lèi)推;若同為branch為1的河段,第i個(gè)河段RVNum(i)的匯出節(jié)點(diǎn)(T-node)若為第j個(gè)河段RVNum(j)的匯入節(jié)點(diǎn)(F-node),即RVNum(i).T-node =RVNum(j).F-node,則第i個(gè)河段RVNum(i)的下游河段(RV-out)是第j個(gè)河段RVNum(j)的唯一標(biāo)識(shí)碼(RVNM),此時(shí)狀態(tài)變?yōu)門(mén)RUE,并用Index(Index∈[1,n])來(lái)表示下一個(gè)要確定的河段,賦初值為1,設(shè)置狀態(tài)變量數(shù)組ComputerOrderState(i)=Index,并讓Index加1,再次重復(fù)上述循環(huán),若狀態(tài)為T(mén)RUE,則Index再加1。
(4)判斷Index總數(shù)是否與河段數(shù)相等,若滿(mǎn)足條件即可退出循環(huán),若不滿(mǎn)足即繼續(xù)從第三步繼續(xù)循環(huán),直至滿(mǎn)足條件。
基于unity3D平臺(tái)將線(xiàn)段與節(jié)點(diǎn)依次顯示,以西江流域?yàn)槔渲饕襟E為:
(1)定義開(kāi)始面板public GameObject mainImage,面板中包括okButton(開(kāi)始)與exitButton(退出),其運(yùn)行結(jié)果如圖4(a)所示;定義數(shù)據(jù)顯示面板public GameObject dataImage,面板中包括Image[](圖形)與Text[](數(shù)據(jù))。
(2)逐次顯示河段邊線(xiàn)for(int i = 0; i < manyRiver.Length; i++),其運(yùn)行結(jié)果如圖4(b)所示;逐次顯示水庫(kù)工程節(jié)點(diǎn)for(int i = 0; i < 95; i++),給95個(gè)水庫(kù)工程節(jié)點(diǎn)替換顏色image[i].sprite = ABCDlist[i].ToString(),其運(yùn)行結(jié)果如圖4(c)所示;逐次顯示水文站網(wǎng)節(jié)點(diǎn)for(int i = 0; i < 70; i++),其運(yùn)行結(jié)果如圖4(d)所示。
(3)面向西江流域水資源網(wǎng)絡(luò)圖構(gòu)建,涉及眾多的水文節(jié)點(diǎn)及河段邊線(xiàn)。共包含95個(gè)水利樞紐(水庫(kù)及電站),其中18個(gè)年、季調(diào)節(jié)水庫(kù)、70水文站、21個(gè)防洪控制斷面、12個(gè)生態(tài)控制斷面,節(jié)點(diǎn)間實(shí)線(xiàn)為河段邊線(xiàn)。
通過(guò)以上步驟,可構(gòu)建出西江流域優(yōu)化調(diào)度網(wǎng)絡(luò)圖,為更清晰展示節(jié)點(diǎn)與河段關(guān)系和便于肉眼分析,對(duì)西江流域的右上角部分進(jìn)行了放大,詳見(jiàn)圖5(a)。對(duì)桂江流域川江水庫(kù)嵌套一個(gè)DP動(dòng)態(tài)規(guī)劃算法,以削峰最大準(zhǔn)則對(duì)歷史一場(chǎng)洪水過(guò)程進(jìn)行調(diào)洪演算,其計(jì)算結(jié)果詳見(jiàn)圖5(b)。
圖4 拓?fù)渑判蜻\(yùn)行結(jié)果圖Fig.4 Topological sort run results
圖5 水庫(kù)調(diào)度運(yùn)行結(jié)果圖Fig.5 Reservoir operation result diagram
按照表1的數(shù)據(jù)庫(kù)表結(jié)構(gòu)存儲(chǔ)流域各河段的參數(shù),然后將水庫(kù)的出庫(kù)流量以二維數(shù)組的方式存儲(chǔ)。從數(shù)據(jù)庫(kù)中提取各河段的起始節(jié)點(diǎn)F-node,終止節(jié)點(diǎn)T-node,流量比重因素X,傳播時(shí)間K,演算時(shí)段長(zhǎng)度T,并通過(guò)以下公式計(jì)算各河段的C0,C1,C2:
(1)
表1 LJ_CC_MSJG_B(馬斯京根場(chǎng)次預(yù)報(bào)參數(shù)表)Tab.1 Table of forecast parameters for Muskingum field
根據(jù)調(diào)洪演算的水庫(kù)出流量數(shù)據(jù)Q[N,T],代入公式計(jì)算出的各河段的C0,C1,C2以及確定的節(jié)點(diǎn)間計(jì)算順序,即可進(jìn)行馬斯京根河道演算,得到各河段出口的匯流量Qt+Δt。公式如下所示:
Qt+Δt=C0It+Δt+C1It+C2Qt
(2)
以川江至大榕江為例,其演算結(jié)果詳見(jiàn)圖6。
圖6 河道演算結(jié)果圖Fig.6 River course diagram
本文借鑒水資源系統(tǒng)網(wǎng)絡(luò)圖的思想,將水庫(kù)、電站、水文站、控制斷面等簡(jiǎn)化和抽象為節(jié)點(diǎn)(點(diǎn)),河道簡(jiǎn)化為河段邊線(xiàn)(線(xiàn)),對(duì)西江流域進(jìn)行概化,運(yùn)用遍歷關(guān)聯(lián)法識(shí)別節(jié)點(diǎn)及河段邊線(xiàn)間的拓?fù)潢P(guān)系,基于unity3d平臺(tái)動(dòng)態(tài)繪制西江流域水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖,并在水庫(kù)調(diào)度及河道演算中進(jìn)行實(shí)例應(yīng)用。該方法可自動(dòng)生成的水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖,能夠較真實(shí)地反映流域內(nèi)的基礎(chǔ)信息,具有直觀、清晰、易懂、接近實(shí)際地理位置等優(yōu)點(diǎn),通過(guò)西江流域水資源優(yōu)化調(diào)度網(wǎng)絡(luò)圖動(dòng)態(tài)構(gòu)建使水資源優(yōu)化調(diào)度更趨于通用性和復(fù)用性。
□