使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

这篇具有很好参考价值的文章主要介绍了使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 之前写过一篇通过指数拟合来辨识电池模型参数的文章,今天就来给大家介绍如何使用simulink搭建最小二乘法来在线辨识电池模型参数。

       本节首先介绍最小二乘法的基本原理,并在次基础上推导出递推最小二乘法及其改进算法的基本递推公式。

1.最小二乘法基本原理

       在一个系统中,通过测量输出输入数据,从一组给定模型类中,确定一个与所测系统等价的模型,这种方法称为辨识。简而言之,辨识就是通过某种优化算法,通过模型输出与实际输出间的误差不断修正模型参数,最终得到最优模型的过程。最小二乘法在参数辨识领域是一种最基本的估算方法,可运用于静态系统及动态系统,线性系统及非线性系统,方法简单易于实施。最小二乘法辨识的基本思想是在给定模型结构框架下,计算得到最优解,使得误差平方和最小。

       假设被辨识系统的离散数学模型为:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 其中,y(k)为系统输出,而 u(k)是系统输入,k=1,2,3,若令

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 其中,θ°为被辨识系统的真实参数向量,则 (3-10) 式可以改写成:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 令 k=n+i,n+i+1,...,N+i(其中i,N 都是正整数)则可得到矩阵:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 其中,

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 根据被辨识系统的离散数学模型:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 式中,e(k,0)为向量方程误差,

将上式写成矩阵形式为:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 根据最小二乘法的基本思想就可以找出被辨识系统参数的最优估计值θ,使误差的平方和取最小值。θhat的推导公式如下式所示:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 从上式可以看出,最小二乘法模型参数辨识,可一次性求出模型所有参数,即批量求出参数的估计值,但是在运算过程中涉及到矩阵求逆问题,并且矩阵维数越大,所需存储空间越大,甚至形成病态方程,并且只能离线辨识,实时性较差,而递推最小二乘法可以克服这些缺点,详见下文。

2递推最小二乘法及其改进算法

递推最小二乘法的基本思想是在系统运行过程中,每测量一组新数据,就通过递推公式修正前一时刻的预测值来获得当前时刻的参数值估计值。即新的参数估计值=旧的参数估计值+修正值。这种方法占据存储空间小,应用更加广泛。

递推最小二乘法(RLS)的递推公式如下:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 上式中,当前时刻的实际观测值 y(k)与当前时刻的预测值o(k)θhat(k -1)相减,即为当前时刻的预测误差,当前时刻的增益因子 K(k)与预测误差相乘即为当前时刻的修正值,最后与前一时刻的参数预测值相加,即可得到当前时刻的最优估计值θhat(k)。P(k)为协方差矩阵,在系统运行过程中不断更新,使参数收敛。

为启动算法,需为θhat(0)及 P(0)提供初值,一般设定 P(0)=a I,I为单位矩阵,a 是很大的正实数。在递推最小二乘法中,P(k)随着递推的进行逐渐趋于零,最终算法将对参数失去修正能力,出现所谓的“滤波饱和”现象。引入遗忘因子入(数值在 0.95~0.99 之间) 可以减弱旧数据的作用而增强新数据的作用。改进后的评价函数为:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 递推最小二乘法改进算法的递推公式如下式所示:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 3.电池模型数学公式推导

在利用递推最小二乘法进行电池模型参数辨识时,需将所确定的磷酸铁锂电池二阶 RC 等效电路模型转化为最小二乘法基本结构形式如下式所示。基于二阶 RC 电路模型,推导建立了在 z 域下电池电压、电流以及模型参数间的数学关系,最终得到电池电压、电流、模型参数间的离散数学公式,为后文改进的递推最小二乘法参数辨识奠定基础。

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

从上图可以推导出该电路模型的在复频域中的输出方程为:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 定义Ul(s)=Uoc(s)-uL(s),ZT(s)为电路阻抗,则

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 经双线性变换原理离散得到的传递函数与原传递函数相比,阶数相同,并且当采样周期T足够小时,两传递函数差距很小。根据双线性变换原理:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 可得离散传递函数:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 则离散化后的差分方程如下所示:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 则公式(3-23)可以写成递推最小二乘法形式如式下式所示,进而估算出θ的最优估计。

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 公式(3-20)与(3-25)对比可得模型参数如下

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

       以上就是遗忘因子最小二乘法的递推全过程,下面来讲述一下如何使用simulink来搭建模型。

