宋 潔, 趙雪瑩, 2, 朱玉婷, 梁丹曦, 徐桂芝, 鄧占鋒
(1.全球能源互聯(lián)網(wǎng)研究院有限公司, 北京 102209; 2.清華大學(xué)電機系, 北京 100084)
隨著中國碳中和、碳達峰目標的提出,以光伏、風(fēng)電為代表的可再生能源戰(zhàn)略地位凸顯,電化學(xué)儲能作為支撐可再生能源發(fā)展的關(guān)鍵技術(shù),將迎來行業(yè)的蓬勃發(fā)展。其中鋰離子電池以功率密度、能量密度、循環(huán)壽命和自放電率低等優(yōu)點,成為儲能系統(tǒng)的首要選擇。其短時供應(yīng)電力、電力削峰填谷和能源利用率高等特點,成為儲能行業(yè)的主要能源載體。荷電狀態(tài)(State Of Charge,SOC)估計作為能量管理系統(tǒng)的關(guān)鍵,其準確估計可以保護電池系統(tǒng)運行安全,防止過充或過放影響電池使用安全及壽命,同時為電池組均衡策略控制提供關(guān)鍵參考。
SOC作為不可直接測量的參數(shù),通常定義為可用容量與參考容量的比值[1],表征電池的剩余電量。目前,SOC估算方法主要分為4類。安時積分是一種十分傳統(tǒng)的SOC估算方法[2,3],其計算公式源自SOC的定義[4],具有計算消耗低的優(yōu)點。但是,安時積分需要一個準確的初始SOC值才能保證SOC估算精度;對電流測量精度的要求較高,否則在長時間的使用中會產(chǎn)生較大的累計誤差;而且安時積分沒有修正能力,在實際應(yīng)用中會產(chǎn)生較大的估算誤差。
基于開路電壓(Open-Circuit Voltage, OCV)的方法估算電池SOC[5]因電池OCV是電池SOC的函數(shù)得以實施,不過基于OCV估算SOC在現(xiàn)實中很難應(yīng)用,這是因為OCV需要電池經(jīng)過足夠長的靜置才能測得。同時OCV-SOC的關(guān)系受電池循環(huán)壽命與溫度的影響較大[6],在復(fù)雜的現(xiàn)實情況中難以獲得良好的估算條件與結(jié)果。
基于模型的方法是建立一個準確的電池模型,模擬電池在復(fù)雜工況下的響應(yīng)[7],根據(jù)模型的公式從而直接或間接地估算電池的SOC。模型可分為電化學(xué)模型和等效電路模型。電化學(xué)模型基于復(fù)雜的偏微分方程[8],計算量巨大,不適合在線估計。與之對比,等效電路模型則計算量小,是現(xiàn)在主流的使用方法,通過等效電路模型公式在線估算電池的OCV[9],理想情況下,等效電路模型能準確反映電池在復(fù)雜工況的響應(yīng)。然而,鋰電池系統(tǒng)作為一個強耦合與非線性的系統(tǒng)[10],很難找到一個完美的模型結(jié)構(gòu)能準確等效真實電路,并且在對模型進行參數(shù)辨識時也很難找到一組完美的模型參數(shù)。通常將基于等效電路模型的方法與擴展卡爾曼濾波(Extend Kalman Filter, EKF)的方法結(jié)合使用,然而,EKF使用一階泰勒展開式對非線性系統(tǒng)近似線性化會帶來截斷誤差,造成估計精度的損失,且基于模型的方法不能考慮溫度和老化對電池SOC估計的影響[11]。
與基于模型的方法不同的是,神經(jīng)網(wǎng)絡(luò)方法不需要建立電池模型,而把電池看作一個黑箱模型,通過大量的數(shù)據(jù),訓(xùn)練出一個能反映觀測值如電流、電壓、溫度與電池SOC非線性映射關(guān)系的模型。目前已經(jīng)有許多神經(jīng)網(wǎng)絡(luò)方法估算電池SOC。文獻[12,13]使用支持向量機(Support Vector Machine, SVM)估算SOC。然而,支持向量機所需的計算量巨大,并且泛化能力差。文獻[14]使用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNN)估算SOC,然而SOC估計過程是一個時間序列的問題,DNN忽略了電池SOC與電壓電流歷史信息的關(guān)系。文獻[15,16]使用長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)估算SOC,LSTM雖然能避免循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的梯度消失或爆炸的問題,但是LSTM本身的內(nèi)部參數(shù)過多,不方便訓(xùn)練,且增加了過擬合風(fēng)險[17,18]。
綜上所述,針對基于LSTM預(yù)測模型的不足,本文提出一種基于門控神經(jīng)網(wǎng)絡(luò)(Gated Recurrent Unit,GRU)-Dropout的電池SOC預(yù)測方法。首先GRU[19]簡化了內(nèi)部結(jié)構(gòu),內(nèi)部參數(shù)更少,訓(xùn)練更快,且過擬合風(fēng)險更小,并消除了RNN因為梯度消失或爆炸的問題[18];為了提高模型預(yù)測的泛化能力,避免模型訓(xùn)練時Dropout[20]正則化對模型進行局部優(yōu)化;使用Adam[21]優(yōu)化方法進行模型參數(shù)優(yōu)化;最后通過對該方法進行驗證,結(jié)果表明本文方法具有良好的估算精度。
GRU網(wǎng)絡(luò)在RNN的基礎(chǔ)上引入重置門與更新門,t-1時刻的隱藏層狀態(tài)(hidden state)不直接參與t時刻隱藏層狀態(tài)的計算,而是通過重置門與更新門決定參與下一個時間步計算的信息數(shù)量。通過修改神經(jīng)網(wǎng)絡(luò)中隱藏狀態(tài)的計算方式,解決當時間步數(shù)較大或者時間步數(shù)較小時,RNN的梯度容易消失或者爆炸的問題,從而使GRU更好地捕捉時間序列中時間步距離較大的依賴關(guān)系。GRU網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。
圖1 GRU Cell結(jié)構(gòu)Fig.1 GRU Cell structure
在GRU中,首先計算重置門和更新門,計算公式為:
Rt=sigmoid(XtWXR+Ht-1WHR+bR)
(1)
Zt=sigmoid(XtWXZ+Ht-1WHZ+bZ)
(2)
(3)
式中,WXH為輸入向量的權(quán)重矩陣;bH為候選隱藏層狀態(tài)的偏置;tanh為激活函數(shù),計算公式為:
(4)
(5)
式中,⊙為按元素乘積。
當網(wǎng)絡(luò)的模型變得很復(fù)雜時,權(quán)值衰減就很難應(yīng)對過擬合情況,而Dropout則可以在網(wǎng)絡(luò)很復(fù)雜時抑制過擬合,使模型獲得良好的泛化能力。Dropout是一種在學(xué)習(xí)過程中隨機刪除神經(jīng)元的方法。訓(xùn)練前,先預(yù)設(shè)丟棄概率為p,則每個隱藏層神經(jīng)元有p的概率被清零,有1-p的概率會除以1-p做數(shù)值的縮放。具體來說,隨機變量ξi為0和1的概率分別為p和1-p。使用丟棄法時計算新的隱藏單元h′i為:
(6)
由于
E(ξi)=1-p
(7)
因此
(8)
即Dropout不會改變其輸入的期望值。Dropout工作原理如圖2所示,其中,x為Dropout過程中輸入?yún)?shù),h為Dropout過程中隱藏層參數(shù),o為Dropout過程中輸出參數(shù)。
圖2 Dropout原理示意圖Fig.2 Dropout schematic diagram
在測試時,為了得到確定性的結(jié)果,不使用Dropout。
對于SOC估計,電池管理系統(tǒng)(Battery Management System,BMS)測量的電壓電流數(shù)據(jù)是進行SOC估計的關(guān)鍵參數(shù)。本文中,使用電壓電流作為GRU-Dropout神經(jīng)網(wǎng)絡(luò)的輸入?yún)?shù)。假設(shè)N是數(shù)據(jù)樣本的總數(shù),則網(wǎng)絡(luò)的輸入數(shù)據(jù)集為X={Xi|i=1,…,N},其中,第i個輸入向量為Xi={ψi,t|t=1,…,T},向量ψi,t=(Ii,t,Vi,t)表示在(i-1)L+t時刻測量的電壓電流值。L是序列長度,也就是輸入的窗口大小,輸出數(shù)據(jù)集Y={Yi|i=1,…,N},其中Yi=SOCi,SOCi表示輸入Xi后網(wǎng)絡(luò)計算出的SOC值。X,Y都是張量數(shù)據(jù),其維度分別為(N,L,2)和(N,1,1)。對于輸入數(shù)據(jù)集,其維度的含義為有N個樣本,其中每個樣本包含L個2維向量,并按時間順序依次排列。
本文提出的GRU-Dropout神經(jīng)網(wǎng)絡(luò)估算SOC的工作流程如圖3所示。將樣本Xi輸入到GRU層,GRU層通過學(xué)習(xí)輸入數(shù)據(jù)的時間序列關(guān)系后輸出一個大小為c的向量,其中c為隱藏層的節(jié)點數(shù)。該向量經(jīng)過Dropout層后,經(jīng)過全連接層后計算出Yi=SOCi。為了評估本文提出方法的性能,使用平均絕對誤差(Mean Absolute Error, MAE)、均方根誤差(Root Mean Square Error, RMSE)作為誤差的評價標準。RMSE表征估計的魯棒性,MAE表征估計的準確性。
圖3 GRU-Dropout的SOC估計流程圖Fig.3 Flow chart of GRU-Dropout for SOC estimation
(9)
(10)
為了模擬儲能系統(tǒng)在復(fù)雜工況下的表現(xiàn),使用模擬動態(tài)工況作為儲能電池的動態(tài)功率需求。實驗分為三個階段:充電工步、放電工步、靜置工步。首先,電池以1 C的電流進行恒流充電。當電池電壓達到4.2 V時,切換為恒壓充電,逐漸降低充電電流,當電流降至0.01 C時停止充電,此時電池視作完全充滿電狀態(tài)。經(jīng)過2 h的靜置后,分別使用模擬動態(tài)工況1、工況2、工況3(參考美國環(huán)保署的動態(tài)工況HWFET,US06及UDDS測試方法)對電池進行放電。放電過程中,當電池電壓達到截止電壓2.5 V時停止放電。工況的電流電壓如圖4~圖9所示。數(shù)據(jù)采樣間隔為0.1 s。
圖4 模擬工況1電流Fig.4 Current diagram of working condition 1
圖5 模擬工況1電壓Fig.5 Voltage diagram of working condition 1
圖6 模擬工況2電流Fig.6 Current diagram of working condition 2
圖7 模擬工況2電壓Fig.7 Voltage diagram of working condition 2
圖8 模擬工況3電流Fig.8 Current diagram of working condition 3
圖9 模擬工況3電壓Fig.9 Voltage diagram of working condition 3
為了加快梯度下降并提升網(wǎng)絡(luò)的質(zhì)量,數(shù)據(jù)集X需要在訓(xùn)練之前進行標準化Xnorm。公式如下:
(11)
式中,Xmax與Xmin分別為X中的最大值與最小值。
當數(shù)據(jù)經(jīng)過標準化之后,設(shè)置GRU-Dropout的超參數(shù),包括數(shù)據(jù)長度大小與隱藏層節(jié)點數(shù)。這些超參數(shù)將在實驗部分進行討論。設(shè)置好模型的超參數(shù)后,使用Adam算法[22]作為優(yōu)化器對模型進行訓(xùn)練。Dropout的概率設(shè)置為0.2。使用模擬工況1和模擬工況2對模型進行訓(xùn)練,經(jīng)過1 000輪的訓(xùn)練后,批量大小設(shè)置為128,激活函數(shù)使用Tensorflow框架默認激活函數(shù)。使用模擬工況3對模型進行測試并評估精度。對于不同的電池類型,如磷酸鐵鋰電池,由于電池特性帶來實驗數(shù)據(jù)的差異,需要對模型進行重新訓(xùn)練與測試。
數(shù)據(jù)序列長度表示輸入數(shù)據(jù)的時間窗口大小,其對SOC的估算有重要的影響。本節(jié)討論不同的數(shù)據(jù)長度對SOC估計精度的影響。通過分別設(shè)置數(shù)據(jù)長度L=[20,30,40,50]進行訓(xùn)練,并用MAE和RMSE評價估算的精度。模型在不同的數(shù)據(jù)序列長度下的估算精度見表1。當設(shè)置數(shù)據(jù)序列長度為40時,估算精度最優(yōu),其中MAE為1.38%,RMSE為1.66%,如圖10所示。當數(shù)據(jù)序列長度值設(shè)置較小時,估算精度相對數(shù)據(jù)序列長度設(shè)置為40的估算精度有所下降。當不斷增大數(shù)據(jù)序列長度值時,估算的精度卻沒有明顯的增加,但是訓(xùn)練所需耗時卻明顯增加。例如,當數(shù)據(jù)序列長度為50時,模型的估算精度MAE僅比數(shù)據(jù)序列長度為40時高一點,RMSE還下降了。綜上所述,數(shù)據(jù)長度不是越大越好,而是應(yīng)該設(shè)置為一個合理的值。故4.2節(jié)的實驗將L設(shè)為40。
表1 不同數(shù)據(jù)序列長度的模型誤差Tab.1 Model error of different data sequence lengths
圖10 L=40,c=16時的SOC估計Fig.10 SOC estimation at L=40, c=16
GRU-Dropout節(jié)點數(shù)是隱藏層狀態(tài)的寬度。隱藏層的節(jié)點數(shù)對模型的估算精度有重要的影響。通過設(shè)置c=[16,32,64,128]對模型進行訓(xùn)練,然后評估節(jié)點數(shù)大小對估算精度的影響。c分別為[16,32,64,128]時的SOC估計誤差見表2。模型在設(shè)置不同的節(jié)點數(shù)時的模型SOC估計如圖11~圖13所示。當c為64時,模型的估計精度最優(yōu),MAE與RMSE分別為1.38%與1.67%,體現(xiàn)了GRU-Dropout的估計準確性。當隱藏層節(jié)點數(shù)較小時,如隱藏層節(jié)點數(shù)為16或32時,估算精度較隱藏層節(jié)點數(shù)為64時明顯降低。當設(shè)置隱藏層節(jié)點數(shù)較大時,會增加網(wǎng)絡(luò)的過擬合風(fēng)險。如當設(shè)置隱藏層節(jié)點數(shù)為128時,模型的MAE比隱藏層節(jié)點數(shù)為64時提升0.18%,但是RMSE卻下降了,說明此時已經(jīng)有過擬合的風(fēng)險。
表2 不同網(wǎng)絡(luò)節(jié)點數(shù)的模型誤差Tab.2 Model error of different units
圖11 L=40, c=32時的SOC估計Fig.11 SOC estimation at L=40,c=32
圖12 L=40, c=64時的SOC估計Fig.12 SOC estimation at L=40, c=64
圖13 L=40, c=128時的SOC估計Fig.13 SOC estimation at L=40,c=128
本文提出使用門控單元結(jié)合Dropout的GRU-Dropout神經(jīng)網(wǎng)絡(luò)估計儲能電站荷電狀態(tài)的方法,通過GRU的擬合能力學(xué)習(xí)電壓電流和溫度與SOC的非線性關(guān)系。使用Adam算法作為模型的優(yōu)化器,確保網(wǎng)絡(luò)的訓(xùn)練速度和穩(wěn)定性。與傳統(tǒng)的方法相比,本文提出的方法不需要建模與參數(shù)辨識。與長短期記憶網(wǎng)絡(luò)相比,GRU具有更小的過擬合風(fēng)險,內(nèi)部參數(shù)也比LSTM少,降低了計算復(fù)雜度。為了驗證GRU-Dropout神經(jīng)網(wǎng)絡(luò)的估算效果,使用模擬工況1和模擬工況2進行訓(xùn)練,使用模擬工況3電池數(shù)據(jù)對GRU-Dropout神經(jīng)網(wǎng)絡(luò)進行測試。實驗表明,本文提出的方法能準確地預(yù)測電池的SOC值,最優(yōu)結(jié)果為平均絕對誤差1.38%,均方根誤差1.66%。