电池SOC仿真系列-基于RNN的电池SOC估算研究

基于 RNN算法的电池SOC估算

  循环神经网络(Recurrent Neural Networks,RNN)是一种深度学习的神经网络框架,其与普通神经网络最本质上的区别在于,RNN可以保留上一时刻的隐藏层的状态。因此,RNN具有十分强大的学习能力。RNN网络的递推公式如下所示:
在这里插入图片描述
  式中,ot表示RNN在t时刻的输出值,V表示输出层和隐含层之间的权重矩阵,st表示RNN在t时刻隐含层的数值,xt表示RNN在t时刻的输入值,U表示输入层和隐含层之间的权重矩阵,W表示st和st-1之间的权重矩阵,f表示隐含层的激活函数。将两式合并一下:
在这里插入图片描述
  式中,ot(输出值)与输入量x1,x2,…,xt均有关系。由此可见,循环神经网络根据前期的输入量递推出当前时刻的最佳输出。
  基于循环神经网络的电池SOC估算包含3个输入层、1个隐含层、1个输出层。
  (1)输入层:t时刻的电压Vt、电流It,温度Tt作为模型的输入。
在这里插入图片描述
  (2)隐含层:t时刻的隐含层节点为St。
在这里插入图片描述
在这里插入图片描述
  式中,tanh表示隐含层的激活函数。
  (3)输出层:t时刻的SOC作为模型的输出。
在这里插入图片描述
  基于循环神经网络的电池SOC估算方法的原理即通过当前时刻及历史时刻的Vt、It和Tt映射出电池SOC的数值。具体代码如下所示:

clc
clear
%% 数据读取
M = readmatrix('电池测试数据.xlsx');
% 第一列为电池SOC 第二列→第四列依次为电压,电流,温度
M = shuffle(M);
Y = M(:,1);
X = M(:,2:4);
% 训练
test_size = 0.2;
[train_X,train_Y,test_X,test_Y] = test_train_split(X,Y,test_size);
%% RNN启动
% 训练数据,测试数据
norm_train_X = normalize(train_X);
norm_train_Y = train_Y/100;
norm_test_X = normalize(test_X);
norm_test_Y = test_Y/100;
% 定义网络结构
numResponses = size(norm_train_Y,2);
featureDimension = size(norm_train_X,2);
numHiddenUnits = 1;
layers = [ ...
    sequenceInputLayer(featureDimension)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    dropoutLayer(0.4)
    fullyConnectedLayer(numResponses)
    regressionLayer];

maxEpochs = 100;
miniBatchSize = 10;

options = trainingOptions('adam', ...
    'MaxEpochs',maxEpochs, ...
    'MiniBatchSize',miniBatchSize, ...
    'InitialLearnRate',0.01, ...
    'GradientThreshold',0.01, ...
    'Plots','training-progress',...
    'Verbose',0);

% 训练网络
net = trainNetwork(norm_train_X',norm_train_Y',layers,options);

% 测试网络
pred_y = predict(net, norm_test_X');


%% 评估
pred_y = pred_y';
residual=zeros(size(test_Y));
for i=1:length(test_Y)
    residual(i)=norm_test_Y(i)-pred_y(i);
end

% 均方根误差
rmse = sqrt(mean((pred_y - norm_test_Y).^2));
MAE = mae(residual);
Rsq = 1 - sum((norm_test_Y - pred_y).^2)/sum((norm_test_Y - mean(norm_test_Y)).^2);
figure()
plot(test_Y)
hold on
plot(pred_y*100)
xlabel('observations')
ylabel('SOC')
legend('True','Prediction')

在这里插入图片描述
在这里插入图片描述
  从结果可以看出,误差精度满足要求,证明了基于循环神经网络的电池SOC估算方法的有效性。
  想了解更过相关仿真,可以关注我的微信公众号。
在这里插入图片描述

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新能源汽车仿真团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值