基于残差融合WOA-LSTM-EKF的锂电池SOC估计方法

把EKF和LSTM揉在一起,SOC估计精度反而更高了

基于残差融合WOA-LSTM-EKF的锂电池SOC估计方法

MATLAB实现 | BBDST工况数据 | 完整代码可复现

#电池管理 #SOC估计 #EKF #LSTM #WOA优化


最近在做一个电池SOC估计的项目,把EKF(扩展卡尔曼滤波)和LSTM(长短期记忆网络)两种方法做了个融合,效果比单独用任何一种都好不少。过程中踩了几个坑,也找到了一个很有意思的改进思路,想跟你聊聊。

如果你也在做BMS相关的工作,或者对锂电池状态估计感兴趣,这篇文章应该能给你一些启发。

先看结果。融合后的RMSE降到了 0.0224 ,比单独EKF提升了 20.6% ,比单独WOA-LSTM提升了 51.5% 。R²达到了 0.9936

1. SOC估计为什么这么重要

SOC的全称是State of Charge,就是电池的剩余电量百分比。你手机显示还剩多少电,电动车仪表盘告诉你还能跑多远,背后都是SOC在说话。

但问题在于,SOC没办法直接测量。你不能像测电压一样拿个表笔往电池上一搭就读出SOC。它只能靠算法估计。

目前主流的SOC估计方法分两派:

模型派(EKF为代表):基于等效电路模型,用卡尔曼滤波做状态估计。优点是理论基础扎实、鲁棒性好,缺点是依赖模型精度,模型一偏误差就大。
数据派(LSTM为代表):用深度学习直接从电流电压数据中学习SOC映射。优点是精度天花板高,缺点是依赖训练数据质量、可解释性差、外推能力弱。

两个阵营各有长短,但很少有人把它们 真正融合 起来。常见的做法是简单加权平均,或者用EKF的结果去修正LSTM,效果并不理想。

我们的思路不一样。我们让EKF和LSTM各管一段、取长补短------低SOC区间信任EKF,高SOC区间信任LSTM,中间平滑过渡。这个思路叫 SOC自适应卡尔曼滤波融合

2. 整体技术路线:一个双通道并行框架

整个框架分成三个层次:

第一层 · 数据准备:BBDST工况数据,电流和电压做输入,SOC做输出,70%训练、30%测试,数据归一化到0,1

第二层 · 双通道并行估计

通道A:WOA优化LSTM超参数 → 训练LSTM → SOC测量估计

通道B:一阶RC等效电路模型 → EKF递推 → SOC先验估计

第三层 · SOC自适应融合:根据SOC水平动态调整EKF和LSTM的权重,融合结果反馈回EKF作为下一时刻的初值。

图 / 基于残差融合WOA-LSTM-EKF的SOC估计技术路线

代码用MATLAB实现,总共8个函数文件,主程序main.m串联整个流程,从数据导入到结果输出大约需要 17秒 跑完。

3. 通道A:WOA喂出来的LSTM

LSTM做SOC估计不算新鲜。把电流和电压作为输入序列,LSTM层提取时序特征,最后一层全连接输出SOC,标准套路。

新鲜的是我们用 鲸鱼优化算法(WOA) 来调LSTM的两个关键超参数:隐含层单元数和学习率。

为什么用WOA?因为LSTM超参数搜索空间大,手动调参效率低。WOA模拟鲸鱼捕食的三种行为来搜索最优解:

包围猎物:X(t+1) = X* - A·|C·X* - X(t)|,A=2a·r1-a,a从2线性递减到0
气泡网攻击:X(t+1) = |X* - X(t)|·e^(bl)·cos(2πl) + X*
随机搜索:当|A|≥1时,跳出局部最优,全局探索

搜索范围设的是隐含层10,80、学习率0.0005,0.02,鲸群规模5,迭代3轮。WOA最终找到的最优组合是 隐含层25、学习率0.01545,验证集RMSE为0.1189。

用这个参数在完整训练集上训练30轮,batch size 128,Adam优化器,L2正则化1e-4。

图 / WOA鲸鱼优化算法收敛曲线,3轮迭代RMSE从0.206降至0.118

