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