神经网络算法
神网算法源代经经经经经经经经
clear
%经经 数据入huanghe_p=[370 503 434 575 490 420 560 640 558 343 326 405 446 423
422 697 598 377 435 472 451 667 601 689 541 485 425 389 382 707 422];
huanghe_t=[515 713 586 753 720 567 717 987 810 489 453 589 639 568 595 982 849
519 615 652 599 941 893 999 758 701 630 561 520 1040 535];%经经经一化理
p=(huanghe_p-min(huanghe_p))/(max(huanghe_p)-min(huanghe_p)); t=(huanghe_t-
min(huanghe_t))/(max(huanghe_t)-min(huanghe_t)); %经经 数据入2经经经经经 :网有参数
EPOCHS=10000;
GOAL=0.000005;
% 建立bp 经经经经经经经经经经经经经经经经 神网,并,仿真。其中入p经经经 ,出t
%-------------------------经经经经经经神元确定----------------------------s=3:15;%s 经经经经经经 常向量,表示神元的个数
res=zeros(size(s));%res 经经经经经经经经经经经将要存差向量,里先置零
pn=[p(1:5);p(6:10);p(11:15);p(16:20)];
tn=[t(1:5);t(6:10);t(11:15);t(16:20)];
for i=1:length(s)
net=newff(minmax(pn),[s(i),4],{'tansig','purelin'},'trainlm');
net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
net.b{2,1}=zeros(size(net.b{2,1}));
net.trainParam.epochs=EPOCHS;
net.trainParam.goal =GOAL;
net=train(net,pn,tn);
y=sim(net,pn);
e=tn-y;
error=mse(e,net);
res(i)=norm(error);
end
%经经经经经经经取最神元数,number 经经经经经经经经经经经经经使得差最小的神元个数
number=find(res==min(res));
if(length(number)>1) no=number(1)
else no=number end
clear error,res
%经经经经经经经经经经经经经经经经经经经经定神元数目后,建立网,仿真。 net=newff(minmax(pn),[no,4],{'tansig','purelin'},'trainlm');
net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
net.b{2,1}=zeros(size(net.b{2,1}));
net.trainParam.epochs=EPOCHS;
net.trainParam.goal =GOAL;
net=train(net,pn,tn);
y=sim(net,pn);
e=tn-y;
error=mse(e,net)%error 经经经经经经经 网的差向量
r=norm(error);%r 经经经经经经经 网的整体差
save net %经 保存最好的网%经经
input=[p(11:15);p(16:20);p(21:25);p(26:30)]; yuce=sim(net,input); %经经经经 果反一化
y1=[y(1,:) y(2,:) y(3,:) y(4,:)];
yuce1=[yuce(1,:)yuce(2,:)yuce(3,:)yuce(4,:)]; t1=y1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));
yuce2=yuce1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t (1:20));
%经经经 算差
wucha=abs(t1-huanghe_t(1:20))./huanghe_t(1:20) b=minmax(wucha); average_wucha=mean(wucha); %经 作
figure(1)
plot(1:20,huanghe_t(1:20),'*-',1:20,t1,'o:') figure(2)
plot(1:20,huanghe_t(11:30),'*-',1:20,yuce2,'o:')