LSTM在测试集上的表现:RMSE=0.0462,R²=0.9725。精度尚可,但 在高SOC区间误差明显偏大,最大误差MaxAE高达0.2622。这说明纯数据驱动方法在训练数据覆盖不足的区域容易失准。

4. 通道B:一阶RC模型 + 扩展卡尔曼滤波

EKF这条路走的是物理模型。我们用的是一阶RC等效电路模型(Thevenin模型),它把电池简化为一个电压源串联一个欧姆内阻和一个RC并联网络。

模型参数:R0=0.003Ω(欧姆内阻),R1=0.001Ω(极化内阻),C1=20000F(极化电容),Q=25Ah(额定容量),库仑效率η=1,采样间隔Δt=1s。

OCV和SOC的关系用5阶多项式拟合,从训练数据中学习。这个关系决定了EKF的观测方程能不能准确预测端电压。

EKF的核心是两个公式:

状态方程(预测)

SOC(k+1) = SOC(k) + η·Δt·I(k)/(Q·3600)

U1(k+1) = exp(-Δt/τ)·U1(k) - R1·(1-exp(-Δt/τ))·I(k)
观测方程(更新):Ut = OCV(SOC) - U1 + I·R0

过程噪声协方差Q_ekf=diag(1e-8, 1e-6),测量噪声方差R_ekf=0.004。初始SOC故意设偏5%,用来验证算法的收敛性。

)

图 / OCV-SOC关系曲线拟合(一阶RC等效电路模型)

EKF在测试集上的表现:RMSE=0.0282,R²=0.9898。最大误差MaxAE仅为0.0396,远优于LSTM的0.2622。但 EKF的MAE偏高(0.0276),说明存在系统性偏差。

5. 核心创新:SOC自适应融合

EKF和LSTM各有优劣,把两者融合起来是顺理成章的想法。但简单的加权平均效果很差。

传统固定R的问题:经典卡尔曼融合中,测量噪声R是固定的。EKF在运行过程中,协方差矩阵P会不断收缩,导致卡尔曼增益K趋近于0。融合结果实际退化为纯EKF,LSTM的信息完全被丢弃了。

我们换个思路。不去调R,而是根据SOC水平 动态分配权重

SOC < 0.7:完全信任EKF先验。低SOC区间EKF的模型精度更高,误差更稳定。
SOC > 0.9:完全信任WOA-LSTM测量。高SOC区间LSTM的预测能力更强。
0.7 ≤ SOC ≤ 0.9:线性过渡,权重从0平滑增加到1。

融合公式:SOC_fused = SOC_ekf + K·(SOC_lstm - SOC_ekf)

其中K = min(1, max(0, (SOC - 0.7)/(0.9 - 0.7)))。

关键设计:融合后的SOC值会反馈回EKF,作为下一时刻的SOC初值,但协方差P保持不变。这个设计避免了融合导致协方差过度收缩,让EKF在下一时刻仍然能有效利用电压量测信息。

图 / SOC自适应融合权重曲线(低SOC信任EKF,高SOC信任WOA-LSTM)

6. 实验结果:三个梯队,一目了然

测试集上的结果,直接看这一组数字:

指标 EKF先验 WOA-LSTM 卡尔曼融合
RMSE 0.0282 0.0462 0.0224
MAE 0.0276 0.0346 0.0190
0.9898 0.9725 0.9936
MaxAE 0.0396 0.2622 0.0395

融合后的R²达到了 0.9936 ,意味着模型的拟合优度已经非常接近完美。MAE从EKF的0.0276降到 0.0190,降幅31.2%。

更关键的是 最大误差。WOA-LSTM的最大误差高达0.2622,这是数据驱动方法难以避免的短板。融合后MaxAE回落到0.0395,与EKF持平,说明融合模型在极端工况下也很可靠。

与优化前(固定R融合)的对比更能说明问题:

指标 优化前(固定R) 优化后(自适应) 相对提升
RMSE 0.0281 0.0224 ↓20.32%
MAE 0.0275 0.0190 ↓30.99%
0.9899 0.9936 +0.0037

