用来做优化,源代码参考的是matlab神经网络30个案例分析里第3章的程序。总共35组数据前30组用来训练后5组测试,3个输入2个输出,现在程序可以运行就是设置精度是e-6,为何曲线一直保持在e-4,初学者,请大神指导!!!
%读取数据
load w input output
%训练预测数据
input_train=input((1:30),';
output_train=output((1:30),';
input_test=input((31:35),';
output_test=output((31:35),';;
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
net=newff(minmax(inputn),[7,2],{'tansig','purelin'},'trainlm');
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
net.trainParam.goal=0.000001;
%net.trainParam.show=NaN
%网络训练
net=train(net,inputn,outputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);
%% 结果分析
%figure(1)
%plot(BPoutput,'g')
%hold on
%plot(output_test,'-*');
%legend('预测输出','期望输出','fontsize',12)
%title('BP网络预测输出','fontsize',12)
%xlabel('样本','fontsize',12)
%ylabel('输出','fontsize',12)
% print -dtiff -r600 4-3
%预测误差
error=-(BPoutput-output_test);
%figure(1)
%plot(error,'-*')
%title('神经网络预测误差')
%xlabel('样本')
%ylabel('误差')
figure(2)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')
xlabel('样本')
ylabel('误差')
%errorsum=sum(abs(error)) |