陳建 李允軍 王建平 吳善鋒
摘要: 為了解決入庫流量等時序數據跳變而影響對數據變化趨勢規(guī)律判斷的問題,結合水量平衡原理計算入庫流量現實存在“跳變”的局限性,提出了梯度自適應迭代平滑算法,設計了數據序列光滑度評價計算方法,并闡述了其詳細的計算原理和計算步驟。以三峽水庫實際計算入庫流量為例,將梯度自適應迭代平滑算法的平滑過程分別與3點、5點、7點線性平滑,5點、7點二次函數擬合平滑,5點、7點三次函數擬合平滑的結果進行對比。結果表明:該算法在入庫流量平滑計算中具有較好的表現;三峽水庫兩段比較具有代表性的2月份和4月份小時計算入庫流量數據序列經平滑計算后,數據序列的平均光滑度分別達到了0.958 4和0.980 3。該算法能夠很好地適應原始數據光滑度較差的序列平滑計算,具有很好的實際應用推廣價值。
關 鍵 詞:入庫流量; 數據平滑; 梯度自適應迭代平滑算法; 數據序列光滑度
中圖法分類號: ?P33
文獻標志碼: ?A
DOI: 10.16232/j.cnki.1001-4179.2022.03.014
?0 引 言
入庫流量的“大振幅”跳變會直接影響水庫調度運行決策過程中對水庫來水趨勢的判斷,也不符合實際情況,為了能夠較為清晰地判斷水庫來水過程趨勢,需要對隨機性跳變的時間序列數據進行平滑校正處理。大多數水庫的入庫流量難以通過直接測量獲取,目前普遍的方法是基于水量平衡法,根據水庫壩上水位計算出庫流量和水位庫容曲線,反推入庫流量。特別是對于大型水庫而言,水庫壩上水位的“振蕩”誤差導致入庫流量值誤差較大,以湖南省大東江、柘溪和鳳灘3個水庫為例,計算1 h入庫流量,在水庫壩上水位誤差在0.01 m時,大東江水庫的入庫流量誤差為174~488 m 3/s、柘溪水庫的入庫流量誤差為12~750 ?m 3/s 、鳳灘水庫的入庫流量誤差為27~111 m 3/s。入庫流量的誤差呈現以下幾個特點:① 入庫流量誤差跟壩上水位值相關,壩上水位值越大,同樣的水位差產生的誤差越大,表現在計算入庫流量過程上,不同的季節(jié)入庫流量的“鋸齒”呈現不同的變幅現象;② 水庫的庫容越大或者同樣水位差下的庫容越大,入庫流量出現的誤差越大;③ 壩上水位受采樣地點、采樣點數和水庫閘門開閘的水位波動等影響,難以采集準確代表水庫水位的水位值;④ 水庫水位測量儀目前大多能測量的最高精度為0.01 m?;谝陨咸攸c,難以從測量手段上解決入庫流量的計算準確性問題。有的學者采用動庫容計算? [1-3] 的方式進行計算,但效果并不顯著,一方面投入建站成本比較高,目前大量水庫不具備采用動庫容計算的條件;另一方面跳變依然比較嚴重。水位變幅限制、多水位站平均等計算方法也能夠在一定程度上降低跳變的程度,但是也有一定的局限性? [4] 。目前基本上是將基于理論的入庫流量過程當作一個漸變過程線,采用數學平滑算法對計算的入庫流量結果進行平滑處理? [5-7] ,主要的平滑算法有3點、5點、7點線性平滑,5點、7點二次函數擬合平滑,5點? [8] 、7點三次函數擬合平滑,最小二乘曲線? [9] ,樣條插值平滑? [10] ,小波變換濾波? [11] 以及一些其他的濾波算法? [12] 。這些算法在處理數據平滑方面都有一定的作用,但是在各種數據情形下表現不一?;诖?,本文通過設計一種全新的梯度自適應迭代平滑算法,以適應各種特性的入庫流量過程的數據平滑,并以三峽水庫實際計算入庫流量為例,將該算法的平滑過程分別與3點、5點、7點線性平滑,5點、7點二次函數擬合平滑,5點、7點三次函數擬合平滑的結果進行對比。
1 梯度自適應迭代平滑算法原理
梯度自適應迭代平滑算法是一種將曲線描繪成某一種抽象的“形狀架構”,通過迭代優(yōu)化調整,最終使得曲線的所有段都滿足一種抽象的“形狀架構”特征?;谔荻鹊募軜嫴捎玫氖且环N基于類似于“三角形”架構,找出或者確定一個中間拐點,隨之確定其前后的頂點數值,如果它們之間的梯度形狀滿足設置確定的要求,就認為該數據的變化滿足梯度要求,如果不滿足其梯度形狀參數的條件,則對其形狀朝著滿足梯度形狀參數的要求方向進行微調整,不斷地進行迭代優(yōu)化調整,最終使整個曲線滿足梯度形狀條件,過程優(yōu)化結束,調整后的曲線即是平滑過后的曲線,其計算優(yōu)化步驟如下。
(1) 算法定義參數包括:曲線最小適應弧度(γ?? min? )、修正因子(λ)、衰減因子(δ)、最大循環(huán)次數(Lp?? MAX? )、滑動窗口大?。╓?? SIZE? )、滑動窗口維度(W?? DIM? )。
(2) 輸入需要進行平滑的時間序列(Time Series),數據長度為 n,整個記為T n(t 0,t 1,t 2,…,t n)。
(3) 確定滑動窗口的大小 W?? SIZE ,窗口的大小值最好為奇數。
(4) 記錄第1次進行時間序列 T n 平滑優(yōu)化計算的時次初始化為 count =0。
(5) 每次掃描都從序列 T n的第0個值開始,初始化定義i=0。
(6) ?從時間序列T n的第i個數進行計算,窗口范圍內的數據序列可以記為T? i~i+W?? SIZE?? ,計算窗口內的數據序列T? i~i+W?? SIZE?? 的平均值,記為AVGV? W?? SIZE?? 。
(7) ?將滑動窗口內的數據點T? i~i+W?? SIZE?? 按照數值大小聚類歸并為3個數據集,記為[A,B,C]。
(8) ?計算滑動窗口范圍內的3個數據集三角形特征值,定義三角形3個頂點值分別為 A(0, y?? 0 ),B(0.5, y?? 1 )和C(1, y?? 2 ), y?? 0 , y?? 1 , y?? 2 分別是滑動窗口內時間序列提煉出的3個頂點的歸一化后的序列值 ,圖1、圖2為三角形6種不同的表現形式: [A,B0,C0]、[A,B1,C1]、[A,B2,C2]、[A,B3,C3]、[A,B4,C4]、[A,B5,C5] 。
(9) 頂點A,B,C組成三角形△ABC,三角形的3條邊的邊長分別記為L? AB 、L? BC 和L? AC ,其中角B記為∠B,計算∠B的弧度,記為γ? ∠B ,弧度計算公式如下:
γ? ∠B = (L 2? BC +L 2? AB -L 2? AC ) 2L? AB L? BC? ?(1)
(10) ?判斷三角形△ABC為“∧”形還是“∨”形,判斷依據:如果 y 0+y 2 2 >y 1,則三角形△ABC為“∨”形;如果 y 0+y 2 2 <y 1,則三角形△ABC為“∧”形;如果 y 0+y 2 2 ?= y 1,那么此3點在一條直線上。
(11) ?如果△ABC為“∧”形,并且γ? ∠B 小于γ?? min? ,則按照坦化“∧”形趨勢的方向調整A,B,C 3個結點數據集的數值,增大A和C兩個結點數據集的數值,減小B結點數據集的數值,具體減少的數值記為 Δ Value=λ× max (y 0,y 1,y 2),同時A和C兩個結點的數據集的數值增加的數值記為 Δ Add= Δ Value/2。
(12) ??如果△ABC為“∨”形,并且γ? ∠B 小于γ?? min? ,則按照坦化“∨”形趨勢的方向調整A,B,C 3個結點數據集的數值,減小A和C兩個結點數據集的數值,增加B結點數據集的數值,具體增加的數值記為 Δ Value=λ× min (y 0,y 1,y 2),同時A和C兩個結點的數據集的數值減小的數值記為 Δ Minus= Δ Value/2。
(13) 分別按照增加和減小的數值,對應調整 A,B,C ?3個結點數據集的數值, 更新時間序列T n對應位置上的值,判斷是否已經是該序列最后一個窗口,如果為“否”,則按照滑動窗口維度W?? DIM? 滑動到序列的下一個窗口T? i+W?? DIM? ~i+W?? DIM? +W?? SIZE?? ,i=i+W?? DIM? ,重復步驟(5)。
(14) ?如果為“是”,則 count=count+1;判斷count 值是否大于 Lp?? MAX? ,如果“是”,則退出循環(huán),返回經過優(yōu)化平滑的時間序列T n,如果為“否”,則重復步驟(4)。
整個算法的流程如圖3所示。
2 序列平均光滑度計算
本文試圖定義一種方法,可以評價一個數據序列經過數據平滑過后,平滑程度或者效果的評價指標,在實際的數據序列中沒有真實的平滑結果存在,因此不能將平滑的結果與“真實”結果比較,只能與未進行平滑的原始數據序列進行比較,找到一種可以評價數據平滑程度的計算方法。目前有研究學者提出了數據平滑度、光滑度? [13] 等概念,與評價一種數據平滑方法的好壞程度并不是很吻合,本文提出一種計算數據序列光滑度的計算方法,用于評價數據序列被平滑過后與原數據相比其平滑程度。
定義一個數據序列為X(x 1,x 2,x 3,…,x n),評價一個數據序列的平滑度可以定義為計算離散數據點之間的斜率之差,具體計算步驟如下。
(1) 對數據序列進行歸一化處理,找出X序列的最大值x?? max? ,X序列歸一化之后的序列為X′(x′ 1,x′ 2,x′ 3,…,x′ n)。
(2) 相鄰數據點的平滑度可以定義為曲線的斜率之差的平方,理論上當相鄰點關系在同一條曲線上時,數據點之間的斜率之差為0,這時數據是最平滑的,是一條直線。簡單的計算平滑度指標并沒什么應用意義,本文通過平滑度值的比較來衡量原始曲線被平滑的程度,具體計算方式如圖4所示。
從圖4可知, ?x′ i 的數據平滑度計算公式為
Smoothness i=? 1- (x′ i-x′? i-1 ) 2-(x′? i+1 -x′ i) 2? ??2 (2)
整個數據序列X′(x′ 1,x′ 2,x′ 3,…,x′ n)的平均平滑度計算公式為
Smoothness=? 1 -???? n-1?? i=1? ??(x′ i-x′? i-1 )? 2- (x′? i+1 -x′ i)? 2? n-2? ??2? (3)
計算條件為 n>2,Smoothness 值越大,代表平滑度越好,等于1則為直線。
3 入庫流量平滑計算案例分析
3.1 入庫流量計算方法
入庫流量很難通過直接測量獲取,目前常用的入庫流量反推計算方法是基于水量平衡原理,利用期末期初壩上水位、時段出庫流量和水位庫容曲線進行反推計算時段入庫流量? [14] ,計算公式如下:
Q? 入庫 Δ t = f(Z?? Δ t末 )-f(Z?? Δ t初 )? Δ t +Q? 出庫 Δ t? (4)
式中: Δ t表示時段步長,Q? 入庫 Δ t 表示時段入庫流量,Z?? Δ t初 表示時段初水庫水位,Z?? Δ t末 表示時段末水庫水位, f(Z?? Δ t初 ) 表示時段初庫水位對應的庫容,f(Z?? Δ t末 )表示時段末庫水位對應的庫容,Q? 出庫 Δ t 表示時段出庫流量。
采用這種方法反推入庫流量對水庫水位的精度要求很高,而往往難以做到。本文以華中區(qū)域的東江、柘溪水庫和三峽水庫為例進行計算,東江水庫是多年調節(jié)水庫,柘溪水庫和三峽水庫都屬于不完全年調節(jié)水庫。下面以東江水庫和柘溪水庫為例進行測算,水庫水位誤差1 cm時對計算入庫流量產生的影響如圖5~6所示。
結合公式(2),從圖5、圖6可知:水庫水位越高,1 cm誤差造成的入庫流量誤差越大。東江水庫的流量誤差范圍174.0~487.0 m 3/s,柘溪水庫的流量誤差范圍12.5~750.0 m 3/s,說明水庫不同時期不同運行水位下的反推入庫流量的波動程度會有較大的區(qū)別,水庫水位的精度對水庫入庫流量影響巨大。
水庫受機組開關機、閘門啟閉和船閘啟閉等綜合影響,較容易產生水位“假潮”現象? [15] ,在短時間內測量的水位會出現較大的波動,有時候波動會高達20 cm,這就造成了有時候會前后時段入庫流量出現波動很大,甚至出現入庫流量為負值的情況? [16] 。
3.2 不同平滑算法結果對比分析
本文中將新設計的梯度自適應優(yōu)化算法與目前常采用的3點、5點、7點線性平滑,5點、7點二次函數擬合平滑,5點、7點三次函數擬合平滑進行對比(見表1),分別取三峽水庫的非汛期2月和4月動庫容計算入庫流量數據,采用上述幾種平滑方法進行平滑計算,平滑結果如圖7所示。
從表1中可以看出:不管是2月份數據,還是4月份數據梯度自適應迭代算法的平均光滑度是最高的。2月份的數據原始計算值的平滑度為0.530 1,經過平滑后達到了0.958 4;其次是7點線性平滑達到了 0.918 7 。4月份的原始數據的光滑度為0.854 6,從整體上看所有方法的平均光滑度都達到了0.9以上,其中數據梯度自適應迭代算法的平均光滑度為0.980 3,所有的方法都有平滑效果,只是平滑的程度不一樣。
圖7中是分別采用以上8種算法進行平滑過后的三峽水庫2月份的小時計算入庫流量,從上面的分析可以看出,在類似2月份這種枯水期或者平水期,實際上的來水過程是比較平穩(wěn)的,但是由于受“水位波動”的影響,造成出現大量的“假峰”、“假谷”現象和“鋸齒”現象。從圖7中還可以看出,梯度自適應迭代平滑算法、5點線性平滑和7點線性平滑算法平滑效果比較明顯,其中梯度自適應迭代平滑算法的平滑效果是最佳的,而且對于“鋸齒”現象越明顯,其效果越明顯。從上面的算法結果比較情況來看,二次函數和三次函數擬合在平滑方面起的作用比較有限,相比而言,線性函數的作用 較大。
4 結 論
本文分別選取三峽水庫波動非常劇烈的2月和波動比較平緩的4月為例,經過實際應用驗證,得出以下主要結論:
(1) 梯度自適應迭代平滑算法具有良好的平滑自適應性,原始數據光滑度越差的數據相比其他方法,梯度自適應迭代平滑算法起到的平滑效果效果更加明顯,其他的方法平滑效果相對不理想。
(2) ?梯度自適應迭代平滑算法平滑效果較為穩(wěn)定,在原始數據光滑度較好,局部光滑度較差的時候,梯度自適應迭代平滑算法具有穩(wěn)定的平滑表現。
(3) 該算法相比其他的算法還有一個重要特點,它是滿足數值序列整體平均值或者累計值不變的,采用該算法平滑處理后,入庫流量只是實現了時段內的重新分配,滿足水量平衡的要求。
(4) 經過算法對比和實際數據驗證,該算法具有很好的推廣應用價值。
參考文獻:
[1]? 張俊,閔要武,陳力,等.基于動庫容曲線的水庫調洪高水位查算方法研究[J].水文,2016,36(5):63-68.
[2] 張俊,閔要武,陳新國.三峽水庫動庫容特性分析[J].人民長江,2011,42(6):90-93.
[3] 閔要武,王俊,陳力.三峽水庫入庫流量計算及調洪演算方法探討[J].人民長江,2011,42(6):49-52.
[4] 王世策,胡曉勇.大型水庫計算入庫流量波動過大問題分析[J].安徽水利水電職業(yè)技術學院學報,2010,10(3):19-21.
[5] 王俊莉.貴州烏江梯級水庫入庫流量計算分析及改進方法[J].水利水電快報,2015,36(4):54-56,74.
[6] 唐春艷,彭繼兵.基于變維濾波算法的Kalman最佳平滑器在滑坡監(jiān)測數據處理中的應用[J].工程數學學報,2009,26(4):586-592.
[7] 唐海華,陳森林,趙云發(fā),等.三峽水庫入庫流量計算方法研究[J].中國農村水利水電,2008(4):26-28.
[8] 武煒,陳標,吳劍鋒,等.基于五點三次平滑算法的入庫流量反推研究[J].水利水電技術,2013,44(12):100-102.
[9] 張俊,廖勝利,程春田,等.基于最小二乘曲線的水電站入流平滑處理[J].水電能源科學,2011,29(4):55-56,154.
[10]? 楊海星,黎浩,曹凈.基于樣條函數的監(jiān)測數據平滑算法與Matlab實現[J].長春工程學院學報(自然科學版),2018,19(3):92-97,120.
[11] 田鑫.基于離散小波變換的海洋工程數據降噪研究[D].大連:大連理工大學,2015.
[12] 楊金標,舒凱,張后來,等.水庫水量平衡計算中消除水位跳變影響的過濾算法[J].人民長江,2019,50(8):98-102.
[13] 鄭鋒,魏勇.提高灰建模數據列光滑度的一種新方法[J].統(tǒng)計與決策,2007(18):37-38.
[14] 劉章君,郭生練,鐘逸軒,等.入庫洪水計算方法及研究進展綜述[J].中國農村水利水電,2016(11):1-6,11.
[15] 劉超,彭艷華,彭艷明,等.水位“假潮”現象平滑處理方法研究[J].長江工程職業(yè)技術學院學報,2011,28(1):27-28,34.
[16] 王永峰,孟繼慧.豐滿水庫調度有關基礎資料問題的歷史沿革[J].水利水電技術,2016,47(6):56-59,79.
(編輯:謝玲嫻)
Research on smoothing algorithm of reservoir inflow data based on ?gradient adaptive optimization
CHEN Jian,LI Yunjun,WANG Jianping,WU Shanfeng
( Nanjing Nari Water Resources Hydropower Technology Company,Nanjing 211000,China )
Abstract:
In order to solve the problem that the jump of time series data such as inflow affects the judgment of the data change trend,we proved the limitation of "jump" in inflow based on the principle of water balance,proposed a smooth gradient adaptive iteration algorithm (SGAIA),designed a calculation method for evaluating the smoothness of data series,and expounded its detailed calculation principle and calculation step.Taking the actual inflow calculation of the Three Gorges Reservoir as an example,we compared the smoothing results of SGAIA with other methods,including 3/5/7-point linear smoothing algorithm,5/7-point quadratic function fitting smoothing algorithm,and 5/7-point cubic function fitting smoothing algorithm.The results showed that SGAIA has better performance in the smoothing of inflow data.Then we execute smooth calculation on two more representative data series of hourly calculated inflow of the Three Gorges Reservoir in February and April,and the average smoothness of the data series after smoothing calculation reached 0.9584 and 0.9803,respectively.SGAIA can be well adapted to data series smoothing calculation in case of poor original data smoothness.
Key words:
reservoir inflow;data smoothing;gradient adaptive iterative smoothing algorithm;smoothness of the data series