徐 楊,劉亞新,汪 濤,孟慶社
(1.三峽水利樞紐梯級調度通信中心,湖北 宜昌 443002; 2.智慧長江與水電科學湖北省重點實驗室,湖北 宜昌 443002)
三峽工程是中國最大的水利樞紐工程,是治理和開發長江的關鍵性骨干工程,三峽主電站裝機容量為22 400 MW,機組32臺,單機容量700 MW,其中左岸、右岸、地下電站分別安裝14,12和6臺水輪發電機組,另外還有2臺單機50 MW的電源機組;三峽水庫調節庫容165億m3,防洪庫容221.5億m3,總庫容450.11億m3。三峽工程在防洪、航運及生態供水、發電等方面發揮了巨大的綜合效益。
三峽水庫上游水位代表站為鳳凰山水位站。受電站短期(小時尺度)運行約束和調度計算體系的影響,其水庫上游水位預測面臨諸多技術難題,主要表現為以下方面。
(1) 三峽庫區面積較大,采用反映水面線變化的動庫容方法計算得出三峽入庫流量,入庫流量采用的計算點見圖1。動庫容入庫流量與小時尺度內的水庫上游水位存在不匹配的問題,利用水量平衡方程(通過時段初的上游水位以及該時段內入庫流量和出庫流量計算時段末的上游水位),計算誤差較大。實際調度中,一般考慮三峽庫尾水量傳播時間為12~18 h,將動庫容入庫流量計算值后推估算靜庫容入庫流量后,再采用水量平衡方程計算上游水位。

圖1 三峽庫區多算點水位示意Fig.1 Schematic diagram of multi-point water level in the Three Gorges Reservoir Area
(2) 當三峽水電站承擔調峰、調頻任務時,其出力和下泄流量可能發生劇烈變化,以致水庫上游水位短時間大幅度波動,基于水量平衡原理的傳統計算方法無法完全反映該狀態下水位的動態變化過程,預測誤差較大。
(3) 目前,三峽入庫流量的計算頻次為2 h,1 h尺度水庫出入庫計算流量數據的缺失,也導致基于水量平衡原理進行預測計算的傳統方式失效。
為解決復雜情況下的水位預測問題,目前國內外學者對基于長短時記憶(LSTM)模型的水位預測方法進行了大量研究和應用。例如,劉亞新[1]利用LSTM模型實現葛洲壩下游水位連續6 h和上游水位連續3 h的準確預測;王亦斌[2]以南水北調工程某河流每隔1 h的瞬時流量、流速和水深監測數據為研究對象,采用EMD-LSTM模型進行建模,試驗結果表明,該模型能夠實現水位、水速和瞬時流量連續12 h和6 h的準確預測;唐鳴[3]將LSTM預測模型應用于南水北調中線京石段的閘前水位預測,與深度神經網絡(DNN)預測結果進行了對比,結果顯示LSTM預測結果具有較高精度等。考慮到傳統基于水量平衡原理進行水位預測方法的弊端,本文提出基于LSTM的短期三峽上游水位預測方法來提高復雜情況下水位預測精度,為保障三峽工程綜合效益的發揮和安全穩定運行提供重要技術支持。
水庫水位數據為時間序列且呈非線性變化。時間序列的特點是不同時刻間的觀測值在時間維度上相互聯系,在預測方法構建時,應考慮這一特點并充分利用時間維的聯系,使歷史水位信息在時間維上連續傳遞。因此,本文認為理想的方式是將多元回歸和時間序列的思想相結合,使水位預測更加準確和完善。而傳統的多元回歸建模方法未考慮時序聯系,傳統的時間序列分析法處理要素單一且對非線性數據處理效果不好,因而需要尋求一種方法,能夠同時兼顧多元回歸和時間序列的思想。機器學習方法中的深度學習方法有更高的抽象能力,更適合于檢測數據中復雜、分散和細微的模式,為實現模型設計思想提供了可能性。根據數據特征和對深度學習網絡的研究,預測模型適宜使用循環神經網絡(RNN)類別中的LSTM網絡模型來構建,具體原因如下。
(1) LSTM網絡是一種具有普適性和前景的自適應序列處理方法,其潛在應用領域比其他循環神經網絡更廣。
(2) 對于研究目標,由于水位是在時間維度上連續變化的量,且與歷史狀態關系密切,采用LSTM網絡,使水位信息在逐個時間步長上記憶并傳遞顯得更為合理,實現了時間序列的思想。
(3) LSTM網絡還具有較大的靈活性,可以有多個輸入,于是可兼顧多元回歸思想,將多個影響因素與水位變化建立聯系。
本文基于LSTM模型實現考慮動庫容影響下的三峽水庫上游水位預測,預測尺度以1 h為步長,預見期為未來24 h。模型基于水量傳播、水位-出力之間相應關系等物理機制,構建預測因子,以水庫調度運行數據多元回歸的角度研究上游水位的預測,同時結合數據特征,將時間序列的思想融入其中,并借助深度學習方法,構建了三峽水庫短期上游水位預測方法,并分析了模型預測精度。
RNN是一種本身是包含循環的特殊網絡,可以通過其特定結構,將過去時刻的影響反映到當前的預測之中;同時由于共享不同時刻的權值矩陣,減少了參數數目,大大提高訓練效率,且可以處理任意長度時間序列數據,因此在時間序列預測方面具有獨特優勢。RNN結構示意見圖2,xt為網絡輸入數據,ht為網絡輸出數據,A為循環神經網絡。

