遗传算法的电池参数辨识

1、遗传算法基本思想

  遗传算法(Genetic Algorithms)是一种启发式的随机非线性优化与搜索方法,用于模拟生物界的自然选择与遗传过程,从原理和实现手段等方面区别于传统数学规划的优化算法。遗传算法运算过程的实质就是对待求解问题的解群的重复迭代过程,该解群由M个初始解组成,通过不断的对解群进行交叉、变异运算和选择,即对初始解群进行遗传与进化操作,得到新一代染色体组成后代解群。通过采取优胜劣汰原则,将由遗传与进化得到的子代中适应值高的染色体以较大的概率保存到每次迭代的后代解群中,最终得到一个相对最为优良的染色体作为问题的最优解。

2、遗传算法基本步骤

(1)确定编码方案
  二进制编码,实数编码等。
(2)确定适应度函数
  评价种群中染色体优劣的标准。
(3)确定采样空间
  染色体采样空间的大小和组成成分的选择问题。
(4)确定选择策略
  轮盘选择策略,随机抽样策略等。
(5)确定控制参数
  迭代的最大次数,种群规模,交叉概率,变异概率。
(6)设计遗传算子
  交叉,变异,繁殖。
(7)确定终止准则
  通常采用设定算法的最大进化代数或设定染色体适应值无明显改进的进化代数,判断是否应终止算法。

3、基于遗传算法的电池参数辨识

3.1 数据导入

clear all; 
close all; 
clc
tic                         % 计时
load OCV                    % 加载SOC与OCV的关系曲线
load HPPC                   % 加载实际电流和端电压数据

电池参数辨识python_数据

3.2 参数初始化

Current_data = -HPPC(:,1);                          % 读取电流数据
Voltage_data = HPPC(:,2);                           % 读取电压数据
dt = 1;                                             % 采样时间
N_opt = 3;                                          % 被优化的变量数
temp_battery = 23;                                  % 温度

3.3 SOC计算

capacity = 2.366;            % 电池容量
SOC_cc(1) = 1;               % 电池初始SOC
for k=2:length(Current_data)
    SOC_cc(k) = SOC_cc(k-1) - Current_data(k) * dt / (capacity*3600);
    if SOC_cc(k)<0
       SOC_cc(k)=0;
    end
end

3.4 参数辨识

for i = 1:datapoints
    dataset = i;  
    fun = @(x)ECM_fit_GA(x, i);
    [x_val(:,i), err_val(:,i)] = ga(fun, 3, [], [], [], [], [0.01, 0.01, 900], [0.1, 0.1, 3000], [], options);
end

3.5 导出结果

R0_val_T23 = fliplr(x_val(1,:));
R1_val_T23 = fliplr(x_val(2,:));
C1_val_T23 = fliplr(x_val(3,:));
toc

3.6 模型验证

电池参数辨识python_电池参数辨识python_02


  以上便是基于遗传算法电池参数辨识的基本思路,其中遗传算法和等效电池建模概念暂不叙述,主要介绍具体的Matlab代码编写思路及Simulink创建方法。具体的电池建模方法可以参考前几期的博文。