首先是待辨识数据的导入。

将数据导入到工作区,并分别提取时间、电压、电流、温度数据用以接下来的参数辨识。

load('LiBatt_PulseDataEVE.mat');
time = 1:50243;
Vol = data(:,1);
Cur = -data(:,2); 
Temp = ones(50243,1)*25;

给电池容量赋值,并 初始化辨识参数矩阵。

Capacity = 38;%%%电池容量
Len=round(length(Vol)); %取前80%数据进行辨识,SOC低于20%时已辨识不准
cs0=   [0;
    0;
    0;
    0;
    0];

导入SOC-OCV曲线并对其进行七次多项式拟合。

ocv_lut = [2.789261,3.20478,3.242465,3.275661,3.289715,3.290776,3.293613,3.329685,3.330853,3.33225,3.380374];
soc_lut=0.02439:0.09756:1;
pfit = polyfit(soc_lut,ocv_lut,7);

 初始化

U=Vol(1:Len)-Vocv(1:Len); % 构造向量,以便在最小二乘法时直接带入(相当于误差)
F1=[0    0   Cur(1)  0     0]';       %%%设初值%k=1时刻的初始数据
F2=[U(1) 0   Cur(2)  Cur(1)  0]';       %k=2时刻的初始数据
fai=[F1,F2,zeros(5,Len-2)];%%%%因为RLS要从k=3时刻开始
Pk_1=10^4*eye(5,5);
lamda=1; 
e_ksum=zeros(1,Len-3);

开始迭代寻优。

