⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengpin.m

📁 模糊神经网络
💻 M
字号:
clear all;
close all;

xite=0.6;
alfa=0.1;

%b=3*ones(7,1);
%初始化模糊神经网络
b=[1/4 1/4 1/4 1/4 1/4 1/4 1/4;
   1/4 1/4 1/4 1/4 1/4 1/4 1/4];
a=[-1 -2/3 -1/3 0 1/3 2/3 1;
  -1 -2/3 -1/3 0 1/3 2/3 1];
%  ww=rands(49,1);
ww=[0.0826 0.8125 -0.6338    0.2308    0.1934    0.5981   -0.0431   -0.2566   -0.6169    0.8522    0.3218    0.1834    0.6043...
 -0.5382    0.7930    0.1087    0.5226   -0.0854    0.1507    0.2383   -0.2081    0.1224   -0.4105   -0.0859    0.2713   -0.3654...
 0.7343   -0.7793    0.3481   -0.6051    0.0461   -0.8465    0.8109   -0.3018   -0.5443   -0.6846   -0.5047    0.8128    0.7549...
-0.2809    0.9556   -0.4832   -0.9192   -0.4737   -0.0502   -0.3026   -0.6842    0.6309    0.6254];
ww=ww';

n=7;
a_1=a;
a_2=a_1;

b_1=b;
b_2=b_1;

ww_1=ww;
ww_2=ww_1;
%初始化BP辨识网络
xiteb=0.6;
alfab=0.1;

% w2=rands(6,1);
w2=[-0.3925    0.0268   -0.2224   -0.4836    0.8830   0.3280];
w2=w2';
w2_1=w2;w2_2=w2_1;

% w1=rands(2,6);
w1 =[-0.0341    0.3300    0.2554   -0.6446   -0.6677    0.1499;
   -0.3338   -0.7361   -0.3694   -0.1387    0.3259    0.6034];
w1_1=w1;w1_2=w1;

% dw1=0*w1;

x=[0,0]';

u_1=0.0;
y_1=0.0;
u_2=0.0;
y_2=0.0;

I=[0,0,0,0,0,0]';
Iout=[0,0,0,0,0,0]';
FI=[0,0,0,0,0,0]';
%初始化输入输出
e=0.5*ones(20,1);
de=0.5*ones(20,1);
% e(1)=0;
% de(1)=0;
k=1;

ts=0.01;
for k=1:1:20
time(k)=k*ts;

 e(k)=(1-exp(-10)*e(k))/(1+exp(-10)*e(k));
 de(k)=(1-exp(-0.05)*de(k))/(1+exp(-0.05)*de(k));
I=[e(k),de(k)]';  % Layer1:input

% ke=50;kd=30;


% if e(k)>=6
% e(k)=6
% elseif e(k)<=-6
%      e(k)=-6;
% end
% if de(k)>=6
%     de(k)=6
% elseif de(k)<=-6
% de(k)=-6;
% end
% I=[1.1573 15.7352]
for mm=1:25
O1=I;                        
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:1:2                         % Layer2:fuzzation
   for j=1:1:7
      net2(i,j)=-(O1(i)-a(i,j))^2/b(i,j)^2;
   end
end
for i=1:1:2
   for j=1:1:7
   O2(i,j)=exp(net2(i,j));
   end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:1:7                      % Layer3:fuzzy inference(49 rules)
     m1(j)=O2(1,j);
	 m2(j)=O2(2,j);
end

for i=1:1:7
	for j=1:1:7
   	 ff3(i,j)=m1(i)*m2(j);
	end
end
O3=[ff3(1,:),ff3(2,:),ff3(3,:),ff3(4,:),ff3(5,:),ff3(6,:),ff3(7,:)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sumf3=sum(O3);
O4=O3*ww/sumf3;                      % Layer4:output
O4=O4*3;
O44(k)=O4;                  


%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%这里O4作为控制量输入,然后得到系统的输出,用这个输出和输入作为神经网络的输入去训练一个神经网络,
u(k)=O4;

den =[1   -1.9801  0.9802];
num=[0  4.9668e-005  4.9338e-005];
% u_1=0;
% y_1=0;
% u_2=0;
% y_2=0;
y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;

x=[u(k),y(k)];

for m=1:50
for  j=1:1:6   
     I(j)=x*w1(:,j);
     Iout(j)=1/(1+exp(-I(j)));
end   

yn(k)=w2'*Iout;         % Output of NNI networks

eb(k)=y(k)-yn(k);    % error calculation

w2=w2_1+(xite*eb(k))*Iout+alfa*(w2_1-w2_2);

for j=1:1:6
   FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end

for i=1:1:2
   for j=1:1:6
      dw1(i,j)=eb(k)*xite*FI(j)*w2(j)*x(i);
   end
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);

%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%
yu=0;
for j=1:1:6
   yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
% dyu(k)=dyu(k)*3;

w1_2=w1_1;w1_1=w1;
w2_2=w2_1;w2_1=w2;
u_2=u_1;
y_2=y_1;

u_1=u(k);
y_1=y(k);
end
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

d_ww=0*ww_1;
for j=1:1:49
    d_ww(j)=xite*dyu(k)*e(k)*O3(j)/sumf3;
end
ww=ww_1+d_ww+alfa*(ww_1-ww_2);


aa=0; 
d_a=0*a_1;    
for j=1:1:7
        for l=1:1:7
           aa=aa+O2(2,l)*(ww((j-1)*n+l)*sumf3-ww'*O3');  
        end
    d_a(1,j)=xite*e(k)*dyu(k)*2*(O1(1)-a(1,j))*O2(1,j)*aa/(b(1,j)^2*sumf3^2);               
end

bb=0; 
d_b=0*b_1;    
for j=1:1:7
        for l=1:1:7
           bb=bb+O2(2,l)*(ww((j-1)*n+l)*sumf3-ww'*O3');  
        end
    d_b(1,j)=xite*e(k)*dyu(k)*2*(O1(1)-a(1,j))*O2(1,j)*aa/(b(1,j)^3*sumf3^2);               
end



aa=0; 
d_a=0*a_1;    
for l=1:1:7
        for j=1:1:7
           aa=aa+O2(1,j)*(ww((l-1)*n+j)*sumf3-ww'*O3');  
        end
    d_a(2,j)=xite*e(k)*dyu(k)*2*(O1(2)-a(2,j))*O2(2,j)*aa/(b(2,j)^2*sumf3^2);               
end


bb=0; 
d_b=0*b_1;    
for l=1:1:7
        for j=1:1:7
           bb=bb+O2(1,j)*(ww((l-1)*n+j)*sumf3-ww'*O3');  
        end
    d_b(2,j)=xite*e(k)*dyu(k)*2*(O1(2)-a(2,j))*O2(2,j)*aa/(b(2,j)^3*sumf3^2);               
end

a=a_1+d_a+alfa*(a_1-a_2);

b=b_1+d_b+alfa*(b_1-b_2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
   ww_2=ww_1;
   ww_1=ww;
   
   a_2=a_1;
   a_1=a;
   
   b_2=b_1;
   b_1=b;
end
%  y(1)=0;
e_1=e(k);
e(k)=1-y(k);
de(k)=(e(k)-e_1)/ts;
end
figure(1);
plot(time,y,'r');
figure(2);
plot(time,O44);
figure(3);
plot(time,e);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -