智能控制大作业课本P236Word格式.docx
《智能控制大作业课本P236Word格式.docx》由会员分享,可在线阅读,更多相关《智能控制大作业课本P236Word格式.docx(17页珍藏版)》请在冰点文库上搜索。
y(k+1)=0.9994y(k)+0.006872u(k-480-1)+d1+d2
令d1=0.5sin(0.0314k),d2=0.5random
(1)。
一、模糊神经网络理论
径向基函数(RadialBasisFunction,RBF)神经网络是由J.Moody和C.Darken于20世纪80年代末提出的一种神经网络,它是具有单隐层的3层前馈网络。
RBF中的作用函数是高斯基函数,其值在输入空间中有限范围内为非零值,因而RBF网络是局部逼近的网络。
1)RBF网络的逼近
在RBF结构中,X=[x1,x2,...,xn]T为网络的输入向量。
设RBF网络的径向基向量
H=[h1,h2,...,hm]T,
其中hj为高斯基函数,即
hj=exp(-||X-Cj||^2/(2*bj^2)),j=1,2,.....,m
式中,网络第j个节点的中心向量为
Cj=[cj1,cj2,....,cjn]T,i=1,2,...,n
设网络的基宽向量为
B=[b1,b2,....,bm]T
bj为节点j的基宽参数,且为大于零的数。
网络的权向量为
W=[w1,w2,...,wm]T
RBF网络的输出为
ym(k)=w1*h1+w2*h2+....+wm*hm
RBF网络逼近的性能指标函数为
E(k)=(y(k)-ym(k))^2/2
根据梯度下降法,输出权、节点基宽参数及节点中心矢量的迭代算法如下
wj(k)=wj(k-1)+η(y(k)-ym(k))hj+α*(wj(k-1)-wj(k-2))
△bj=(y(k)-ym(k))wj*hj*(||X-Cj||^2/(bj^3))
bj(k)=bj(k-1)+η△bj+α*(bj(k-1)-bj(k-2))
△cji=(y(k)-ym(k))wj*(xi-cji)/(bj^2)
cji(k)=cji(k-1)+η△cji+α*(cji(k-1)-cji(k-2))
式中,η为学习速率,α为动量因子,ηЄ[0,1],αЄ[0,1]。
2)高级神经网络
模糊RBF网络
在模糊系统中,模糊集,隶属函数和模糊规则的设计是建立在经验知识基础上的。
这种设计方法存在很大的主观性。
将学习机制引入到模糊系统中,使模糊系统能够通过不断学习来修改和完善隶属函数和模糊规则,这是模糊系统发展的方向。
模糊系统与模糊神经网络既有区别又有联系,其联系表现为模糊神经网络本质上是模糊系统的实现,其区别表现为模糊神经网络又具有神经网络的特性。
在模糊神经网络中,神经网络的输入、输出节点用来表示模糊系统的输入、输出信号,神经网络的隐含节点用来表示隶属函数和模糊规则,利用神经网络的并行处理能力使得模糊系统的推理能力大大提高。
网络结构
模糊RBF神经网络结构由输入层、模糊化层、模糊推理层和输出层构成。
第一层:
输入层
该层的各个节点直接与输入量的各个分量连接,将输入量传到下一层。
对该层的每个节点i的输入输出表示为
第二层:
模糊化层
采用高斯函数作为隶属函数,cij和bj分别是第i个输入变量第j个模糊集合的隶属函数的均值和标准差。
即
第三层:
模糊推理层
该层通过与模糊化层的连接来完成模糊规则的匹配,各个节点之间实现模糊运算,即通过各个模糊节点的组合得到相应的点火强度。
每个节点j的输出为该节点所有输入信号的乘积,即
式中,
为输入层中第i个输入隶属函数的个数,即模糊化节点数。
第四层:
输出层
输出层为
,即f4(l)=W•f3=
为输出层节点的个数,W为输出层节点与第三层各节点的连接权矩阵。
二、利用模糊算法
1)模糊控制器设计及仿真结果
%模糊控制器的设计仿真程序:
fuzzy236.m
%fuzzycontrollerdesign
closeall
%2个输入,1个输出,49个规则。
a=newfis('
fuzzf'
);
f1=1;
a=addvar(a,'
input'
'
e'
[-3*f1,3*f1]);
%parametere
a=addmf(a,'
1,'
NB'
zmf'
[-3*f1,-1*f1]);
%Z形隶属函数
NM'
trimf'
[-3*f1,-2*f1,0]);
%三角形隶属函数
NS'
[-3*f1,-1*f1,1*f1]);
Z'
[-2*f1,0,2*f1]);
PS'
[-1*f1,1*f1,3*f1]);
PM'
[0,2*f1,3*f1]);
PB'
smf'
[1*f1,3*f1]);
%S形隶属函数
f2=0.5
ec'
[-3*f2,3*f2]);
%parameterec
2,'
[-3*f2,-1*f2]);
[-3*f2,-2*f2,0]);
[-3*f2,-1*f2,1*f2]);
[-2*f2,0,2*f2]);
[-1*f2,1*f2,3*f2]);
[0,2*f2,3*f2]);
[1*f2,3*f2]);
f3=0.5;
output'
u'
[-1*f3,1*f3]);
%parameteru
[-1*f3,-1/3*f3]);
[-1*f3,-2/3*f3,0]);
[-1*f3,-1/3*f3,1/3*f3]);
[-2/3*f1,0,2/3*f1]);
[-1/3*f3,1/3*f1,1*f3]);
[0,2/3*f3,1*f3]);
[1/3*f3,1*f3]);
rulelist=[11111;
12111;
13211;
14211;
15311;
16311;
17411;
21111;
22211;
23211;
24311;
25311;
26411;
27511;
31211;
32211;
33311;
34311;
35411;
36511;
37511;
41211;
42311;
43311;
44411;
45511;
46511;
47611;
51311;
52311;
53411;
54511;
55511;
56611;
57611;
61311;
62411;
63511;
64511;
65611;
66611;
67711;
71411;
72511;
73511;
74611;
75611;
76711;
77711];
a=addrule(a,rulelist);
%showrule(a)%showfuzzyrulebase
a1=setfis(a,'
DefuzzMethod'
mom'
%defuzzy
writefis(a1,'
a2=readfis('
disp('
....................................................'
fuzzycontrollertable:
e=[-3,+3],ec=[-1.5,+1.5]'
Ulist=zeros(7,7);
fori=1:
7
forj=1:
e(i)=-4+i;
ec(j)=-4+j
Ulist(i,j)=evalfis([e(i),ec(j)],a2);
end
end
Ulist=ceil(Ulist);
figure
(1);
plotfis(a2);
%得到模糊推理系统
figure
(2);
plotmf(a,'
1);
figure(3);
2);
figure(4);
程序运行结果如下:
图1.模糊推理系统
图2.x1的隶属度曲线
图3.x2的隶属度曲线
图4.输出隶属度曲线
MATLAB仿真图:
(无干扰情况)
仿真结果:
三、模糊神经网络实现
%模糊RBF网络的逼近程序
%FuzzyRBFApproaching
%网络结构选择2-25-25-1,神经网络的权值W的初值取[-1,+1]之间的随机值
%网络的学习参数
xite=0.20;
%学习速率
alfa=0.05;
%动量因子
b=ones(7,1);
%b=1高斯基宽向量的初值B=(bj)
c=[-6-4-20246;
-6-4-20246];
%中心矢量的初值C=(cij)
%权值初值w=2,4
w=[2;
4;
2;
4;
2];
c_1=c;
c_2=c_1;
b_1=b;
b_2=b_1;
w_1=w;
w_2=w_1;
u_1=0;
y_1=0;
ts=0.001;
fork=1:
1:
1000
time(k)=k*ts;
u(k)=1;
%输入信号为单位阶跃信号(系统期望输出)heaviside(k*ts)
%使用模糊RBF网络的逼近对象y(k)=0.9994y(k-1)+0.006872u(k-480-1)+d1+d2
%d1=0.5*sin(0.0314k),d2=0.5*random
(1)。
y(k)=0.9994*y_1+0.006872*u_1+0.5*sin(0.0314*k*ts);
x=[u(k),y(k)]'
;
%Layer1:
input
f1=x;
%输入层
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fori=1:
2%Layer2:
fuzzation模糊化层
net2(i,j)=-(f1(i)-c(i,j))^2/b(j)^2;
2
f2(i,j)=exp(net2(i,j));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7%Layer3:
fuzzyinference(49rules)
m1(j)=f2(1,j);
m2(j)=f2(2,j);
ff3(i,j)=m2(i)*m1(j);
f3=[ff3(1,:
),ff3(2,:
),ff3(3,:
),ff3(4,:
),ff3(5,:
),ff3(6,:
),ff3(7,:
)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f4=w_1'
*f3'
%Layer4:
output,
ym(k)=f4;
e(k)=y(k)-ym(k);
d_w=0*w_1;
25
d_w(j)=xite*e(k)*f3(j);
w=w_1+d_w+alfa*(w_1-w_2);
delta2=-e(k)*w'
d_b=0*b_1;
d_b(j)=xite*delta2*2*((x
(1)-c(1,j))^2)*(b(j)^-3);
b=b_1+d_b+alfa*(b_1-b_2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d_c=0*c_1;
1
d_c(i,j)=-xite*delta2*2*(x(i)-c(i,j))*b(j)^-2;
c=c_1+d_c+alfa*(c_1-c_2);
u_1=u(k);
y_1=y(k);
w_2=w_1;
w_1=w;
c_2=c_1;
c_1=c;
b_2=b_1;
b_1=b;
plot(time,y,'
r'
time,ym,'
b'
xlabel('
time(s)'
ylabel('
Approaching'
plot(time,y-ym,'
Approachingerror'
小结:
本文对所给系统用模糊控制和模糊神经网络控制两种方法进行了matlab程序仿真。
在模糊控制仿真中,用matlab程序进行控制器推理系统设计,由于系统延迟参数比较大,仿真跟踪缓慢,效果还行;
在模糊神经网络逼近程序中,由于阶跃信号的选择问题,仿真达不到所要的结果。