MAE提升 30.99%,这个数字说明自适应权重策略确实有效。固定R融合的问题在于卡尔曼增益K被协方差过度收缩锁死,LSTM的信息根本进不去。自适应权重相当于绕开了这个陷阱,让EKF和LSTM各展所长。

图 / 全序列SOC在线估计对比(EKF先验 / WOA-LSTM测量 / 卡尔曼融合)

图 / 测试集SOC估计结果对比

7. 代码结构:8个文件,各司其职

整个项目用MATLAB实现,代码结构非常清晰:

main.m --- 主程序,串联整个流程。数据导入、WOA寻优、LSTM训练、EKF递推、融合估计、性能评估、可视化,全在这一份文件里。

woa_optimize.m --- 鲸鱼优化算法核心实现。包围猎物、气泡网攻击、随机搜索三种策略,5只鲸鱼迭代3轮。

trainLSTMModel.m --- 构建LSTM网络。sequenceInput→LSTM→FC→Regression,极简结构,主程序调用时传入隐含层数、学习率、正则化系数。

predictLSTM.m --- LSTM预测函数,把cell格式的输出转换为数值向量。

lstmFitness.m --- WOA适应度函数,用给定超参数训练LSTM并返回验证集RMSE。

calcMetrics.m --- 计算RMSE、MAE、R²、MAPE、MaxAE五个评估指标。

cellToRow.maddHover.m --- 两个辅助工具函数。

数据文件是BBDST25.xlsx,包含BBDST工况下的电流、电压、SOC数据,共8054个样本点。运行后结果保存在WOA_LSTM_EKF_SOC_Results.mat中,方便后续分析。

图 / 锂电池BBDST工况数据特征分析

8. 反思与下一步

这个项目做下来,有几个体会:

模型融合的方向是对的。EKF和LSTM的误差在统计上表现为低相关性,说明它们捕捉了SOC的不同特征。融合的本质是让两个不同的信息源互相补充,而不是互相覆盖。
简单融合没用,要聪明地融合。固定R的卡尔曼融合本质上等于没融合------EKF的协方差收缩机制把LSTM堵在了门外。SOC自适应权重这个思路,在BBDST工况上验证了有效性。
WOA的搜索效率还有提升空间。当前只用了5只鲸鱼3轮迭代,收敛速度较快但可能错过了更优解。后续可以增加种群规模和迭代次数,或者引入自适应参数调整策略。

下一步可以往几个方向走:把这个方法推广到其他工况数据(DST、FUDS等)验证泛化能力;把SOC自适应权重中的阈值参数也纳入WOA的优化范围;扩展到SOH(健康状态)估计,实现电池全生命周期的状态监测。

以上代码和实验全部可复现,项目放在我的GitHub上,欢迎交流。


运行环境:MATLAB (Deep Learning Toolbox) | 运行时间约17秒 | 普通PC即可运行

应用场景:电动汽车BMS实时SOC估计 / 储能系统状态监测 / 便携式设备电源管理

数据来源:BBDST25工况数据,8054个样本点,电流+电压+SOC三通道

相关推荐
AI情绪识别开源1 小时前
检信 Allemotion 认知功能障碍矫正软件· 数据方案
人工智能·postman
老王以为1 小时前
走进AI Agent第三篇:让 Agent 记住你
前端·人工智能·机器学习
ai小陈1 小时前
CUDA版本不匹配怎么办?深度学习GPU环境排查与修复指南
人工智能·深度学习·ai·gpu算力
艺杯羹1 小时前
告别换窗口失忆与重复踩坑:AI编程双层复盘架构与第一性原理实战
人工智能·ai·aigc·skill
码云之上1 小时前
让聊天机器人学会用工具,星悟接 MCP 的实践
前端·人工智能·前端框架
clorinda1 小时前
OpenCV 学习实践:从人脸检测到人脸识别
人工智能·opencv·学习
财复视界1 小时前
光智科技磷化铟第二曲线:从红外感知到光通信链接
人工智能
beiju1 小时前
为什么4个并行Agent,不该一起改同一个文件
人工智能