news 2026/5/5 12:34:09

探索 MI - UKF 多新息无迹卡尔曼滤波在电池电量 SOC 估算中的应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索 MI - UKF 多新息无迹卡尔曼滤波在电池电量 SOC 估算中的应用

MI-UKF多新息无迹卡尔曼滤波电池电量SOC估算MIUKF,无迹卡尔曼滤波中加入多新息方法, 文件包含有 UKF 和 EKF 的代码和仿真及对比,端电压误差等, 文件中还包含 FFRLS 带遗忘因子的最小二乘法参数辨识代码和数据 有参考文献,代码有注释

在电池管理系统中,准确估算电池电量状态(SOC)至关重要。今天咱就来唠唠 MI - UKF(多新息无迹卡尔曼滤波)在这方面的应用,这可是在无迹卡尔曼滤波基础上融入多新息方法的“秘密武器”。

一、现有代码中的宝藏:UKF 与 EKF 的对比及仿真

在提供的文件里,有 UKF 和 EKF 的代码以及它们的仿真和对比。咱们先瞧瞧 UKF 的代码片段(以下代码为示意简化版,仅为展示思路):

import numpy as np def ukf_predict(X_hat, P, Q, f, h, R, alpha, beta, kappa): n = X_hat.shape[0] lambda_ = alpha ** 2 * (n + kappa) - n Wm = np.zeros(2 * n + 1) Wc = np.zeros(2 * n + 1) Wm[0] = lambda_ / (n + lambda_) Wc[0] = lambda_ / (n + lambda_) + (1 - alpha ** 2 + beta) for i in range(1, 2 * n + 1): Wm[i] = 1 / (2 * (n + lambda_)) Wc[i] = 1 / (2 * (n + lambda_)) X_sig = np.zeros((n, 2 * n + 1)) X_sig[:, 0] = X_hat for i in range(1, n + 1): X_sig[:, i] = X_hat + np.sqrt((n + lambda_) * P)[:, i - 1] X_sig[:, i + n] = X_hat - np.sqrt((n + lambda_) * P)[:, i - 1] X_sig_p = np.zeros((n, 2 * n + 1)) for i in range(2 * n + 1): X_sig_p[:, i] = f(X_sig[:, i]) X_hat_p = np.dot(Wm, X_sig_p) P_p = np.zeros((n, n)) for i in range(2 * n + 1): P_p += Wc[i] * np.outer(X_sig_p[:, i] - X_hat_p, X_sig_p[:, i] - X_hat_p) P_p += Q return X_hat_p, P_p

这段代码里,ukfpredict函数实现了 UKF 的预测步骤。通过计算西格玛点、加权均值和协方差等操作,对状态进行预测。lambda是一个关键参数,它由alphakappa和状态维度n决定,影响着西格玛点的分布。WmWc分别是均值加权和协方差加权,为后续计算提供权重。

而 EKF 的代码在原理上与 UKF 不同,它基于泰勒展开线性化系统方程和观测方程。以下是 EKF 预测步骤的大致代码片段:

def ekf_predict(X_hat, P, Q, F, H, R): X_hat = F.dot(X_hat) P = F.dot(P).dot(F.T) + Q return X_hat, P

在 EKF 里,直接利用状态转移矩阵F和观测矩阵H对状态和协方差进行更新。与 UKF 相比,EKF 计算相对简单,但线性化过程可能引入误差,在非线性较强的系统中表现可能不如 UKF。

通过仿真对比两者,可以看到在估算电池 SOC 时,UKF 在处理非线性系统时往往能提供更准确的结果,特别是在端电压误差方面,UKF 展现出更好的性能。

二、FFRLS 带遗忘因子的最小二乘法参数辨识

文件里还有 FFRLS(带遗忘因子的最小二乘法)的代码和数据。这个方法在电池参数辨识中发挥着重要作用。看看下面的代码示例:

import numpy as np def ffrls(y, u, theta_hat, P, lambda_): phi = np.vstack((u, -y[: -1])) k = P.dot(phi) / (lambda_ + phi.T.dot(P).dot(phi)) theta_hat = theta_hat + k * (y[-1] - phi.T.dot(theta_hat)) P = (np.eye(2) - k.dot(phi.T)) / lambda_ * P return theta_hat, P

在这个ffrls函数中,y是输出数据,u是输入数据,thetahat是参数估计值,P是协方差矩阵,lambda

是遗忘因子。每次迭代时,根据新的输入输出数据,通过计算增益k来更新参数估计值thetahat和协方差矩阵P。遗忘因子lambda的作用是对旧数据进行“遗忘”,使得算法能更快适应系统参数的变化,在电池参数随时间变化的情况下,能更准确地辨识参数。

这些代码和方法相互配合,为电池电量 SOC 的准确估算提供了有力支持。结合参考文献进一步深入研究,能更好地理解这些方法背后的理论以及它们在实际应用中的优势与局限。无论是 UKF、EKF 还是 FFRLS,都在电池管理系统这个大舞台上有着独特的角色,共同推动着电池 SOC 估算技术的发展。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:43:12

AI核心知识50——大语言模型之Scaling Laws(简洁且通俗易懂版)

Scaling Laws (缩放定律) 是目前 AI 领域的“摩尔定律”,也是 OpenAI 等巨头公司敢于投入几百亿美元去训练下一个模型的“信仰之源”。简单来说,它揭示了一个通过大量实验得出的数学规律:只要你按比例增加“模型参数量”、“训练数据量”和“…

作者头像 李华
网站建设 2026/5/2 15:27:39

AI学会理解物理法则:OpenAI Sora 2如何重塑视频生成新范式

欢迎来到小灰灰的博客空间!Weclome you! 博客主页:IT小灰灰 爱发电:小灰灰的爱发电 热爱领域:前端(HTML)、后端(PHP)、人工智能、云服务 目录 一、物理引擎的"顿悟…

作者头像 李华
网站建设 2026/4/30 22:47:19

全连接层(Fully Connected Layer)

全连接层(Fully Connected Layer,又称稠密层/Dense Layer)是神经网络中最基础且重要的组件之一,广泛应用于多层感知机(MLP)、卷积神经网络(CNN)和Transformer等架构中。以下是对全连…

作者头像 李华
网站建设 2026/4/30 23:55:08

一文讲透布隆过滤器实现原理及应用场景总结

布隆过滤器的工作原理布隆过滤器的工作原理基于三个核心要素:1. 一个大的位数组(Bit Array)这是布隆过滤器的存储主体。它是一个长度为 m 的数组,每个位置只存储一个比特(0或1)。初始时,所有位都…

作者头像 李华
网站建设 2026/5/1 0:07:54

理性抉择方可行远——企业AI转型的路径选择与风险管控

数字化浪潮下,AI转型已成为企业提升核心竞争力的必答题。然而现实中,不少企业陷入“转型即烧钱”“技术即万能”的误区:传统制造企业盲目自研大模型,耗费数百万后无功而返;互联网公司一味追求API集成便捷性&#xff0c…

作者头像 李华
网站建设 2026/4/30 22:47:46

C51_74HC595串口转并口

文章目录一、74HC595   1、芯片引脚   2、内部框图   3、时序操作二、单芯片工模式   1、原理图   2、驱动代码     1)、74hc595.h     2)、74hc595.c     3)、mian.c三、级联工作模式   1、原理图   2、驱动代码 …

作者头像 李华