國電電力天津大港電廠 許 斯
目前在火電廠中PID調節技術被廣泛使用。通過計算并求出設定值與實際值間具體的差值,再以這個差值為基礎,結合比例、積分和微分控制器,以這樣的方式可有效控制變量,這就是PID控制的運行過程。PID控制技術在今天還受到大多數工業行業的青睞,得益于PID控制技術的簡單算法及自身的高可靠性。但如面對現場情況復雜、線性分布與標準相差過大、場地內有其他的異常值擾亂等不在預期內的突發狀況時,PID的性能就不能應對這些非正常情況了,不能正常工作。
當前主流火電廠對蒸汽溫度的主要調節手段是使用減溫水進行調節,調節過程的基礎是低溫過熱器的出口溫度穩定,才能達到調節目的[1]。而低溫過熱器出口的溫度是與非常多參數相關的,包括機組負荷、蒸汽流量、鍋爐風量、燃煤量等可量化參數,還包括鍋爐結焦程度、爐內空氣動力場情況、加熱器管內結垢程度等許多不可量化參數,以及設備工況的變化、環境溫度的變化、煤質的變化等等因素,都會影響鍋爐受熱情況。
目前的調節方法易造成汽輪發電機組的效率降低和機組安全性的問題。針對目前火電站減溫水調節的現狀,將機器學習技術融入到減溫水調節中,將對減溫水的調節提供新的思路。本文利用機器學習算法來解決蒸汽調整的問題,來解決過調、調節滯后、水量增加不夠造成超溫、水量波動較大造成溫度長時間不穩等問題。
隨機森立算法是一種集成學習思想的應用。集成學習(Emsemble Learning)是一種思想,通過構建并結合多個學習器來完成學習任務的一類算法,可為分類器或回歸器通過特定的方式進行融合,形成一個效果較好的強學習器,以此來獲取比單個模型更好的回歸或分類表現[2]。隨機森林(Random Forest)是基于Bagging思想的算法,建立在決策樹模型的基礎之上,結合Bagging集成思想將多個決策樹結合到一起,建立每一個決策樹時使用隨機選取特征的方法。其簡單易實現,性能強大,是集成學習中的代表性算法,在Bagging方法的基礎上增加了對于屬性的隨機選擇,不同于Bagging方法只有數據采樣時的隨機,正是這個在選擇屬性上的隨機性,給隨機森林算法帶來了更好的泛化性能[3]。
用隨機森林算法建立模型,訓練已經分割好的數據,對目標值“一級減溫水”進行預測。利用Python語言的集成庫Scikit-learn中的隨機森林算法庫文件,通過集成方法庫sklearn.ensemble中的隨機森林回歸訓練器RandomForestRegressor,可方便的建立隨機森林模型。
模型實例化。首先,利用導入的庫函數中的Random Forest Regressor方法,來將模型實例化。estimator=RandomForestRegressor(random_st ate=0,criterion='mse',bootstrap=True,max_features=None,n_estimators=8,max_depth=None,max_leaf_nodes=None,min_samples_leaf=1,oob_score=True)。Random Forest Regressor有很多重要參數,參數調整是訓練模型中重要的步驟。需要用科學的方法來驗證不同參數時模型的效果。
訓練模型。模型實例化后可對模型進行訓練。利用fit接口對建立好的模型實例進行訓練:regr=estimator.fit(X,y),其中X是分配好的訓練集,y是測試集。模型訓練完畢后得到模型regr,通過score接口對模型進行評分,其中測試數據就是用來訓練模型的訓練集(X,y):regr.score(X,y),得分是0.99106834。這個分數說明模型對訓練集的擬合程度非常高,得到了較好的分數,但有過擬合的可能存在,測試模型是否過擬合還需對測試集的數據進行驗證。
利用測試集測試模型。整個數據集是由訓練集與測試集構成的,訓練集主要的作用是模型建立,而測試集的作用是檢查模型是否準確及是否符合標準,此外還能檢查出來模型是否存在擬合的情況。第一步需計算測試集的結果,這一步需利用preditct接口,可得到y_1=regr.predict(X_test),隨后利用score計算測試集結果的分數regr.score(X_test,y_test),得分是0.93277192。利用袋外數據來驗證模型的分數regr.oob_score_,輸出結果是0.93544676。對模型進行交叉驗證:score=cross_val_score(estimator,X,y).mean(),print('Score with the entire dataset=%.2f'%score),其得分是0.93。通過測試集和袋外數據的分數可看出測試結果泛化性良好。結果是基于模型實例化時初始的參數,通過對模型參數的調整,還可繼續對模型進行優化。
模型的參數關系著整個模型表現的好壞。RandomForestRegressor函數的參數分有兩種,一種是隨機森林框架的參數:n_estimators、oob_score、bootstrap、max_samples;另一種是決策樹的參數:criterion、max_features、max_depth、min_samples_split、min_samples_leaf、max_leaf_nodes。通過坐標下降的方法,按照順序逐個對參數進行驗證,參數的調整順序是:bootstrap,n_estimators,max_features,max_depth,max_leaf_nodes,min_samples_leaf。
Bootstrap。當bootstrap為False時,說明決策樹的多樣化差且泛化性能差。如果過擬的現象出現在了訓練集中,造成的結果就是測試集的分數會較低。反之,如果bootstrap不是False而是True時,那么決策樹的多樣化就會提高、泛化性能也會增強,可進行有放回的抽取選擇。基于以上這兩種情況,最終應當將bootstrap的參數定為True;n_estimators。代表隨機森林中決策樹的數量。決策樹的數量與模型的性能是息息相關的,決策樹的數量越多,模型性能增加的幅度越大。當然模型的性能不能一直這樣增長。當決策樹的數量達到了一個標準值之后,模型的性能也就達到了一定的程度,變化幅度不在那么明顯。當n_estimators到達100以后,分數基本上就不會在發生變化。因此最終n_estimators設定為100。
max_features。表示建立決策樹時隨機選取屬性的最大數,如果想要建立隨機森林的話,就不能允許max_features的數值是隨意的,必須要對其進行一定的限制。可利用網絡來找到做適合的數值,數據集的屬性加起來一共是36個,而max_features的范圍取range(1,37,5),也就是說取值要從1開始取值,往后間隔5個再進行取值,以此為規律進行相應的取值,發現當max_features取值為11時分數是最高的,所以最終的確定值為11。
max_depth。表示每棵決策樹的最大深度,默認值是None。如想對決策樹進行剪枝,就要對max_depth進行合理的設置。決策樹的深度與模型的偏差值息息相關,深度越深偏差值就會越小。通過不斷的進行取值設置,發現max_depth為41時結果是最優的;max_leaf_nodes。表示單棵樹的最大葉子節點數。設置max_leaf_nodes值可對樹進行剪枝,最大葉子的節點數與測試集的分數是關聯的,呈現出正相關的關系,也就是隨著前者數量的變大后者也會隨之變大。通過不斷地實驗發現,當max_leaf_nodes參數為None時就符合標準,因此最終設置為None。
min_samples_leaf。表示葉子節點包含最小樣本數。如果說數值比這個參數小的話,那么這些葉子節點就會被裁剪掉。所以min_samples_leaf值與剪枝也可說是正相關的關系,數值越大裁剪掉的越多,最后導致模型的偏差也就越大。基于以上這種情況,將min_samples_leaf值為1。
至此最終確定參數及其值如下:'bootstrap'/TRUE、'criterion'/Mse、'max_depth'/41、'max_features'/11、'max_leaf_nodes'/None、'min_samples_leaf'/1、'n_estimators'/100、'n_jobs'/-1、'oob_score'/TRUE、'random_state'/0。
最后測試集結果是0.942169656,袋外測試結果是0.942124891。訓練集的擬合程度是0.99199292,存在過擬合的情況。原數據集的采樣周期是1s,通過查看數據集發現數據的重復值較多,說明采樣周期太短。重采樣可減少重復值,提高模型對數據的敏感度。上述調整參數的過程是在數據集每30s進行重采樣后的數據進行的。通過用10s采樣周期的數據,利用上述模型得到的參數進行訓練模型后,得到的最后測試集結果是0.982981054,袋外測試結果是0.983475399。隨著數據集內數據量的增加,訓練模型效果變好。利用原始沒有進行重采樣的數據集進行模型訓練得到測試集結果是0.999747017,袋外測試結果是0.9997289。三個數據集的結果比較如表1。
通過表1看出,利用30s重采樣數據集對模型進行調參,調參后的模型再用于原數據集進行訓練,得到了非常理想的效果。
測試集數據是時間序列,減溫水流量隨著時間的變化。通過繪制測試集的散點圖,能清晰看出減溫水流量隨著時間的變化趨勢,將測試集的實際值和模型的預測中繪制于同一個圖中,能方便的看出預測值的質量。繪制對于測試集的減溫水量和預測量的點圖如圖1。
圖1中X是測試集的真實值,O是預測值。從圖中可看出預測值和實際值隨時間變化的對比。從散點圖上可看出,隨著數據集數量的增加,訓練的模型在測試集上的表現更好。將測試集的實際值作為y軸,預測值作為x軸,畫出30s、10s采樣和不采樣的散點圖。
圖2是預測值與實際值的相關性散點圖。圖2中可見在重采樣周期為30s的數據集,存在小范圍的偏差。隨著采樣周期的縮短,10s重采樣周期的預測值和實際值的偏差減小,但個別散點偏差較大。在原始數據集沒有進行重采樣的數據上,可看出預測值和實際值的偏差很小,只有個別點出現了較小的偏差。
利用RMSE(均方根誤差)值可更精確的量化評價結果,利用隨機森林算法的模型,在三個不同的重采樣數據集中均方根誤差分別為3.74955、2.06013和0.25063,即表現在實際中的減溫水量誤差大致為3.7t/h、2t/h和0.2t/h。
如圖3,隨著數據集數量的增加、誤差減小,說明增加數據集的規模可減小預測結果的誤差。通過圖1可從預測值和實際值的點圖中看出不同的RMSE值,相對應的誤差表現。在實際生產過程中,3.7t/h和2t/h的誤差對蒸汽溫度會產生微小的影響,會使蒸汽溫度出現緩慢的變化,而0.2t/h的誤差基本不會對蒸汽溫度造成影響。所以在沒有進行重采樣的原始數據集中,0.2t/h的誤差是非常好表現了,保證了模型對蒸汽溫度調節精確度的要求。
綜上,在電力、煤炭和石油等眾多傳統行業都存在技術老舊的問題,這些行業中技術體系相對封閉,實際核心生產環節缺少對于前沿技術的應用。原因一是傳統行業生產技術人員對于前沿新技術了解不夠深入,不清楚哪些技術能利用、如何應用;二是傳統生產行業將安全生產放在第一位,對于新技術往往持有懷疑態度,寧可犧牲生產效率也要保證生產安全。本文將隨機森林算法運用到傳統生產行業,為傳統行業的生產系統優化提供了一種新的思路,工業化4.0概念的提出,指出了將人工智能和傳統工業相結合方向,隨著機器學習技術的成熟和發展,勢必會被傳統行業所接受,屆時將對行業發展產生不可估量的影響。