費 陳,趙 亮,王云恪,王樹泉
(武警士官學校 基礎部,杭州 311400)
鋰離子電池作為電動汽車的儲能設備,因其具有功率密度高、充電速度快、使用壽命長等特點而被廣泛運用。隨著電池壽命的減少,電池的整體性能下降,表現為容量衰減和內阻增加[1-3],這限制了電池的推廣和使用。因此,準確地對電池SOH(健康狀態)進行估算[4-5],有利于及時對電池進行維護,避免電池的過充電和過放電,延長電池壽命。
SOH定義為電池的當前容量與額定容量之比,可用百分比形式表示。當電池SOH 小于80%時,一般認定該電池已經報廢,無法使用。SOH 的變化具體反映在內阻、容量和其他一些指標的變化上,目前一般通過內阻來對SOH進行監測[6-7]。電阻法通過測量電池的內阻來估算鋰離子電池的SOH,但是易受測量噪聲的影響且高度依賴于測量技術,而且考慮的影響因素較少。也可以通過概率和統計方法來估算SOH[8-10],該方法將數學知識與經驗知識相結合,構建經驗模型或半經驗模型,需要花費大量時間來獲取實驗數據。基于阻抗模型的方法通過繪制阻抗譜與SOH 之間的關系[11-12],根據測量的阻抗譜來估算SOH,這種方法需要全面了解電化學反應機制且成本較高。基于等效電路模型的方法是在電化學的基礎上,利用電化學元器件模擬電池內部化學反應,然后確定模型參數,根據這些模型參數來估算SOH[13-14],這種方法需要建立電路表達式,計算復雜。神經網絡法通過模擬生物神經網絡的行為特征來估算SOH[15-17],但實驗數據的收集和處理較困難。
針對上述方法存在的問題及局限性,本文提出一種基于XGBoost算法的鋰離子電池SOH估算方法。首先利用Matplotlib對鋰離子電池數據進行分析并提取特征量,通過平均電壓、電壓差、電流差和溫度差來描述電池的老化過程。然后,利用XGBoost算法建立估算模型,對SOH進行智能估算。該方法不僅可進行特征重要性分析,還可以保證SOH估算的精確性和可靠性,具有一定的實際應用意義。
XGBoost算法的建模思路為[18-19]:給出一個泛化的目標函數定義,在每一輪迭代中找到一個合適的回歸樹去擬合上次預測的殘差,最小化目標函數,使估算值逼近真實值,如圖1 所示。圖1中:Treek{X,θk}為第k棵樹的預測值;fk(X,θk)為真實值;θk為特征向量。

圖1 XGBoost算法原理
在本文中,定義數據([ΔU1,ΔT1,Uave1],SOH1),([ΔU2,ΔT2,Uave2],SOH2),…,([ΔUi,ΔTi,Uavei],SOHi),i=1,2,…,n,其中ΔUi、ΔTi、Uavei、SOHi分別為第i組數據對應的電壓差、溫度差、平均電壓、SOH值,n為數據總組數。
迭代第t次的回歸樹ft(xi)定義如下:

式中:xi為第i個樣本;wq(x)為葉子權重,其下標q(x)表示樣本x對應的葉子節點,使葉子節點與樣本一一對應;T為樹中葉子節點的個數。
樹的復雜度Ω(ft)定義為:

式中:wj為第j個葉子的權重;γ和λ為控制葉子權重的系數。
目標函數定義為:

將目標函數展開如下:

如圖2所示,XGBoost建模主要包括數據設置和XGBoost估算過程2個步驟。

圖2 模型構建流程
步驟1:預處理數據與設置各種參數,例如eta、max_dept、min_child_weight、seed、colsample_bytree、gamma等。
步驟2:建立訓練集和測試集,并使用XGBoost 算法對SOH 預測模型進行訓練。如果不是最佳參數,則預測值與真實值的誤差較大,需要重置參數,重復上述操作并調整參數,直至獲得最佳參數,建立最優模型。
XGBoost算法構建如表1所示。

表1 XGBoost算法構建
圖3為不同健康狀態下,輸入特征量隨時間的變化曲線[20]。
圖3(a)為不同SOH下,鋰離子電池的電壓變化曲線。隨著SOH 不斷變化,平均電壓Uave也隨之變化。在相同時間間隔內,電壓差ΔU隨著SOH 的降低而增加。因此,平均電壓Uave和電壓差ΔU可以用來描述電池在放電過程中的老化特性。
圖3(b)為不同SOH下,鋰離子電池的溫度變化曲線。隨著SOH的降低,相同時間間隔內,溫度差ΔT不斷增大。因此,溫度差ΔT可以用來描述電池在放電過程中的老化特性。
圖3(c)為不同SOH 下,鋰離子電池的SOC(荷電狀態)變化曲線。SOC隨著SOH的增加而增加,但是SOC一般不作為預測SOH的特征量,通常會根據SOH對SOC進行校正。
圖3(d)為不同SOH下,鋰離子電池的電流變化曲線。電流不隨SOH的變化而變化,因此電流不能用來描述電池在放電過程中的老化特性。

