% NN Learn Fuzzy clc; clear all; close all; %==========WEIGHT========================================================== x=[rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;rand(1)-0.5; rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;rand(1)-0.5; rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;rand(1)-0.5; rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;rand(1)-0.5; rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;rand(1)-0.5;0.2]; %==========TRAINING DATA=================================================== % load u169 %% training data 1 % load stck169 % u=u169; % stck=stck169; load u1891 %% training data 2 load stck1891 u=u1891; stck=stck1891; % START % ========================================================================= nnt=0; number_nn=5; for nn1=1:50 %sua lai nnt--> nn1 for n1=1:size(u,1) nnt=nnt+1; nv=0; for j=1:number_nn for i=1:3 nv=nv+1; w1(j,i)=x(nv); end end k=1; for j=1:number_nn nv=nv+1; w2(k,j)=x(nv); end for j=1:number_nn jv(j)=w1(j,:)*[u(n1,1);u(n1,2);u(n1,3)]; ipj(j)=tanh(0.5*jv(j)); %% output hindden end kv(1)=w2(1,:)*ipj'; opk(1)=tanh(0.5*kv(1)); %% output of outputlayer e=stck(n1,1)-opk(1); ee1(nn1)=e*e; outpt(nnt)=opk(1); out(n1)=opk(1); ero(nnt)=e; for j=1:number_nn dk=e*(1-opk(1)*opk(1)); dw2(1,j)=0.1*dk*ipj(j); end for j=1:number_nn sm=0; sm=sm+dk*w2(1,j); sm=sm*(1-ipj(j)*ipj(j)); dj(j)= sm; end for j=1:number_nn for i=1:3 dw1(j,i)=0.1*dj(j)*u(n1,i); %dw1 is weight update for W1 end end for j=1:number_nn w2(1,j)=w2(1,j)+dw2(1,j); %weight update end for j=1:number_nn for i=1:3 w1(j,i)=w1(j,i)+dw1(j,i); %weight update end end nv=0; for j=1:number_nn for i=1:3 nv=nv+1; x(nv)=w1(j,i); end end k=1; for j=1:number_nn nv=nv+1; x(nv)=w2(k,j); end end end error1=out-stck'; figure(1) plot(ee1,'b','LineWidth',1.5) legend('Squared deviations',2); figure(2) plot(stck,'b','LineWidth',1.5); hold on; plot(out,'-r','LineWidth',1.5); legend('Desired output','Practical output',2); figure(3) plot(error1,'b','LineWidth',1.5) legend('Error',2);