圖2 RNN結構示意Fig.2 RNN structure diagram
然而,普通RNN在實際應用過程中存在長期依賴問題,即信息經長時間或多階段傳遞后,會出現梯度逐漸消失和爆炸的現象,網絡無法保留所有歷史時刻的信息,從而使模型喪失了學習到更早信息的能力。
為解決這一問題,1997年Hochreiter等[4]提出了一種改進RNN模型——LSTM網絡,通過引入門的設置來決定控制信息的流動,取得成功。
LSTM有輸入門、遺忘門和輸出門3個門,其結構示意如圖3所示。相比普通RNN只有一個傳輸狀態,LSTM有兩個傳輸狀態ct和ht。ct表示隱含層的狀態單元;ht表示隱含層的輸出;σ和tanh表示激活函數。當前的LSTM接收來自上一個時刻的狀態ct-1以及當前LSTM接收的輸入xt,通過輸入門、遺忘門、輸出門操作之后,得到輸出ht[5]。

圖3 LSTM結構示意Fig.3 Schematic diagram of LSTM structure
為確保準確預測三峽水庫短期上游水位,將采用監督學習方法,并為模型提供“輸入-目標”序對進行訓練。監督學習可分為分類和回歸兩大類,由于水位是一個連續變量,且需獲取其精確值,是一個回歸問題。因此預測模型采用多元回歸與時間序列相結合的設計思想,并通過LSTM網絡模型實現該思想。
本文對2015年1月1日至2019年10月1日的白沙沱水位、忠縣水位、石寶寨水位、萬縣水位、云陽水位、奉節水位、巫山水位、巴東水位、秭歸水位、鳳凰山水位、三峽入庫流量及三峽棄水流量、三峽全廠出力數據進行分析。
考慮三峽庫區水面線傳播對三峽壩前水位的影響、水量平衡、機組NHQ關系等物理機制,模型的輸入輸出如表1所示。

表1 模型訓練輸入與輸出數據Tab.1 Model training input and output data
在選擇輸入數據時,從出力-流量-庫容-水位的傳統計算思路,將基于水量平衡所需要的全部信息作為輸入數據,保證LSTM模型信息的完備。
(1) 數據歸一化。本文選用的原始數據中包含水位、流量以及出力等多種變量,具有不同的量綱和取值范圍,數值在絕對值上相差較多。而LSTM網絡對輸入數據的范圍格外敏感,尤其在使用激活函數時,如果不加處理直接放入模型中,將嚴重影響計算效果,因此采用最大-最小歸一化(min-max normalization)方法對數據進行歸一化處理,將原始數據壓縮到[0,1]的區間,計算方法如下式(1)所示。
(1)
式中:Xmax為數據中的最大值,Xmin為數據中的最小值,Xi為歸一化處理后的數據。
(2) 樣本集的構建。采用滑動窗口方法構造“輸入-目標”序對。由于模型構造選用前48 h的梯級電站運行狀況預測當前時刻的梯級電站上下游水位,預測的時間跨度為24 h,因此在5 a水庫調度運行數據中,用連續72 h長度時間序列的窗口來框住部分數據,然后將窗口在該數據集系列上每滑動一個單位構成一條樣本數據,進而組成樣本數據集。本文將上述樣本數據集的75%作為模型訓練集,25%作為模型驗證集。
LSTM模型對輸入的三維張量的格式要求是[數據樣本(samples),時間步長(time steps),數據特征(features)]。根據樣本集構造的特點,輸入參數特征值分別為:時間步長24,數據特征13。
三峽水電站上游水位預測模型采用Python和深度學習框架Keras編寫,以1層LSTM網絡作為隱層(hidden layer),用全連接層(Dense Layer)作為輸出層,與隱層直接相連。LSTM 層中的 batch size設置為64,epoch 設置為60,激活函數等按默認設置,模型參數更新方法選用 Adam 算法,損失函數采用均方誤差(MSE)來衡量水位預測值和真實值之間的誤差。模型預測采用滾動預測(rolling forecast)方法。
選取絕對平均誤差(MAE)和最大誤差(MAXE)兩個統計量作為模型的評價指標,計算方法如下式(2)~(3)所示。
(2)
(3)
上述式中:y實測(i)為水位實測值;y預測(i)為水位預測值。絕對平均誤差(MAE)衡量模型的穩定性,最大誤差(MAXE)衡量模型的預測精度。
以2018年三峽水庫運行數據為例,三峽上游水位(鳳凰山)預見期24 h水位連續變化過程計算水位與實測水位對比結果見圖4,其中,圖4(a)是鳳凰山水位預測值與實測值的散點圖,圖4(b)是2018年整年的預測水位過程與實測水位誤差過程的對比。