圖3 特征變化曲線
綜上所述,相同時間間隔內的電壓差、溫度差、平均電壓可以用來描述電池在放電過程中的老化特性,故將電壓差、溫度差、平均電壓作為估算SOH的特征輸入。
基于XGBoost 算法的SOH 估算模型如圖4 所示,主要分為特征選擇、XGBoost模型建立、XGBoost估算3個部分。首先,從NASA數據集中提取特征輸入,將電壓差、溫度差和平均電壓作為特征輸入描述鋰離子電池的放電過程;然后將數據集分為訓練集和測試集,訓練集用于XGBoost模型建立和XGBoost 模型訓練,測試集用于對鋰離子電池的SOH進行估算,檢驗XGBoost模型。

圖4 基于XGBoost算法的SOH估算模型
實驗中使用的數據來自NASA Ames 研究中心。在穩態放電條件下,通過3 種不同的操作(充電、放電、阻抗)獲得4 組鋰離子電池(B0005、B0006、B0007、B0018)的數據集。
B0005 和B0006 的放電數據(電壓、電流、溫度、SOH)如圖5所示。

圖5 B0005和B0006放電數據
為了驗證XGBoost算法在SOH估算上的普遍性,將XGBoost 模型中的參數設置為最常見的參數,學習率設置為0.2,最小葉子權重設置為1,樹的深度設置為3,實驗結果表明該模型收斂。
為了更進一步證明XGBoost算法在對SOH進行估算時具有普遍適應性,而不是針對某一類特定數據集才具有更高的估算精度,隨機劃分訓練集和測試集并進行兩組實驗:一組將B0006 和B0007 的放電數據作為訓練集用于模型的訓練,將B0005 的放電數據作為測試集用于測試模型的性能;另一組將B0005 和B0007 的放電數據作為訓練集用于模型的訓練,將B0006 的放電數據作為測試集用于測試模型的性能。
誤差評估指標選擇MAE(平均絕對誤差)、RMSPE(均方根百分比誤差)、ME(最大估算誤差),各指標計算公式為:

式中:eMAE、eRMSPE、eME分別為MAE、RMSPE、ME 的值;ypredict為預測值;ytrue為實際值;N為數據總數。
上述3項技術指標的值越低,說明模型擬合的結果越好。
為了驗證基于XGBoost 算法的鋰離子電池SOH 估算方法的準確性,將預測結果與LR(線性回歸)、RF(隨機森林)、SVM(支持向量機)、KNN(K 近鄰算法)這4 種回歸算法的預測結果進行比較。圖6、圖7 分別為數據集B0005 和B0006上的SOH預測結果。

圖6 B0005預測結果
圖6 的預測結果表明:在B0005 數據集上,LR、SVM、KNN的估算結果與真實值相差較大;在后期估算中XGBoost和RF的結果比較接近,但在前期估算中XGBoost的精度更高。
圖7 的預測結果表明:在B0006 數據集上,XGBoost的估算值比其他4種回歸算法更加接近真實值,估算精度更高。
各預測方法的殘差曲線對比如圖8所示。從圖8(a)可以看出:在B0005 數據集上,在后期估算中,XGBoost 和RF 的殘差曲線在0 附近波動;但在前期估算中,RF的殘差曲線波動范圍較大,所以RF在前期估算中并不準確。
從圖8(b)可以看出:在B0006 數據集上,其他4 種回歸算法所產生的殘差曲線波動范圍較大,而XGBoost的殘差曲線在0附近波動。
各方法的B0005 和B0006 電池數據集預測誤差指標對比如圖9所示。可以看出,無論在數據集B0005還是數據集B0006上,XGBoost具有更高的估算精度,ME 控制在±0.4%左右。在3 個誤差指標中,XGBoost均優于其他4種算法。

圖9 各預測方法的誤差指標對比
特征重要性分析如圖10 所示,貢獻最大是平均電壓,其次是溫度差,而電壓差最小。因此在估算過程中,可以根據特征重要性等級,增加或減少某個特征量比重,提高特征數據準確性,進一步提高估算精度。

圖10 特征重要性分析
本文提出一種基于XGBoost 算法的鋰離子電池SOH估算方法,研究成果如下:
1)通過數據分析對鋰離子電池數據進行分析并提取特征量,通過平均電壓、電壓差、溫度差來描述電池老化過程。
2)建立XGBoost模型,得到具有魯棒性的SOH估算值。與LR、RF、SVM、KNN 這4 種回歸算法相比,XGBoost 算法的預測精度最高,可以將ME 控制在±0.4%左右,并且具有較高的泛化能力和普遍適用性。
3)可根據特征重要性分析結果調整特征量比重,進一步提高估算精度。