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-.')