clear
clc
x=[1207 81 534 592 462 606 12.65 7630
1348 85 595 668 508.44 685 21.56 9086
1493.09 89.53 660.49 743.07 570.43 770.08 22.02 10039
1662.4 94.2 741.8 826.4 645.06 853.99 31.36 11719
1956 103 903 950 822.2 960.58 42.98 9564.05
2238 109.57 1019 1109.43 1055.18 1128.64 61.88 10849.72
2590 115.91 1194 1280.09 1325.29 1293.33 80.12 12359.98
3141.5 129.15 1440 1572.35 1732.79 1518.3 99.62 14357.64
3960.08 144.7 1827.65 1987.73 2252.05 1850.05 139.77 16712.44
4560.62 149.06 2142.14 2269.42 3001.1 2164.09 114.73 18385.02
5515.76 170.04 2532.82 2812.9 3753.17 2523.2 180.5 20806.32
6756.2 198.7 3254.02 3303.48 4255.16 2959.04 227.9 23738.09
8003.82 301.21 3869.56 3833.05 5031.25 3432.43 203.54 27061
];%输入层
[y,ps]=mapminmax(x');
ps.ymin=0.15;
ps.ymax=0.85;
[y,ps]=mapminmax(x',ps);
x1=y;
x0=[9181.63 271.55 4415.92 4512.87 5635.46 3957.64 315.96 28817.08
10957.92 305.91 5317.39 5364.05 6999.18 4625.63 381.36 32158.88
13077.85 344.6 6402.89 6375.77 8692.91 5406.36 460.31 35888.21
15607.9 388.19 7709.98 7578.32 10796.5 6318.86 555.6 40050.03
18627.42 437.3 9283.9 9007.67 13409.13 7385.39 670.61 44694.48];%输出层
[y,ps]=mapminmax(x0',ps);
x2=y;
y0=[708.08 1737 3.01
719.41 1654 4.7
737.73 1773 7.84
764.03 1940 11.06
835.18 2521 14
1277.65 2649.4 17.8
1312.73 2511.4 24.13
1418.01 2633.4 25.7
1445.1 3055.9 31.36
1900.05 3002.1 31.5
2401.85 3788 38.27
2644.18 3965.6 40.63
2910.22 3863.7 46.04
];%待预测的输入层
[y,ps]=mapminmax(y0');
ps.ymin=0.15;
ps.ymax=0.85;
[y,ps]=mapminmax(y0',ps);
y1=y;
[h,g]=size(x);
for i=1:h-3
p_train(:,i)=x1(:,i);%输入层训练项
q_train(:,i)=y1(:,i);%输出层训练项
end
p_test=[x1(:,h-2),x1(:,h-1),x1(:,h)];%输入层检测项
q_test=[y1(:,h-2),y1(:,h-1),y1(:,h)];%输出层检测项
net=newff(minmax(p_train),[12,3],{'tansig','logsig'},'traingda');%神经网络
inputweights=net.IW{1,1};
inputbias=net.b{2};
layerweights=net.LW{2,1};
layerbias=net.b{2};
net.trainParam.show=20;
net.trainParam.lr=0.01;
net.trainParam.mc=0.9;
net.trainParam.epochs=60000;
net.trainParam.goal=0.0001;
net=train(net,p_train,q_train);
r=sim(net,p_test);%对训练好的网络进行检测
Reverse= mapminmax('reverse',r,ps);
r1=Reverse';
r2=[y0(11,:);y0(12,:);y0(13,:)];
[m,n]=size(r);
for i=1:m
for j=1:n
r3(i,j)=1/r2(i,j);
r4=abs(r1-r2);
r5(i,j)=r4(i,j)*r3(i,j);
end
end
r5%对输出层检测数据与真实数据的相对误差
r6=sim(net,x2);%用训练好的数据进行预测
Reverse= mapminmax('reverse',r6,ps);%预测值进行饭归一化
r7=Reverse'