王 文 川,王 莉 芳,郭 安 強
(1.華北水利水電大學(xué) 水資源學(xué)院,河南 鄭州 450046; 2.河南省鶴壁水文水資源勘測局,河南 鶴壁 458030)
徑流模擬因受多種因素的影響,其序列具有較強的非確定性,一直是水文研究領(lǐng)域的難點[1]。為了提高徑流模擬精度,人工智能方法比如人工神經(jīng)網(wǎng)絡(luò)、灰色預(yù)測法、支持向量機和小波分析等逐漸應(yīng)用到徑流預(yù)報中[2-5]。如Snieder等[6]利用人工神經(jīng)網(wǎng)絡(luò)進行流域徑流模擬,鄭世武等[7]將灰色系統(tǒng)理論應(yīng)用于黃河花園口站的年徑流模擬,Ozgur等[8]提出小波支持向量機組合模型用于月徑流模擬。人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)[9]中的Elman神經(jīng)網(wǎng)絡(luò)模型在預(yù)測徑流序列方面因在結(jié)構(gòu)上增加了一個承接層構(gòu)成反饋相比傳統(tǒng)方法更具準(zhǔn)確性。但由于徑流模擬受到降雨、蒸發(fā)和人類活動等因素的影響,結(jié)合多種方法優(yōu)點的組合預(yù)測模型以及改進優(yōu)化模型的預(yù)測精度要優(yōu)于單一模型。因此,許多學(xué)者將結(jié)合多種方法優(yōu)點的耦合預(yù)報模型以及優(yōu)化模型用于徑流預(yù)報。李志新等[10]利用遺傳算法的全局優(yōu)化能力來優(yōu)化傳統(tǒng)網(wǎng)絡(luò)初始參數(shù)值,耦合構(gòu)建了GA-Elman年徑流預(yù)測模型,結(jié)果表明通過遺傳算法改進傳統(tǒng)神經(jīng)網(wǎng)絡(luò)可明顯提升徑流預(yù)測精度,縮小誤差。徐留興等[11]采用改進的Elman遞歸神經(jīng)網(wǎng)絡(luò)對紫坪鋪站的月徑流數(shù)據(jù)進行預(yù)測,并與傳統(tǒng)Elman模型預(yù)測結(jié)果對比,結(jié)果表明可將該模型應(yīng)用于月徑流預(yù)測領(lǐng)域。由于傳統(tǒng)Elman神經(jīng)網(wǎng)絡(luò)模擬訓(xùn)練時采用的算法普遍是梯度下降反向傳播法,導(dǎo)致模型訓(xùn)練預(yù)測時收斂速度慢,達不到高效要求,且訓(xùn)練過程中容易收斂于局部極值。針對上述問題,本文利用粒子群算法(Particle Swarm Optimization,PSO)的全局搜索優(yōu)化能力來優(yōu)化改進傳統(tǒng)Elman網(wǎng)絡(luò)模型參數(shù)(權(quán)、閾值和隱含層神經(jīng)元個數(shù)),通過優(yōu)化算法彌補其在處理多因子徑流序列模擬時存在的缺陷。
馬爾科夫鏈(Markov Chain,MC)可以表述為隨機過程的動態(tài)變化,可通過不同狀態(tài)之間的狀態(tài)轉(zhuǎn)移概率來預(yù)測其未來狀態(tài),適合于隨機波動較大的預(yù)報問題[12],可以用來修正預(yù)測結(jié)果。本文基于收集的呼蘭河蘭西水文站的實測徑流深數(shù)據(jù),利用傳統(tǒng)Elman神經(jīng)網(wǎng)絡(luò)模型和PSO優(yōu)化后的Elman模型進行多因子徑流深序列預(yù)測,并采用MC對耦合模型初始預(yù)測值進行修正,構(gòu)建了基于馬爾科夫鏈修正的PSO-Elman多因子徑流模擬模型,進而改善徑流模擬效果。
Elman神經(jīng)網(wǎng)絡(luò)是在傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)[13-14]模型結(jié)構(gòu)的基礎(chǔ)上改進增加了一層反饋層(承接層)共4層結(jié)構(gòu)的一種局部回歸模型,其中新增的承接層作為延時算子起到動態(tài)反饋作用,進而提升模型模擬預(yù)測性能[15]。
輸入到輸出層的反饋過程中,Elman神經(jīng)網(wǎng)絡(luò)通過不同的反向傳播法進行優(yōu)化改進模型參數(shù)。相較于只有優(yōu)化權(quán)值作用的傳統(tǒng)BP網(wǎng)絡(luò)前饋結(jié)構(gòu)而言,Elman模型增加了一層反饋結(jié)構(gòu),此結(jié)構(gòu)可將過去某一狀態(tài)和未來某一狀態(tài)共同作為隱含層的輸入值,傳遞函數(shù)普遍為非線性函數(shù),進而通過該非線性函數(shù)確定隱含層神經(jīng)元個數(shù),相應(yīng)的模型拓撲結(jié)構(gòu)如圖1所示,該網(wǎng)絡(luò)狀態(tài)空間的表達式如下:
圖1 Elman神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)
y(k)=g(w3x(k))
(1)
x(k)=f(w1xe(k)+w2(u(k-1)))
(2)
xe(k)=x(k-1)
(3)
式中:u表示輸入神經(jīng)元向量;y表示輸出神經(jīng)元向量;x表示隱含層神經(jīng)元向量;xe表示反饋狀態(tài)向量;w1表示輸入層到隱含層的連接權(quán)值;w2表示隱含層到承接層的連接權(quán)值;w3表示隱含層到輸出層的連接權(quán)值;g和f分別表示輸出層和隱含層神經(jīng)元傳遞函數(shù)。
粒子群(PSO)算法是由Kennedy和Eberhart提出的一種具有全局搜索能力的智能優(yōu)化算法[16-18]。優(yōu)化流程如圖2所示,粒子群算法更新公式為
圖2 粒子群算法流程
(4)
xt=xt-1+vt
(5)
式中:t為迭代數(shù);x為迭代時粒子的位置;v為迭代時粒子的速度;r1,r2為分布于(0,1)區(qū)間的隨機數(shù);c1,c2為增速因子(正實數(shù));pbest為個體粒子搜索到的最優(yōu)位置;gbest為所有粒子搜索到的最優(yōu)位置;ω為慣性權(quán)重因子,取值范圍為(0,1)。
馬爾科夫過程是一種隨機動態(tài)變化過程,原型為馬爾科夫鏈模型,具有未來狀態(tài)不依賴于過去狀態(tài)的特性。在已知狀態(tài)的條件下,根據(jù)狀態(tài)轉(zhuǎn)移推求未來狀態(tài)[19]。模型修正步驟為:① 根據(jù)實測值與預(yù)測值的相對誤差的絕對值,劃分樣本空間狀態(tài);② 確定狀態(tài)轉(zhuǎn)移概率矩陣P;③ 根據(jù)矩陣P求解未來狀態(tài)的概率分布。
馬爾科夫鏈修正預(yù)測實質(zhì)上是一個區(qū)間預(yù)測,即確定了殘差變化范圍和轉(zhuǎn)移概率后,進而求出每個狀態(tài)的概率之和,其中概率和最大的那個狀態(tài)就是預(yù)測值誤差所在的狀態(tài)。利用龍浩等[20]修正位移預(yù)測值的公式來修正PSO-Elman模型初始預(yù)測結(jié)果:
(6)
傳統(tǒng)Elman動態(tài)神經(jīng)網(wǎng)絡(luò)預(yù)測建模時初始的權(quán)值和閾值一般由偽隨機數(shù)初始化,使得訓(xùn)練好的模型性能不穩(wěn)定,且其采用的算法存在缺乏全局搜索優(yōu)化能力的缺陷。因此,本文利用具有改善傳統(tǒng)Elman神經(jīng)網(wǎng)絡(luò)算法缺陷能力的PSO算法進行優(yōu)化改進,提出了基于PSO優(yōu)化的Elman多因子徑流模擬模型,改善Elman神經(jīng)網(wǎng)絡(luò)的預(yù)測效果,然后運用馬爾科夫鏈修正公式(6)來修正耦合模型初始預(yù)測結(jié)果,得到最終模型預(yù)測值。
基于馬爾科夫鏈修正的PSO-Elman模型建模思路如圖3所示,具體步驟如下:
圖3 基于馬爾科夫鏈修正的PSO-Elman模型
(1) 輸入歸一化的預(yù)報因子數(shù)據(jù)與實測徑流深數(shù)據(jù),劃分訓(xùn)練集與測試集。
(2) 采用經(jīng)驗公式結(jié)合非線性傳遞函數(shù)設(shè)置隱含層神經(jīng)元個數(shù):
(7)
式中:m為隱含層神經(jīng)元個數(shù);n為輸入層節(jié)點個數(shù);l為輸出層節(jié)點個數(shù);α為1~10之間的隨機常數(shù)。
(3) 選取耦合模型的適應(yīng)度函數(shù)。本文的PSO-Elman多因子徑流模擬模型選取訓(xùn)練集和測試集整體的均方根誤差為適應(yīng)度函數(shù)。
(4) 初始化最大迭代次數(shù)N,種群規(guī)模n,c1,c2,ω參數(shù)。
(5) 初始化算法的種群位置。速度更新和位置更新直至滿足終止準(zhǔn)則即達到最大迭代次數(shù)N,終止優(yōu)化算法。
(6) 將PSO優(yōu)化后的個體即參數(shù)值,賦給Elman神經(jīng)網(wǎng)絡(luò),利用PSO-Elman模型進行模擬預(yù)測,并分析最終預(yù)測結(jié)果。
(7) 運用馬爾科夫鏈修正耦合PSO-Elman模型的初始預(yù)測結(jié)果,得出修正后的最終徑流預(yù)測值。
呼蘭河發(fā)源于小興安嶺西南麓爐吹山,是松花江的一條支流,河長523 km,流域面積為35 683 km2。流域多年平均徑流量為41.29億 m3,多年平均降水量約570 mm,降水主要集中在汛期(6~9月),約占全年的78%,并以7~8月最集中,約占全年的60%。本研究基于收集的位于呼蘭河下游的蘭西水文站1959~2014年的徑流深數(shù)據(jù)、降雨數(shù)據(jù)、蒸散發(fā)數(shù)據(jù)以及平均氣溫、平均氣壓等20種預(yù)報因子資料,運用SPSS 26.0統(tǒng)計軟件對上述影響因子分別進行Mann-Kendall(M-K)顯著性和Spearman相關(guān)性分析,結(jié)果如表1所列。分析徑流深與上述20種預(yù)報因子間的相關(guān)關(guān)系,選擇前一年相關(guān)性較強的極大風(fēng)速、平均氣壓、最高氣溫、月日照百分率、降水量、日照時數(shù)、蒸散發(fā)量等7種預(yù)報因子作為傳統(tǒng)Elman模型、PSO-Elman模型的輸入,當(dāng)年的徑流深數(shù)據(jù)作為模型輸出;簡單線性回歸模型則選擇前一年的年降水?dāng)?shù)據(jù)作為模型輸入,當(dāng)年的年徑流深數(shù)據(jù)作為模型輸出。徑流預(yù)測模型均選擇1960~2003年前34 a的樣本作為訓(xùn)練樣本構(gòu)建并訓(xùn)練神經(jīng)網(wǎng)絡(luò),2004~2014年的數(shù)據(jù)作為測試樣本進行徑流預(yù)測。
表1 預(yù)報因子顯著性及相關(guān)性分析
Elman神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)因缺少完整的理論指導(dǎo),隱含層神經(jīng)元個數(shù)按照經(jīng)驗公式(7)結(jié)合某種非線性適應(yīng)度函數(shù)來選取。根據(jù)徑流預(yù)測模型模擬結(jié)果的均方根誤差(MSE)值的大小,選取傳統(tǒng)Elman模型和PSO-Elman耦合模型隱含層神經(jīng)元個數(shù)都為3,其對應(yīng)的均方根誤差值較小,結(jié)合輸入層神經(jīng)元個數(shù)7和輸出層神經(jīng)元個數(shù)1,確定本研究的模型結(jié)構(gòu)為7-3-1。本研究采用的PSO算法初始參數(shù)設(shè)置為:最大迭代次數(shù)N=100,種群規(guī)模n=10,學(xué)習(xí)因子c1=c2=2,慣性權(quán)重因子ω=0.9。
根據(jù)優(yōu)化后的PSO-Elman耦合模型模擬訓(xùn)練得到訓(xùn)練期和測試期所有樣本的初始預(yù)測值,進而分析所選站點訓(xùn)練期樣本預(yù)測數(shù)據(jù)的平均相對誤差絕對值分散情況,劃分為[0,10%),[10%,50%),[50%,100%),[100%,200%)共4個馬爾科夫鏈校正狀態(tài)區(qū)間。通過上述4個馬爾科夫鏈校正區(qū)間確定該站點訓(xùn)練期每一個徑流深數(shù)據(jù)的平均相對誤差絕對值所處的一種狀態(tài),并計算下一狀態(tài)的轉(zhuǎn)移概率矩陣如下:
(8)
通過矩陣P可計算得出每個狀態(tài)的概率之和,其中概率和最大的那個狀態(tài)就是預(yù)測值誤差所在的狀態(tài),即為狀態(tài)區(qū)間[10%,50%)。進而確定狀態(tài)向量并通過式(6)對PSO-Elman耦合模型測試期的徑流深預(yù)測值進行修正,故得到經(jīng)MC修正后的蘭西水文站測試集的最終預(yù)測結(jié)果。根據(jù)相同的實測訓(xùn)練期樣本數(shù)據(jù)和測試期樣本數(shù)據(jù),分別采用簡單線性回歸模型、傳統(tǒng)Elman模型、PSO-Elman模型和MC校正的PSO-Elman模型進行訓(xùn)練預(yù)測,最終預(yù)測值與實測徑流深數(shù)據(jù)的對比分析如表2所列。
表2 MC校正的PSO-Elman、PSO-Elman、傳統(tǒng) Elman模型、簡單線性回歸模型預(yù)測徑流深對比
為進一步比較4種模型預(yù)測方法的預(yù)測效果差異,將不同模型的徑流深預(yù)測值和預(yù)測值的平均相對誤差繪制成折線對比圖,如圖4~5所示。本文選用合格允許誤差為20%,測試集2004~2014年的預(yù)測值表明,PSO-Elman組合模型預(yù)測精度要優(yōu)于單一傳統(tǒng)Elman模型,均方根誤差由57.60 mm降低至40.23 mm,降低了30.2%;測試樣本的平均相對誤差由77.89%降低至39.68%,降低了49.1%,確定性系數(shù)由0.32提升至0.67;PSO-Elman模型較簡單線性回歸模型均方根誤差由64.60 mm降低至40.23 mm,降低了37.7%,測試樣本的平均相對誤差由102.20%降低至39.68%,降低了61.2%,確定性系數(shù)由0.14提升至0.67;經(jīng)馬爾科夫鏈模型修正后的PSO-Elman模型預(yù)測精度顯著提高,測試樣本的均方根誤差由40.23 mm降低至19.22 mm,降低了52.2%,平均相對誤差由39.68%降低至16.78%,降低了57.7%,確定性系數(shù)由0.67提升至0.92。預(yù)測效果得到顯著改善,為提高徑流預(yù)測精度提供了一種新方法。
圖4 不同模型徑流深預(yù)測值對比
圖5 不同模型徑流深預(yù)測值相對誤差對比
本文通過PSO優(yōu)化Elman模型參數(shù),進而利用馬爾科夫鏈模型對預(yù)測結(jié)果進行修正,建立了基于馬爾科夫鏈的PSO-Elman多因子年徑流模擬模型,主要結(jié)論如下:
(1) 通過PSO優(yōu)化Elman模型參數(shù),二者耦合建立了PSO-Elman多因子徑流模擬模型,將收集的影響因素數(shù)據(jù)作為預(yù)報因子,實測年徑流深作為預(yù)測對象,可用來模擬蘭西水文站年徑流深演變過程,較Elman模型具有更高的精度。
(2) 運用馬爾科夫鏈修正模型對PSO-Elman預(yù)測結(jié)果進行修正得出最終預(yù)測值,結(jié)果表明修正后的模型能有效提高原始模型預(yù)測精度,彌補了PSO-Elman模型難以預(yù)測徑流隨機波動較大的不足。
(3) 利用馬爾科夫鏈和粒子群算法改進傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法可明顯縮小預(yù)測誤差,模型預(yù)測精度有顯著提高,為長期多因子徑流模擬研究提供了一種新途徑。