摘要:當(dāng)前已建的水工程調(diào)度系統(tǒng)大多都依托所面向的流域進(jìn)行開發(fā),而對(duì)于不同類型流域缺乏兼容性良好的一致性設(shè)計(jì)。為此,研究了一種采用圖數(shù)據(jù)庫的水工程調(diào)度系統(tǒng)拓?fù)湓O(shè)計(jì)方法來對(duì)各種類型流域進(jìn)行一致性描述。該方法通過CQL語言定義了以“節(jié)點(diǎn)-屬性-邊”為核心的拓?fù)涿枋觯⒑突A(chǔ)樹結(jié)構(gòu)拓?fù)涠x方法進(jìn)行了對(duì)比,闡述了其特點(diǎn)和優(yōu)勢(shì);在該拓?fù)湓O(shè)計(jì)方法的前提下,進(jìn)一步設(shè)計(jì)了拓?fù)潋?qū)動(dòng)引擎,通過數(shù)據(jù)處理、任務(wù)調(diào)度、并行計(jì)算等主要核心技術(shù)要點(diǎn)進(jìn)行了實(shí)踐;以此研究為基礎(chǔ),形成了一套可適應(yīng)各種類型流域拓?fù)湫问降乃麑I(yè)決策平臺(tái),為水工程調(diào)度系統(tǒng)的建設(shè)提供了新的模式;最后針對(duì)不同流域水系水工程調(diào)度的不同特點(diǎn),在長江流域、沂沭泗流域進(jìn)行了系統(tǒng)應(yīng)用驗(yàn)證。驗(yàn)證結(jié)果表明,該方法可以提高水工程調(diào)度系統(tǒng)在不同流域中的適應(yīng)性,進(jìn)一步支撐數(shù)字孿生流域的建設(shè)。
關(guān) 鍵 詞:水工程調(diào)度; 系統(tǒng)架構(gòu); 拓?fù)浣Y(jié)構(gòu); 數(shù)字孿生流域; 長江流域; 沂沭泗流域
中圖法分類號(hào): TV213.4
文獻(xiàn)標(biāo)志碼: A
DOI:10.16232/j.cnki.1001-4179.2024.11.010
0 引 言
數(shù)字孿生流域的建設(shè)在智慧水利發(fā)展中起著重要作用。為實(shí)現(xiàn)水資源高效利用的同時(shí)保護(hù)生態(tài)環(huán)境,中國積極推動(dòng)了智慧水利建設(shè),并以數(shù)字孿生技術(shù)為核心,構(gòu)建起一套完善的水利信息化管理體系[1]。數(shù)字孿生流域“2+N”業(yè)務(wù)是指在數(shù)字孿生流域建設(shè)的基礎(chǔ)上,圍繞“預(yù)報(bào)、預(yù)警、預(yù)演、預(yù)案”,運(yùn)用數(shù)字化、網(wǎng)絡(luò)化、智能化技術(shù),構(gòu)建起的智慧水利體系。其中,“2”代表防洪和水資源兩大核心業(yè)務(wù),而“N”則代表其他各類水利業(yè)務(wù)應(yīng)用。通過這一業(yè)務(wù)體系,可以實(shí)現(xiàn)對(duì)物理流域的實(shí)時(shí)監(jiān)控、發(fā)現(xiàn)問題、優(yōu)化調(diào)度,最終達(dá)到風(fēng)險(xiǎn)提前發(fā)現(xiàn)、預(yù)警提前發(fā)布、方案提前制定、措施提前實(shí)施的目的,從而讓決策更加精準(zhǔn)、安全、有效。
建設(shè)防洪和水資源“四預(yù)”模塊的核心就是水工程調(diào)度。水工程調(diào)度通過科學(xué)合理地調(diào)配水資源,實(shí)現(xiàn)防汛抗旱、水資源開發(fā)利用和保護(hù)的目的。在預(yù)防和應(yīng)對(duì)水旱災(zāi)害方面,水工程調(diào)度具有重要的現(xiàn)實(shí)意義。
中國七大流域各具特色。在地形地貌方面,七大流域橫跨多種地貌類型,如高山、高原、盆地、平原等。這使得河流在流動(dòng)過程中,孕育出豐富的水力資源、濕地生態(tài)系統(tǒng)以及多樣的生態(tài)環(huán)境。這種地貌多樣性對(duì)于維持生態(tài)平衡、保障水資源安全以及促進(jìn)區(qū)域經(jīng)濟(jì)發(fā)展具有重要作用。氣候條件方面,七大流域所處的地域氣候各有千秋,涵蓋溫帶、亞熱帶、熱帶等。這導(dǎo)致河流徑流量呈現(xiàn)季節(jié)性變化和年際波動(dòng),給水資源的合理開發(fā)和利用帶來挑戰(zhàn)。
流域特點(diǎn)各異給建立水工程調(diào)度系統(tǒng)的拓?fù)浣Y(jié)構(gòu)帶來較大的挑戰(zhàn)[2]。一方面,需針對(duì)系統(tǒng)所在區(qū)域的特點(diǎn)定制化編寫關(guān)聯(lián)關(guān)系;另一方面,為了提高水工程調(diào)度系統(tǒng)在不同流域中的適應(yīng)性[3],應(yīng)為其設(shè)計(jì)合理的拓?fù)涿枋鼋Y(jié)構(gòu),以支撐水文預(yù)報(bào)[4]、工程調(diào)度、河道演進(jìn)等模型的計(jì)算,更好地實(shí)現(xiàn)數(shù)字孿生流域“四預(yù)”功能[5]。當(dāng)前國內(nèi)的水工程調(diào)度系統(tǒng)主要通過硬編碼的方式來編制水工程拓?fù)浣Y(jié)構(gòu),并且和模型強(qiáng)關(guān)聯(lián),大部分系統(tǒng)在編制模型的時(shí)候直接將拓?fù)潢P(guān)系通過數(shù)據(jù)進(jìn)行耦合,沒有考慮到拓?fù)鋵?duì)不同類型業(yè)務(wù)的支撐,也沒有考慮數(shù)字孿生場(chǎng)景下拓?fù)浣Y(jié)構(gòu)會(huì)隨著時(shí)間變化的情況。國外常見軟件系統(tǒng)如MIKE-SHE和MIKE 11等,具有拓?fù)渚幹颇芰?,但是拓?fù)渫ㄟ^專有DFS文件格式管理,直觀性不強(qiáng),同時(shí)考慮到國產(chǎn)化趨勢(shì)以及獨(dú)立自主可控的要求,亟需符合國內(nèi)流域特點(diǎn)且高效可控的拓?fù)湓O(shè)計(jì)方法。
本文通過對(duì)常見流域拓?fù)浣Y(jié)構(gòu)的分析,梳理流域拓?fù)淠J?,研究通過圖數(shù)據(jù)庫來進(jìn)行拓?fù)涿枋龅姆桨福⑨槍?duì)拓?fù)涞臄?shù)據(jù)流運(yùn)轉(zhuǎn)進(jìn)行配套設(shè)計(jì),實(shí)現(xiàn)可配置的水利專業(yè)決策平臺(tái)底層建設(shè),以提高水工程調(diào)度系統(tǒng)的建設(shè)效率和系統(tǒng)穩(wěn)定性。
1 常見水工程調(diào)度系統(tǒng)拓?fù)潢P(guān)系
根據(jù)流域內(nèi)河流匯聚特點(diǎn)和水工程類型的不同,有如下3種主要拓?fù)潢P(guān)系(圖1)。
(1) 支流匯入型。對(duì)于山區(qū)河流,或高度落差較大的河流或河段,其河道上的工程,例如水庫、電站、水閘等,都可以按照支流匯入的類型來概化。這也是絕大多數(shù)天然河流所屬的拓?fù)漕愋汀?/p>
(2) 干流分叉型。這種類型的河流擁有引調(diào)水工程、蓄滯洪區(qū)等設(shè)施。這些工程會(huì)導(dǎo)致干流上的流量分散,形成分叉現(xiàn)象。這種拓?fù)漕愋鸵蚕喈?dāng)常見。
(3) 河網(wǎng)型。這種類型的河流主要分布在地勢(shì)平緩的地帶。由于河流關(guān)系復(fù)雜,多條河流相互交叉,導(dǎo)致交匯節(jié)點(diǎn)處可能出現(xiàn)多條匯入或多條流出的情況。此外,受地形、氣候等因素影響,河網(wǎng)型河流往往伴隨著流量大小和季節(jié)性的變化,從而出現(xiàn)往復(fù)流現(xiàn)象。
通過對(duì)這3種拓?fù)潢P(guān)系進(jìn)行組合,可以形成各種完整復(fù)雜的河流拓?fù)浣Y(jié)構(gòu)。
2 拓?fù)湓O(shè)計(jì)方法
在建設(shè)水工程調(diào)度系統(tǒng)時(shí),可以通過不同的定義方式,描述各種拓?fù)潢P(guān)系[6],以便系統(tǒng)分析計(jì)算時(shí)能將水力聯(lián)系、演進(jìn)關(guān)系清晰準(zhǔn)確地告知模型算法。水工程調(diào)度系統(tǒng)的業(yè)務(wù)目標(biāo)具有多樣性,例如水文預(yù)報(bào)、防洪調(diào)度、發(fā)電調(diào)度、供水調(diào)度、水資源調(diào)配、生態(tài)調(diào)度等[7],為了適應(yīng)不同業(yè)務(wù),需要拓?fù)錁?gòu)建方式具備靈活性和通用性[8]。
2.1 基礎(chǔ)樹結(jié)構(gòu)拓?fù)涠x
現(xiàn)有系統(tǒng)一般采用樹狀結(jié)構(gòu)來進(jìn)行拓?fù)涠x[9],例如水利專業(yè)決策(WPD)平臺(tái)[10-11]。樹(Tree)是一種常見的數(shù)據(jù)結(jié)構(gòu),用于表示具有層次關(guān)系的數(shù)據(jù)。樹結(jié)構(gòu)由一個(gè)根節(jié)點(diǎn)(Root Node)以及若干個(gè)子節(jié)點(diǎn)(Node)組成。子節(jié)點(diǎn)下也可以繼續(xù)連接子節(jié)點(diǎn),稱為子樹(Subtree)。樹結(jié)構(gòu)中的節(jié)點(diǎn)之間存在一種特定的關(guān)系,稱為父子關(guān)系(Parent)。樹結(jié)構(gòu)的拓?fù)潢P(guān)系是指樹中各節(jié)點(diǎn)之間的連接關(guān)系。在一個(gè)簡單的樹結(jié)構(gòu)中,根節(jié)點(diǎn)連接著子節(jié)點(diǎn),子節(jié)點(diǎn)連接著孫節(jié)點(diǎn),以此類推。
基礎(chǔ)樹結(jié)構(gòu)拓?fù)涠x如下:
(1) 樹結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)都有一個(gè)唯一的標(biāo)識(shí)符,稱為節(jié)點(diǎn)ID。
(2) 根節(jié)點(diǎn)沒有父節(jié)點(diǎn)。
(3) 每個(gè)節(jié)點(diǎn)可以有零個(gè)或多個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)的父節(jié)點(diǎn)ID等于該節(jié)點(diǎn)的ID。
(4) 樹結(jié)構(gòu)中的葉子節(jié)點(diǎn)是沒有子節(jié)點(diǎn)的節(jié)點(diǎn),也稱為終端節(jié)點(diǎn)。
(5) 樹的高度(Height)是指從根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。最小高度為1,最大高度為節(jié)點(diǎn)數(shù)。
(6) 樹的深度(Depth)是指從根節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)路徑上的節(jié)點(diǎn)數(shù)。根節(jié)點(diǎn)的深度為0。
(7) 樹的節(jié)點(diǎn)數(shù)(Size)是指樹中節(jié)點(diǎn)的總數(shù)。
根據(jù)水工程調(diào)度系統(tǒng)的業(yè)務(wù)目標(biāo),以及河流水系的結(jié)構(gòu)特點(diǎn),可以按如下定義法:
(1) 拆解河流上具備水力特性的節(jié)點(diǎn),例如水庫、水文站、水位站、河段、渠道、水閘、蓄滯洪區(qū)、洲灘民垸等,并將這些節(jié)點(diǎn)定義為Node。
(2) Node有父節(jié)點(diǎn),根節(jié)點(diǎn)沒有父節(jié)點(diǎn),其Parent表示為1。父節(jié)點(diǎn)代表該節(jié)點(diǎn)的所屬或者匯入,即Node 1.Paernt=Node 2。例如:三峽.Parent=長江,丹江口.Parent=漢江,漢江.Parent=長江,長江.Parent=1。
(3) 同一個(gè)父節(jié)點(diǎn)下的Node,通過Next描述節(jié)點(diǎn)上下游關(guān)系,即Node 1.Next=Node 2,對(duì)于匯入的支流,支流本身當(dāng)作干流上的一個(gè)節(jié)點(diǎn)來描述,對(duì)于一條河流上的最后一個(gè)節(jié)點(diǎn),其下游節(jié)點(diǎn)為1。例如:三峽.Next=葛洲壩,烏東德.Next=白鶴灘,漢江.Next=漢口。
(4) 具體Node、Parent和Next以業(yè)務(wù)為導(dǎo)向,通過不斷組合Parent和Next,可以描述一個(gè)完整調(diào)度系統(tǒng)的河流水系及其主要業(yè)務(wù)節(jié)點(diǎn)。
該方案能夠簡單清晰地描述水力聯(lián)系拓?fù)?,便于系統(tǒng)在進(jìn)行水量平衡和演進(jìn)過程中準(zhǔn)確高效地串接數(shù)據(jù)。但該方案也存在不足,一方面無法方便地描述引水情況,因?yàn)闃涿枋龇椒ɑ旧鲜且粋€(gè)從葉子節(jié)點(diǎn)到根節(jié)點(diǎn)不斷匯聚的過程,無法反過來描述子節(jié)點(diǎn)存在多個(gè)父節(jié)點(diǎn);另一方面,無法準(zhǔn)確地描述可變方向的河流,在地勢(shì)平緩地區(qū)不同時(shí)期往復(fù)流的情況。
2.2 采用圖數(shù)據(jù)庫的拓?fù)涠x
圖數(shù)據(jù)庫是一種以圖結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫,能夠高效地處理復(fù)雜的關(guān)系查詢和數(shù)據(jù)關(guān)聯(lián)(圖2)。在水工程調(diào)度系統(tǒng)中,可以采用圖數(shù)據(jù)庫以更加完整地描述復(fù)雜拓?fù)?sup>[12-13]。
在構(gòu)建水力聯(lián)系拓?fù)渲?,需要?duì)目標(biāo)數(shù)據(jù)進(jìn)行分析和梳理,確定節(jié)點(diǎn)和關(guān)系的類型[14]。例如,和樹(Tree)描述方法一樣,可以將節(jié)點(diǎn)分為水庫、水文站、水位站、河段、渠道、水閘、蓄滯洪區(qū)、洲灘民垸等類型,關(guān)系分為匯入、引水、指向、下級(jí)等。通過這種分類,可以更好地組織數(shù)據(jù)并在后續(xù)的構(gòu)建過程中更加高效地生成節(jié)點(diǎn)和邊。
以Neo4j為例,數(shù)據(jù)的構(gòu)建分為節(jié)點(diǎn)(Node)構(gòu)建、屬性(Property)構(gòu)建和邊(Relationship)[15],具體通過CQL即Cypher查詢語言實(shí)現(xiàn)[16]。它是一種聲明性模式匹配語言,并具有良好的可讀性。
節(jié)點(diǎn)構(gòu)建和屬性構(gòu)建通過CREATE語法來實(shí)現(xiàn):
CREATE (
lt;node-namegt;:lt;label-namegt;
{
lt;Property1-namegt;:lt;Property1-valuegt;
........
lt;Propertyn-namegt;:lt;Propertyn-valuegt;
}
)
CREATE是一個(gè)Neo4j CQL命令。lt;node-namegt;是要?jiǎng)?chuàng)建的節(jié)點(diǎn)名稱。lt;label-namegt;是一個(gè)節(jié)點(diǎn)標(biāo)簽名稱。lt;Property1-namegt;,…,lt;Propertyn-namegt;屬性是鍵值對(duì),定義將分配給創(chuàng)建節(jié)點(diǎn)的屬性的名稱。lt;Property1-valuegt;,…,lt;Propertyn-valuegt;屬性是鍵值對(duì),定義將分配給創(chuàng)建節(jié)點(diǎn)的屬性的值。
邊構(gòu)建通過MATCH、CREATE、RETURN語法來實(shí)現(xiàn):
MATCH (lt;node1-label-namegt;:lt;node1-namegt;),
(lt;node2-label-namegt;:lt;node2-namegt;)
CREATE
(lt;node1-label-namegt;)-[lt;relationship-label-namegt;:lt;
relationship-namegt;{lt;define-properties-listgt;}]-gt;(lt;node2-label-namegt;)
RETURN lt;relationship-label-namegt;
MATCH、CREATE、RETURN是CQL命令。lt;node1-namegt;是用于創(chuàng)建關(guān)系的“From Node”的名稱。lt;node1-label-namegt;是用于創(chuàng)建關(guān)系的“From Node”的標(biāo)簽名稱。lt;node2-namegt;是用于創(chuàng)建關(guān)系的“To Node”的名稱。lt;node2-label-namegt;是用于創(chuàng)建關(guān)系的“To Node”的標(biāo)簽名稱。lt;relationship-namegt;是一個(gè)關(guān)系的名稱。lt;relationship-label-namegt;是一個(gè)關(guān)系的標(biāo)簽名稱。lt;define-properties-listgt;是分配給新創(chuàng)建關(guān)系的屬性(名稱-值對(duì))的列表。
通過圖數(shù)據(jù)庫的定義方法,可以對(duì)水工程調(diào)度拓?fù)浣Y(jié)構(gòu)采用如下方案進(jìn)行描述。
(1) 創(chuàng)建節(jié)點(diǎn),例如CREATE (60106980:Reservoir{id:“60106980”,name:“三峽”})。
(2) 創(chuàng)建指向關(guān)系,例如MATCH (n:Reservoir),(m:River) WHERE n.name=“三峽” and m.name=“長江” CREATE(n)-[r:Parent]-gt; (m) return r。
(3) 創(chuàng)建上下關(guān)系,例如MATCH (n:Reservoir),(m:Reservoir) WHERE n.name=“溪洛渡” and m.name=“向家壩” CREATE(n)-[r:Next]-gt; (m) return r。
(4) 對(duì)于往復(fù)流,可以創(chuàng)建反向關(guān)系,并在relationship的properties中,定義流向的變化條件,例如按月份定義流向條件。MATCH (n:Reservoir),(m:Reservoir) WHERE n.name=“r1” and m.name=“r2” CREATE(m)-[r:Next{months:“3,4,5”}]-gt; (n) return r。
(5) 創(chuàng)建匯入關(guān)系和引出關(guān)系。例如MATCH (n:River),(m:ZQStation) WHERE n.name=“漢江” and m.name=“漢口” CREATE(n)-[r:Next]-gt;(m) return r。MATCH (n:ZQStation),(m:River) WHERE n.name=“蔡甸” and m.name=“漢江” CREATE(n)-[r:Parent]-gt;(m) return r。MATCH (n:River),(m:River) WHERE n.name=“漢江” and m.name=“長江” CREATE(n)-[r:Parent]-gt;(m) return r。
通過以上描述方式,可以創(chuàng)建支持匯入、引水、網(wǎng)狀河流、上下游、往復(fù)流的復(fù)雜水力聯(lián)系,極大提高了水工程調(diào)度系統(tǒng)的支持能力和適應(yīng)范圍。
3 拓?fù)潋?qū)動(dòng)引擎設(shè)計(jì)
在拓?fù)涠x設(shè)計(jì)基礎(chǔ)上,為了實(shí)現(xiàn)水工程調(diào)度的數(shù)據(jù)串接,需要通過引擎來驅(qū)動(dòng)拓?fù)洹T谠撛O(shè)計(jì)方法中,每個(gè)節(jié)點(diǎn)(Node)都是通過邊(Relationship)來進(jìn)行傳遞,驅(qū)動(dòng)引擎主要解決3個(gè)問題:數(shù)據(jù)處理、任務(wù)調(diào)度、并行計(jì)算。
3.1 數(shù)據(jù)處理
在驅(qū)動(dòng)引擎執(zhí)行過程中,各個(gè)節(jié)點(diǎn)根據(jù)類型不同都有獨(dú)特的數(shù)據(jù)容器,這個(gè)容器的主要職責(zé)是存儲(chǔ)節(jié)點(diǎn)在運(yùn)行時(shí)所需的數(shù)據(jù)。這些數(shù)據(jù)的來源可以是外部數(shù)據(jù)源的加載,也可以是從前一個(gè)節(jié)點(diǎn)傳遞過來的。這樣的數(shù)據(jù)傳遞和加載機(jī)制,使得各個(gè)節(jié)點(diǎn)能夠有序地進(jìn)行數(shù)據(jù)處理。
以水庫的入庫流量為例,這個(gè)數(shù)據(jù)是由上游站點(diǎn)演進(jìn)并且疊加區(qū)間產(chǎn)流得出的。水庫的庫容曲線、特征水位等信息,則在引擎啟動(dòng)時(shí)從基礎(chǔ)信息庫中讀取。水庫在經(jīng)過調(diào)度調(diào)節(jié)后,出庫流量繼續(xù)向下一個(gè)節(jié)點(diǎn)演進(jìn)。
數(shù)據(jù)源的多樣性也是驅(qū)動(dòng)引擎能夠應(yīng)對(duì)各種復(fù)雜情況的關(guān)鍵。通過加載不同類型的外部數(shù)據(jù),引擎可以對(duì)各種情況作出適應(yīng),提高其運(yùn)行的靈活性和準(zhǔn)確性。而節(jié)點(diǎn)之間的數(shù)據(jù)傳遞,不僅能夠保證數(shù)據(jù)的連續(xù)性,還能夠減少重復(fù)勞動(dòng),提高整個(gè)引擎的運(yùn)行效率。
綜上所述,驅(qū)動(dòng)引擎在執(zhí)行過程中,通過各個(gè)節(jié)點(diǎn)的數(shù)據(jù)容器來實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和傳遞。這些數(shù)據(jù)既可以來源于外部數(shù)據(jù)源的加載,也可以從上一個(gè)節(jié)點(diǎn)傳遞過來。這種方式既保證了數(shù)據(jù)的準(zhǔn)確性,又提高了引擎的運(yùn)行效率。同時(shí),數(shù)據(jù)源的多樣性也為引擎應(yīng)對(duì)各種復(fù)雜情況提供了可能。在這樣的機(jī)制下,驅(qū)動(dòng)引擎能夠高效、準(zhǔn)確地完成各項(xiàng)任務(wù)。
3.2 任務(wù)調(diào)度
在驅(qū)動(dòng)引擎中,節(jié)點(diǎn)不僅負(fù)責(zé)管理數(shù)據(jù),同時(shí)還承擔(dān)著計(jì)算任務(wù)的執(zhí)行。在這些節(jié)點(diǎn)中,可以根據(jù)實(shí)際業(yè)務(wù)目標(biāo)掛接各種計(jì)算任務(wù),并通過關(guān)聯(lián)關(guān)系構(gòu)建出任務(wù)調(diào)度流程圖。這樣一來,各個(gè)節(jié)點(diǎn)便形成了一個(gè)有機(jī)的整體,協(xié)同完成各項(xiàng)任務(wù)。
以水庫為例,當(dāng)接到入庫流量信息后,節(jié)點(diǎn)會(huì)根據(jù)調(diào)度規(guī)程等相關(guān)要求,對(duì)庫區(qū)水量進(jìn)行調(diào)度調(diào)節(jié)。在此過程中,節(jié)點(diǎn)會(huì)計(jì)算出庫流量,并分析發(fā)電指標(biāo),以優(yōu)化廠內(nèi)經(jīng)濟(jì)運(yùn)行。
再以蓄滯洪區(qū)為例,當(dāng)面臨洪水威脅時(shí),蓄滯洪區(qū)節(jié)點(diǎn)會(huì)調(diào)整閘門或開啟扒口,進(jìn)行分洪計(jì)算。在這個(gè)過程中,會(huì)計(jì)算該節(jié)點(diǎn)的淹沒過程,并對(duì)河道洪水進(jìn)行分流。
每一個(gè)節(jié)點(diǎn)都有其特定的任務(wù)。為了高效執(zhí)行這一系列任務(wù),引擎可以根據(jù)節(jié)點(diǎn)間拓?fù)潢P(guān)系形成的有向圖,按照順序執(zhí)行每一個(gè)任務(wù)。這樣一來,整個(gè)計(jì)算系統(tǒng)就能實(shí)現(xiàn)任務(wù)的高效協(xié)同,確保各個(gè)節(jié)點(diǎn)在正確的時(shí)間發(fā)揮出應(yīng)有的作用。
3.3 并行計(jì)算
在多任務(wù)調(diào)度系統(tǒng)中,并行計(jì)算是提高計(jì)算效率的核心手段[17]。為了實(shí)現(xiàn)并行計(jì)算,需要對(duì)拓?fù)渖傻挠邢驁D進(jìn)行分析。定義每個(gè)節(jié)點(diǎn)掛接一個(gè)任務(wù)Task,節(jié)點(diǎn)數(shù)n,那么完整拓?fù)淙蝿?wù)鏈可以進(jìn)行如下描述:
(1) 1對(duì)1任務(wù),當(dāng)上一Task執(zhí)行完畢后,繼續(xù)下一Task。
Taski.next=Taskj(i,j∈n)
(2) 1對(duì)多任務(wù),當(dāng)上一Task執(zhí)行完畢后,繼續(xù)啟動(dòng)下一步多個(gè)Task。
Taski.next=[Taskj1,…,Taskjk](i∈n;j1,…,jk∈n)
(3) 多對(duì)1任務(wù),當(dāng)所有前置Task都執(zhí)行完畢以后,繼續(xù)下一步Task。
[Taski1,…,Taskik].next=Taskj(i1,…,ik∈n;j∈n)
(4) 多對(duì)多任務(wù),當(dāng)所有前置Task都執(zhí)行完畢以后,繼續(xù)啟動(dòng)下一步多個(gè)Task。
[Taski1,…,Taskik].next
=[Taskj1,…,Taskjk](i1,…,ik∈n;j1,…,jk∈n)
引擎采用Java實(shí)現(xiàn)。調(diào)用者可以使用Future對(duì)象來檢查操作isDone(),或者等待它完成使用get()。Future模式一個(gè)最大的問題是何時(shí)調(diào)用問題,Google guava庫的ListenableFuture給出了解決方案。
ListenableFuture繼承了Future(jdk),額外新增了一個(gè)方法(任務(wù)結(jié)束后的回調(diào)方法),void addListener(Runnable listener,Executor executor),其中executor是回調(diào)方法的執(zhí)行器(通常是線程池)[18]。它提供的功能包括:
① 監(jiān)聽任務(wù)執(zhí)行結(jié)果并執(zhí)行回調(diào)方法;
② 提供方便的任務(wù)接口轉(zhuǎn)換;
③ 多線程并發(fā)執(zhí)行取結(jié)果集合。
因此,可以通過該框架對(duì)拓?fù)渲械挠?jì)算任務(wù)進(jìn)行編排,假設(shè)task 1為初始節(jié)點(diǎn),task 1執(zhí)行完畢后,同時(shí)執(zhí)行task 2和task 3,然后當(dāng)task 2和task 3都完成后,再執(zhí)行task 4,偽代碼如下:
ListenableFutureTasklt;Voidgt; task[n] = ListenableFutureTask.
create(()-gt; {
∥節(jié)點(diǎn)計(jì)算任務(wù)n相關(guān)代碼
});
Tasks.thenRun(executorService,task 1,task 2);
Tasks.thenRun(executorService,task 1,task 3);
Tasks.thenRunWhenAll(executorService,
newListenableFutureTask[]{task 2,task 3},
newListenableFutureTask[]{task 4});
Tasks.start(executorService,
newListenableFutureTask[]{task 1});
當(dāng)Tasks.start()啟動(dòng)后,將從初始節(jié)點(diǎn)開始并發(fā)計(jì)算,直到所有流程執(zhí)行完畢。如果存在多個(gè)分支初始節(jié)點(diǎn)(例如流域內(nèi)有多條支流,每個(gè)源頭支流都可以認(rèn)為是一個(gè)初始節(jié)點(diǎn)),則可在start時(shí)指定多個(gè)初始節(jié)點(diǎn)task。
4 應(yīng)用驗(yàn)證
本拓?fù)湓O(shè)計(jì)方法以及驅(qū)動(dòng)引擎已在多個(gè)流域得到了廣泛的應(yīng)用和驗(yàn)證,其中包括長江流域、沂沭泗流域等。
以長江流域?yàn)槔?,長江發(fā)源于青藏高原,自西而東橫貫中國,最終注入東海。長江干流自西向東流經(jīng)青海、西藏、四川、云南、重慶、湖北、湖南、江西、安徽、江蘇、上海等11個(gè)省、自治區(qū)、直轄市。長江支流眾多,主要支流有雅礱江、岷江、嘉陵江、烏江、漢江、沅江、湘江、贛江。從長江流域總體地勢(shì)來看,上游地勢(shì)高峻,中游地勢(shì)較緩,下游地勢(shì)低平,支流匯入干流并向下游演進(jìn)。
沂沭泗流域地形為西高東低、北高南低,大致由北向西向南逐漸降低,由低山丘陵逐漸過渡為傾斜沖積平原、濱海平原。在中游建設(shè)了蓄洪及滯洪工程,開辟了分沂入沭、邳蒼分洪道等水道,修建了駱馬湖洪水控制工程體系,在下游修建了新沂河??诳刂乒こ?,人工工程干預(yù)較大,河道走向受閘控較多。
本文所提拓?fù)湓O(shè)計(jì)方法以其全面、細(xì)致的特性,解決了以往水工程調(diào)度系統(tǒng)對(duì)水系拓?fù)涿枋霾蝗娴膯栴}[19]。圖3和圖4分別展示了該方法在長江流域和沂沭泗流域的應(yīng)用系統(tǒng),圖5用概化圖描述了沂沭泗流域的水系拓?fù)浣Y(jié)構(gòu)。
在傳統(tǒng)的水工程調(diào)度系統(tǒng)中[20],對(duì)類似沂沭泗流域這樣復(fù)雜水系的情況,為了能快速實(shí)現(xiàn)功能,大部分模型會(huì)將所有站點(diǎn)(斷面)的數(shù)據(jù)作為數(shù)組進(jìn)行管理,然后通過模型代碼,在計(jì)算時(shí)將每個(gè)站點(diǎn)的數(shù)據(jù)進(jìn)行同步更新,雖然最終能達(dá)到計(jì)算結(jié)果目標(biāo),但是本質(zhì)上并沒有對(duì)模型進(jìn)行解耦,無法適應(yīng)數(shù)字孿生流域的復(fù)雜要求。
在拓?fù)湓O(shè)計(jì)的過程中,本文所提方法充分考慮了水系的復(fù)雜性,以及水工程調(diào)度所需的各項(xiàng)因素,從而為水工程調(diào)度系統(tǒng)的開發(fā)提供了強(qiáng)有力的底層技術(shù)支持。在此基礎(chǔ)上,通過增加并行計(jì)算的支持,使得計(jì)算效率得到了極大提升。在并行計(jì)算的幫助下,根據(jù)拓?fù)涞膹?fù)雜度以及計(jì)算資源的數(shù)量,原本復(fù)雜的水系拓?fù)浞治鲇?jì)算任務(wù)可以不同程度縮短完成時(shí)間,大大提高了水工程調(diào)度的效率和準(zhǔn)確性。
5 結(jié) 語
針對(duì)水工程調(diào)度系統(tǒng)建設(shè)中拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)的問題,在分析常見水工程調(diào)度系統(tǒng)拓?fù)潢P(guān)系類型的基礎(chǔ)上,研究了不同的拓?fù)湓O(shè)計(jì)方案,并提出基于圖數(shù)據(jù)庫的模式,設(shè)計(jì)驅(qū)動(dòng)該拓?fù)涞囊?,最后在多個(gè)流域中進(jìn)行了驗(yàn)證。本文所提方法通過引入圖數(shù)據(jù)庫,解決了拓?fù)涠x的數(shù)據(jù)管理問題,設(shè)計(jì)的并行計(jì)算引擎提高了基于拓?fù)鋱D計(jì)算的效率,不僅解決了水工程調(diào)度中的關(guān)鍵技術(shù)問題,也提供了全新的技術(shù)手段。
同時(shí),這一成果的應(yīng)用并不僅僅局限于具體某個(gè)流域,所提設(shè)計(jì)理念在各流域均具有廣泛的應(yīng)用前景。無論是在其他區(qū)域、還是其他水利業(yè)務(wù)領(lǐng)域的復(fù)雜系統(tǒng)分析中,這一方法都有著廣泛的應(yīng)用潛力。后續(xù),將繼續(xù)對(duì)其進(jìn)行深入研究,以期為水資源管理和調(diào)度提供更為先進(jìn)和全面的技術(shù)支持。
參考文獻(xiàn):
[1] 蔡陽.以數(shù)字孿生流域建設(shè)為核心構(gòu)建具有\(zhòng)"四預(yù)\"功能智慧水利體系[J].中國水利,2022(20):2-6,60.
[2] 劉先龍,楊勤科.流域拓?fù)潢P(guān)系建立方法研究[J].水土保持研究,2010,17(3):82-86.
[3] 李琪,唐海華,黃瓅瑤,等.基于敏捷搭建技術(shù)的水利業(yè)務(wù)應(yīng)用系統(tǒng)架構(gòu)研究[J].人民長江,2021,52(6):218-222.
[4] 李磊,李家歡,王旭,等.數(shù)字孿生流域水流網(wǎng)絡(luò)建設(shè)關(guān)鍵技術(shù)研究[J].水文,2023,43(5):6-11.
[5] 蔡陽,謝文君,程益聯(lián),等.全國水利一張圖關(guān)鍵技術(shù)研究綜述[J].水利學(xué)報(bào),2020,51(6):685-694.
[6] 余慧,張曙光,劉英,等.空間對(duì)象及其拓?fù)潢P(guān)系[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(6):77-79.
[7] 黃艷,王權(quán)森,盧程偉,等.水工程聯(lián)合調(diào)度知識(shí)圖譜構(gòu)建與應(yīng)用研究[J].人民長江,2024,55(9):2-9.
[8] 唐海華,黃瓅瑤,張振東,等.面向數(shù)字孿生的水利專業(yè)模型構(gòu)建關(guān)鍵技術(shù)[J].人民長江,2024,55(3):1-5,20.
[9] 舒棟才,程根偉.基于多叉樹的遍歷算法在數(shù)字水系拓?fù)潢P(guān)系計(jì)算中的應(yīng)用[J].長江流域資源與環(huán)境,2006,15(6):733-739.
[10]周超,唐海華,李琪,等.水利業(yè)務(wù)數(shù)字孿生建模平臺(tái)技術(shù)與應(yīng)用[J].人民長江,2022,53(2):203-208.
[11]羅斌,唐海華,李琪,等.水利專業(yè)決策(WPD)的\"數(shù)據(jù)-模型-業(yè)務(wù)\"組態(tài)式孿生構(gòu)建技術(shù)[J].水利水電快報(bào),2023,44(12):6-7.
[12]唐勇,胡和平,田富強(qiáng).流域洪水計(jì)算模型系統(tǒng)的拓?fù)潢P(guān)系分析[J].水利學(xué)報(bào),2002,33(5):81-85.
[13]唐勇,胡和平,田富強(qiáng).流域拓?fù)潢P(guān)系分析及在洪水預(yù)報(bào)調(diào)度決策支持系統(tǒng)中的應(yīng)用[J].中國水利,2003(6):69-72.
[14]郭聰,游進(jìn)軍,林鵬飛.圖論在水資源系統(tǒng)建模與配置計(jì)算中的應(yīng)用[J].中國水利水電科學(xué)研究院學(xué)報(bào)(中英文),2023,21(3):295-306.
[15]GONZALEZ M M.Practical Neo4j[J].Computing Reviews,2015,56(10):592.
[16]ANDREA B,DANIJELA J,PATRIZIA P.Querying data in NoSQL databases[J].Zbornik Veleucˇilisˇta u Rijeci,2019(7):257-270.
[17]郭廣軍,胡玉平,戴經(jīng)國.基于Java多線程的并行計(jì)算技術(shù)研究及應(yīng)用[J].華中師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,39(2):169-173.
[18]International Business Machines Corporation.Methods for providing data values using asynchronous operations and querying a plurality of servers:US16669644[P].2021-10-26.
[19]唐海華,羅斌,周超,等.水庫群聯(lián)合調(diào)度多模型集成總體技術(shù)架構(gòu)[J].人民長江,2018,49(13):95-98.
[20]葉瑞祿,左翔,劉修恒.數(shù)字孿生秦淮河流域防洪四預(yù)平臺(tái)建設(shè)與應(yīng)用[J].人民長江,2024,55(3):13-20.
(編輯:郭甜甜)
Topological design method for water engineering scheduling system
LI Qi1,2,3,HUANG Liyao1,2,3,ZHOU Chao1,2,3,4,LUO Bin1,2,3,4,TANG Haihua1,2,3
(1.Changjiang Survey,Planning,Design and Research Co.,Ltd.,Wuhan 430010,China; 2.Intelligent Changjiang Innovation Team of Changjiang Water Resources Commission,Wuhan 430010,China; 3.Key Laboratory of Internet Intelligent Water Conservancy of Changjiang Water Resources Commission,Wuhan 430010,China; 4.State Key Laboratory of Water Resources Engineering and Management,Wuhan University,Wuhan 430072,China)
Abstract:
Presently,most water engineering scheduling systems are customized for specific watersheds,and are difficult to apply to other watersheds with different characteristics.This article mainly introduced a topological design method for water engineering scheduling systems using graph databases to achieve consistent descriptions for various types of watersheds.In this research,the topological structure of water objects was defined using the \"node-attribute-link\" in CQL language.Compared with traditional tree-based data structure storage,graph databases can significantly improve the analysis procedures for dealing with large and complex datasets.Based on this topology design approach,a topology-driven engine was proposed and verified through core technical processes,including data processing,program task scheduling,and parallel computing.Furthermore,a set of water resources decision-making platforms had been developed to adapt to various types of watershed topology,offering a new model for the construction of water engineering scheduling systems.The successful application of this method in various river basin systems has demonstrated that it significantly improves the adaptability of water engineering dispatching systems across different river basin scenarios and efficiently supports the construction of digital twin watersheds.
Key words:
water engineering scheduling; system architecture; topology structure; digital twin watershed; Changjiang River Basin; Yi-Shu-Si River Basin