智能控制实验Word文件下载.docx
《智能控制实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《智能控制实验Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
“若水位低于O点,则向内注水,差值越大,注水越快”。
根据上述经验,按下列步骤设计模糊控制器:
图1.1水箱的液位控制
四、实验步骤
1、确定观测量和控制量
定义理想液位O点的水位为h0,实际测得的水位高度为h,选择液位差
将当前水位对于O点的偏差e作为观测量。
2输入量和输出量的模糊化
将偏差e分为五级:
负大(NB),负小(NS),零(O),正小(PS),正大(PB)。
根据偏差e的变化范围分为七个等级:
-3,-2,-1,0,+1,+2,+3。
得到水位变化模糊表1。
表1-1水位变化划分表
控制量u为调节阀门开度的变化。
将其分为五级:
并根据u的变化范围分为九个等级:
-4,-3,-2,-1,0,+1,+2,+3,+4。
得到控制量模糊划分表2
表1-2控制量变化划分表
3模糊规则的描述
根据日常的经验,设计以下模糊规则:
(1)“若e负大,则u负大”
(2)“若e负小,则u负小”
(3)“若e为0,则u为0”
(4)“若e正小,则u正小”
(5)“若e正大,则u正大”
其中,排水时,u为负,注水时,u为正。
上述规则采用“IFATHENB”形式来描述:
(1)ife=NBthenu=NB
(2)ife=NSthenu=NS
(3)ife=0thenu=0
(4)ife=PSthenu=PS
(5)ife=PBthenu=PB
根据上述经验规则,可得模糊控制表3
表1-3模糊控制规则表
4求模糊关系
模糊控制规则是一个多条语句,它可以表示为U×
V上的模糊子集,即模糊关系R:
其中规则内的模糊集运算取交集,规则间的模糊集运算取并集。
由以上五个模糊矩阵求并集(即隶属函数最大值),得:
5、编程
按上述步骤,设计水箱模糊控制的Matlab仿真程序。
通过该程序,可实现模糊控制的动态仿真。
%FuzzyControlforwatertank
clearall;
closeall;
a=newfis('
fuzz_tank'
);
a=addvar(a,'
input'
'
e'
[-3,3]);
%Parametere
a=addmf(a,'
1,'
NB'
zmf'
[-3,-1]);
NS'
trimf'
[-3,-1,1]);
Z'
[-2,0,2]);
PS'
[-1,1,3]);
PB'
smf'
[1,3]);
output'
u'
[-4,4]);
%Parameteru
[-4,-1]);
[-4,-2,1]);
[-1,2,4]);
[1,4]);
rulelist=[1111;
%Editrulebase
2211;
3311;
4411;
5511];
a=addrule(a,rulelist);
a1=setfis(a,'
DefuzzMethod'
mom'
%Defuzzy
writefis(a1,'
tank'
%Savetofuzzyfile"
tank.fis"
a2=readfis('
figure
(1);
plotfis(a2);
figure
(2);
plotmf(a,'
1);
figure(3);
flag=1;
ifflag==1
showrule(a)%Showfuzzyrulebase
ruleview('
%DynamicSimulation
end
disp('
-------------------------------------------------------'
fuzzycontrollertable:
e=[-3,+3],u=[-4,+4]'
fori=1:
1:
7
e(i)=i-4;
Ulist(i)=evalfis([e(i)],a2);
Ulist=round(Ulist)
e=-3;
%Error
u=evalfis([e],a2)%Usingfuzzyinference
五、实验结果
六、
本次试验通过模糊控制来控制水箱液位,取得了良好的效果。
实验二、单容水箱神经网络控制
4、熟悉神经网络的特征、结构及学习算法
5、通过实验进一步掌握神经网络的原理及实现
6、了解神经网络的结构对控制效果的影响
7、掌握用MATLAB事先神经网络控制系统仿真的方法
5、通过BP神经网络逼近的方法,使单容水箱中的H能够稳定在100
1.BP神经网络的结构
含一个隐含层的BP网络结构如左图所示,图中i为输入层神经元,j为隐层神经元,k为输出层神经元。
2.BP神经网络的逼近
BP网络逼近的结构如下图所示,图中k为网络的迭代步骤,u(k)和y(k)为逼近器的输入。
BP为网络逼近器,y(k)为被控对象实际输出,yn(k)为BP的输出。
将系统输出y(k)及输入u(k)的值作为逼近器BP的输入,将系统输出与网络输出的误差作为逼近器的调整信号。
图2.1
用于逼近的BP网络如上右图所示
3.BP算法的学习
BP算法的学习过程由信息的正向传播和误差的反向传播两个过程组成。
在正向传播过程中,输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;
中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;
最后一个隐层传递到输出层各神经元的信息,经进一步处理后,由输出层向外界输出信息处理结果。
当实际输出与期望输出不符时,进入误差的反向传播阶段。
误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。
周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度。
四、实验设计过程及结果
1、写出三容水箱各流量液位的数学表达式:
q1=3.5*k;
q2=21*sqrt(h);
h=h+(q1-q2)/s;
s=120;
五、程序
%BPidentification
xite=0.50;
alfa=0.05;
w2=rands(6,1);
w2_1=w2;
w2_2=w2_1;
w1=rands(2,6);
w1_1=w1;
w1_2=w1;
dw1=0*w1;
x=[0,0]'
;
u_1=0;
y_1=0;
I=[0,0,0,0,0,0]'
Iout=[0,0,0,0,0,0]'
FI=[0,0,0,0,0,0]'
ts=0.001;
fork=1:
1000
time(k)=k*ts;
u(k)=0.50*sin(3*2*pi*k*ts);
y(k)=u_1^3+y_1/(1+y_1^2);
forj=1:
6
I(j)=x'
*w1(:
j);
Iout(j)=1/(1+exp(-I(j)));
end
yn(k)=w2'
*Iout;
%OutputofNNInetworks
e(k)=y(k)-yn(k);
%Errorcalculation
w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2);
6
FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
2
forj=1:
dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);
%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%
yu=0;
yu=yu+w2(j)*w1(1,j)*FI(j);
dyu(k)=yu;
x
(1)=u(k);
x
(2)=y(k);
w1_2=w1_1;
u_1=u(k);
y_1=y(k);
plot(time,y,'
r'
time,yn,'
b'
xlabel('
times'
ylabel('
yandyn'
plot(time,y-yn,'
error'
plot(time,dyu);
dyu'
六、实验结果
七、实验总结。
本次实验我了解BP神经网络控制的基本算法,熟悉掌握论文matlab程序的编写;
了解智能控制中BP神经网络控制的基本原理及思路,并应用于实践;
在控制单容水箱中有比较良好的效果;
在调试过程中,熟悉了调试的方法,根据结果分析如何设置调整参数要有足够的耐心。
在编写程序方面由于是使用课本上的参考程序,因此没有遇到问题,主要的疑问是在选择参数上,最后在老师和同学的帮助下,确定了参数的变化范围,改变两个参数后,得到仿真结果,分析后得到结论,实验顺利结束,通过BP神经网络逼近的方法,使单容水箱中的H能够基本稳定。
实验三专家PID控制
设计专家PID控制