智能控制方法与应用大作业
1. 考虑被控对象
其中,为未知非线性函数,u为控制输入,位置指令为
。
(仿真中选择未知非线性函数)
(1) 采用模糊控制方法,使跟踪位置指令
,并给出控制算法设计与分析过程及仿真图。
设置最优参数为
则用于逼近f的模糊规则分别有25条。
clear all;
close all;
L1=-pi/3;
L2=pi/3;
L=L2-L1;
T=L*1/1000;
x=L1:T:L2;
figure(1);
for i=1:1:5
gs=-[(x+pi/3-(i-1)*pi/6)/(pi/12)].^2;
u=exp(gs);
hold on;
plot(x,u);
end
xlabel('x');ylabel('Membership function degree');
根据隶属函数设计程序,可得到隶属函数图,如图
在本题对应的 MATLAB 仿真程序中,对状态方程和相关的误差、 误差变化率及误差函数进行了描述。由于已经明确的得到了控制率 u 的方程,所以此处直接将 u 带入状态方程中进行求解。另需说明的是,在此对控制率的参数c&η进行了赋值,经过一些尝试和调整后,对其分别赋值 15&50,以期得到相对较好的跟踪精度。其次,在主程序中,给定了X1&X2的初始值与起始时间和终止时间,然后利用 ode45 函数对状态方程进行求解,得到了加入输入 u 之后的输出。
clc,clear all,
close all
t0 = 0; %设置起始时间
tf = 10; %设置终止时间
X00=[0.8,0]'; %设置初始状态为:x1=0.5, x2=0
[t,x]=ode45('mm',[t0,tf],X00); %调用ode45求解状态微分方程"mm"
figure(1);
subplot(211);
plot(t,sin(t)+2*cos(0.2*t),'r',t,x(:,1),'b');
xlabel('time(s)');ylabel('position tracking');
legend('位置指令x1d','实际位置输出x1','location','best');
set(gca,'xtick',[0:0.5:10]);
grid on
subplot(212);
plot(t,cos(t)-0.4*sin(0.2*t),'r',t,x(:,2),'b');
xlabel('time(s)');ylabel('speed tracking');
legend('速度指令x2d','实际速度输出x2','location','best');
grid on
set(gca,'xtick',[0:0.5:10]);
function Xin =mm(t,X)
c=15; yita=50; %参数设置
x1=X(1,1); %状态变量
x2=X(2,1);
f=x1*x2+x2*x2; %已知的非线性函数
xd=sin(t)+2*cos(0.2*t);
dxd=cos(t)-0.4*sin(0.2*t);
ddxd=-sin(t)-0.08*cos(0.2*t);
e= x1-xd;
de=x2-dxd;
s=c*e+de; %误差函数 s=c*e+de
u=-f+ddxd-c*de-yita*sign(s); %设计所得的控制率 u=-f+ddxd-c*de-yita*s (这两式均将微分项的结果直接带入)
f1=x2; %被控对象的状态方程
f2= x1*x2+x2*x2+u;
F=[f1,f2]';
Xin = zeros(2,1); %Xdot向量初始化
Xin=F;
end
仿真结果如图所示
由仿真结果可得,在本题中设计的控制率 u 的作用下,X1和X2均在小于 0.5s 的延迟后相对精确地完成了对和的跟踪。图只是在控制率u的系数和状态方程初始值为一种情况下的输出,我们在之后还可以通过改变这些系数,以获得更好的跟踪效果。
(2) 采用RBF神经网络控制方法,使跟踪位置指令
,并给出控制算法设计与分析过程以及仿真图。
基于RBF神经网络的监督控制:初始阶段采用PD反馈控制,然后过渡到神经网络控制。在控制过程中,如果出现较大的误差,则PD控制起主导作用,神经网络控制起调节作用。
代码如下:
%Fuzzy RBF Approximation
clear all;
close all;
xite=0.50;
alfa=0.05;
bj=1.0;
c=[-1 -0.5 0 0.5 1;
-1.5 -1 0 1 1.5];
w=rands(25,1);
w_1=w;
w_2=w_1;
u_1=0.0;
y_1=0.0;
ts=0.001;
for k=1:1:50000
time(k)=k*ts;
c=0.5; yita=0.05;
x1=X(1,1);
x2=X(2,1);
f=x1*x2+x2*x2;
xd=sin(t)+2*cos(0.2*t);
dxd=cos(t)-0.4*sin(0.2*t);
ddxd=-sin(t)-0.08*cos(0.2*t);
e= x1-xd;
de=x2-dxd;
s=c*e+de; u=-f+ddxd-c*de-yita*sign(s);
u=-f+ddxd-c*de-yita*s
f1=x2;
f2= x1*x2+x2*x2+u;
F=[f1,f2]';
Xin = zeros(2,1);
Xin=F;
x=[u(k),y(k)]'; % Layer1:input
f1=x;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:1:2 % Layer2:fuzzation
for j=1:1:5
net2(i,j)=-(f1(i)-c(i,j))^2/bj^2;
end
end
for i=1:1:2
for j=1:1:5
f2(i,j)=exp(net2(i,j));
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:1:5 % Layer3:fuzzy inference(49 rules)
m1(j)=f2(1,j);
m2(j)=f2(2,j);
end
for i=1:1:5
for j=1:1:5
ff3(i,j)=m2(i)*m1(j);
end
end
f3=[ff3(1,:),ff3(2,:),ff3(3,:),ff3(4,:),ff3(5,:)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f4=w_1'*f3'; % Layer4:output
ym(k)=f4;
e(k)=y(k)-ym(k);
d_w=0*w_1;
for j=1:1:25
d_w(j)=xite*e(k)*f3(j);
end
w=w_1+d_w+alfa*(w_1-w_2);
u_1=u(k);
y_1=y(k);
w_2=w_1;
w_1=w;
end
figure(1);
plot(time,y,'r',time,ym,'-.b','linewidth',2);
xlabel('time(s)');ylabel('Approximation');
legend('y','ym');
figure(2);
plot(time,y-ym,'r','linewidth',2);
xlabel('time(s)');ylabel('Approximation error');
legend('y-ym');
由仿真结果可得,在本题中设计的控制率 u 的作用下,X1和X2均在小于 0.5s 的延迟后相对精确地完成了对和
的跟踪。
2. 画出模糊控制器的框图,并简述各组成部分的意义。
模糊控制器框图
- 模糊化接口
模糊控制器的输入必须通过模糊化才能用于控制输出,因此,它实际上是模糊控制器的输入接口,其主要作用是将真实的确定量输入转换为一个模糊向量。对于一个模糊输入变量e,其模糊子集通常可以按如下方式划分:
- e={负大,负小,零,正小,正大} = {NB,NS,ZO,PS,PB}
- e={负大,负中,负小,零,正小,正中,正大} = {NB,NM,NS,ZO,PS,PM,PB}
- e={负大,负中,负小,零负,零正,正小,正中,正大} = {NB,NM,NS,NZ,PZ,PS,PM,PB}
用三角型隶属度函数表示如图所示。
模糊子集和模糊化等级
(2)知识库
知识库由数据库和规则库两部分构成。
一.数据库
数据库所存放的所有输入、输出变量的全部模糊子集的隶属度向量值(即经过论域等级离散化以后对应值的集合)。若论域为连续域,则为隶属度函数。在规则推理的模糊关系方程求解过程中,向推理机提供数据。
二.规则库
模糊控制器的规则库基于专家知识或手动操作人员长期积累的经验,它是按人的直觉推理的一种语言表示形式。模糊规则通常有一系列的关系连接而成,如if-then,else,also,end,or等,关系词必须经过翻译才能将模糊规则数值化。最常用的关系词为if-then,also,对于多变量模糊控制系统,还有and等。例如,某模糊控制系统输入变量为e(误差)和ec(误差变化),他们对应的语言变量为E和EC,可给出一组模糊规则为
R1:IF E is NB and EC is NB then U is PB
R2:IF E is NB and EC is NS then U is PM
通常把if...部分称为“提前部”,而then...部分为“结论部”,其基本结构可归纳为IF A and B then C。其中,A为论域上的一个模糊子集,B是论域V上的一个模糊子集。根据人工控制经验,可离线组织其控制决策表R。R是笛卡尔成绩集上的一个模糊子集,则某一时刻其控制量由下式给出
式中 ×模糊直积运算;°模糊合成运算。
规则库是用来存放全部模糊控制规则的,在推理时为“推理机”提供控制规则。规则条数和模糊变量的模糊子集划分有关,划分越细,规则条数越多,但并不代表规则库的准确度越高,规则库的“准确性”还与专家知识的准确度有关。
三.推理与解模糊接口
推理是模糊控制器中,根据输入模糊量,由模糊控制规则完成模糊推理来求解模糊关系方程,并获得模糊控制量的功能部分。在模糊控制中,考虑到推理时间,通常采用运算较简单的推理方法。最基本的有Zadeh近似推理,它包含有正向推理和逆向推理两类。正向推理常被用于模糊控制中,而逆向推理一般用于知识工程学领域的专家系统中。
推理结果的获得,表示模糊控制的规则推理功能已经完成。但是,至此所获得的结果仍是一个模糊矢量,不能直接用来作为控制量,还必须作一次转换,求得清晰的控制量输出,即为解模糊。通常把输出端具有转换功能作用的部分称为解模糊接口。
综上所述,模糊控制器实际上就是依靠微机(或单片机)来构成的。它的绝大部分功能都是由计算机程序来完成的。随着专用模糊芯片的研究和开发,也可以由硬件逐步取代各组成单元的软件功能。
3. 画出多输入单输出的BRF网络结构图,简述各层的意义,并给出层间关系的数学表示。
RBF网络是一种三层前向网络,由于输入到输出的映射是非线性的,而隐含层空间到输出空间的映射是线性的,从而可以大大加快学习速度并避免局部极小问题。
RBF网络结构
由于RBF网络只调节权值,因此,RBF网络较BP网络有算法简单、运行时间快的优点。但由于RBF网络中,输入空间到输出空间是非线性的,而隐含空间到输出空间是线性的,因而其非线性能力不如BP网络。