Python居然還能用於巨大的工程專案!比如三峽發電量估算系統!
私信菜鳥獲取本專案原始碼!私信007即可哦!
- 所有的出庫流量優先滿足發電機的需求,其次用做洩洪、航運、衝沙等其他需求;
- 三峽水庫共有32臺發電機組,預設從01號機組開始開機,根據開機數依次類推。
根據三峽的排程報告[1],發電機組的洩洪量跟庫前水位是一個二次曲線關係。如果我們計算對應發電機臺數下的水庫洩洪量與發電機總額定流量的比值,稱之為流量係數;這個流量係數與庫前水位是二次曲線關係。根據擬合曲線和實測庫前水位,我們可以估算流量係數;根據流量係數,我們就可以估算實測出庫流量下的開機數,公式如下所示:
if GeneratorNum > 32, GeneratorNum = 32.
其中 GeneratorNum是水輪機開機數,Outflow是實測出庫流量,FlowCoeff是上文提到的流量係數,RatedFlow是平均每臺水輪機的額定流量, int() 是指取結果的整數位,例如,int(15.8) = 15。
注1:流量係數為實際流量與相應發電機總流量之間的比值。
注2:圖中只展示兩組水輪發電機臺數下的對應關係,但是其他臺數也有類似曲線。
Fig. 2 不同開機臺數下庫前水位與流量係數擬合關係圖
3.2 上下游水位差的計算
上下游水位差的計算比較容易實現,庫前水位減去庫後水位即可(水位差有時候也簡稱水頭)。水位差的計算結果將用來估算水輪發電機的實時功率。
3.3 水輪發電機的實時功率估算
當水輪發電機的水頭為額定水頭,流速為額定流速時,發電機的額定功率是700 MW。 實際生產中,水輪發電機的水頭往往達不到額定水頭,因此發電機的功率也要小於額定功率。我們根據發電機的限制出力曲線[1],通過實時水頭來估算水輪發電機的實時功率。
Fig. 3 左岸VGS機組的出力(功率)限制曲線
3.4 時段內總髮電量估算
根據水輪機開機數,實時功率和流量係數,我們可以計算某時間內的總髮電量,公式如下所示:
其中 Wt是該時段內總髮電量,GeneratorNum是水輪機開機數,Poweri 是第i組發電機組的實時功率,FlowCoeff是流量係數,TimeStamp是時間間隔,本文中是6小時。
注:這裡假定6小時內總髮電量的相對變化可以忽略不計。
4. 模型實現流程圖簡介
三峽發電量估算系統的主要思路如Fig. 4 所示。模型的輸入項包括庫前後水位和出庫流量,計算過程包括了前文提到的三個引數和總髮電量,輸出的結構包括髮電量、實時功率等。
Fig. 5 模型流程示意圖
5. 模型結果驗證和討論
這套估算系統的運算區間為 2012年7月8日至2016年7月31日,計算了每隔六小時的發電量,所有發電機總實際功率、棄水量和發電機開機數。為了驗證估算系統的效能,筆者計算了2012年第三季度至2016年第三季度的各季度發電量,比較了模型計算值與實際發電量,結果見Fig. 6. Fig. 6 可以看出估算系統的結果與實際發電量非常接近,平均誤差-1.70%,最大誤差-4.22%。 鑑於筆者沒有更精確的資料來驗證模型,暫且認為該估算系統能夠有效地估算三峽水庫的發電量。
注:2012年Q3從7月8日開始計算,所以估計值比實際值少了七天的發電量。
Fig. 6 三峽發電量估算系統與各季度實際發電量的對比圖(Data source: 長江電力 via 雪球網)
根據發電量估算系統的計算結果,我們可以計算出每月發電量,見Fig. 7. 由圖可見,三峽水庫發電量的高峰在7月至9月,也是長江流域的汛期;到了枯水期,即11月至來年3月,每月的發電量較少。這個趨勢說明估算系統的運算結果與實際的來水情況相符合。
Fig. 7 三峽水庫每月估算髮電量
雖然估計值與實測值較為接近,該系統仍有可以改進的地方。例如:
- 模型中沒有考慮水輪發電機故障、維修與保養的情況;
- 模型中的一些假設與實際情況可能有所出入;
- 模型中採用出庫流量,而不是入庫流量,是一種相對取巧的做法,etc。
由於筆者的資料量不足,暫時無法深入驗證和改進模型;如果有了足夠的資料,筆者希望能夠在估算系統中增加調控、預測和梯級排程等components,也可以利用State-of-art的方法,例如Deep Learning等,來進一步等完善估算系統,同時也能夠指導三峽水庫的生產過程。
7 總結(Take-home points)
- 基於Python的三峽發電量估算系統的結果與實際值非常接近,系統性能較好;
- Python的特效能夠為初學者和非計算機專業人士提供很大的便利;
- 該系統還有很多可以改進的地方,由於資料有限,暫且認為能夠有效地估算三峽發電量;
- 基於這套系統,筆者將會做更多的資料分析和資料探勘工作,敬請期待~~