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

📄 fuzzynenulnet.asv

📁 该代码实现了一中具有补偿的模糊神经网络结构
💻 ASV
字号:
function out=FuzzyNeural(t,x1,x2,y)
%该代码实现了一中具有补偿的模糊神经网络结构,通过对一个函数的方阵,可以看出,该结构相应快速,输出稳定
%先在matlab命令窗口内执行以下代码
%//
%tspan=[0 20];x0=[1 1];
 %global kk;kk=0;
 %[t,x]=ode45('cb',tspan,x0);
 %siz=size(x);nu=siz(:,1);
 % x1=x(:,1);x2=x(:,2);
 %y=Fuzzyfun(nu,x1,x2);
 
 %其中  function y=Fuzzyfun(nu,X1,X2)
%for d=1:1:nu
  %  y(d,1)=sin(X1(d,:)+X2(d,:));
%end 
%//

nu=105;
rule=25;
uA=zeros(rule,2);
uA1=uA(:,1);
uA2=uA(:,2);
c=zeros(rule,2);
c1=c(:,1);c2=c(:,2);number=0;
for i=1:1:rule   %初始化输入函数的中心和宽度 ,属
    c1(i,1)=0.5;c2(i,1)=0.5;
    d(i,:)=0.5;
    g(i,1)=0.1;
    h(i,1)=0.1;
    m(i,1)=(g(i,:)^2)/(g(i,1)^2+h(i,1)^2);
    q(i,:)=1-m(i,:)+m(i,:)/2;
    a1(i,1)=0.5+0.5*ceil(i/5);
    a2(i,1)=0.5+0.25*rem(i,5);
end 
n=0.95;
ww=zeros(rule,1);mkik=zeros(rule,1);b=zeros(rule,1);
xspan1=[0.5,0.75,1.25,1.75,2.25,2.5];
xspan2=[0.4,0.625,0.875,1.125,1.375,1.5];
for s=1:1:nu
    x11=x1(s,:);x22=x2(s,:);yy=y(s,:);k=0;
for i1=1:1:5
    for i2=1:1:5
        k=k+1;
        if(x11>=xspan1(i1) & x11 <=xspan1(i1+1) & x22>=xspan2(i2)&x22<=xspan2(i2+1))
            ww(k,1)=ww(k,1)+1;
            mkik(k,1)=yy^s;
            b(k,:)=b(k,:)+mkik(k,1);
        end 
    end 
end 
end 
for i=1:1:rule
    if (ww(i,1)==0)
        b(i,:)=0.5;
    else
        b(i,:)=b(i,:)/ww(i,1);
    end 
end 
e=ones(1,nu);eee=1;
while(eee>=0.005) & number<=10
    eeh=0;
    for s=1:1:nu
        x11=x1(s,:);x22=x2(s,:);yy=y(s,:);
        s1=0;s2=0;
        for i=1:1:rule
            uA1(i,:)=exp(-((x11-a1(i,:))/c1(i,:))^2);
            uA2(i,:)=exp(-((x22-a2(i,:))/c2(i,:)^2));
            z(i,:)=(uA1(i,:)*uA2(i,:))^q(i,:);
            s1=s1+b(i,:)*d(i,:)*z(i,:);
            s2=s2+d(i,:)*z(i,:);
        end 
        f(s,:)=s1/s2;
        e(1,s)=((f(s,:)-yy)^2)/2;
        eeh=eeh+e(1,s);
        for j=1:1:rule
            WA=f(s,:);WB=yy;WC=d(j,:);WD=z(j,:);WE=b(j,:);WF1=a1(j,:);WF2=a2(j,:);WG=c1(j,:);WG=c2(j,:);
              dyb(j,:)=-((f(s,:)-yy)*d(j,:)*z(j,:))/s2;
              dyd(j,:)=-((f(s,:)-yy)*(b(j,:)-f(s,:))*z(j,:))/s2;
              %
              dya1(j,:)=-(2*(f(s,:)-yy)*(b(j,:)-f(s,:))*(x11-a1(j,:))*q(j,:)*d(j,:)*z(j,:))/((c1(j,:)^2)*s2);
              dya2(j,:)=-(2*(f(s,:)-yy)*(b(j,:)-f(s,:))*(x22-a2(j,:))*q(j,:)*d(j,:)*z(j,:))/((c2(j,:)^2)*s2);
             % 计算输入函数的的宽度
              dyc1(j,:)=-(2*(f(s,:)-yy)*(b(j,:)-f(s,:))*((x11-a1(j,:))^2)*q(j,:)*d(j,:)*z(j,:))/((c1(j,:)^3)*s2);
               dyc2(j,:)=-(2*(f(s,:)-yy)*(b(j,:)-f(s,:))*((x22-a2(j,:))^2)*q(j,:)*d(j,:)*z(j,:))/((c2(j,:)^3)*s2);
               
             if (uA1(j,:)*uA2(j,:))==0
            else
                 tt(j,:)=-((f(s,:)-yy)*(b(j,:)-f(s,:))*d(j,:)*z(j,:)*(log(uA1(j,:)*uA2(j,:))))/(2*s2);
                 g(j,:)=g(j,:)-(2*n*g(j,:)*(h(j,:)^2)*tt(j,:)/(g(j,:)^2+h(j,:)^2)^2);
                 h(j,:)=h(j,:)+(2*n*h(j,:)*(g(j,:)^2)*tt(j,:)/(g(j,:)^2+h(j,:)^2)^2);
                 m(j,:)=(g(j,:)^2)/(g(j,:)^2+h(j,:)^2);
                 q(j,:)=1-m(j,:)+m(j,:)/2;
             end 
                 %调整输入,输出
                 b(j,:)=b(j,:)+n*dyb(j,:);
                d(j,:)=d(j,:)+n*dyd(j,:);
                a1(j,:)=a1(j,:)+n*dya1(j,:);
                a2(j,:)=a2(j,:)+n*dya2(j,:);
                c1(j,:)=c1(j,:)+n*dyc1(j,:);
                c2(j,:)=c2(j,:)+n*dyc2(j,:);
                WC=d(j,:);WE=b(j,:);WF1=a1(j,:);WF2=a2(j,:);WG=c1(j,:);WG=c2(j,:);
             end 
        end
        eee=eeh;
        number=number+1;
        num(number,:)=number;
        eeee(number,:)=eee;
    end 

    figure(1)
    plot(t,y,'r',t,f,'b')
      figure(2)
   plot(num,eeee)

⌨️ 快捷键说明

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