%% BP神经网络进行预测
clear all
clc
%% 导入数据
rand('seed',100)
load data
figure(1)
scatter([1:size(data,1)],data(:,3));
xlabel('样本序号')
ylabel('实测容量/kVA')
grid on
% 训练集
input_train = data(1:226,1:5)'; %取输入的前42个样本作为训练样本
output_train = data(1:226,6:7)';
% 测试集
input_test = data(227:256,1:5)'; %剩余3个样本作为测试样本
output_test = data(227:256,6:7)';
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
%% 构建神经网络
net=newff(inputn,outputn,7); %创建一个BP神经网络,7是隐含层个数
net.trainParam.epochs=1000; %设置最大迭代步数
net.trainParam.lr=0.05; %设置学习速率
net.trainParam.goal=0.000000001; %设置学习目标
%网络训练
net=train(net,inputn,outputn);
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);%网络测试
test_simu=mapminmax('reverse',an,outputps);
save net
figure(2)
plot(1:length(test_simu),output_test,'r-o',1:length(test_simu),test_simu,'b-+')
legend('真实值','预测值')
xlabel('样本序号')
ylabel('配光方案')