gusucode.com > 遗传算法优化参数的递归T-S模糊神经网络学习算法matlab源码程序 > 遗传算法优化参数的递归T-S模糊神经网络学习算法matlab源码程序/T-S-FNN/objvxins.m

    % 被调用函数

function Jms=objvxins(Chroo,pp,qq)
 clc;
 clear all;
 load datauy.dat;
 datauy1=zeros(800,2);      %训练时用800,当检验时将800改为400
 datauy1=datauy(1:800,:);    %训练数据为datauy中的前800个数,后400作为校验数据,当检验时将1:800改为801:1200
[pp,qq]=size(Chroo);            
Jms=zeros(50,1);          %存储每个染色体对应的目标函数值,检验时用不着此语句
Jm=zeros(799,1);          %存储每个训练数据的网络输出与实际输出的均方误差,检验时用不着此语句
ys=zeros(800,1);           %存储网络辨识器输出值           
A1=zeros(1,9);             %将每条染色体分解为单独的规则(两个中心、宽度、递归增益以及三个后件参数),分别存于A1,A2等等
A2=zeros(1,9);
A3=zeros(1,9);
A4=zeros(1,9);
A5=zeros(1,9);
A=zeros(1,45);         %存储一条染色体
u11=zeros(800,2);       %存储每个规则中两个变量分别的隶属函数值,当用400个数作检验时,将800改为400
u12=zeros(800,2);
u13=zeros(800,2);
u14=zeros(800,2);
u15=zeros(800,2);
umul=zeros(799,5);       %存储每条规则的激活强度(检验时399)
for k=1:50              %循环50次,分别计算每个染色体对应的目标函数值,当检验时将k设为1
   A=Chroo(k,:);
   A1=A(1,1:9);
   A2=A(1,10:18);
   A3=A(1,19:27);
   A4=A(1,28:36);
   A5=A(1,37:45);
   for l=1:799                    
     for m=1:2           %以下为该网络计算过程
        c1=A1(1,m+4);
        u11(l+1,m)=exp(-((datauy1(l,m)+u11(l,m)*c1-A1(1,m))/A1(1,m+2))^2);
        umul(l,1)=u11(l+1,1)*u11(l+1,2);
        c2=A2(1,m+4);
        u12(l+1,m)=exp(-((datauy1(l,m)+u12(l,m)*c2-A2(1,m))/A2(1,m+2))^2);
        umul(l,2)=u12(l+1,1)*u12(l+1,2);
        c3=A3(1,m+4);
        u13(l+1,m)=exp(-((datauy1(l,m)+u13(l,m)*c3-A3(1,m))/A3(1,m+2))^2);
        umul(l,3)=u13(l+1,1)*u13(l+1,2);
        c4=A4(1,m+4);
        u14(l+1,m)=exp(-((datauy1(l,m)+u14(l,m)*c4-A4(1,m))/A4(1,m+2))^2);
        umul(l,4)=u14(l+1,1)*u14(l+1,2);
          c5=A5(1,m+4);                 u15(l+1,m)=exp(-((datauy1(l,m)+u15(l,m)*c5-A5(1,m))/A5(1,m+2))^2);
        umul(l,5)=u15(l+1,1)*u15(l+1,2);
        u16(l+1,m)=exp(-((datauy1(l,m)+u16(l,m)*c6-A6(1,m))/A6(1,m+2))^2);
    end
        data=zeros(1,5);
        data=[1 datauy1(l,1) datauy1(l,2)];
        AA=[A1(1,7)A1(1,8)A1(1,9);A2(1,7)A2(1,8)A2(1,9);A3(1,7)A3(1,8) A3(1,9);
A4(1,7)A4(1,8)A4(1,9);A5(1,7) A5(1,8)A5(1,8) A5(1,9)];
        umull=sum(umul(l,:));
        umulgy=zeros(1,5);
        if (umull~=0)
          umulgy=umul(l,1:5)./umull;
        else
          umulgy=0;
        end
        datarep=zeros(5,3);
        datarep=data(ones(1,5),:);
        yu=zeros(1,5);
        yu=sum((datarep.*AA)');
        ys(l+1,1)=sum(umulgy.*yu);
        Jm(l,1)=(ys(l+1,1)-datauy1(l+1,2))^2;
 end
        Jms(k)=sum(Jm);
end
hold on;
plot(ys,'r-.')