clear;
clc;
%----输入样本--------
p=[500 500 500 600 600 600 800 800 800 500 500 500 500 500 500 500 500 500 500 500 500 500 600 600 600 600 600 600 600 600 600 600 600 600 800 800 800 800 800 800 800 800 800 800 800;
25 35 45 25 35 45 25 35 45 25 25 25 25 25 45 45 45 45 35 35 35 35 35 35 35 35 35 45 45 45 25 25 25 25 25 25 25 25 25 25 25 35 35 45 45;
72 86.4 100.8 86.4 100.8 72 100.8 72 86.4 86.4 100.8 72 100.8 86.4 100.8 86.4 72 72 86.4 72 72 100.8 86.4 86.4 72 72 72 86.4 86.4 72 86.4 100.8 100.8 72 100.8 100.8 72 72 86.4 86.4 86.4 72 72 86.4 86.4;
40 60 80 80 40 60 60 80 40 40 40 60 80 80 60 40 40 60 80 40 80 60 60 80 40 60 80 40 80 40 60 40 60 40 40 80 40 60 40 60 80 40 60 60 80];
%----输出样本--------
t=[1.317 0.378 1.373 0.768 1.358 1.015 0.862 0.892 1.062 0.925 1.324 0.82 0.953 0.721 0.954 1.125 1.325 0.901 0.401 0.812 0.792 0.812 0.559 0.612 0.968 0.847 0.812 1.1 0.823 1.477 0.682 1.355 0.889 1.356 1.33 0.961 1.324 0.903 0.93 0.631 0.735 0.901 0.789 0.925 0.982];
%----归一化输入输出样本--------
for i=1:4
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
T=(t-min(t))/(max(t)-min(t));
%----测试样本(用于测试创建的网络)--------------
p_test=[500 600 600 600 800 800;
35 45 25 35 35 25;
72 86.4 86.4 86.4 86.4 72;
60 60 40 40 40 80];
for i=1:4
P_test(i,:)=(p_test(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
T_test=[1.447 1.427 1.391 1.363 1.201 1.398];
j=0;
while j<3
%----创建BP神经网络-------------
net=newff(minmax(P),[12,1],{'tansig','logsig'}); %建立网络
net.trainParam.epochs=1600; %设定网络最大训练次数
net=init(net); %初始化网络
net=train(net,P,T); %训练网络
Temp=sim(net,P_test); %用训练后的网络进行预测
T_predited(1,:)=Temp(1,:)*(max(t)-min(t))+min(t); %将预测值存入矩阵
%end
%----求预测误差----------
for i=1:6
err1(i)=norm(T_predited(i)-T_test(i))/T_test(i);
end
%----判断误差中有几个小于10%-------
j=0;
for k=1:6
if err1(k)<0.2
j=j+1;
end
end
end
%----绘制预测误差图-------
figure;
plot(1:6,err1);
评论0