遗忘因子递推最小二乘参数估计(FFRLS)

news2025/1/15 17:42:29

基于遗忘因子的最小二乘法电池参数辨识

最小二乘法是系统辨识中最常用的一种估算方法。为了克服最小二乘法存在”数据饱和”的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forgetting Factor Recursive Least Square,FFRLS)算法进行电池模型的参数辨识。

1、二阶RC数学模型的建立

一般来说,建立精准的电池模型我们需要考虑以下几点:该模型能够准确的描述电池的动态及静态特性;该模型复杂度较低,易于计算;该模型工程实现较为简单可行。综合考虑,我们选择二阶RC等效电路模型。为了对电池等效电路模型进行参数辨识,我们需要把电池模型转化为可应用最小二乘法辨识的数学形式。具体的递推公式可以参考电池SOC相关文献。

2、遗忘因子递推最小二乘法辨识

系统参数

Qn = 2.59*3600;
ff = 1;
N = length(Ut);     % 数据长度
dt=1;               % 【数据采样间隔】

计算SOC实验数据

ocv = nan(1,N);
soc_act(1)=1;
ocv(1)=Ut(1);
for i=2:N
    soc_act(i)=soc_act(i-1)-I(i)/(Qn);
    nihe=[1.936,-7.108,9.204,-4.603,1.33,3.416];
    ocv(i)=polyval(nihe,soc_act(i)); 
end

FFRLS参数在线辨识算法

function [R0,R1,R2,C1,C2] = FFRLS(Ut,I,Qn,P,ff,cs0)

N = length(Ut);      %数据长度

%SOC计算与OCV计算
soc = nan(1,N);
ocv = nan(1,N);
soc(1)=1;
ocv(1)=Ut(1);
for i=2:N
    soc(i)=soc(i-1)-I(i)/(Qn);
    ocv(i)=polyval(P,soc(i)); 
end

ev = zeros(1,N); 
for i=1:N
    ev(i)=ocv(i)-Ut(i);
end

%%%2.RLS递推最小二乘辨识
% cs0=[   1.2761;
%        -0.2899;
%         0.0365;
%        -0.0449;
%         0.0095];

% cs0=[ 1.1414;
%    -0.1640;
%     0.0709;
%    -0.0796;
%     0.0109];


