%FNN arithmatic program
%.-------init-----------------?
d=1.8; %input
k=1;
%b_1=exp(-8*.001)+exp(-6*.001);
%b_2=exp(-14*.001) ;
%b_3=exp(-6*.001)-exp(-8*.001);
e(1)=d;
ee(1)=0;
m=[-3 -1.5 0 1.5 3;-2 -1 0 1 2];
q=[.6 .6 .6 .6 .6;.4 .4 .4 .4 .4];
o=[-3 -3 -3 -3 -3;0 -1.5 -1.5 -1.5 -3;3 1.5 0 -1.5 -3;3 3 1.5 1.5 1.5;3 3 3 3 3];
%o=[0 0 0 0 0;0 0 0 0 0;0 0 0 0 0;0 0 0 0 0;0 0 0 0 0];
d_o_1=zeros(size(o)); %learning rate self-adaptive;
d_m_1=zeros(size(m));
d_q_1=zeros(size(q));
n_m =.05*ones(size(m));
n_q =.05*ones(size(q));
n_o= 0.01*ones(size(o));
%-----------process_1---------------------
while k<250
net1=[e(k) ee(k)];
y1=net1;
%-----------Process_2---------------------
for i=1:2
for j=1:5
net2(i,j)=y1(i);
y2(i,j)=exp(-(net2(i,j)-m(i,j))^2/q(i,j)^2);
end
end
%-----------process_3----------------
sum_3=0;
for i=1:5
for j=1:5
net3(i,j)=y2(1,i)*y2(2,j);
sum_3=sum_3+net3(i,j);
end
end
for i=1:5
for j=1:5
y3(i,j)=net3(i,j);
end
end
%------------Process_4- -----------------?
net4=0;
for i=1:5
for j=1:5
net4=net4+o(i,j)*y3(i,j);
end
end
y4(k)=net4/sum_3;
%------------Process_object--------------
%T(1)=0;
%T(2)=5*b_3*y4(1)/b_2;
%sum_out=0;
%if k>1
% for i=1:k
% sum_out=sum_out+y4(i);
% end
% T(k+1)=(1*b_3*sum_out+0.5*b_1*T(k)-T(k-1))/b_2;
%end
%--------------study_Process_4&3---------------------?
d4(1)=0;
d4(k)=(1.8-y4(k))
e(k+1)=d-y4(k);
ee(k+1)=e(k+1)-e(k);
for i=1:5
for j=1:5
d_o(i,j)=d4(k)*y3(i,j);
d3(i,j)=d4(k)*o(i,j) ;
end
end
%--------------study_process_2-------------------
d2=zeros(size(y2));
for j=1:5
for i=1:5
d2(1,j)=d2(1,j)+d3(j,i)*y2(2,i)*y2(1,j);
d2(2,j)=d2(2,j)+d3(i,j)*y2(1,i)*y2(2,j) ;
end
end
for i=1:2
for j=1:5
d_m(i,j)=d2(i,j)*2*(y1(i)-m(i,j))/q(i,j)^2;
d_q(i,j)=d2(i,j)*2*(y1(i)-m(i,j))^2/q(i,j)^3;
end
end
%--------------modify parameters-----------------?
for i=1:2
for j=1:5
f_m(i,j)=sign(d_m(i,j)*d_m_1(i,j));
f_q(i,j)=sign(d_q(i,j)*d_q_1(i,j));
n_m(i,j)=2^f_m(i,j)*n_m(i,j);
n_q(i,j)=2^f_q(i,j)*n_q(i,j);
m(i,j)=m(i,j)+n_m(i,j)*d_m(i,j);
q(i,j)=q(i,j)+n_q(i,j)*d_q(i,j);
d_m_1(i,j)=d_m(i,j);
d_q_1(i,j)=d_q(i,j);
end
end
for i=1:5
for j=1:5
f_o(i,j)=sign(d_o(i,j)*d_o_1(i,j));
n_o(i,j)=1.1^f_o(i,j)*n_o(i,j);
o(i,j)=o(i,j)+n_o(i,j)*d_o(i,j);
d_o_1(i,j)=d_o(i,j);
end
end
k=k+1;
end