模糊神经网络噪声解耦MATLAB程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊神经网络解耦MATLAB 程序
例用隶属函数型神经网与模糊控制融合的解耦程序
具有耦合的两个相邻子系统的差分方程为
⎩⎨⎧++-+-+-=++-+-+-=)()()2()1()1()()()()2()1()1()(2122221212
1211211111k y k k u b k u b k y a k y k y k k u b k u b k y a k y ξξ (7.122) 式中,)(k i ξ随机噪声;)(k y ij 为两个相邻子系统之间的耦合;采用隶属函数型神经网与模糊控制融合的解耦方法(DMFFCNN )方法实现解耦控制。
1) 开发的程序
p1=0.5;
q1=0.5;
p2=0.5;
q2=0.5;
p3=0.5;
q3=0.5;
p4=0.95;
q4=0.5;
p5=0.95;
q5=0.5;
p6=0.95;
q6=0.5;
p7=0.5;
q7=0.5;
p8=0.95;
q8=0.5;
p9=0.5;
q9=0.5;
p10=0.95;
q10=0.5;
p11=0.95;
q11=0.5;
p12=0.95;
q12=0.5;
p13=0.65;
q13=0.05;
%隶属函数型神经网的中心值、尺度因子和权向量初始化部分a10=[-2 0 2];
a11=[-2 0 2];
a20=[-2 0 2];
a21=[-2 0 2];
b10=[1.5 1.5 1.5];
b11=[1.5 1.5 1.5];
b20=[1.5 1.5 1.5];
b21=[1.5 1.5 1.5];
v0=[-1 -0.5 -0.5;-0.5 0 0.5;0.5 0.5 1];
v1=[-1 -0.5 -0.5;-0.5 0 0.5;0.5 0.5 1];
%系统部分的初值
yp0=0;
yp1=0;
ep0=0;
ep1=0;
up0=1.05;
up1=1.39;
x1=0.12;
x2=0.24;
y0=0;
y1=0;
u1=0;
e0=0;
e1=0;
sp=10;
k=1;
se=0.02;
sd=0.02;
su=0.0522;
%开始
kp=0.284;
ki=0.03;
kd=0.626;
%the second channel reference p12=0.5;
q12=0.5;
p22=0.5;
q22=0.5;
p32=0.5;
q32=0.5;
p42=0.95;
q42=0.5;
p52=0.95;
q52=0.5;
p62=0.95;
q62=0.5;
p72=0.5;
q72=0.5;
p82=0.95;
q82=0.5;
p92=0.5;
q92=0.5;
p102=0.95;
q102=0.5;
p112=0.95;
q112=0.5;
p122=0.95;
q122=0.5;
p132=0.65;
q132=0.05;
%系统部分的初值
yp02=0;
yp12=0;
ep02=0;
ep12=0;
up02=1.05;
up12=1.39;
x12=0.12;
x22=0.24;
y02=0;
y12=0;
u12=0;
e02=0;
e12=0;
sp2=5;
k=1;
se2=0.02;
sd2=0.02;
su2=0.0522;
kp2=0.284;
ki2=0.03;
kd2=0.626;
%+++++++++++++++++++++++++++++++++++++++%子系统1(SUB1)的J循环开始for J=1:50
ep1=10-yp1;
pid=kp*(ep1-ep0)+ki*ep1;
up2=up1+pid;
yp2=0.5*yp1+2.5*up2+2.5*up1;
%yp2=0.8333*yp1-0.1667*yp0+1.6667*up2+1.6667*up1;
yp(:,J)=yp2;
up0=up1;
up1=up2;
ep0=ep1;
yp0=yp1;
yp1=yp2;
end
time=[1:1:50];
n=0.28*rand(size(time)); %产生的SUB1随机噪声
n1=0.3*rand(size(time));%产生的SUB2随机噪声while(k<=50)
%function deal with
for(T=1:20)
X1=x1*se;
X2=x2*sd;
if(X1<=-2)
X1=-2;
elseif(X1>=2)
X1=2;
end
if(X2<=-2)
X2=-2;
elseif(X2>=2)
X2=2;
end
%the hiddening layer output of FNN
for i=1:3
for j=1:3
A=[(X1-a11(:,i))/b11(:,i)].^2;
B=[(X2-a21(:,j))/b21(:,j)].^2;
h(i,j)=exp(-(A+B)/2);
end
end
%the output
sum=0;
for i=1:3
for j=1:3
sum=sum+h(i,j)*v1(i,j);
end
end
ot=sum;
cu=su*ot;
u2=u1+cu;
disp(u2);
if(u2<0)