p0=10^(-1)*eye(5,5);
cs=[cs0,cs0,zeros(5,N-1)];        %被辨识参数矩阵的初始值及大小
e=zeros(5,N);               %相对误差的初始值及大小
error1 = zeros(1,N);
%%%%2.2计算增益矩阵以及求辨识参数
for k=3:N                  %开始求K 
    h1=[ev(k-1),ev(k-2),I(k),I(k-1),I(k-2)]';
    q=h1'*p0*h1+ff;           %遗忘因子
    k1=p0*h1/q;              %求出K(k)的值
    error1(k)=ev(k)-h1'*cs0;  %求电压实验值和理论值误差
    cs1=cs0+k1*error1(k);
    e1=cs1-cs0;               %求参数当前值与上一次的值的差值
    e2=e1./cs0 ;              %求参数的相对变化
    e(:,k)=e2;                %把当前相对变化的列向量加入误差矩阵的最后一列       
    cs0=cs1;                  %新获得的参数作为下一次递推的旧参数
    cs(:,k)=cs1;              %把辨识参数c 列向量加入辨识参数矩阵的最后一列 
    p1=(p0-k1*h1'*p0)/ff;     %求出 p(k)的值
    p0=p1;                    %递推
end                           %大循环结束


%%%3.分离参数
a1=cs(1,1:N); a2=cs(2,1:N); a3=cs(3,1:N); a4=cs(4,1:N); a5=cs(5,1:N);
%==========================输出结果============================= 
a0=1./(1-a1-a2);
R0=-a5./a2;
b1=-a2.*a0;
b2=a0.*(a1+2.*a2);
b3=a0.*(a3+a4+a5);
b4=-a0.*(a4+2.*a5);
dd=b2.*b2-4.*b1;
tt=[(b2+sqrt(dd))/2;(b2-sqrt(dd))/2];
t2=abs(tt(1,:));
t1=abs(tt(2,:));
R2=(t2.*b3+t1.*R0-b4)./(t2-t1);
R1=abs(b3-R0-R2);
C1=t1./R1;
C2=t2./R2;


3、辨识结果

在这里插入图片描述

端电压误差
在这里插入图片描述

SOC 估计 && SOC 误差
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图片码二次渲染绕过

目录 一、环境 1、代码 2、文件处理方式 3、图片码的制作 二、绕过图片重构 1、可行性分析 2、数据比对 3、完成绕过 一、环境 以upload-labs靶场第十七关为例 1、代码 源码为&#xff1a; <?php include ../config.php; include ../head.php; include ../menu.…

管理类联考——数学——汇总篇——知识点突破——应用题——分段计费

👊 分段计费是指不同的范围对应着不同的计费方式,在实际中应用很广泛,比如电费,水费、邮费、个税、话费、出租车费、销售提成等等。解题思路的关键点有两个,一个是先计算每个分界点的值,确定所给的数值落入哪个范围;另外,对应选取正确的计费表达式,按照所给的标准进…

腾讯云CVM S5服务器性能测评和租用价格1年和五年

腾讯云服务器CVM五年时长&#xff0c;2核2G服务器5年1728元、2核4G1M带宽五年3550、4核8G服务器6437元五年&#xff0c;CVM标准型S5实例可选2核2G、2核4G和4核8M&#xff0c;公网带宽可1M、3M和5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;S5云服务器CPU采用Intel Xeon …

模电课设:用Multisim简单了解二极管

1 课设内容 1&#xff09;测试二极管伏安特性电路&#xff1b; 2&#xff09;二极管的整流电路及负载对输出电压和纹波的影响&#xff1b; 2 模型搭建 电路一&#xff1a;测试二极管伏安特性的电路如下图所示&#xff0c;结构十分简单&#xff0c;直流电源串联上二极管组成一…

windows10搭建llama大模型

背景 随着人工时代的到来及日渐成熟&#xff0c;大模型已慢慢普及&#xff0c;可以为开发与生活提供一定的帮助及提升工作及生产效率。所以在新的时代对于开发者来说需要主动拥抱变化&#xff0c;主动成长。 LLAMA介绍 llama全称&#xff1a;Large Language Model Meta…

c#中字段和属性的区别,委托和事件的区别

IDE眼里的字段和属性 class Test {public int age1 12;public int Age2 { get; set; } 18;public void Show(){Console.WriteLine(age1);Console.WriteLine(Age2);} }很多新人发现在类中定义变量时&#xff0c;有些人会在后面写上get,set。 这种写法定义出来的变量&#xf…

数据结构与算法-二叉搜索树红黑树

一&#xff1a;二叉搜索树 大家来看以下几个结构&#xff1a;下图中的 二叉搜索树又叫二叉查找树&#xff0c;二叉排序树&#xff1b; 它具有以下特点&#xff1a; 1.如果它的左子树不为空&#xff0c;则左子树上结点的值都小于根结点。 2.如果它的右子树不为空&#xff0c;则右…

动手学深度学习——Windows下的环境安装流程(一步一步安装,图文并配)

目录 环境安装官网步骤图文版安装Miniconda下载包含本书全部代码的压缩包使用conda创建虚拟&#xff08;运行&#xff09;环境使用conda创建虚拟环境并安装本书需要的软件激活之前创建的环境打开Jupyter记事本 环境安装 文章参考来源&#xff1a;http://t.csdn.cn/tu8V8 官网…

编程初学者指南(2023版):零基础小白如何学习编程-两万字详述

文章目录 1.写在前面1.1 为什么有这份指南1.2 指南里有什么1.3 关于软件协会1.4 面对人生&#x1f340; 对工作&#xff1a;越努力越幸运&#x1f340; 对感情&#xff1a;爱得厚重开阔&#x1f340; 对他人&#xff1a;保持尊重、友好、真诚和谦逊&#x1f340; 对生活&#x…

【论文解读】元学习:MAML

一、简介 元学习的目标是在各种学习任务上训练模型&#xff0c;这样它就可以只使用少量的训练样本来解决新任务。 论文所提出的算法训练获取较优模型的参数&#xff0c;使其易于微调&#xff0c;从而实现快速自适应。该算法与任何用梯度下降训练的模型兼容&#xff0c;适用于…

群辉 Synology NAS Docker 安装 RustDesk-server 自建服务器只要一个容器

from https://blog.zhjh.top/archives/M8nBI5tjcxQe31DhiXqxy 简介 之前按照网上的教程&#xff0c;rustdesk-server 需要安装两个容器&#xff0c;最近想升级下版本&#xff0c;发现有一个新镜像 rustdesk-server-s6 可以只安装一个容器。 The S6-overlay acts as a supervi…

【Proteus仿真】【STM32单片机】便携式血糖仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后&#xff0c;LCD1602显示开机界面信息&#xff0c;当按下K1键开始测量&#xff0c;步进电机运行启动针头采血&#xff0c;然后检测血糖值显示在屏幕上&#xff1b;如果血糖高于上限&#xff0c…

Upload-labs十六和十七关

目录 第十六关第十七关 第十六关 直接上传php文件判断限制方式&#xff1a; 同第十五关白名单限制 第十六关源码&#xff1a; 代码逻辑判断了后缀名、content-type&#xff0c;以及利用imagecreatefromgif判断是否为gif图片&#xff0c;最后再做了一次二次渲染 第71行检测…

计算机网络第四章——网络层(中)

提示&#xff1a;待到山花烂漫时&#xff0c;她在丛中笑。 文章目录 需要加头加尾&#xff0c;其中头部最重要的就是加了IP地址和MAC地址&#xff08;也就是逻辑地址和物理地址&#xff09;集线器物理层设备&#xff0c;交换机是物理链路层的设备&#xff0c;如上图路由器左边就…

Vue使用ts的枚举类型

vue项目中要使用ts的枚举类型需要为script标签的lang属性添加ts属性值 <script lang"ts" setup></script > 首先要声明一下&#xff08;我这里是声明了一个名称一个颜色&#xff09;&#xff1a; 接下来是页面中的标签使用&#xff08;用的是element表格…

Linux系统编程--IO系统调用

文章目录 一、I/O系统调用1.open() 打开文件1.1 所需基础知识1.2. open() 详解1.3 示例代码 2.read() 读取文件2.1.基础知识2.2.read() 详解2.3. 读入所有字节 3.write() 写文件3.1. 基础背景知识3.2.write() 详解3.3.示例代码3.4.注意点3.4.1.同步IO1. fsync() 和fdatasync()2…

MySQL高可用搭建方案之(MMM)

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 注意&#xff1a;这篇转载文章&#xff0c;非原创 首发博客地址 原文地址 前言 MySQL的高可用有很多种&#xff0c;有我们经常说的MMM架构、MHA架构、…

内网隧道代理技术(二十三)之 DNS隧道反弹Shell

DNS隧道反弹Shell DNS隧道 DNS协议是一种请求、应答协议,也是一种可用于应用层的隧道技术。DNS隧道的工作原理很简单,在进行DNS查询时,如果查询的域名不在DNS服务器本机缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议…

标准C库IO函数和Linux系统IO函数

linux系统的io函数更加偏底层&#xff0c;更加建议使用C库的函数&#xff0c;效率较高&#xff08;有缓冲区&#xff09; 磁盘满了或者手动fflush或者关闭文件才会io一次&#xff0c;效率提高&#xff0c;但是linux没有缓冲区 主要通过file *fp指针操作文件&#xff0c;文件描…