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