for k=3:Len
    fai(:,k)=[U(k-1),U(k-2),Cur(k),Cur(k-1),Cur(k-2)]';   %数据向量
    K_k = Pk_1*fai(:,k)/(lamda+fai(:,k)'*Pk_1*fai(:,k));  %求出Kk的值
    e_k = U(k) - fai(:,k)'*cs(:,k-1);
    e_ksum(:,k)=e_k;
    cs(:,k) = cs(:,k-1) + K_k*e_k;    %求被辨识参数c
    P_k = (Pk_1-K_k*fai(:,k)'*Pk_1)/lamda;
    Pk_1 = P_k;              %给下次循环用

 绘图。

figure
plot(i,Vocv,'r--');legend('开路电压OCV');
figure
plot(i,R0,'r--');legend('欧姆内阻R0');
figure
plot(i,R1,'k-');legend('极化电阻R1');
figure
plot(i,R2,'g-');legend('极化电阻R2');
figure
plot(i,C1,'b--');legend('极化电容C1');
figure
plot(i,C2,'m-');legend('极化电容C2');
figure
plot(i,e_ksum,'m-');legend('误差');



[volt]=ModelTest(Cur,Vol,Vocv,Len,R0,R1,R2,C1,C2);

figure;
plot(i,Vol(1:Len),'-k',i,volt,'-r','lineWidth',2); grid on
legend('真实值','模型值');
ylabel('端电压','Fontsize', 16)
xlabel('时间(s)', 'Fontsize', 16)

V_error=Vol(1:Len)'-volt;
V_error_mean=mean(abs(V_error));
V_error_max=max(abs(V_error));

figure;
plot(1000*V_error,'k','lineWidth',2); grid on
legend('模型误差(mV)');
ylabel('端电压(mV)','Fontsize', 16)
xlabel('时间(s)', 'Fontsize', 16)

完整程序请滑到文章底部 

运行后的结果如下图所示:

1.参数辨识结果:

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 SOC估计结果及误差: 

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

 估计的SOC误差如下图所示:SOC的平均误差低于1%,具有较高的精度。

      硕博期间所有的程序代码,一共2个多g,可以给你指导,赠送半个小时的语音电话答疑。电池数据+辨识程序+各种卡尔曼滤波算法都在里面了,后续还会有新模型的更新。快速入门BMS软件。某鹅:2629471989

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识

使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识文章来源地址https://www.toymoban.com/news/detail-417625.html

到了这里,关于使用遗忘因子最小二乘法(FFRLS)的锂离子电池二阶RC参数辨识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 锂离子电池健康状态估计简介(一):基于Python的数据处理计算SOH,RUL,CCCT,CVCT

    锂离子电池无论是在军用还是民用领域都得到了广泛的应用,在锂离子电池健康评估中主要关注的参数有SOH和RUL。准确对其进行健康状态(Stateof Health, SOH)评估及剩余使用寿命(Remaning Useful Life, RUL)预测对于提高电池安全性与使用寿命具有重要意义 后续源码仓库:https://github.co

    2024年02月01日
    浏览(46)
  • RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分

    1.清空变量 2.导入数据用以RBF神经网络训练,一共14组,训练数据P(第一列为电压值,第二列为SOC值,第三列为电流值。),并将所有数据存储在变量PP中,所有电压数据存储在变量TT中。 3. 用第1、2、3、4、5组数据来训练网络 , 用第六组数据来测试网络的精度 。   4.建立

    2023年04月22日
    浏览(58)
  • chatgpt赋能python:Python如何拟合直线:使用最小二乘法

    在数据分析和机器学习领域,拟合一个最佳的直线是很常见和有用的。Python中有很多库可以拟合直线,但最小二乘法是其中最常用的一种方法。在本文中,我们将介绍最小二乘法的原理和如何在Python中实现。 最小二乘法是一种常用的回归分析方法,目的是找到一条直线来拟合

    2024年02月08日
    浏览(56)
  • 基于MATLAB的最小二乘法拟合与拟合工具箱使用教程(附完整代码与算法)

    给定一组数据满足某一函数模型,其中a为待定系数向量。 那么,最小二乘曲线拟合的目标就是:求出一组待定系数的值,使得以下表达式子最小: 在MATLAB中格式如下: 由以下MATLAB代码生成一组数据: 该组数据满足y(x),求出待定系数,使得目标函数的值为最小。 解: MATL

    2024年01月17日
    浏览(51)
  • 第8章 特征矩阵(矩阵相似、最小多项式、特征矩阵相似、不变因子、初等因子和若当标准型)

    相似有相同的特征多项式,相同的特征值,相同的迹,A的行列式即det(A)也相同,相同的最小多项式,相同的秩。 从而求A的迹(特征值)转化为另一个矩阵的迹(特征值)。 例: (1)AB都正定,则tr(AB) 0,A正定,则有可逆阵P: 由于B正定,所以特征值都大于0,所以AB的迹大于

    2024年02月05日
    浏览(60)
  • 最小二乘法公式

    最小二乘法我不需要理解他的本质,只需要会使用这个公式即可: 最小二乘法是求解拟合直线的。注意!!是直线 设直线的方程为 y=bx+a 则以上公式就是用一堆二维平面上的点,来求拟合的直线 其中   为求和符号     如 的意思是   求xi的平方的和    为期望,即平均值

    2024年02月11日
    浏览(63)
  • 拟合算法之最小二乘法

    与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是追求一个函数(曲线),使得该曲线在某种准测下与所有的数据点最为接近,即曲线拟合最好(最小化损失函数)。 插值算法中,得到的多项式f(x)要经过所有的样本点。但是如果样本点太多,

    2024年02月04日
    浏览(53)
  • 最小二乘法工程实践

    最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具 。最小二乘法是一种机器学习算法。 关于其原理的介绍以及公式推导有很多优质资料,比如我学习最小二乘法时的两个视频课程。本文不再介绍原理,而是介

    2024年02月03日
    浏览(39)
  • 最小二乘法的矩阵表达

    1 前期准备 为了方便表述,我们先做一些很简单的定义: 假设有一多项式函数: f ( x 1 , x 2 , ⋯   , x m ) = ∑ i = 1 m a i x i f( x_1,x_2,cdots ,x_m) =sum_{i=1}^m{a_ix_i} f ( x 1 ​ , x 2 ​ , ⋯ , x m ​ ) = i = 1 ∑ m ​ a i ​ x i ​ 我们将函数中的自变量都提取出来组成一个列向量 x x x : x

    2023年04月20日
    浏览(45)
  • Python调用最小二乘法

    所谓线性最小二乘法,可以理解为是解方程的延续,区别在于,当未知量远小于方程数的时候,将得到一个无解的问题。最小二乘法的实质,是保证误差最小的情况下对未知数进行赋值。 最小二乘法是非常经典的算法,而且这个名字我们在高中的时候就已经接触了,属于极其

    2024年02月01日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包