吳海燕,劉 懿,徐 華,常宗燁
(1.甘肅省水利廳 信息中心,甘肅 蘭州 730030;2.華中科技大學 土木與水利工程學院,湖北 武漢 430074)
水庫防洪調度是一個多階段的復雜決策過程,而常規防洪調度一般利用水庫的防洪調度圖等經驗性圖表或規則實施操作,是一種半經驗半理論方法,所指導的防洪調度方案并不是最優解[1]。為進一步提高水庫的防洪效益,保證水庫和下游防洪安全,結合水庫防洪調度的目標和約束情況,構建防洪優化調度模型,進行水庫防洪優化調度研究是十分必要的[2]。在眾多水庫優化調度方法中,動態規劃是水庫調度模型求解算法中最經典的算法之一[3-4],但動態規劃算法直接用于水庫調度時,往往會出現計算量大、內存占用大等問題。為避免該問題,常用的方法是采用改進動態規劃算法或智能優化算法。例如,徐嘉等[5]采用離散微分動態規劃法建立了單一水庫防洪發電優化調度模型,并以陸渾水庫為例進行了應用研究;王國利等[6]基于改進的PSO算法建立了大伙房水庫防洪優化調度模型,其較常規的動態規劃法計算速度快;王文川等[7]提出了基于群居蜘蛛優化算法的水庫防洪優化調度模型求解方法,實例驗證表明,該算法優化計算結果穩定,能滿足實際水庫防洪優化調度的需求;羅軍剛等[8]采用基于量子行為的粒子更新方式,提出了一種用于求解水庫防洪調度問題的量子多目標粒子群優化算法,并對安康水庫兩場典型洪水進行了仿真調度。上述求解方法有效避免了常規動態規劃中存在的“維數災”問題,但都存在一定的局限性,離散微分動態規劃法在一定程度上不能保證全局收斂,PSO算法、群居蜘蛛優化算法、多目標粒子群優化算法等智能啟發式算法存在早熟收斂的問題,易陷入局部最優。王徐洋[9]以削峰率最大為目標,基于動態規劃算法開展了三門峽—小浪底水庫防洪優化調度,得到了最優的防洪調度方案;李秀麗等[10]采用動態規劃方法建立東武仕水庫防洪調度模型,得出了適合東武仕水庫及其下游防護對象的防洪最優調度方案。這些研究中雖然保留了原動態規劃的尋優機制,得到了最優解,但沒有關注動態規劃的求解效率問題,對于如何在保證全局收斂性的同時針對求解機制與過程提出動態規劃算法的改進措施、緩解其“維數災”問題,以及對于動態規劃中“離散度小求解精度低、離散度大計算時間長”的矛盾,均未見相關的研究。鑒于動態規劃算法的應用廣泛性及其存在的不足[11-12],本研究以保障下游防護對象為主要任務,建立以最大削峰準則為目標的碧口水庫防洪優化調度模型,并提出基于非均勻離散動態規劃的高效求解方法,以期在保證全局收斂性的同時從求解機制、動態離散與求解過程等方面提出動態規劃算法的改進措施,緩解其“維數災”問題;進一步通過比較與常規防洪調度的差異性,分析優化調度方案的特點,總結可有效提高碧口水庫防洪效益的指導性意見。
碧口水庫位于嘉陵江支流白龍江上,甘肅省文縣碧口鎮上游3 km處,東經105°14′30″,北緯32°45′30″。上距苗家壩水庫31.5 km,下距麒麟寺水庫13.5 km。水庫大壩以上干流全長452 km,控制流域面積26000 km2,電站現裝機容量330 MW(3×110 MW),發電引水流量522 m3/s,設計年發電量14.63億kW·h。苗家壩水庫原設計正常蓄水位對應庫容2.68億m3(目前剩余庫容0.30億m3),電站總裝機容量240 MW,設計年發電量9.24億kW·h;麒麟寺水庫設計總庫容2970萬m3,總裝機容量為111 MW。
由于碧口水庫上游苗家壩水庫、下游麒麟寺水庫均為日調節水庫,調節庫容很小,相應對流域防洪調節作用也很小,且苗家壩、碧口水庫共同防洪保護對象為下游碧口鎮,因此本研究不考慮上游苗家壩水庫的防洪調節,僅考慮對流域防洪起控制性作用的碧口水庫進行防洪優化調度研究。
碧口水庫大壩防洪按500 a一遇洪水設計,相應洪峰流量7630 m3/s,3 d洪水總量10.21億m3;校核洪水為5000 a一遇,相應洪峰流量9950 m3/s,3 d洪水總量12.75億m3。碧口水庫基本參數見表1。

