三峽發電量估算系統在葛洲壩中的應用可行性分析
- 筆者將基於Python的三峽發電量估算系統應用到了葛洲壩水利樞紐,應用效果較好;
- 鑒於葛洲壩數據不足,筆者採用了率定-驗證方法來確定一些位置參數;
- 此文一方面進行了可行性驗證,另一方面也科普了數值模擬的一些基本應用方法。
0 引言
筆者日前發表過一篇文章,介紹了一套基於Python的三峽發電量估算系統(傳送門:基於Python的三峽發電量估算系統),並且用2012~2016年的各季度發電量來檢驗了模擬效果。為了檢驗模型的可擴展性,筆者將發電量估算系統應用到葛洲壩水利樞紐,以評價該系統在其他水電站的應用情況。鑒於葛洲壩水電站的數據不全,筆者根據實測數據率定了一些參數,並驗證了率定參數的可靠性。與此同時,筆者也希望簡單介紹數值模型的率定與驗證的一般過程,科普一下數值模擬的基本應用。
1. 發電量估算系統的簡單介紹
發電量估算系統屬於半物理過程半經驗模型,根據水庫的出庫流量、庫前水位和庫後水位來估算髮電機個數、發電機實時功率、發電量和棄水量的,最後輸出估算的發電量等數據, 見Fig.2.
有一點需要著重介紹,為了估算有效出流流量,即流經發電機的出庫流量,繼而估算實際工作的發電機個數;根據三峽水庫的實測流量,我們假設有效出庫流量與庫前水位呈二次函數關係,從而可以根據出庫流量和庫前水位估算髮電機個數。詳細的公式等內容請移步:基於Python的三峽發電量估算系統。
Fig. 2 模型流程示意圖
2. 模型率定與驗證
由於葛洲壩水庫沒有提供庫前水位與有效出庫流量之間的實測數據,筆者無法根據庫前水位估算髮電機個數,也就無法計算髮電量與棄水量。其實,由於實際生產生活的複雜性,很多參數我們是無法確認的。為了更好的利用數值模型這一工具,我們需要根據實測數據來率定一些參數,即模型參數估計(Model calibration);同時為了防止我們採用錯誤的參數得到正確的結果(False negative),我們也需要使用實測數據來驗證模型(Model validation). 這就是筆者上文提到的「率定-驗證」方法。
率定-驗證方法的基本步驟包括:
- 確認率定和驗證數據序列:本文中採用2012Q3 ~ 2014Q4 的數據來率定模型,2015Q1 ~ 2016Q3的數據來驗證模型;
- 模型初始化:確認待率定參數的初始值;
- 模型率定:根據模型的模擬效果來調整帶率定參數的數值,直至達到最優情況;
- 模型驗證:採用獨立的實測數據來驗證率定參數的效果。
3. 模型表現的定量化指標
為了定量化模型的模擬效果,筆者採用了四個指標來評價模型,分別包括:
- 相關係數(R^2): 度量兩個序列之間的線性相關關係,範圍為 0~1, 越大說明線性相關關係越強;
- 納什效率係數(NSE):評價實測值與模擬值之間的匹配程度, 範圍為 負無窮 ~ 1。當NSE為1時,說明模擬值完美得匹配實測值;當NSE越小,說明模擬值與實測值之間的匹配關係越差;
- PBIAS: 評價模擬值與實測值的系統性偏差程度,範圍為 -100% ~ 100%,越接近零,說明模擬值與實測值之間沒有系統性偏差(Biased);
- SRS(RMSE-observations standard deviation ratio): 評價模型模擬值與實測值之間的誤差,SRS越接近0,說明模擬值與實測值之間誤差越小。
註: 有些參數筆者不確定中文譯名,可以參考此文中的介紹:模型評價參數介紹
4. 模型初始化
模型初始化有四個主要參數:發電機平均流量(ratedFlow)和計算流量係數FlowCoeff的三個參數(c1,c2,c3)。發電機平均流量根據各個水力發電機的額定流量來計算,加權均值為927.4 m^3/s.
c1, c2, c3是根據三峽的庫前水位和出庫流量關係來估算。首先筆者假設葛洲壩和三峽具有相似的水位流量關係,然後將三峽的水位流量關係『平鋪』到葛洲壩的庫前水位變化範圍,即得到Fig.3。所以c1, c2, c3 的初始值為(-0.0219, 2.8493, -91.477)。
Fig. 3 庫前水位與流量係數擬合圖
5. 模型率定根據Section 4 確定的模型初始值,筆者開始了率定c1, c2, c3. 首先為了簡單起見,模型的評價指標暫時選擇納什效率(NSE)。筆者計算了各參數 ±10%變化區間內的所有參數組合的NSE,得到Fig. 4 的結果。模型率定結果發現,NSE最大值僅為 0.507, 說明所有的參數組合效果較差;而Fig. 4 中顏色主要為深褐色和藍色,且較為均勻,說明這些參數組合已經基本沒有優化空間。所以下一步應該調整發電機平均流量(rateFlow).
註:數據點的不同顏色代表納什效率係數的數值,數值越接近1,說明效果越好。
Fig. 4 模型初始化下不同c1, c2, c3組合下的納什效率係數
筆者調整了不同的發電機平均流量數據,發現當rateFlow = 690 m^3/s 時,模型的效果最佳,結果見Fig. 5. 此事NSE最大值為0.938,非常接近1,說明此時的係數組合下,模擬值與實測值非常吻合; Fig. 5 中數據點的顏色變化均勻、變化範圍較大,說明此時的最優係數組合已經代表了最佳情況。接下來筆者將用獨立的數據序列來驗證率定後的參數。
註:數據點的不同顏色代表納什效率係數的數值,該數值越接近1,說明效果越好
Fig. 5 最佳優化係數組合下的納什效率係數分布圖
6. 模型驗證結果與討論
將上文率定後的參數帶入到模型中後,我們可以驗證模型的效果。由Fig.6 可見,獨立的實測數據驗證後發現,雖然有一些誤差,模擬值還是能夠有效地體現實測值的變化規律,且誤差在可以接受的範圍內。
Fig. 6 模型率定與驗證結果圖(Data source: 長江電力 via 雪球網)為了定量的評估模型模擬效果,筆者在Table 1 中列出了模型初始化、率定後和模型驗證後的模擬效果指標。
- 模型初始化時,除了相關係數外,各項指標均較差,尤其是PBIAS為1483%,說明跟實測值相比,模擬結果存在著嚴重的系統性偏差;
- 經過率定後,各項指標均有所提升,其中NSE接近1, RSR接近0,說明率定結果的模擬效果與實測值的趨勢相符;然後,率定結果的PBIAS仍然較大,說明還是存在一些系統性偏差;
- 驗證結果所有參數均滿足要求,證明了率定結果是可信的,我們有足夠的證據證明該系統可以用來估算葛洲壩水利樞紐的發電量。
Table 1 Summary of model initialization, calibration and validation
7. 結論(Take-home points)
- 我們有足夠的證據證明該系統可以用來估算葛洲壩水利樞紐的發電量;
- 模型的率定與驗證是靈活運用數值模擬的必備方法;
- 我們仍然發現模擬結果可能存在系統性偏差,如果有更充分是數據,我們可以繼續深入的探討發電量的數值模擬。
The end, thanks for reading.
-------------------分割線---------------------
References: 見評論。
PS:此文是「三峽數據分析系列」的第三篇, 前文可見:
三峽水庫數據分析--1 - 每周學點土壤知識 - 知乎專欄
就今年這個降雨量,三峽大壩在防洪上做了多大貢獻?
基於Python的三峽發電量估算系統
---------------版權聲明-----------------
1. 筆者對所有的回答和專欄均擁有所有版權,引用內容除外。2. 筆者允許從此網站的「分享」鏈接分享至微博或者朋友圈等個人分享行為。3. 除知乎及相關產品外,筆者不允許,除個人分享外,任何轉載或者分享,包括但不限於微博和微信的營銷賬號、各種非營利組織、各種大學的微信和微博的官方賬號等組織轉載和分享。4. 如果某組織未經許可分享筆者的內容,那麼該組織也默認接受了「千字千元」的計酬標準,其中原創圖片折算成百字。無論是營利或者非營利組織,均需支付稿費。5. 任何轉載均不得刪除此版權聲明。
推薦閱讀:
※python與numpy使用的一些小tips(1)
※小說人物關係的可視化
※限時加入!國內第二個千人Python自動化運維實名社群成立
※Python 結巴分詞(jieba)源碼分析