谢奕展,程夕明
(北京理工大学机械与车辆学院,电动车辆国家工程试验室,北京100081)
锂离子电池高能量密度和低成本技术的快速发展促进了电动汽车的市场化步伐,而电池管理系统的基本功能之一,是对电池的诸多状态进行准确的估计,包括电池的荷电状态SOC、健康状态SOH和剩余使用寿命RUL[1-2]。
目前,蓄电池的SOC估计、SOH估计和RUL预测的方法主要有基于模型的方法和数据驱动方法两类。基于模型的SOC估计方法有安时积分法[3]、开路电压法[4]和等效电路模型法[5]等。累积误差、长时间静置和等效电路模型参数非线性时变等问题使基于模型的电池状态估计方法的应用受到限制。基于模型的SOH估算方法有实验测量法[6-7]、差分法[8]、等效电路模型[9]和电化学模型[10]等。其中,实验测量法直接对电池容量、内阻和阻抗谱进行测量,这些参数测量的车载条件稳定性差,缺乏可比性。差分法建立蓄电池的容量电压微分曲线峰值与SOH的函数关系,要求测量数据的电流倍率小,易受噪声污染。等效电路模型法通过参数辨识方法建立模型参数与SOH的映射关系,其普适性尚待研究。基于模型的RUL预测有衰减模型法[11]、等效电路模型法[12]等。其中,衰减模型法通过寻找温度、充放电倍率、充放电深度等因素与电池的SOH之间的函数关系,建立电池的容量衰减曲线与循环工况参数的数学表达式,该方法需要大量的蓄电池老化实验,对于在特定条件应用的蓄电池具有一定的可行性。基于电路模型的方法则是通过分析已估算的电池SOH的变化趋势,预测电池RUL。以上两种方法依赖电池SOH估计的可靠性。
锂离子电池是一种高度非线性时变的电化学系统,其内部状态受到SOC、温度、倍率、外力和时间等外部因素的耦合影响,且一个封闭环境的运行状态不易通过外部仪器观测。尽管基于模型的方法具有较为明确的物理意义,但是对高度非线性时变、强耦合和时间跨度大的锂离子电池建模将十分复杂而耗时、专业性强,而且模型的可靠性需要电池行为持续性数据的支持。
电池状态估计的机器学习方法是指采用机器学习算法估计电池状态的数据驱动方法。它具有由于其强大的非线性映射能力,如单层神经网络和径向基神经网络均能以任意精度逼近任意函数[13-14]。本文中将锂离子电池视为一种黑箱系统,运用如RVM、GP、神经网络等机器学习算法,自适应建立蓄电池的电流、电压、温度等可测量数据与其状态SOC、SOH、RUL之间的函数关系[15-18],无需对蓄电池复杂机理的理解,将主要工作聚焦于对象的数据处理,扩大了从业人员的专业范围,备受业界关注。
机器学习方法旨在建立系统的输入与输出的映射关系。将用于锂离子电池状态预测与估计的系统描述为由离散的状态方程和观测方程组成的表达式,记为
式中:xk为系统中间状态量;zk为系统观测量;uk为系统输入量;wk、vk分别为过程噪声和观测噪声。
机器学习算法旨在习得系统状态函数f和观测函数h,而噪声wk和vk既可作为已知量,也可作为未知量。系统输入uk通常为蓄电池的温度、电流或电压,zk则通常表示蓄电池的状态如SOC、SOH和RUL等。对式(1)和式(2)简化或扩充,便可建立各种机器学习算法的函数表达式。
用于锂离子电池SOC估计的算法旨在建立温度、电流、电压与SOC的映射关系,既可以是递归算法也可以是非递归算法。记k时刻的电流、电压、温度、SOC分 别 为Ik、Uk、Tk、SOCk。记D={(u1,z1),(u2,z2),…,(uk,zk),…,(uN,zN)}为 整 个 数 据集,那么系统的输入uk=[Ik,Uk,Tk],系统的输出zk=SOCk。
递归算法旨在寻找输入序列{uk}与输出序列{zk}的映射关系,而非递归算法则是求得点uk与点zk的一一映射关系。无论是SVR[19]、BPNN[20]、ELM[21]、MLP[22]和CNN[23]等非递归算法,还是Elman NN[24]、NARXNN[25-26]、LSTM⁃RNN[27]等递归算法,都能准确估计电池SOC。它们着重研究数据集划分[20,23,27-30]、超参数优化[21,24-26,31]、模型训练加速[32]、求解器性能比较[22]、滤波器融合[33-35]和学习算法融合[36-37]等。
其中,滤波器融合算法将基于模型的滤波器与机器学习算法融合,提高SOC估计精度,例如基于1阶RC等效电路模型的EKF和BPNN融合算法。由于BPNN有效补偿了EKF在动态工况的SOC估计误差,使相应的RMSE从3.43%减小到0.83%[33]。
融合多种学习算法也能够提高数据驱动方法的电池SOC估计性能。例如,文献[37]中将增量学习应用于RVM,前一个RVM的相关向量与后一个训练样本训练新的RVM,如此重复进行,每次仅保存相关向量,而摒弃了其它数据,减少了存储空间,其预测效果与总数据集训练的RVM相比,SOC预测精度相近。
蓄电池SOH估计与SOC估计的不同之处在于SOH是一个长期状态,在几个循环周期内,可以假定其保持不变,这意味着估计SOH的数据驱动算法的数据比SOC更多而复杂。通常情况下,锂离子电池采用稳定的恒流-恒压两段式充电,不同SOH的蓄电池充电电压变化曲线能够呈现出明显的差异性[38],因此SOH估计算法的输入量常由蓄电池的充电数据生成。
蓄电池SOC估计采用点对点的数据计算,而SOH估计则为曲线或者面对点的数据计算。SOH的输入量提取通常有两种处理方法,第1种将充电数据整体作为模型的输入,第2种方法以提取充电曲线的特征数据作为模型的输入。因此,蓄电池SOH与SOC估计方法的主要不同之处体现在数据驱动算法的输入处理方法在数据时间、数据量和数据行为存在明显的差异。
非 递 归 算 法SVR[39]、RVM[40]、BPNN[41-42]、ELM[43]、MLP[44-45]、CNN[46]、ANFIS[47]和 递 归 算 法LSTM-RNN[48]都已应用于电池SOH的估计,并侧重于健康因子选择[39-40,49]、网络训练加速[42,45-46,48]和算法融合[50-52]等方面研究。其中,平均放电电压、平均放电温度、充电平均电压、充电平均电流、充电平均温度和等效电路模型参数等都可作为电池SOH估计模型的健康因子。对于算法训练,自编码器常用来降低数据维度,减少算法训练时间[42,50]。
多个机器学习算法融合用来增强电池SOH估计性能。例如,文献[51]中以多组容量衰减电池的特定区间电量变化为健康因子,输入RF算法,输出相应的SOH,其中模型融合了500个决策树。相比GP,RF算法的SOH估计RMSE和运行时间分别减小了约15%和90%。文献[52]中利用一个大型数据集训练CNN估计SOH,生成模型参数。然后,在另一个小型数据集上继续训练旧模型参数,结果表明重新训练的CNN比原CNN的SOH估计RMSE减小0.6%。
基于SOH估计,电池的RUL预测是由历史容量衰减规律性预测电池将来容量的变化。当预测的容量到达EOL时,对应的循环次数减去当前已循环的次数即为RUL,因此RUL预测和SOH预测可被划分为蓄电池状态估计的同一类问题。RUL预测方法通常有两类:第1类是以前半段容量衰减数据作为估计算法的训练集;第2类是以SOH估计方法估计前半段循环容量,然后根据估计的前半段循环容量数据作为训练集,用第1类方法同时预测SOH和RUL。
递 归 算 法LSTM⁃RNN[53]、GRU⁃RNN[54]、NARXNN[55]和 非 递 归 算 法SVR[56]、LSSVM[57]、RVM[58]、GP[59]、RBFNN[60]、MLP[61]、CNN[62]等都已应用于构建电池容量衰减模型,预测电池RUL,侧重于数据集划分[56]、数据增强[57]、超参数优化[58-60]、输入变量选择[55,59,62]、模型融合[60-61]和集成学习[63-64]。
将滤波器与机器学习融合可增强电池RUL预测的可靠性。例如,文献[60]中以双指数模型作为UKF的观测方程预测RUL,然后以RBFNN补偿UKF的预测误差,与仅采用UKF算法相比,融合算法的电池RUL预测结果少了4个循环。集成学习也能改善电池RUL预测的性能。例如,bagging方法比boosting方法有更高的RUL估计精度,且对数据的离群点不敏感[63]。
基于机器学习的数据驱动方法实施过程包括数据准备、模型选择与评价、超参数确定、数据预处理和模型训练等5个环节,这些环节都影响到电池状态估计模型的性能。
机器学习算法的状态估计效果依赖于训练数据,训练数据与实车电池工况越相似,则数据驱动算法输出的结果越可靠。因此,电池实验应能够反映车辆行驶工况的环境温度和电流的随机复杂性,然而诸如世界轻型车行驶工况(WLTC)[65]和新欧洲循环工况(NEDC)[66]等典型行车工况仅反映了车速-时间关系。依据工况车速,利用车辆动力学关系计算行车功率,由模型电压可计算实验电池的充放电倍率[67]。
电池容量衰减测试是SOC估计、SOH估计和RUL预测可靠性验证的前提条件,然而相应电池充放电循环上百千次,实验时间长,比如电池容量衰减实验持续了56周[68]。因此,许多文献利用已有的电池数据集验证其算法性能,比如NASA PCoE Battery Dataset[69]、NASA Randomized Battery Usage Dataset[70]、CALCE Battery Datasets[71]、Stanford Cycle Life Prediction Dataset[72]、Standford Fast-Charging Optimization Dataset[73]、Oxford Battery Degradation Dataset[74]和Panasonic 18650PF Li-ion Battery Dataset[75]等。
为了解决数据驱动算法的大量数据需求而成本过高问题,文献[76]中利用一种生成对抗式神经网络GAN⁃CLS创建数据,并用于训练LSTM⁃RNN估计SOC,相应的估计均方误差小于0.002 5,且比实验采集数据的方法快50倍。
模型的选择应综合考虑拟合精度、成本和鲁棒性。模型的拟合精度,要求电池状态估计与预测的误差小和置信区间小。模型实施成本可分为训练成本和测试成本,前者指模型利用训练集得到满意结果而耗费的成本,如训练时间和训练设备等;测试成本指模型训练的实际应用成本,例如计算速度、内存大小、程序移植所需成本等。算法的鲁棒性指模型能够在数据存在噪声或异常值等情况下仍能够取得较高的精度,或者对训练数据外的数据仍能保持较高的精度[77]。
2.2.1 评价指标
模型评价指标常由均方误差、均方根误差、绝对误差、平均绝对误差和平均绝对百分比误差等表示,这些指标越小,模型的性能越好。然而,它们应结合真实值的取值范围进行评价。假设yˉ落在某个区间的概率为p,则该区间称为p置信区间,如常用的95%置信区间表示yˉ落在该区间的概率为95%。yˉ落在包含y的置信区间越小,模型性能越好[29]。而决定系数(R squared,R2)[78]是衡量模型拟合程度的无量纲指标,取值范围为-∞~1,越接近于1,表明模型的拟合效果越好。记y为真实值,yˉ、ŷi分别为平均值和估计值,n为样本数,相应表达式为
2.2.2 精度
一般而言,数据驱动算法在理论上都能够映射任意函数,但是算法实现的前提是系统输入与输出确实存在函数关系,能够找到相应的具体实现。函数关系的存在与否关键在于数据输入特征的选择,例如不同数据特征使模型估计电池SOH的效果不同。算法实现则取决于数据和模型求解方法,例如RUL估计的训练数据包含的循环数越多,预测精度越高[78]。算法除了提供点估计外,还应提供置信区间估计。目前,仅有少数算法如RVM和GP等能提供置信区间估计。为此,可通过蒙特卡罗算法为模型结果添加区间估计[79]。
机器学习模型的精度会有所区别,例如LSTM⁃RNN、GRU RNN、Elman NN等递归算法的估计和预测精度略高于RVM、SVR、GP、BPNN等非递归算法;LSTM⁃RNN、GRU⁃RNN、CNN等深度学习网络具有比传统机器学习算法更高的估计精度。
2.2.3 实施成本
传统机器学习方法由于其固有缺陷,如需要矩阵求逆、支持向量随着数据增长而增长,导致训练和测试成本大幅升高,存在大规模数据的适应性问题。深度学习算法如LSTM⁃RNN、GRU⁃RNN、CNN等的训练过程需要显卡进行辅助计算[23,52],训练时间长,导致训练成本上升。
实际算法必须嵌入硬件运行,因此必须考虑算法的运行时间和内存占用等因素对系统成本的影响。基于NASA和Oxford两个数据集,文献[80]中比较了不同算法估计SOH的训练时间和内存需求,结果表明:GRU⁃RNN的训练时间分别是GP和SVR的70~130倍和4~5倍,而CNN的训练时间则是GP的6~10倍。对于算法的测试时间,SVR<GP<GRU⁃RNN<CNN。文献[46]中使用CNN和RVM两个算法估计SOH,结果表明CNN的训练时间是RVM的7.6倍,但RVM的测试时间是CNN的9.8倍,而且RVM的内存需求是CNN的139.1倍。对于SOC估计的算法运行成本,文献[51]中的研究结果表明RF的测试时间是GP的10倍以上,文献[25]的研究结果表明PSO优化中NARXNN的训练时间和测试时间仅为BPNN的20%左右,文献[23]的研究结果表明GRU⁃RNN、LSTM⁃RNN和CNN算法的运算时间相当,约为1.4 s。然而,LSTM⁃RNN和GRU⁃RNN的每秒浮点运算次数为CNN的1.75倍,说明前两者需占用更多内存才能运行。
2.2.4 鲁棒性
鲁棒性表示算法对电池运行数据的噪声、异常值、测试数据与训练数据的分布不尽相同等情况的适应能力。电池状态估计算法的鲁棒性包括叠加噪声的测试数据的算法性能评估[81]和同批次电池的实验数据检验[61]两种。
递归机器学习算法的鲁棒性要求更高,原因在于递归算法的一部分输入来自于上一步的输出,可能导致算法误差的累积效应,致使算法丧失鲁棒性。然而,不同算法的误差累积效应严重程度不同,例如文献[26]中比较了LSTM⁃RNN和NARXNN的SOC估计性能,使用试错法确定两者的最优参数,两者均表现出估计值累积误差,但NARXNN比LSTM⁃RNN更严重。解决递归算法的误差累积问题的途径之一是应用传统滤波器进行算法定时校正,例如构建卡尔曼滤波器和机器学习的融合算法,以安时积分法和GRU⁃RNN分别作为SOC估算结果的状态方程和观测方程,结果显示该方法能够校正GRU⁃RNN的累积误差[35]。
影响机器学习算法性能的关键因素之一是超参数。与径向基核函数和多项式核函数相比,一种混合核函数的LSSVM估计SOH的RMSE值小0.1%~0.2%[82]。但算法的最优超参数值却与训练数据密切相关。例如,使用回溯搜索优化算法(backtracking search optimization algorithm,BSA)估计SOC的RBFNN和ELM的隐藏层节点数,不同温度和工况的数据驱动的网络隐含层节点数各不相同,最大相差1.5~2倍[20]。
超参数可采用试错法、经验法或优化算法等来确定。例如,由试错法确定CNN卷积层层数[46]和NARXNN的输入延时阶数和反馈延时阶数[26],由经验法确定BPNN的隐层节点数[83]。
超参数的优化算法种类多,例如PSO算法用来优化RVM核函数加权系数和内部参数[40],量子粒子群算法(quantum⁃behaved particle swarm optimization algorithm,QPSO)算法用来优化多核RVM核函数加权系数[58],ACO优化Elman NN隐层节点数[24]、BSA优化BPNN隐层节点数[20]、k折交叉验证法用于优化最小二乘支持向量机的超参数[28],贝叶斯优化算法用于SVR超参数寻优[84],梯度下降法确定高斯过程超参数最优值[85]。不同的优化算法得到的超参数对算法的效果不同,例如由GA优化的SVR比交叉验证法网格寻优的SOC预测精度提高了0.3%~0.9%[84]。注意,超参数优化会增加算法的复杂度和计算负担。
常规数据预处理方法包括数据缺失与重复处理、滤波、重采样、特征选择、特征缩放和数据集划分等。滤波主要是为了滤除数据噪声,数据的重采样是为了选择有效数据[80,86]。特征缩放是指采用归一化、标准化和中心化等方法处理数据,用于消除不同特征数值范围的差异[87-88]。此外,为了防止算法过拟合,数据往往叠加高斯噪声,增加样本数据的随机性[80,57]。
2.4.1 RUL预测数据预处理
RUL是通过预测电池容量,再依据电池容量衰减曲线而获得的。就趋势而言,锂离子电池容量随着充放电循环次数的增多而不断衰减,然而容量再生现象[78]使容量衰减曲线的变化趋势难以预测,应采用特殊方法处理容量衰减曲线,比如高低频成分的小波分解[78]、经验模态分解[89]和集合经验模态分解[58]等方法。
2.4.2 SOH估计数据预处理
在样本数据的特征选择阶段,SOC估计算法选择某一时刻的电流、电压和温度等数据,而SOH估计则选择与容量衰减相关的特征数据(健康因子)。由于电池容量变化的长久性,SOH估计所能够选择的健康因子相对较多。在单次或相邻几次充放电循环内,可认为SOH不变,因此可从短时充放电循环数据提取特征,建立健康因子与SOH的函数关系。
电池放电工况电流、温度和工作时间的不确定性导致健康因子提取困难,因此SOH估计的健康因子以充电工况数据提取为主,例如充电时某一确定电压区间变化时长、充电时某一确定电流区间变化时长[40]、充电曲线恒流充电时间与恒压充电时间之比[90]等。为了解决健康因子提取对完整充电循环的依赖性,可从短脉冲电流的电压响应曲线提取健康因子[68,91],或采用极限学习机补缺不完整的充电曲线数据[82]。
健康因子也有优化和筛选方法,比如主成分分析法[92-94]、泊松相关系数法[95]、灰色关联分析法[96]、和spearman相关系数法[59]等。此外,CNN能自提取健康因子[46]。
2.4.3 数据集划分
数据集一般划分为训练集、验证集和测试集。训练集用于训练模型,验证集用于评估模型,防止模型过拟合,保证模型的泛化能力。测试集则用于评估模型性能。训练集、验证集和测试集可按照一定比例随机划分数据集数据。
在SOC估计问题中,测试集和训练集可采用两组截然不同的工况验证模型的泛化性[27]。在SOH估计问题中,为了验证模型的外延估计能力,训练集可选前段充放电循环的数据,测试集则选后半段充放电的数据[97]。对于RUL预测,可采用容量衰减曲线的前段、中段和后段分别作为训练集、验证集和测试集,验证集具有矫正模型预测趋势的能力[56]。
相比于传统机器学习方法如SVR、LSSVM、GP、RVM、RF、Adaboost和GBT等,神经网络训练复杂而差异性大。模型训练的目的在于以较低的成本获取一个拟合程度适中的模型,即既不过拟合,也不欠拟合,成本较低,收敛速度较快,内存占用较小。欠拟合表示该模型在训练集上拟合精度低、误差大,过拟合则表示该模型在训练集以外的数据拟合精度低、误差大。一方面神经网络具有强大的非线性映射能力,很容易出现过拟合现象[98];另一方面神经网络并不是凸优化问题,导致其求解过程中可能陷入局部极小值点[99]而出现欠拟合。因此选择合适的训练算法对于模型的性能十分重要。
神经网络算法一般采用梯度下降算法对网络进行求解,恰当的求解算法有助于加快收敛速度和取得较好的训练结果。根据数据量将梯度下降法分为随机梯度下降法、小批量梯度下降法和批量梯度下降法。为了加快收敛速度和减小陷入局部极小值的概率,一些新的算法如带动量的梯度下降法、Adagrad、Adadelta、RMSprop和Nadam也被用于神经网络的算法求解[100]。文献[22]中比较了至少6种算法分析MLP和LSTM⁃RNN估计SOC的误差影响,结果显示MLP应用Adadelta和Nadam算法求解的效果最好,而LSTM RNN则应用RMSProp和AdaGrad算法求解的效果最好。
防止算法过拟合有L1正则化[101]、L2正则化[102]、早停[103]、Dropout[104]和k-折交叉验证[105]等方法,相应效果存在差异。文献[79]中比较了避免算法过拟合的电池RUL预测结果,结果表明Dropout、L1正则化和L2正则化算法预测RUL可分别少了16、77和153个循环数,而没有采取防止过拟合方法的算法则无法预测RUL。
针对锂离子电池BMS的SOC估计、SOH估计和RUL预测问题,归纳了机器学习算法的问题求解方法和研究进展,阐述电池状态估计机器学习方法实施过程的关键问题,包括数据准备、模型选择、算法评价、超参数确定、数据预处理和模型训练。其中,提出了评价相关机器学习算法的精度、成本和鲁棒性3大指标。算法的实施成本差异大,如LSTM⁃RNN、GRU⁃RNN和CNN等虽能取得较高的估计精度,但训练时间长,成本高。然而,现有研究关注于算法精度,缺少对算法的实施成本和鲁棒性的评估。
尽管电池状态估计方法趋向多机器学习算法融合,但超参数确定仍然是机器学习算法的一个难点。现有确定方法的通用性差,原因在于:超参数缺少明确的物理意义,最优超参数依赖于样本数据,导致花费大量成本训练好的模型仅能应用于特定场景,而新的场景下必须使用新的数据重新训练模型。随着电池的老化,估计模型出现不适应性,但如果丢弃原有的模型和数据,将导致训练成本的升高和面临着数据不足的风险。
因此,鉴于机器学习已进入了流程化的研究阶段,应构建自主的、具普适性的、多区域、跨季节、多模式和长时间的车用电池工况数据库,更好地促进电池状态估计的机器学习算法研究,包括评估不同算法的成本和鲁棒性,增强机器学习算法的实用性、根据数据特性确定机器学习算法的超参数的方法和增强机器学习算法的通用性的途径。