鄭永飛 文懷興* 韓 昉 楊 鑫 張 晶
1(陜西科技大學(xué)機(jī)電工程學(xué)院 陜西 西安 710021)2(西安冠通數(shù)源電子有限公司 陜西 西安 710065)3(西安應(yīng)用光學(xué)研究所 陜西 西安 710065)
動力電池作為電動汽車的關(guān)鍵部件,承擔(dān)著車輛運(yùn)行過程中能量存儲和釋放的重任。荷電狀態(tài)SOC是車載電池管理系統(tǒng)中的一個重要監(jiān)測參數(shù),對其精確估算可避免電池產(chǎn)生過充過放現(xiàn)象,提高電池的使用壽命和效率[1],同時也可以給整車控制器提供參考,以便合理分配能量[2]。SOC數(shù)值無法通過直接測量的方法獲得[3],只能間接通過對電池的特征參數(shù)進(jìn)行分析處理來獲得,但電池在使用過程中的溫度、電壓、電流、內(nèi)阻等特征參數(shù)具有高度的非線性特性,使得準(zhǔn)確估算SOC具有較大的難度。
現(xiàn)階段成熟使用的方法主要是通過檢測電池特征參數(shù)如電壓、電流、內(nèi)阻、充放電倍率等[4-8],并以此建立模型進(jìn)行SOC估算,估算精度的高低在很大程度上取決于建立的模型精度,并且使用傳統(tǒng)的數(shù)學(xué)方法建立電池模型非常困難,可靠性較低[9]。
神經(jīng)網(wǎng)絡(luò)能夠逼近任何非線性,具有強(qiáng)大的處理非線性的能力,能夠快速、高精度地估算電池SOC[10]。但傳統(tǒng)的BP算法容易陷入局部最小點(diǎn)而不是全局最小點(diǎn)[11],且在實(shí)際使用中容易產(chǎn)生梯度消失和爆炸等問題,同時不能夠很好地利用電池特征參數(shù)在時間序列上變化前后之間的關(guān)系,存在一定的局限性。LSTM是一種遞歸神經(jīng)網(wǎng)絡(luò),屬于深度學(xué)習(xí)范疇,對于處理時間序列數(shù)據(jù)具有強(qiáng)大的建模和分析能力,可用來處理與時間序列高度相關(guān)的問題[12]。
針對動力電池SOC的長期依賴及時間序列的特性,本文設(shè)計了一種基于LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測模型,并在MATLAB中搭建LSTM網(wǎng)絡(luò)進(jìn)行仿真驗證。該方法能夠有效解決傳統(tǒng)神經(jīng)網(wǎng)絡(luò)容易陷入局部最小值以及梯度消失、爆炸等問題,并與BP、PSO-BP等現(xiàn)有算法進(jìn)行了比較分析,驗證了本方法的適用性和估算精度。
BP神經(jīng)網(wǎng)絡(luò)具有較強(qiáng)的學(xué)習(xí)能力和非線性逼近能力,但也存在缺陷,如在訓(xùn)練過程中容易產(chǎn)生過擬合以及陷入局部最小值等現(xiàn)象。此外,使用前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測時,沒有對歷史信息進(jìn)行記憶和使用,未能解決時間序列數(shù)據(jù)所具有的長期依賴特性以及上下文相關(guān)聯(lián)的問題。
隨著神經(jīng)網(wǎng)絡(luò)不斷發(fā)展,形成了循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)。RNN內(nèi)部含有循環(huán)結(jié)構(gòu),這種結(jié)構(gòu)使得上一時刻隱藏層的狀態(tài)數(shù)據(jù)和當(dāng)前時刻輸入的數(shù)據(jù)共同形成新的輸入數(shù)據(jù),結(jié)構(gòu)原理如圖1所示。RNN可以保存歷史信息并將其運(yùn)用到當(dāng)前的預(yù)測任務(wù)上,并隨著新數(shù)據(jù)的輸入而一直更新,能較好地解決時間序列的長期依賴問題。然而RNN在實(shí)際使用中,梯度爆炸或消失現(xiàn)象時有發(fā)生,從而影響了RNN預(yù)測的精度。
圖1 RNN結(jié)構(gòu)原理圖
為了解決上述RNN的問題,在RNN神經(jīng)網(wǎng)絡(luò)的隱藏層引入LSTM細(xì)胞結(jié)構(gòu)單元取代原來的隱藏層單元,形成LSTM神經(jīng)網(wǎng)絡(luò)模型,結(jié)構(gòu)如圖2所示。細(xì)胞狀態(tài)貫穿于整個網(wǎng)絡(luò),是LSTM的核心,在工作過程中只需進(jìn)行少量的線性計算,就可以在長期的傳播過程中使梯度信息保持穩(wěn)定。
圖2 LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)原理圖
LSTM網(wǎng)絡(luò)具有三種門結(jié)構(gòu),分別是輸入門、遺忘門和輸出門,這些門通常由一個Sigmoid神經(jīng)網(wǎng)絡(luò)層和逐點(diǎn)乘積操作組成,用來處理細(xì)胞狀態(tài)中的信息。其中刪除不需要的歷史信息由遺忘門完成,當(dāng)前輸入數(shù)據(jù)對記憶單元狀態(tài)的影響由輸入門決定,輸出信息由輸出門決定。當(dāng)打開門時(Sigmod輸出為1時),可以通過一切信息;當(dāng)關(guān)上門時(Sigmod輸出為0),拒絕一切信息通過。LSTM通過增加以上三種門限,使得自循環(huán)的權(quán)重始終處于動態(tài)變化,可保證模型參數(shù)在不變的條件下,不同時刻的積分尺度發(fā)生動態(tài)改變,從而解決RNN存在的梯度問題。
以下公式中,tanh、σ表示激活函數(shù),t時刻對應(yīng)的輸入門、遺忘門、輸出門三種門結(jié)構(gòu)和細(xì)胞狀態(tài)分別由it、ft、ot和ct表示,對應(yīng)的權(quán)值矩陣分別由Wi、Wf、Wo和Wc表示,各門狀態(tài)的偏置分別由bi、bf、bo和bc表示。
(1) 由遺忘門的Sigmoid層決定,對細(xì)胞狀態(tài)中的部分信息進(jìn)行遺忘。以上一層的輸出數(shù)據(jù)ht-1和此刻的輸入數(shù)據(jù)xt作為新的輸入,得到細(xì)胞狀態(tài)在t-1時刻的輸出:
it=σ(Wiht-1+Wixt+bi)
(1)
(2) 將信息存儲在細(xì)胞狀態(tài)中,主要由以下步驟完成:首先把輸入門中Sigmoid層的結(jié)果it作為將更新的信息;接著由tanh層創(chuàng)建新向量ct并增加到細(xì)胞狀態(tài)中;最后將ft與舊的細(xì)胞狀態(tài)ct-1相乘完成信息遺忘功能,并加上候選信息itct的值,使細(xì)胞狀態(tài)更新。
ft=σ(Wfht-1+Wfxt+bf)
(2)
ct=ftct-1+ittanh(Wcht-1+Wcxt+bc)
(3)
(3) 使用Sigmoid層對細(xì)胞狀態(tài)進(jìn)行處理,選擇要輸出的部分信息,再用tanh進(jìn)行處理,將得到的兩部分信息相乘便可得到輸出值。
ot=σ(Woht-1+Woxt+bo)
(4)
由上可得t時刻LSTM的輸出信號為:
ht=ottanh(ct)
(5)
電動汽車在實(shí)際的行駛過程中會面臨各種不同的工況,同時還存在著各種不確定因素,因此在搭建預(yù)測模型前訓(xùn)練特征的提取非常關(guān)鍵,在能夠較好地反映動力電池實(shí)際工作狀態(tài)的同時數(shù)據(jù)還要易于獲得。電池內(nèi)部各種參數(shù)如內(nèi)阻、電解溶液濃度變化等的測量往往需要建立精確的模型或者使用大型儀器才能測得,且需要在靜態(tài)時才可以獲得,不適用于實(shí)際工作條件。而電池在工作過程中的電壓、電流、溫度等參數(shù),借助于電池管理系統(tǒng),可以獲得較為精確的數(shù)值,且這些參數(shù)可直接體現(xiàn)電池的工作狀態(tài),在SOC估算中能夠起到重要作用,因此本文選擇電壓、電流、溫度作為模型的輸入特征,以增強(qiáng)算法的適用性和實(shí)用性。
本文建立的基于LSTM動力電池SOC預(yù)測模型主要由輸入層、隱藏層和輸出層組成,基本結(jié)構(gòu)如圖3所示,其中X表示輸入特征,Y表示輸出特征。
圖3 基于LSTM的動力電池SOC預(yù)測模型
輸入層主要實(shí)現(xiàn)數(shù)據(jù)預(yù)處理、數(shù)據(jù)集劃分等;在輸出層中,使用訓(xùn)練好的LSTM模型計算預(yù)測獲得的輸出數(shù)據(jù),并對預(yù)測得到的數(shù)據(jù)進(jìn)行反標(biāo)準(zhǔn)化等處理。在時間維度方向上,LSTM模型所包含的隱藏層展開即可形成深度學(xué)習(xí)網(wǎng)絡(luò),自動挖掘SOC的數(shù)值變化趨勢與這些影響因素之間的內(nèi)在關(guān)系,實(shí)現(xiàn)動力電池SOC的預(yù)測。
選用32650磷酸鐵鋰動力電池進(jìn)行倍率放電實(shí)驗,額定容量為6 Ah,標(biāo)稱電壓為3.2 V,終止充電電壓為3.65 V,終止放電壓為2.5 V。充電過程中首先使用恒流0.5 C開始充電,當(dāng)電池兩端電壓達(dá)到3.65 V時,變?yōu)楹銐豪^續(xù)充電,電流逐漸變小到20 mA時,整個充電過程結(jié)束。放電過程分別以0.2、0.5、1、2、3 C進(jìn)行,直到電池電壓下降到2.5 V時結(jié)束放電過程。循環(huán)進(jìn)行以上實(shí)驗,并定期記錄電池的電壓、電流、溫度、能量、功率等參數(shù),圖4為不同倍率下的放電容量變化。根據(jù)實(shí)驗獲得的數(shù)據(jù),選取2 290組作為本文的實(shí)驗數(shù)據(jù),其中1 990組為訓(xùn)練數(shù)據(jù),300組為測試數(shù)據(jù),根據(jù)以上數(shù)據(jù)在MATLAB 2018a中搭建模型進(jìn)行實(shí)驗驗證。
圖4 不同倍率下的放電實(shí)驗
根據(jù)建立的LSTM模型,在MATLAB中進(jìn)行仿真驗證。通過多次實(shí)驗,本文最終將隱藏層設(shè)置為150層,每層的隱藏節(jié)點(diǎn)設(shè)置為128個,訓(xùn)練次數(shù)設(shè)置為2 500次,學(xué)習(xí)率設(shè)置為0.01,將dropout設(shè)置為0.5用來抑制過擬合,優(yōu)化方法采用Adam,參數(shù)設(shè)置完成后,進(jìn)行模型訓(xùn)練。訓(xùn)練結(jié)束后,利用訓(xùn)練好的LSTM深度神經(jīng)網(wǎng)絡(luò)模型,輸入測試樣本進(jìn)行SOC預(yù)測。
在MATLAB中編寫程序進(jìn)行實(shí)驗驗證。將預(yù)測得到的SOC曲線和對應(yīng)的參考值曲線進(jìn)行比較,并作出誤差曲線圖,分析LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測精度和收斂情況,實(shí)驗結(jié)果如圖5、圖6所示。由圖5可見,本文設(shè)計的LSTM神經(jīng)網(wǎng)絡(luò)模型表現(xiàn)出了較好的預(yù)測性能以及適用性,能夠很好地預(yù)測SOC的變化趨勢。
圖5 LSTM模型預(yù)測結(jié)果比較
由圖6可知,LSTM模型預(yù)測誤差整體保持在2%以內(nèi),且誤差變化主要集中在1.5%以內(nèi),表現(xiàn)出了較高的預(yù)測精度,可以很好地滿足SOC的估算要求。
圖6 誤差變化曲線
為了進(jìn)一步體現(xiàn)本文方法的優(yōu)越性能,在MATLAB中分別搭建BP、PSO-BP算法模型,將各種算法的預(yù)測結(jié)果與誤差進(jìn)行比較分析,選擇均方根誤差(RMSE)、平均絕對誤差(MAE)和平均絕對百分比誤差(MAPE)作為模型精度度量標(biāo)準(zhǔn)。計算公式如下:
(6)
(7)
(8)
式中:Xt和Yt分別表示t時刻電池SOC的觀測值和模型預(yù)測的輸出值;N為預(yù)測樣本數(shù)。RMSE、MAE、MAPE值越小則表示模型精度越高,適用性越好。
預(yù)測結(jié)果如圖7、圖8和表1所示。由圖7、圖8可知,本文設(shè)計的LSTM預(yù)測模型明顯較其他幾種算法性能更加優(yōu)越,預(yù)測效果更好,精度更高。從表1可以看出,本文方法誤差更小,性能更優(yōu)。
圖7 不同算法的SOC預(yù)測結(jié)果比較
圖8 不同算法的SOC預(yù)測誤差比較
表1 不同算法的預(yù)測性能比較
預(yù)測算法RSMEMAEMAPELSTM0.008 400.008 1220.016 760PSO-BP0.037 160.036 3090.079 465BP0.040 000.039 2930.084 094
本文將深度學(xué)習(xí)應(yīng)用于SOC的估算中,針對傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)算法無法較好利用歷史信息,難以實(shí)現(xiàn)信息的長期記憶傳輸?shù)葐栴},利用深度神經(jīng)網(wǎng)絡(luò)LSTM優(yōu)越的時間序列數(shù)據(jù)處理能力,提出了一種動力電池SOC預(yù)測方法。將易于獲得參考值的電池外特征參數(shù)如電壓、電流等作為訓(xùn)練輸入,降低了預(yù)測過程中電池參數(shù)的獲取難度,增強(qiáng)了實(shí)際可操作性。由實(shí)驗驗證以及與其他算法的比較可知,本文設(shè)計的LSTM預(yù)測模型結(jié)構(gòu)簡單,性能優(yōu)越,預(yù)測誤差保持在2%以內(nèi),能夠較好地完成SOC的估算。