智能控制方法与应用大作业

智能控制方法与应用大作业

1. 考虑被控对象

\left\{\begin{matrix}x_{1}^{\cdot }&=&x_{2} \\ x_{2}^{\cdot }&=&f(x_{1},x_{2})+u \end{matrix}\right.

其中,f(x_{1},x_{2})为未知非线性函数,u为控制输入,位置指令为x_{d}(t)=sin t+2cos(0.2t)

(仿真中选择未知非线性函数f(x_{1},x_{2})=x_{1}x_{2}+x_{2}^{2}

(1) 采用模糊控制方法,使x_{1}跟踪位置指令x_{d}(t),并给出控制算法设计与分析过程及仿真图。

设置最优参数为

则用于逼近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 的延迟后相对精确地完成了对x_{d},x_{d}^{\cdot }的跟踪。图只是在控制率u的系数和状态方程初始值为一种情况下的输出,我们在之后还可以通过改变这些系数,以获得更好的跟踪效果。

(2) 采用RBF神经网络控制方法,使x_{1}跟踪位置指令x_{d}^{}(t),并给出控制算法设计与分析过程以及仿真图。

基于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 的延迟后相对精确地完成了对x_{d}x_{d}^{\cdot } 的跟踪。

2.  画出模糊控制器的框图,并简述各组成部分的意义。

模糊控制器框图

  1. 模糊化接口

模糊控制器的输入必须通过模糊化才能用于控制输出,因此,它实际上是模糊控制器的输入接口,其主要作用是将真实的确定量输入转换为一个模糊向量。对于一个模糊输入变量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是笛卡尔成绩集U\times V上的一个模糊子集,则某一时刻其控制量由下式给出

 C=(A\times B)\circ R

式中 ×模糊直积运算;°模糊合成运算。

规则库是用来存放全部模糊控制规则的,在推理时为“推理机”提供控制规则。规则条数和模糊变量的模糊子集划分有关,划分越细,规则条数越多,但并不代表规则库的准确度越高,规则库的“准确性”还与专家知识的准确度有关。

三.推理与解模糊接口

推理是模糊控制器中,根据输入模糊量,由模糊控制规则完成模糊推理来求解模糊关系方程,并获得模糊控制量的功能部分。在模糊控制中,考虑到推理时间,通常采用运算较简单的推理方法。最基本的有Zadeh近似推理,它包含有正向推理和逆向推理两类。正向推理常被用于模糊控制中,而逆向推理一般用于知识工程学领域的专家系统中。

推理结果的获得,表示模糊控制的规则推理功能已经完成。但是,至此所获得的结果仍是一个模糊矢量,不能直接用来作为控制量,还必须作一次转换,求得清晰的控制量输出,即为解模糊。通常把输出端具有转换功能作用的部分称为解模糊接口。

综上所述,模糊控制器实际上就是依靠微机(或单片机)来构成的。它的绝大部分功能都是由计算机程序来完成的。随着专用模糊芯片的研究和开发,也可以由硬件逐步取代各组成单元的软件功能。

3.  画出多输入单输出的BRF网络结构图,简述各层的意义,并给出层间关系的数学表示。

RBF网络是一种三层前向网络,由于输入到输出的映射是非线性的,而隐含层空间到输出空间的映射是线性的,从而可以大大加快学习速度并避免局部极小问题。

RBF网络结构

由于RBF网络只调节权值,因此,RBF网络较BP网络有算法简单、运行时间快的优点。但由于RBF网络中,输入空间到输出空间是非线性的,而隐含空间到输出空间是线性的,因而其非线性能力不如BP网络。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值