基于粒子群算法电池参数辨识

  目前,主要的电池模型参数辨识方法有两大类:一种是基于传统的参数估计方法,例如:最小二乘拟合方法添加链接描述,基于遗忘因子最小二乘法添加链接描述,基于参数辨识工具箱的辨识方法添加链接描述。此类方法的优点是直观简单,适用于大部分电池管理系统;另一种方法是基于智能优化算法,例如遗传算法添加链接描述、粒子群算法及蜂群算法等。此类方法相对于传统方法在可靠性及鲁棒性方面具有一定的优势。
  粒子群优化算法(Particle Swarm Optimizer,PSO)是一种基于群智能方法演化的算法,PSO同GA类似,是一种基于群体的优化工具。该算法通过粒子在解空间追随最优的粒子进行搜索,相对于GA算法,PSO简单易实现,具有更高的精度。针对此问题,本文提出一种基于PSO的电池模型参数辨识方法。

1、PSO算法原理

  粒子群优化算法,也称为标准PSO算法。假设搜索空间为D维,粒子的个数为m个,则可表示为:

  式中,X为包含m个粒子的种群;xi为一个D维向量,指示搜索空间中的一个可能的位置,也称为候选解;v为粒子下一步的飞行速度;Pbest为个体极值;Gbest为全局极值。粒子根据两个极值更新自己的速度和位置,有:

  式中,c1和c2为两个正的常数;r1和r2为[0, 1]之间的两个随机数;n为当前迭代次数。

2、基于PSO模型的参数辨识

  目前,ECM模型中,常用的模型主要包括简单模型、一阶RC模型和二阶RC模型。简单模型为:

  式中,Ut为电池端电压;Uoc (SOC)为与SOC值对应的开路电压值;I为负载电流;R为电池内阻。
  简单模型结构和原理简单,是应用最为广泛的一种模型,然而其未考虑电池的极化效应,不能充分反映电池的动态特性。
  Thevenin模型也称为一阶RC模型,即:

  于是,我们也可得到二阶RC模型,即:

  式中,U1和U2为电池充放电时的极化电压,其离散化公式可表示为:

  二阶RC模型在简单模型的基础上,串联二阶阻容网络,利用阻容电路的延迟特性模拟电池的极化线性,相比简单电路模型和Thevenin模型,能够较好地仿真电池的静态和动态特性。鉴于此,下文将采用二阶RC模型进行参数辨识。
  采用累积误差作为适应度函数,则有:

  式中,M为采样间隔总数;Uk为第k个采样间隔,测量得到的电池系统的端电压;Umk为第k个采样间隔,电池模型仿真输出的端电压。

3、电池模型参数辨识

  下图是锂离子电池脉冲放电响应示意曲线,t1→t2时刻,给电池一个脉冲放电电流,锂离子电池进入放电状态后,电池端电压从稳定状态变成一个阶跃式的突降,之后逐渐降低;脉冲电流撤除后,电池端电压首先产生阶跃式的突增,然后开始慢慢增大,和前文分析的电池的回弹电压现象一致。

  将电路等效模型理论与电池脉冲放电响应曲线建立联系:
  (1)在A→B和C→D过程中,电流加载或撤除的瞬间,电池的端电压出现跳跃式变化,这是由于电池内部的欧姆内阻造成的,欧姆内阻近似为常数。
  (2)B→C过程表示电池在放电,电池端电压逐渐减小,这一现象主要是电池的极化作用引起,电压响应渐渐的变化,正好与并联环节的零状态响应类似。
  (3)D→E过程,电池电压缓慢增长,极化作用渐渐消失,最后电池的端电压逐步趋于某个不变值,这一阶段正好对应RC并联环节的零输入响应。
  等效电路模型是由电阻和电容所构成并联回路进行串联,其中RC回路数量越高,模型的阶数越大,理论上得到的仿真精度越高,但是由于模型阶数的变多,模型参数也变多,增加计算量,计算效率比较低,影响计算速度。
  在A→C阶段,RC回路为零状态响应,以A为起点(tA=0,为横坐标的原点),根据模型状态响应,得出该区域内任意时刻t的电池电压为UCt(t):

  在C→E阶段,通过电池的电流I为0,电池的内部还在发生电化学反应,对应静置时的电压回弹特性,RC回路为零输入响应,其中C→D过程同A→B过程产生原因一样,都是由于欧姆内阻造成的。根据建立的二阶电池等效电路模型,这种现象对应模型中的串联内阻 R0 产生的欧姆压降,则欧姆内阻R0计算公式为:

  取C点下一时刻的采样点到E点的数据,即D→E区域的电池端电压数据。因此取D点为起点(tD=0),RC回路的电压初值为D点时刻的值,则有D→E过程中任意时刻电池工作电压是:

  对电池电压与时间的方程进行系数替换:

  对于D→E过程,将放电曲线按照上式拟合后,能够得到参数c1、c2、c3、c4,则可获得模型的参数如下:

