电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

汽车安全 3年前 (2021) admin
888 0 0

循环神经网络(RecurrentNeural NetworksRNN)是一种深度学习的神经网络框架,其与普通神经网络最本质上的区别在于,RNN可以保留上一时刻的隐藏层的状态。因此,RNN具有十分强大的学习能力。RNN网络的递推公式如下所示:

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

式中,ot表示RNNt时刻的输出值,V表示输出层和隐含层之间的权重矩阵,st表示RNNt时刻隐含层的数值,xt表示RNNt时刻的输入值,U表示输入层和隐含层之间的权重矩阵,W表示stst-1之间的权重矩阵,f表示隐含层的激活函数。将两式合并一下:

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

式中,ot(输出值)与输入量x1x2xt均有关系。由此可见,循环神经网络根据前期的输入量递推出当前时刻的最佳输出。

基于循环神经网络的电池SOC估算包含3个输入层、1个隐含层、1个输出层。

1)输入层:t时刻的电压Vt、电流It,温度Tt作为模型的输入。

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

2)隐含层:t时刻的隐含层节点为St

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

式中,tanh表示隐含层的激活函数。

3)输出层:t时刻的SOC作为模型的输出。

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

基于循环神经网络的电池SOC估算方法的原理即通过当前时刻及历史时刻的VtItTt映射出电池SOC的数值。具体代码如下所示:

clcclear%% 数据读取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 onplot(pred_y*100)xlabel('observations')ylabel('SOC')legend('True','Prediction')

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

从结果可以看出,误差精度满足要求,证明了基于循环神经网络的电池SOC估算方法的有效性。

原文始发于微信公众号(新能源汽车仿真团队):电池SOC仿真系列-基于循环神经网络的电池SOC估算研究

版权声明:admin 发表于 2021年12月8日 上午4:40。
转载请注明:电池SOC仿真系列-基于循环神经网络的电池SOC估算研究 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...