当前位置: 首页 > article >正文

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


http://www.kler.cn/a/17525.html

相关文章:

  • Java 网络编程(一)—— UDP数据报套接字编程
  • 【计算机网络】Socket编程接口
  • Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别
  • 15 个改变世界的开源项目:塑造现代技术的先锋力量
  • 数据分析那些事儿——时间片轮转实验
  • C++数据结构算法学习
  • 有趣的回文检测
  • 如何用ChatGPT做团队绩效管理?根据员工的个人优势、不足、目标来生成更具体的绩效反馈
  • 2023/5/7周报
  • 猫狗训练集训练报错:Failed to find data adapter that can handle input
  • C++ Primer第五版_第十五章习题答案(21~30)
  • Spring Boot 整合 Swagger 教程详解
  • ChatGPT写文章效果-ChatGPT写文章原创
  • leetcode 530. 二叉搜索树的最小绝对差
  • 《互联网安全产品漏洞管理规定》
  • 【Linux Network】网络编程套接字
  • 轻松掌握在已有K8s环境上安装KubeSphere
  • 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
  • HTTP加密
  • 身份鉴别解读与技术实现分析(1)
  • 【Linux】多路转接--select、poll、epoll,非阻塞等待
  • 超大excel文件读,避免内存溢出
  • 【华为OD机试真题 Python】简单的解压缩算法 (100%通过)
  • node之Express
  • 【GAMES101】05 Rasterization(Triangles)
  • 【初学人工智能原理】【4】梯度下降和反向传播:能改(下)