我按照版上指导,通过循环语句找到了最合适的节点数,也用了归一化处理.但是尽管如此,每次运行后的结果还是从60多到130多不等.这些东西写进报告里没有说服力.这个如何处理一下呢.我的原代码如下:
clc;
P=[0.1053 0.0993 0.0937 0.1361 0.1214 0.1064 0.0897 0.1734 0.1298
0.0899 0.0848 0.0800 0.1543 0.1923 0.2246 0.2576 0.1718 0.0121
0.0774 0.0730 0.0689 0.0202 0.0206 0.0210 0.0213 0.0104 0.2693
0.0503 0.1041 0.1549 0.0427 0.0420 0.0411 0.0438 0.0636 0.0582
0.6771 0.6388 0.6025 0.6467 0.6237 0.6069 0.5876 0.5808 0.5306];
T=[93.2 83.2 73.9 105.5 111.9 115.9 119.6 114.3 76.4];
[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T);
s=5:18;
res=zeros(size(s));
for i=1:length(s)
net=newff(minmax(pn),[s(i),1],{'tansig','purelin'},'traingdm')
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 1000;
net.trainParam.goal = 10e-3;
net=train(net,pn,tn);
y=sim(net,pn);
e=tn-y;
error=mse(e,net);
res(i)=norm(error);
end
number=find(res==min(res));
if (length(number)>1) no=number(1)
else no=number
end
net=newff(minmax(pn),[no,1],{'tansig','purelin'},'traingdm')
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 1000;
net.trainParam.goal = 10e-3;
net=train(net,pn,tn);
y=sim(net,pn);
e=tn-y;
error=mse(e,net);
save net
A=[0.3603
0.0063
0.0096
0.0790
0.5448];
An=tramnmx(A,minp,maxp);
Bn=sim(net,An);
B=postmnmx(Bn,mint,maxt)
x=no