表1 碧口水庫基本參數
碧口水庫大壩為土石高壩,工程以發電為主,兼有防洪、漁業等效益。防汛部門適時調整碧口水庫運用方案,利用水庫調蓄功能,在確保水庫自身安全的前提下,有效攔蓄洪水,削減出庫洪峰流量,在防洪運用中發揮了極其重要的作用[13]。隨著水庫運行年限的增長,水庫泥沙淤積對水電站運行影響日趨嚴重[14],經2013年汛后水庫淤積測量,校核洪水位為708.80 m,相應總庫容2.16億m3,損失庫容3.05億m3,調洪能力十分有限。汛期主要是確保大壩自身的防洪安全,汛期水庫需按照汛限水位要求進行控制,基本保持出入庫平衡方式運行。在洪水調度過程中,為控制下泄流量,常常使得最高庫水位超汛限水位很多,甚至高達10 m左右,而且持續時間較長,對水庫大壩自身的安全有一定的影響。因此,開展碧口水庫防洪優化調度研究,充分發揮水庫的防洪調節能力,對于保障碧口水庫自身及下游碧口鎮的防洪安全具有重要意義。
碧口水庫汛期為5月1日至9月30日,其中6月15日至9月30日為主汛期,汛限水位695 m,相應庫容5023萬m3;5月1日至6月14日為次汛期[15],汛限水位697 m,相應庫容7000萬m3。
碧口水庫現狀防洪調度以水庫大壩及下游碧口鎮防洪安全為前提,在確保電站樞紐自身防洪安全前提下,充分發揮水庫綜合利用效益,減輕下游沿岸防洪壓力。具體的汛期調度方案如下:
(1)4月1日開始加大發電出庫流量,逐步降低水庫水位,至5月1日降至次汛期汛限水位697 m;6月初起,逐步降低水庫水位,至6月15日降至主汛期汛限水位695 m。
(2)根據上游水文氣象預報,7—8月當判定碧口水庫有可能發生20 a一遇及以上標準洪水時,將水位降至690 m以下;在保證碧口水庫大壩防洪安全的前提下分級進行控泄,即當碧口水庫水位低于汛限水位695 m時,控制出庫流量不大于3000 m3/s;當碧口水庫水位低于698 m時,控制出庫流量不大于3500 m3/s;當碧口水庫水位高于698 m時,水庫按保壩運行,應逐步打開全部泄洪設施泄洪,水庫開始自然調洪,不再進行控泄。
(3)9月21日之后,可根據流域水情、天氣形勢,將庫水位適當逐步抬高至697 m。汛后10月水庫蓄水至正常蓄水位704 m。
(4)在9月下旬蓄水過渡期,如遇較大降雨天氣或洪水上漲,立即停止水庫蓄水,必要時將庫水位降至主汛期限制水位695 m。
碧口水庫入庫洪水的判別方法如下:
(1)當入庫洪峰流量超過3500 m3/s,庫水位接近695 m,并有繼續上漲趨勢時,判定將發生接近或達到20 a一遇下游碧口鎮設防標準洪水。
(2)當水庫入庫洪峰流量超過20 a一遇標準洪水流量4310 m3/s或電站尾水位接近626.70 m,且洪水仍在持續上漲時,即判定將發生100 a一遇洪水。
(3)當庫水位接近或達到設計洪水位703.30 m,水庫入庫洪峰流量超過200 a一遇標準洪水流量6690 m3/s,且洪水仍在上漲時,即判定將發生500 a一遇設計標準洪水。
(4)當庫水位超過設計洪水位703.30 m,水庫入庫流量超過設計標準洪水洪峰流量7630 m3/s,且洪水仍在上漲時,判定將發生5000 a一遇校核標準洪水。
(5)當庫水位超過校核洪水位708.80 m,水位仍持續上漲時,判定將發生超標準洪水。
4.1.1 調度目標
根據已定的防汛聯合運用原則,碧口水庫在防汛運用過程中,應在確保水庫安全運行不垮壩的前提下,結合上游水文氣象預報,盡量滿足下游河道安全泄量的要求[16]。因此,本研究以碧口水庫下泄流量最大值最小為目標(以下泄流量平方和最小來實現),即盡可能削減洪峰,建立水庫優化調度模型。其目標函數可表示為

