RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分
1.清空变量
close all
clear,clc
2.导入数据用以RBF神经网络训练,一共14组,训练数据P(第一列为电压值,第二列为SOC值,第三列为电流值。),并将所有数据存储在变量PP中,所有电压数据存储在变量TT中。
addpath('F:\锂电池数据')
for i=1:6
eval(['load data.',int2str(i),'.mat'])
Tfinal=length(I.data);
x1=SOC.data(1:2:Tfinal)'; %SOC数据
x2=I.data(1:2:Tfinal)'; %电流数据
x3=V.data(1:2:Tfinal)'; %电压数据
P=[x3(1:end-1);x1(2:end);x2(2:end)];
T=x3(2:end);
PP{i}=P;
TT{i}=T;
end
3.用第1、2、3、4、5组数据来训练网络,用第六组数据来测试网络的精度。
P_train=[PP{1},PP{2},PP{3},PP{4},PP{5}];%用第1、2、3、4、5组数据来训练网络
T_train=[TT{1},TT{2},TT{3},TT{4},TT{5}];
P_test=[PP{6}];
T_test=[TT{6}]; %用第六组数据来测试网络的精度
4.建立RBF神经网络没有想象中的那么复杂,只需要一个语句即可完成,即net=newrb(P_train,T_train,0.0004);P_train表示输入(第一列为电压值,第二列为SOC值,第三列为电流值。),T_train表示输出(电压),训练的目标goal为0.0004.使用sim即可调用训练好的神经网络,y=sim(net,P_train);这行代码表示的意思是:通过sim函数调用训练好的神经网络,求以P_train为输入的输出电压。
net=newrb(P_train,T_train,0.0004);%goal是0.0004
view(net)
y=sim(net,P_train);%训练的神经网络的输出
5.根据上面的数据绘图,画出的真实电压值与RBF神经网络输出的电压值得对比如下图所示:
t_T_train=[1:1:length(T_train)];
figure(1)
plot(t_T_train,T_train,'r')
t_y=[1:1:length(y)];
figure(1)
hold on
plot(t_y,y,'k')
legend('actual Voltage','RBFNN output');
6.以测试数据作为神经网络的输入,得到的输出结果返回给变量y1,测试数据的真实电压值与神经网络预测出的电压值y1的对比如下图所示:
y1=sim(net,P_test);
t_T_test=[1:1:length(T_test)];
figure(2)
plot(t_T_test,T_test,'r')
t_y1=[1:1:length(y1)];
figure(2)
hold on
plot(t_y1,y1,'k')
legend('actual Voltage','RBFNN output');
7.这个语句是用来求训练好的神经网络的一些参数。
ti是输入层与第一层隐含层之间的权值,是一个63行3列的矩阵。
wi是两个隐含层之间的权值,是一个1行63列的矩阵。
sigma是第一层隐层的权值阈值,是一个63行1列的矩阵,应该是隐含层之间的阈值。
w0是输出层的阈值,是一个1行1列的值。
ti=net.Iw{1};
wi=net.Lw{2};
sigma=net.b{1};
w0=net.b{2};
至此,神经网络训练参数部分已经搭建完成,将训练好的参数ti、wi、sigma、w0代入这篇博客搭建的程序中即可完成SOC的估计。RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)_新能源姥大的博客-CSDN博客
参考文献:
[1] Sun W , Qiu Y , Sun L , et al. Neural network-based learning and estimation of batterystate-of-charge: A comparison study between direct and indirect methodology[J]. International journal of energy research, 2020(13):44.
硕博期间所有的程序代码,一共2个多g,可以给你指导,赠送半个小时的语音电话答疑。电池数据+辨识程序+各种卡尔曼滤波算法都在里面了,后续还会有新模型的更新。快速入门BMS软件。某鹅:2629471989