java电池soc算法实现,回归算法及SOC估计实例

回归算法,是一种应用比较广泛的机器算法。智能算法中,回归算法往往与其他算法结合使用。在锂电池SOC估计中,开路电压估计SOC的方法,就是一种典型的回归算法应用形式。详细过程在本文最后一部分说明。

1 什么是回归算法

简单的理解回归,就是找到模型函数中未知系数的方法。我们常常会遇到这样的情形,一个系统的输入变量与输出变量之间,关系比较复杂,不存在现成的理论公式描述这种关系。而我们知道,输入与输出之间一定存在着某种稳定的确定关系,并且我们需要这个函数的具体形式,来指导后续的实验或者生产。于是回归算法就应运而生。

回归算法使用的典型过程是这样的:

首先,准备好我们想要了解的典型系统。

第二,给系统一系列典型输入,并测量相应的输出,获得n组由输入、输出数据构成的空间点数据。

第三,根据系统的特点,选择系统模型的典型函数形式,参数待定;

第四,将第二步获得的数据,带入第三步函数式中,解出系统模型的每个参数。这样,我们就获得了一个描述系统输入与输出关系的经验公式。

第五,选取另外一组实验数据,代入经验公式,验证公式的准确性。如果精度在要求范围内,则确定公式可用。

第六,在后续工作过程中,可以利用公式,估计不同输入获得的输出范围。

2 回归算法分类

线性回归

线性回归,自变量和因变量的幂次方都不超过1,则将方程称为线性回归方程。回归方程往往不能直接求解,而需要找到函数最小误差公式,求解函数误差最小时,函数参数的取值。求解最小值的方法有梯度法,最小二乘法等。

局部加权线性回归

线性回归形式比较简单,易于求解,可以描述函数的整体趋势。但对于函数的局部波动无能为力。于是,人们在线性回归的基础上改进,得到局部加权方法。局部加权方法,允许估计中出现稍大的误差,进而减小系统均方误差,函数图形演变成了折线形。

逻辑回归

当函数值只有0和1两种取值时,我们需要用到逻辑回归。逻辑回归主要应用于数据分类。

多项式回归

多项式回归,顾名思义,就是自变量指数超过1的回归模型,是最具普遍意义的一种拟合形式,很多工程问题都可以应用这种回归算法。

相比于线性回归,多项式回归会耗费更多计算资源,指数越大计算量越大。当我们选择多项式模型时,需要关注,拟合曲线的首尾指数较高的函数,评判在实际应用中是否有对应的意义。

逐步回归

当系统中存在多个自变量时,需要用到逐步回归。计算可以从最显著的变量开始,逐步加入次显著的变量,叫前进法;先加入全部变量,再逐步剔除一些影响不显著的变量,叫做后退法。

其他回归算法

除了上面的回归模型,常见的还有岭回归、LASSO回归、ElasticNet回归等,都是前述回归算法的改进和组合。

3 过拟合和欠拟合

选择的回归方法是否合适,主要是观察拟合结果,实验数据点与函数曲线的贴合程度越高,说明拟合效果越好。在网上看到两张图,看一眼就明白什么是欠拟合、过拟合、恰当的拟合,盗图一用。

观察下面三幅图。欠拟合,由于选取函数模型的幂次不够,拟合曲线除了体现划分边界的大体趋势,并不能对数据做出准确的划分;过拟合,函数曲线精准分割数据点,但因为一两个数据点,却极大提高了函数复杂度,计算量显著增加;恰当的拟合,如第三幅图所示。

个人理解,过拟合和恰当的拟合之间,可能并没有非常明晰的界限。随着计算机算力的不断提高,过拟合的起点肯定会相应提高。过拟合与适当的拟合之间,实际上是准确性与计算代价之间的平衡,无关乎对错。

cf89ccf06e80414dfe9750cdd978d8b6.png欠拟合

0a2884da28f603137de103e088ae4872.png过拟合

ff7841e42a68b57267346a3c1ab537ad.png恰当的拟合

4 回归算法的特点

1)回归算法与众多机器算法的鲜明区别在于,它可以解决多自变量对一个因变量的问题,也可以处理多个自变量对多个因变量的问题。