式中:t1為調度期初始時刻;t2為調度期結束時刻;qt為水庫t時段的出庫流量;q區,t為區間流量。其中前式適用于水庫下游至防護對象無區間入流情形,后式適用于水庫下游至防護對象有區間入流情形。
4.1.2 約束條件
水庫防洪優化調度模型的約束條件主要有水量平衡約束、水位約束、水庫泄流能力約束等。
(1)水量平衡約束,表達式為

式中:Vt為t時段末蓄水量;Vt-1為t時段初蓄水量;Qt,in為t時段水庫的平均入庫流量;Qt,out為t時段水庫的平均出庫流量。
(2)水位約束,表達式為

式中:Zt為t時段水庫的運行水位;Zdown為t時段水庫允許下限水位;Zup為t時段水庫允許上限水位。
(3)水庫泄流能力約束,即水庫出庫流量不能超過水庫的最大泄流能力。
(4)出庫流量變幅約束,即相鄰時段水庫下泄流量波動不能太大。
(5)防洪庫容約束,即水庫防洪的蓄水總量要小于水庫的防洪庫容。
(6)防洪策略約束,即控制斷面的過流量要小于規定的安全值。
本研究采用動態規劃算法求解前述所建防洪優化調度模型,動態規劃算法的數學模型和求解方法比較靈活,一般只要優化問題能構成多階段的決策過程,便可以用此方法求解。以最大削峰準則進行優化調度,基于動態規劃的求解步驟如下[17]。
步驟1:按照調度尺度時間需求,將調度期劃分為均勻的多個時段。
步驟2:將水庫蓄水量作為狀態變量,其中Vt-1為t時段的初狀態、Vt為t時段的末狀態。
步驟3:將水庫平均下泄流量Qt,out定義為決策變量。
步驟4:根據水量平衡方程,定義狀態轉移方程:Vt=Vt-1+(Qt,in-Qt,out)Δt。
步驟5:以水庫下泄流量Qt,out的平方作為階段指標。
步驟6:目標函數在余留期的遞推方程為[18]

式中:Ft(Vt-1)為t-1時刻的余留期目標函數;Ft+1(Vt)為t時刻的余留期目標函數。
在上述計算中,初始狀態變量的取值范圍一般都較大,例如興利調度過程中一般取死水位與正常蓄水位之間,若在計算中各時段都對該區域進行離散計算,則一般會有如下相互矛盾的情況:若離散點數較少,水位上下跳躍大,則求解精度不高,甚至因水位上升太大導致出庫流量為負;若離散點數很多,模型計算時間就會很長。
只有很好地解決上述離散點數過多或過少帶來的問題,才能將動態規劃方法很好地應用于水庫防洪優化調度中。對于因離散點數很多而計算時間長的問題,可根據時段來水量和水庫下泄能力,對離散范圍進行縮減,即根據時段初蓄水量和時段來水量,以來水全部蓄入水庫更新各時段的水位上限,并以當前水位下的最大泄流能力下泄,得到的水位作為水位下限,更新流程如圖2所示。這樣就可以得到一個范圍在一定程度上縮小了的動態水位上下限,避免計算中不必要的空間搜索,可實現對初始離散搜索空間的降維。

圖2 時段水位上下限更新流程
對于離散點數較少的情況,此時求解精度不高,甚至出現下泄流量為負的情況,可在前述獲得的動態搜索空間基礎上,以下泄流量不出現負值為前提,構建非均勻離散機制,即根據時段來水量非均勻性離散蓄水量(確定最小離散點數),以使得該時段來水量能使蓄水量離散點向上跳動一個點。此時各個時段的最小離散點計算方法為

式中:Numt為t時段的離散點數;Vt,up為t時段的蓄水量上限;Vt,down為t時段的蓄水量下限;Wt為t時段的來水總量。在實際計算中,t時段的變動離散點數Numt為下限值,為使精度更高,離散點數可根據實際情況大于Numt,但此時計算時間會增加。
本研究以碧口水庫20 a(P=5%)一遇和5000 a(P=0.02%)一遇洪水為例,進行實例分析計算,兩場洪水過程如圖3所示,時段長為3 h,一共100個時段。防洪計算中,主要用到的特征曲線為水位—蓄水量曲線和水位—泄流能力曲線[19],分別如圖4、圖5所示。

