查看: 157|回复: 3|关注: 0

[已答复] 请教大佬关于bp神经网络预测电池soc的问题

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2020-2-21 14:53:12 | 显示全部楼层 |阅读模式
想用bp神经网络预测电池soc,输入量电压电流,输出量soc。我先用了电压一个输入量写了一下程序发现不对,请问大佬能帮忙看一下吗,谢谢
%% I. 清空环境变量
clear all
clc

%% II. 训练集/测试集产生
%%
% 1. 导入数据
load NIRXXX.mat
load octantxxx.mat
%%
% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));
% 训练集——6000个样本
P_train = NIR(temp(1:6000),:)';
T_train = octane(temp(1:6000),:)';
% 测试集——1000个样本
P_test = NIR(temp(6001:7000),:)';
T_test = octane(temp(6001:7000),:)';
N = size(P_test,2);

%% III. 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);
p_test = mapminmax('apply',P_test,ps_input);

[t_train, ps_output] = mapminmax(T_train,0,1);

%% IV. BP神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = newff(p_train,t_train,5);

%%
% 2. 设置训练参数
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;

%%
% 3. 训练网络
net = train(net,p_train,t_train);

%%
% 4. 仿真测试
t_sim = sim(net,p_test);

%%
% 5. 数据反归一化
T_sim = mapminmax('reverse',t_sim,ps_output);

%% V. 性能评价
%%
% 1. 相对误差error
error = abs(T_sim - T_test)./T_test;

%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));

%%
% 3. 结果对比
result = [T_test' T_sim' error']%真实值,预测值,误差值

%% VI. 绘图
figure
plot(1:N,T_test,'b--',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('SOC')
string = {'测试集SOC预测结果对比';['R^2=' num2str(R2)]};
title(string)



新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-2-21 14:54:21 | 显示全部楼层
输入量就是简单的电压从3.7-2.9,输出soc从1-0

论坛优秀回答者

3

主题

950

帖子

181

最佳答案
  • 关注者: 43
发表于 2020-2-21 19:02:31 | 显示全部楼层
你好NIRXXX.mat和octantxxx.mat数据没有,无法运行程序,方便上传一下吗

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-2-25 19:54:24 | 显示全部楼层
20141303 发表于 2020-2-21 19:02
你好NIRXXX.mat和octantxxx.mat数据没有,无法运行程序,方便上传一下吗

不好意思,我这个做出来不对的,数据传了也没用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表