4、结果分析

  利用PSO算法,针对二阶RC模型根据下图所示阶段性脉冲放电工况对模型参数进行辨识,所需辨识的参数包括充放电内阻、极化电阻和极化电容。

  SOC=0.9时,

  SOC=0.8时,

  以此类推,SOC=0.1时,

  辨识出的R0、R1、R2、C1、C2数值分别如下图所示:

  由结果可知,R1随着SOC的增加呈现先减少后增加,然后再减少的趋势。

  R2数值的变化趋势同R1类似。


  C1和C2的数值随着SOC的变化呈现不规则的变化。
  为了验证本文PSO算法模型参数辨识结果具有有效性和通用性,下面使用基于上述模型参数辨识结果建立的模型仿真进行验证。


  对上述实验结果进行分析,可知:利用PSO算法进行参数辨识能够较好地仿真真实电池的情况,说明二阶RC模型能够较好地仿真电池的动态和静态特性,同时也充分说明智能优化算法适用于锂离子电池参数模型辨识。
  需要本期文章试验数据和模型的同学可以联系QQ:2057034985或者关注微信公众号:xinnengyuanqiche666学习更多相关知识)

电池SOC仿真系列-基于粒子群算法电池参数辨识相关推荐

  1. 电池SOC仿真系列-基于遗忘因子的最小二乘法电池参数辨识(二阶RC)

    基于遗忘因子的最小二乘法电池参数辨识   最小二乘法是系统辨识中最常用的一种估算方法.为了克服最小二乘法存在"数据饱和"的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forge ...

  2. ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***

    ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...

  3. 电机仿真系列-基于最小二乘法的永磁同步电机参数辨识

    基于最小二乘法的永磁同步电机参数辨识   永磁同步电机具有体积小.转动惯量低.结构简单等优点,被广泛应用于控制系统中.然而在实际应用过程中,控制系统会受到高温.负载等外界因素的影响,永磁同步电机的电感 ...

  4. 电池SOC仿真系列-基于UKF算法的电池SOC估算研究

    基于UKF算法的电池SOC估算 1.UKF算法   无迹卡尔曼滤波是将数据变化(UT变换)与卡尔曼滤波结合起来的一种算法,通过UT变换将一个状态点转换为多个状态点,依据一定的权重传递给后面观测值,再根 ...

  5. 《MATLAB智能算法30个案例》:第14章 基于粒子群算法的PID控制器优化设计

    <MATLAB智能算法30个案例>:第14章 基于粒子群算法的PID控制器优化设计 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例 ...

  6. 《MATLAB智能算法30个案例》:第10章 基于粒子群算法的多目标搜索算法

    <MATLAB智能算法30个案例>:第10章 基于粒子群算法的多目标搜索算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...

  7. 基于粒子群算法的微电网优化调度应用研究(四、基于粒子群算法的调度模型)

    基于粒子群算法的调度模型 4.1 目标函数 离网型的微电网包含各种分布式发电,如风力发电机组.光伏电池等,光伏和风力发电受自然资源的影响,输出功率不受控制,很难人工调度,其一次设备成本高,而微电网完全 ...

  8. MATLAB代码:基于粒子群算法的电动汽车充电站最优选址和定容

    MATLAB代码:基于粒子群算法的电动汽车充电站最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站的选址定容问题,提出了能够计及 ...

  9. 基于粒子群算法的组卷系统的研究与实现

    摘 要 组卷系统的主要任务是根据用户的需要用当前数据库中的试题组成一套符合用户需求的试卷.随着数据库与题量增大,传统采用随机选取和回朔试探法的组卷抽提算法因其抽题时间长,占用的空间复杂度太大,容易陷入 ...

  10. 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码

    1 模型 为了提高空气质量预测精度,提出一种基于粒子群算法优化极限学习机的空气质量预测模型.运用粒子群算法优化极限学习机的初始权值和偏置,在保证预测误差最小的情况下实现空气质量最优预测.选择平均绝对百 ...

最新文章

  1. iSCSI故障查询列表
  2. [Mvel]Mvel2.0使用指南一 基础
  3. python 最小二乘法三维坐标拟合平面_matlab三维曲面进行平面拟合,利用最小二乘法...
  4. linux文件目录操作实验报告,Linux操作系统实验4文件和目录操作
  5. PHP+JavaScript+HTML实现注册界面表单及日历控件
  6. ef 多个左联接查询_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记...
  7. KMP算法的浅显解释
  8. Web容器初始化过程
  9. [转载] python difference用法_set.difference() 的用法(python3)_举例说明python3 set方法功能
  10. 利用R语言做可重复性报告研究
  11. javascript的window.open()具体解释
  12. 基于SpringMVC国际化资源配置方式
  13. doc 问卷调查模板表_Word制作电子版问卷调查模板表「教你方框内打钩」
  14. 适用于 Windows 10 的触摸板手势
  15. 全栈开发工程师微信小程序-中
  16. 科大讯飞实习 第七周日记
  17. pytorch detach用法
  18. 【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
  19. JS实现获取汉字首字母拼音、全拼音及混拼音的方法
  20. UJN_c++_Contest4735

热门文章

  1. hosts文件位置在哪
  2. 如何刻录服务器安装系统光盘启动盘,如何刻录系统光盘
  3. Django使用DRF + Simple JWT 完成小程序使用自定义用户的注册、登录和认证
  4. 恢复U盘分区:windows自带工具diskpart
  5. 百度翻译API错误码大全(建议收藏)
  6. 泰勒公式系列之一多项式逼近
  7. Android 支付宝支付功能实现
  8. 泡泡龙游戏c语言程序,《泡泡龙》发射技巧总结_图文攻略_高分攻略_百度攻略...
  9. 电阻式触摸屏的基本结构和驱动原理
  10. python爬虫获取维基百科词条