clear;
clc;
P=[0.501 0.504 0.489;0.601 0.554 0.489;0.601 0.653 0.49;0.702 0.803 0.551;0.702 0.903 0.652;0.852 1.003 0.652;0.852 1.073 0.752;0.952 1.103 0.752;0.952 1.233 0.802;1.052 1.252 0.802;1.151 1.357 0.802;1.151 1.613 1.001;1.301 1.702 1.001;1.301 1.872 1.101;1.451 2.082 1.101;1.451 2.052 1.251;1.652 2.142 1.251;1.652 2.252 1.401;1.851 2.312 1.401;1.851 2.401 1.551;2.051 2.504 1.551;2.051 2.702 1.8;2.201 2.832 1.8;2.201 2.952 1.951;2.301 3.051 1.951;2.301 3.201 2.151;2.501 3.251 2.151;2.7 3.501 2.301;2.951 3.501 2.301;2.951 3.8 2.901;3.201 3.8 2.901;3.4 4.151 3.3;3.75 4.4 4.1;4.45 4.4 4.1;]';
T=[0 0;50 0;50 5;100 10;100 15;150 15;150 20;200 20;200 25;250 25;300 25;300 35;350 35;350 40;400 40;400 45;450 45;450 50;500 50;500 55;550 55;550 65;600 65;600 70;650 70;650 75;700 75;750 80;800 80;800 85;850 85;900 90;950 100;1000 100;]';
net=newff(minmax(P),[5,2],{'tansig' 'purelin'},'trainscg');
net.trainParam.epochs=20000;
net.trainParam.goal=1;
net.trainParam.min_grad=0.1;
net.trainParam.show=200;
net.trainParam.
time=inf;
net=train(net,P,T);
Y=sim(net,P);
clc;
P=[0.501 0.504 0.489;0.601 0.554 0.489;0.601 0.653 0.49;0.702 0.803 0.551;0.702 0.903 0.652;0.852 1.003 0.652;0.852 1.073 0.752;0.952 1.103 0.752;0.952 1.233 0.802;1.052 1.252 0.802;1.151 1.357 0.802;1.151 1.613 1.001;1.301 1.702 1.001;1.301 1.872 1.101;1.451 2.082 1.101;1.451 2.052 1.251;1.652 2.142 1.251;1.652 2.252 1.401;1.851 2.312 1.401;1.851 2.401 1.551;2.051 2.504 1.551;2.051 2.702 1.8;2.201 2.832 1.8;2.201 2.952 1.951;2.301 3.051 1.951;2.301 3.201 2.151;2.501 3.251 2.151;2.7 3.501 2.301;2.951 3.501 2.301;2.951 3.8 2.901;3.201 3.8 2.901;3.4 4.151 3.3;3.75 4.4 4.1;4.45 4.4 4.1;]';
T=[0 0;50 0;50 5;100 10;100 15;150 15;150 20;200 20;200 25;250 25;300 25;300 35;350 35;350 40;400 40;400 45;450 45;450 50;500 50;500 55;550 55;550 65;600 65;600 70;650 70;650 75;700 75;750 80;800 80;800 85;850 85;900 90;950 100;1000 100;]';
A=length(P);
B=length(T);
K=randperm(34);
input_train=P(:,K(1:20));
output_train=T(:,K(1:20));
input_test=P(:,K(21:34));
output_test=T(:,K(21:34));
%归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%初始化
net=newff(minmax(input_train),[5,2],{'tansig' 'purelin'},'trainscg');
net.trainParam.epochs=20000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.show=200;
%训练
net=train(net,inputn,outputn);
%测试数据归一化
input_test=mapminmax('apply',input_test,inputps);
%仿真
Y=sim(net,input_test);
%反归一化
BPoutput=mapminmax('reverse',Y,outputps);
figure(1)
plot(BPoutput(1,:),'-*');
hold on
plot(output_test(1,:),'-og');
figure(2)
plot(BPoutput(2,:),'-*');
hold on
plot(output_test(2,:),'-og');
for i=1:length(output_test)
error1(i)=(output_test(1,1:i)-BPoutput(1,1:i))/output_test(1,1:i);
end
for i=1:length(output_test)
error2(i)=(output_test(2,1:i)-BPoutput(2,1:i))/output_test(2,1:i);
end
fprintf('误差百分比:');
100*error1
100*error2
一周热门 更多>