□張 寧(三門峽市水文水資源局)
水文預(yù)報(bào)(Hydrological Forecasting)是根據(jù)前期或現(xiàn)時的水文氣象資料,對某一水體、某一地區(qū)或某一水文站在未來一定時間內(nèi)的水文情況做出定性或定量的預(yù)測。它是水文學(xué)的一個重要組成部分,是建立在客觀水文規(guī)律基礎(chǔ)上的一門應(yīng)用科學(xué),主要包括:洪水預(yù)報(bào)、枯水預(yù)報(bào)、冰情預(yù)報(bào)、臺風(fēng)暴潮預(yù)報(bào)、沙量預(yù)報(bào)等。預(yù)報(bào)的方法一般有經(jīng)驗(yàn)和半經(jīng)驗(yàn)方法、水文模型方法和統(tǒng)計(jì)預(yù)報(bào)方法。早期的水文預(yù)報(bào)方法出現(xiàn)于20世紀(jì)30年代,主要來自對洪水規(guī)律的分析和總結(jié),沒有嚴(yán)密的理論基礎(chǔ),基本上屬于經(jīng)驗(yàn)方法,所以也稱為工程師方法,比較有代表性的是API方法、單位線法和馬斯京根法,他們被稱為水文預(yù)報(bào)的“老三篇”,至今仍廣泛使用。
在流域匯流預(yù)報(bào)中,最常用的是經(jīng)驗(yàn)單位線法。經(jīng)驗(yàn)單位線(Unit Hydrography,簡稱UH)源自美國,于1932年由舍爾曼(L.K.Sherman)提出,因此又被稱為舍爾曼單位線。推求單位線使用次洪時段凈雨及流域出口斷面的直接徑流過程,推求方法主要有分析法、試錯法、最小二乘法。由于流域匯流的復(fù)雜性和測驗(yàn)資料的誤差,實(shí)際應(yīng)用中分析法和最小二乘法結(jié)果往往會出現(xiàn)鋸齒狀和負(fù)值現(xiàn)象,甚至結(jié)果無法使用。試錯法使用比較廣泛,但主要缺點(diǎn)是單位線過程的初始假定比較困難,試錯過程的計(jì)算量大。
鑒于上述方法不足,本文提出以MATLAB為平臺,試錯法作為推求的基礎(chǔ),引入搜索整體最優(yōu)解的遺傳算法來推求單位線。通過實(shí)際的運(yùn)用,證明此法行之有效,可以大大提高單位線推求效率,并對單位線推求具有一定借鑒。
遺傳算法(Genetic Algorithm,簡稱GA)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過程的計(jì)算模型,它是一種通過模擬自然進(jìn)化過程搜索最優(yōu)解的方法。該算法是一類借鑒生物界的進(jìn)化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機(jī)制)演化而來的隨機(jī)化搜索方法。它是由美國的J.Holland教授1975年首先提出,并出版專著《Adaptation in Natural and Artificial Systems》。
遺傳算法具有以下幾方面的特點(diǎn):
遺傳算法是從問題解的串集開始搜索,覆蓋面大且利于全局擇優(yōu),避免了傳統(tǒng)優(yōu)化算法從單個初始值迭代求最優(yōu)解時容易誤入局部最優(yōu)解的弊端。
遺傳算法基本上僅用適應(yīng)度函數(shù)來評估個體,而適應(yīng)度函數(shù)不僅不受連續(xù)可微的約束,其定義域還可以任意設(shè)定,這使得遺傳算法的應(yīng)用范圍大大擴(kuò)展。
遺傳算法利用進(jìn)化過程獲得的信息自行組織搜索,并采用概率的變遷規(guī)則來指導(dǎo)搜索方向,這使得它具有很好的自組織、自適應(yīng)及自學(xué)習(xí)能力。
遺傳算法是現(xiàn)代有關(guān)智能計(jì)算中的關(guān)鍵技術(shù)。它已被廣泛地應(yīng)用于組合優(yōu)化、機(jī)器學(xué)習(xí)、信號處理、自適應(yīng)控制和人工生命等領(lǐng)域,其通用計(jì)算過程見圖1。
引入遺傳算法解決流域匯流經(jīng)驗(yàn)單位線的推求,最關(guān)鍵的是要把實(shí)際工作的推求過程轉(zhuǎn)化為尋求最優(yōu)解的最優(yōu)化數(shù)學(xué)函數(shù)。下面就以實(shí)際工作中常用的試錯法作為推求基礎(chǔ)介紹如何引入遺傳算法推求單位線。
圖1 遺傳算法的計(jì)算過程圖
試錯法的基本思路是先假定一條初始單位線,再根據(jù)時段凈雨推算流量過程,根據(jù)流量計(jì)算的誤差修改假定的單位線,再推算流量過程,這樣迭代下去直至誤差達(dá)到允許范圍。試錯法特別適用于有一個時段凈雨量特大的情況,這種情況計(jì)算收斂的較快。試錯法得出的單位線是唯一的,但是不一定是最優(yōu)的。
將試錯法過程轉(zhuǎn)化為最優(yōu)化數(shù)學(xué)問題,需要構(gòu)造出目標(biāo)函數(shù)及其約束條件,過程如下:
實(shí)測m個時段凈雨:r1,r2,…,rm,設(shè)一條n個時段的單位線:x1,x2,…xn。
實(shí)測流量過程:Q1,Q2,…Qk,其中洪峰為Ql。則目標(biāo)函數(shù)見公式(1):
約束條件是對單位線:x1,x2,…,xn的約束,見公式(2):
MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡稱,是美國Math Works公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算等。它包含了大量計(jì)算算法,擁有600多個數(shù)學(xué)運(yùn)算函數(shù),可以方便的實(shí)現(xiàn)用戶所需的各種計(jì)算功能。MATLAB中關(guān)于遺傳算法的函數(shù)如下:
介紹:使用遺傳算法尋求目標(biāo)函數(shù)的最小值。
語法:[X,Fval]=ga(Fitnessfcn,Nvars,A,B,Aeq,Beq,LB,UB)
遺傳算法其中,F(xiàn)itnessfcn需要在寫成函數(shù)文件,提供給遺傳算法函數(shù)引用。總之使用MATLAB為開發(fā)平臺,可以大大縮短開發(fā)周期,提高開發(fā)效率。
為驗(yàn)證本文所述方法可行有效,作者使用實(shí)測資料進(jìn)行單位線的推求。
首先,根據(jù)上述數(shù)學(xué)模型建立的方法,在MATLAB平臺上編寫出推求程序,代碼如下:
主程序:
目標(biāo)函數(shù):
經(jīng)過MATLAB程序推求,可以得到合格的單位線。程序計(jì)算運(yùn)用結(jié)果如圖2所示,可以看出,預(yù)報(bào)徑流過程與實(shí)測徑流過程洪峰位置相同,洪量誤差在10%以內(nèi),基本滿足精度要求,說明該程序可行有效。
圖2 單位線成果驗(yàn)證圖
基于上述思路方法在實(shí)際的應(yīng)用中,減少了工作量,提高了工作效率,取得了不錯的效果,證明該方法的可行性,同時也從中得到幾點(diǎn)認(rèn)識:第一,遺傳算法是人工智能的體現(xiàn),將人工智能引入到單位線的求解上來,再以MATLAB作為推求平臺,可以大大提高求解效率。第二,使用遺傳算法推求單位線的關(guān)鍵在于如何將水文的推求過程轉(zhuǎn)換為尋求最優(yōu)解的最優(yōu)化數(shù)學(xué)函數(shù)。第三,單位線法假定的降雨在流域均勻分布,流域匯流為線性系統(tǒng)與實(shí)際不符,因此對于某些流域,一條單位線難以滿足預(yù)報(bào)精度的要求,所以一個預(yù)報(bào)方案常配有多條單位線。
[1]林三益.水文預(yù)報(bào)[M].北京:中國水利水電出版社,2001,1-4.
[2]吳云.利用最小二乘方原理推求單位線[J].太原師范學(xué)院學(xué)報(bào),2003,(3):11-13+20.
[3]葉林泉.經(jīng)驗(yàn)單位線分析方法的改進(jìn)[J].中國農(nóng)村水利水電,2003,(6):53-54.
[4]周明,孫樹棟.遺傳算法原理及應(yīng)用[M].北京:國防工業(yè)出版社,1999,1-17.
[5]金菊良,丁晶著.遺傳算法及其在水科學(xué)中的應(yīng)用[M].四川大學(xué)出版社,2000,9-20.