费 陈,赵 亮,王云恪,王树泉
(武警士官学校 基础部,杭州 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)可根据特征重要性分析结果调整特征量比重,进一步提高估算精度。