圖3 碧口水庫典型設計洪水入庫過程線

圖4 碧口水庫水位—蓄水量曲線

圖5 碧口水庫水位—泄流能力曲線
根據前述調度規程,當發生20 a一遇及其以上的洪水時,可將水位降至690 m以下。因此,優化調度中設置調度期初水位為690 m、調度期末水位為主汛期限制水位695 m,調度期初始水位下限設置為690 m,調度期初始水位上限設置為防洪設計水位703.30 m。常規調度的調度期初水位設置為690 m、末水位為汛限水位695 m。
對于20 a一遇的洪水,通過計算得到的常規與優化調度結果見圖6、圖7及表2。

圖6 常規調度結果(P=5%)

圖7 最大削峰準則優化調度結果(P=5%)

表2 常規與優化調度結果對比(P=5%)
由上述結果可知,針對20 a一遇洪水,常規防洪調度方式雖然操作過程簡單,最高水位比汛限水位稍高,但該方式沒有充分利用水庫的防洪庫容進行洪水調節,使碧口水庫下泄流量最大值達到了3500 m3/s,削峰率僅為18.8%,對下游碧口鎮的防洪壓力較大。相比較而言,以最大削峰準則為目標的防洪優化調度,雖然最高庫水位達到703.2 m,但其能夠充分利用防洪庫容進行洪水調節,使得碧口水庫下泄流量最大值降低到2136 m3/s,削峰率達到50.4%,且下泄流量過程平緩,有利于下游碧口鎮防洪度汛。
對于5000 a一遇洪水,通過計算得到的常規與優化調度結果見表3及圖8、圖9。

圖8 常規調度結果(P=0.02%)

圖9 最大削峰準則優化調度結果(P=0.02%)

表3 常規與優化調度結果對比(P=0.02%)
由上述結果可知,針對5000 a一遇洪水,常規防洪調度方式最高水位低于設計洪水位703.3 m,但該方式沒有充分利用水庫的防洪庫容進行洪水調節,使碧口水庫下泄流量最大值達到5270 m3/s,削峰率為30.9%。相比較而言,以最大削峰準則為目標的防洪優化調度,最高庫水位達到設計洪水位703.3 m,較常規調度方式水位有所上升,有效利用了水庫的防洪庫容進行洪水調節,使得碧口水庫下泄流量最大值降低到4663 m3/s,削峰率較常規調度有所提升,達到38.9%。兩種調度方式削峰效果相差不大,主要原因是在第40~44時段入庫流量遠遠超出水庫最大下泄能力,水庫防洪庫容很快耗盡,下泄流量無法進一步控制,但優化調度的下泄流量過程平緩,有利于下游碧口鎮的防洪安全。
水庫防洪調度過程中,水位和下泄流量一直是矛盾的關系,雖然優化調度時水庫長時間高水位運行,但水位一直沒有超過設計洪水位,且始終處于安全范圍內,可見結果是合理的。另外,算法可通過設置水位約束以控制水位,若擔心實時調度時長時間高水位對大壩自身安全不利,可控制水位上限以降低調度過程中的高水位。
本研究基于碧口水庫的防洪調度問題,在分析常規防洪調度方式不足的基礎上,構建了以最大削峰準則為目標的防洪優化調度模型,提出了基于非均勻離散動態規劃的模型求解方法,以碧口水庫20 a一遇設計洪水和5000 a一遇校核洪水為例,進行模擬計算,得到如下結論:基于動態規劃的模型求解方法,采用非均勻離散模式,能夠有效地根據時段來水量大小協調常規動態規劃面臨的“離散度小求解精度低、離散度大計算時間長”的問題。對于20 a一遇洪水,優化調度下可使洪峰流量由4310 m3/s降低到2136 m3/s,削峰率達到50.4%,遠大于常規防洪調度方式的18.8%,削峰效果顯著。對于5000 a一遇洪水,優化調度下可使洪峰流量由7630 m3/s降低到4663 m3/s,削峰率達到38.9%,稍大于常規防洪調度方式的30.9%。