圖4 鳳凰山全年計算水位與實測水位對比Fig.4 Comparison of annual calculated water level and measured water level in Fenghuang Mountain
圖4顯示鳳凰山水位預測效果整體較好,滾動預測2018年整年水位均方根誤差為0.067 m。分別選取三峽水庫的消落期、汛期、蓄水期與高水位運行期的局部預測效果如圖5所示。

圖5 鳳凰山不同調度期水位預測效果Fig.5 Prediction effect of water level in different dispatching periods of Fenghuang Mountain
從2018年三峽消落期、汛期、蓄水期與高水位運行期的鳳凰山水位預測結果來看,從模型可以獲取各個調度期的水位變化特征,在消落期的水位降低過程和汛期的電站調峰過程中表現出良好的擬合精度;在蓄水期和高水位運行期也體現了水位變化的主要趨勢,但是呈現出明顯的鋸齒波動特征,這是下一步模型改進的方向。
三峽水庫承擔著重要的綜合利用任務,保障梯級電站的安全穩定運行至關重要,因此不但要評估模型計算結果的誤差均值,更要評估模型的最大誤差。通過不同預見期的最大誤差判斷模型在幾個小時內的預測結果是可信的、水庫調度為此要預留出多大的水位空間。
為直觀反映不同預見期水位預測誤差的分布,繪制了水位預測誤差的箱型圖,如圖6所示。具體步驟為:① 將預見期相同的水位預測誤差從大到小排列,分別計算該系列上四分位數,中位數,下四分位數;② 計算得到四分位距;③ 上下極限分別取1.5倍四分位距值;④ 上下極限之外的數值被定義為異常值,用箱體外部的圓點表示;⑤ 中位數在箱體中間用短線表示;⑥ 均值在箱體內部用圓點表示。

圖6 箱型圖示意Fig.6 Schematic diagram of box type
不同預見期水位預測誤差分散情況和分布特征如圖7所示,2018年整年鳳凰山水位,預測誤差上四分位數在24 h預測期內均低于0.2 m,最大誤差低于0.4 m,預測效果較好。

圖7 鳳凰山水位1 h尺度預測誤差分布箱型Fig.7 Box diagram of 1-hour scale prediction error distribution of Fenghuangshan water level
為了分析模型在各個調度期的預測效果,按照三峽調度規程將1 a劃分為4個調度期,分別為:消落期(1月1日至6月10日)、汛期(6月10日至9月10日)、蓄水期(9月10日至10月31日)和高水運行期(10月31日至12月31日)。鳳凰山水位預測誤差各調度期分布餅狀圖見圖8。

圖8 鳳凰山水位預測誤差分布餅狀圖Fig.8 Pie chart of water level prediction error distribution in Fenghuang Mountain
由圖8可知,鳳凰山水位高于0.2 m的預測誤差主要發生在汛期,此時三峽上游水位受動庫容影響較大,容易造成上游水位預測誤差。
準確預測水位是保障三峽工程綜合效益發揮的重要支撐。本文分析了三峽水庫短期上游水位預測面臨的技術難題和現有水位預測方法的弊端,根據水庫的水位數據為時間序列且呈非線性變化的特性,考慮三峽動庫容、調峰及流量計算密度不夠等影響,提出基于LSTM算法的水位預測方法思路,構建了三峽水庫短期上游水位預測模型,并采用2018年三峽水庫實際運行數據進行了模擬計算。結果表明:該方法全年水位預測誤差上四分位數在24 h預測期內均低于0.2 m,最大誤差低于0.4 m,預測效果較好,復雜情況下較傳統方法水位過程預測精度提升較多,可在三峽水庫實時調度中得到應用。后期可進一步加強LSTM等深度學習模型的應用,優化模型輸入輸出,改善目前模型蓄水期和高水位運行期水位預測呈現明顯鋸齒波動特征的計算結果。