2)经过转化以后,回归算法与支持向量机实际上具有等价性质。孙德山在他的论文《支持向量机分类与回归算法的关系研究》中阐述了这个观点并加以证明。回归算法的方程,能够直接求解的情形微乎其微,基本上都需要把参数求解转化成求函数最小误差问题。而支持向量机的求解,同样是转化为超平面到每个数据点的距离总和最大的优化问题,进而求解超平面方程的相关参数。

5 回归算法在SOC估计中的应用实例

作者曾洁在其论文《基于多项式回归算法的锂电池SOC估测》中详细介绍了利用回归算法,获得锂电池开路电压与荷电状态对应关系函数的过程。

1)将充满电的电池组与大电阻串联,形成放电回路。采用电池多功能参数测量仪( 可以测得电池电压、充放电电流、温度、容量、内阻)监测放电过程中电池电压和放电量;

2)放电电池组可用容量的5%,暂停,静置30分钟后,测量电池组开路电压;以此类推,直到电池荷电量为16.8%截止。(实验描述,中间调整了一次放电步长)。实验结束,获得每个测试点电池荷电量与开路电压的对应数据。

3) 选取3次多项式方程作为回归方程,计算方程各项系数,获得3次曲线方程。

4)选取另外一组相同型号、规格的锂电池,重新获得一组SOC-OCV数据,将开路电压数据带入方程,计算模型估计SOC值。将SOC估计值与实测值对比,最大误差5.79%。

以上即为回归算法在常用的锂电池SOC估计中的具体使用过程。

参考

1 曾洁,基于多项式回归算法的锂电池SOC估测

2 孙德山,支持向量机分类与回归算法的关系研究

3 杨滨,自适应迭代最小二乘支持向量机回归算法

4 华德宏,一种改进的一元线性回归算法

5 李雪,一种改进的偏最小二乘回归方法研究

6 雷歌阳,锂离子电池组的SOC估计

7 成鹏9,常见的七种回归技术

8 机器学习之回归算法

9 对线性回归、逻辑回归、各种回归的概念学习

(图片来自互联网)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BMS(Battery Management System,电池管理系统)的SOC(State of Charge,电池剩余容量)卡尔曼滤波算法是一种常用的估计电池剩余容量的方法。下面是一个简单的SOC卡尔曼滤波算法的代码实例: ```python import numpy as np class KalmanFilter: def __init__(self, initial_soc, process_noise, measurement_noise): self.x = np.array([[initial_soc]]) # 初始状态估计 self.P = np.array([]) # 初始状态协方差矩阵 self.Q = np.array([[process_noise]]) # 过程噪声协方差矩阵 self.R = np.array([[measurement_noise]]) # 测量噪声协方差矩阵 self.A = np.array([]) # 状态转移矩阵 self.B = np.array([]) # 控制输入矩阵 self.C = np.array([]) # 测量矩阵 def update(self, measurement, control_input): # 预测步骤 x_pred = self.A.dot(self.x) + self.B.dot(control_input) P_pred = self.A.dot(self.P).dot(self.A.T) + self.Q # 更新步骤 K = P_pred.dot(self.C.T).dot(np.linalg.inv(self.C.dot(P_pred).dot(self.C.T) + self.R)) self.x = x_pred + K.dot(measurement - self.C.dot(x_pred)) self.P = (np.eye(self.P.shape) - K.dot(self.C)).dot(P_pred) return self.x[0, 0] # 使用示例 initial_soc = 50 # 初始SOC process_noise = 0.01 # 过程噪声方差 measurement_noise = 0.1 # 测量噪声方差 kf = KalmanFilter(initial_soc, process_noise, measurement_noise) # 模拟测量和控制输入 measurements = [45, 48, 52, 55, 58] control_inputs = [0, 0, 0, 0, 0] for i in range(len(measurements)): soc = kf.update(measurements[i], control_inputs[i]) print("Step {}: SOC = {}%".format(i+1, soc)) ``` 这段代码实现了一个简单的SOC卡尔曼滤波算法。首先定义了一个KalmanFilter类,其中包含了初始化函数和更新函数。在初始化函数中,设置了初始状态估计、状态协方差矩阵、过程噪声协方差矩阵、测量噪声协方差矩阵等参数。在更新函数中,根据卡尔曼滤波的预测和更新步骤,计算出新的状态估计和状态协方差矩阵。 使用示例中,定义了初始SOC、过程噪声方差和测量噪声方差,并创建了一个KalmanFilter对象。然后,通过模拟测量和控制输入的方式,依次更新SOC估计值,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值