智能控制.docx
《智能控制.docx》由会员分享,可在线阅读,更多相关《智能控制.docx(16页珍藏版)》请在冰豆网上搜索。
智能控制
一、
给定系统在不加任何控制策略的情况下matlab的simulink模型如下,
图1原始系统仿真模型
其仿真结果
图2原始系统仿真波形
1.1设系统给定为阶跃,采用常规PID控制器时simulink模型如下:
图3采用常规PID控制器时控制系统仿真模型
上图中
为实现微分模块取得近似值,然后取Kp=1.5,Ki=0.15,Kd=2.35运行得到仿真结果如下:
图4采用常规PID控制器时控制系统仿真波形
1.2采用模糊控制时系统仿真模型如图5:
模糊规则表见表1。
误差,误差变化量及输出调节量的模糊化论域全取为[-6,6],三角函数作为三个量的隶属度函数,取误差量化因子
=6/0.8,误差变化的量化因子
=6/0.8。
定义语言变量为PL,PM,PS,Z,NS,NM,NL。
模糊工具箱中,设置如图6。
图5采用模糊控制器时控制系统仿真模型
a)
b)
c)
图6采用模糊控制器时控制系统仿真模型
NL
NM
NS
Z
PS
PM
PL
NL
NL
NL
NL
NL
NM
NS
Z
NM
NL
NL
NM
NM
NS
Z
Z
NS
NL
NM
NM
NS
Z
Z
PS
Z
NM
NS
NS
Z
PS
PS
PM
PS
NS
Z
Z
PS
PM
PM
PL
PM
Z
Z
PS
PM
PM
PL
PL
PL
Z
PS
PM
PL
PL
PL
PL
表1模糊控制规则表
运行模型仿真得波形如图7.
图7采用模糊控制器时控制系统仿真波形
由图可以看出,单纯采用模糊控制会产生静态误差。
1.3采用单神经元PID调节控制器的系统模型
图8采用单神经元PID控制系统仿真模型
该模型用到S函数,具体函数程序如下:
function[sys,x0,str,ts]=snpid(t,x,u,flag,deltaK)
switchflag
case0
[sys,x0,str,ts]=mdlInitializeSizes;
case2
sys=mdlUpdate(t,x,u,deltaK);
case3
sys=mdlOutputs(t,x,u);
case{1,4,9}
sys=[];
otherwise
DAStudio.error('Simulink:
blocks:
unhandledFlag',num2str(flag));
end
function[sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=3;
sizes.NumOutputs=1;
sizes.NumInputs=4;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
str=[];
x0=[222];
ts=[-10];
functionsys=mdlUpdate(t,x,u,deltaK)
sys=x+deltaK*u
(1)*u(4)*(2*u
(1)-u
(2));
functionsys=mdlOutputs(t,x,u)
xx=[u
(1)-u
(2)u
(1)u
(1)+u(3)-2*u
(2)];
sys=[u(4)+0.9*xx*x/sum(abs(x))];
设置S-function的参数为0.8,得仿真波形如下:
图9采用单神经元PID控制系统仿真波形
1.4采用模糊自适应控制器的系统即保留PID结构,动态模糊化改变kp,ki,kd参数,其模型如下:
图10采用模糊自适应控制系统
图11fuzzy模块封装
图12PID模块封装
该系统的模糊论域及语言描述与上面一致,模糊规则如下表:
(kp,ki,kd)
EEc
NL
NM
NS
Z
PS
PM
PL
NL
PL/NL/PS
PL/NL/NS
PM/NM/NL
PM/NM/NL
PS/NS/NL
Z/Z/NM
Z/Z/PS
NM
PL/NL/PS
PL/NL/NS
PM/NM/NL
PS/NS/NM
PS/NS/NM
Z/Z/NS
NS/Z/Z
NS
PM/NL/Z
PM/NM/NS
PM/NS/NM
PS/NS/NM
Z/Z/NS
NS/PS/NS
NS/PS/Z
Z
PM/NM/Z
PM/NM/NS
PS/NS/NS
Z/Z/Z
NS/PS/NS
NM/PM/NS
NM/PM/Z
PS
PS/NM/Z
PS/NS/Z
Z/Z/Z
NS/PS/Z
NS/PS/Z
NM/PM/Z
NM/PL/Z
PM
PS/Z/PL
Z/Z/NS
NS/PS/PS
NM/PS/PS
NM/PM/PS
NM/PL/PS
NL/PL/PL
PL
Z/Z/PL
Z/Z/PM
NM/PS/PM
NM/PM/PM
NM/PM/PS
NL/PL/PS
NL/PL/PL
表2模糊自适应控制规则表
图13采用模糊自适应控制系统仿真波形
1.5采用Fuzzy-PID复合控制的调节器是将PID和Fuzzy控制器分别设计,并以冗余投入运行。
当误差量小于某阀值时切换为传统PID以保证静态精度;大于某阈值时切换为Fuzzy控制保证动态性能。
其simulink模型如下:
图14采用Fuzzy-PID复合控制系统模型
取Gain4=6,Gain5=5,Gain3=1.5,阀值取为0.5;PID控制器取值P=2,I=0.1,D=2.35;
模糊控制器沿用1.2中的控制器。
运行得如下波形。
图15采用Fuzzy-PID复合控制系统模型仿真波形
黑色——纯粹PID控制波形
蓝色——Fuzzy控制
红色——模糊自适应控制
绿色——Fuzzy-PID复合控制
图16所有控制系统模型正常阶跃信号下仿真波形对比
各种控制策略的控制波形如上已经给出,对比控制效果如下①采用单纯PID控制器的控制系统反应迅速,超调小,无静差,在给定系统模型后其调节效果相对而言是最好的;但
是其参数设置过程比较麻烦;当被控对象参数或者结构变化时输出受变化影响较其他系统影响大,大干扰作用下系统性能欠佳。
②采用模糊控制最突出的缺点是带有静差,但是模糊控制抗干扰能力要优于PID控制。
③模糊自适应控制的响应时间长没有超调,抗干扰能力比较好。
(怀疑波形的准确性)④Fuzzy-PID复合控制在对比下是较为理想的控制策略,在保证响应速度的同时稳态性能优势也很明显,兼具了Fuzzy的鲁棒性和PID的快速稳定性。
二、该大滞后被控对象的simulink模型和仿真波形分别如图16、17所示。
图16原系统仿真模型
图17原系统仿真波形
由图17易知,该系统有10s的时延。
2.1当采用Smith控制器时,其模型如下:
图18采用Smith控制器模型
图19采用Smith控制器的仿真波形
2.2采用Smith-Fuzzy控制器时的模型如下:
图20采用Fuzzy-Smith控制器的系统模型
图21采用Fuzzy-Smith控制器的系统仿真波形
无模型误差两种控制器波形对比如下:
(蓝色为Smith-Fuzzy控制器,黑色为Smith控制器)
图22无模型误差时两种控制器波形对比
图23有模型误差时两种控制器波形对比
由图22易知,用Smith-Fuzzy控制器时系统响应时间短,无超调,但是有静差;Smith控制器无超调无静差,响应时间较之前者稍长。
有模型误差时,取传递函数为
,运行得其波形如图23所示。
由图可知两者受模型误差影响相当,其中Smith控制器受影响稍大于Smith-Fuzzy控制器。
三、3.1采用反馈神经网络逼近非线性函数
closeall;
clearall;
k=2;
p=[-1:
.05:
1];
t=sin(k*pi*p)+cos(k*pi*p);
n=6;
net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm');
net.trainParam.lr=0.1;
net.trainParam.epochs=10000;
net.trainParam.goal=0.0001;
net=train(net,p,t);
y2=sim(net,p);
figure
(2);
plot(p,t,'*',p,y2,’.’)
xlabel('t/s');
ylabel('训练后网络的输出');
采用单隐层神经网络,隐层神经元设置为6个,LM规则训练,学习率为0.1,训练误差为0.0001,得到训练结果如下图:
图24BP网络训练后输出
由图上看,拟合效果满意。
训练共进行了8轮,最后误差在0.000065,满足要求。
随机获取一组测试集,检验网络泛化性能。
B=rand(120);
A=(B-0.5).*2;%随机获取[-1,1]区间上一组测试集%
T2=sin(2*pi*A)+cos(2*pi*A);
holdon;
stem(A,T2)
运行得:
图25BP网络泛化能力检测
图示可以看出,训练后的BP网络泛化能力良好。
3.2用径向基网络逼近
closeall;
clearall;
k=2;
p=[-1:
.05:
1];
t=sin(k*pi*p)+cos(k*pi*p);
n=6;
net=newrb(p,t,0.0001);
y2=sim(net,p);
figure
(2);
plot(p,t,'-',p,y2,'--')
xlabel('t/s');
ylabel('训练后网络的输出');
运行后误差MSE=0.99941
图26RBF神经网络网络训练后输出
泛化能力检测,
B=rand(120);
A=(B-0.5).*2;%随机获取[-1,1]区间上一组测试集%
T2=sin(2*pi*A)+cos(2*pi*A);
holdon;
stem(A,T2)
图27RBF神经网络泛化能力检测
3.3网络学习算法的改进:
采用动量梯度下降法代替梯度下降法训练BP神经网络,提高学习速度并增加算法的可靠性,取动量因子mc=0.75.
closeall;
clearall;
k=2;
p=[-1:
.05:
1];
t=sin(k*pi*p)+cos(k*pi*p);
n=10;
net=newff(minmax(p),[n,1],{'tansig','purelin'},'traingdm');
net.trainParam.epochs=100000;
net.trainParam.goal=0.0001;
net.trainParam.mc=0.75;
net=train(net,p,t);
y2=sim(net,p);
figure
(2);
plot(p,t,'-',p,y2,'*')
xlabel('t/s');
ylabel('训练后网络输出');
图28改进BP神经网络输出
训练后误差为0.00166,训练次数100000,分析误差大的原因是训练样本少导致训练结果不是特别满意,可适当扩充样本集再进行训练。
3.4BP网络和RBF网络对比。
①从网络结构上看。
BP神经网络实行权连接,而RBF神经网络输入层到隐层单元之间为直接连接,隐层到输出层实行权连接。
BP神经网络隐层单元的转移函数一般选择非线性函数(如反正切函数),RBF神经网络隐层单元的转移函数是关于中心对称的RBF(如高斯函数)。
BP神经网络是三层或三层以上的静态前馈神经网络,其隐层和隐层节点数不容易确定,没有普遍适用的规律可循,一旦网络的结构确定下来,在训练阶段网络结构将不再变化;RBF神经网络是三层静态前馈神经网络,隐层单元数也就是网络的结构可以根据研究的具体问题,在训练阶段自适应地调整,这样网络的适用性就更好了。
②从训练算法上看。
BP神经网络需要确定的参数是连接权值和阈值,主要的训练算法为BP算法和改进的BP算法。
但BP算法存在许多不足之处,主要表现为易限于局部极小值,学习过程收敛速度慢,隐层和隐层节点数难以确定;更为重要的是,一个新的BP神经网络能否经过训练达到收敛还与训练样本的容量、选择的算法及事先确定的网络结构(输入节点、隐层节点、输出节点及输出节点的传递函数)、期望误差和训练步数有很大的关系。
RBF神经网络的训练算法在前面已做了论述,目前,很多RBF神经网络的训练算法支持在线和离线训练,可以动态确定网络结构和隐层单元的数据中心和扩展常数,学习速度快,比BP算法表现出更好的性能。
③从网络资源的利用上看。
RBF神经网络原理、结构和学习算法的特殊性决定了其隐层单元的分配可以根据训练样本的容量、类别和分布来决定。
如采用最近邻聚类方式训练网络,网络隐层单元的分配就仅与训练样本的分布及隐层单元的宽度有关,与执行的任务无关。
在隐层单元分配的基础上,输入与输出之间的映射关系,通过调整隐层单元和输出单元之间的权值来实现,这样,不同的任务之间的影响就比较小,网络的资源就可以得到充分的利用。
这一点和BP神经网络完全不同,BP神经网络权值和阈值的确定由每个任务(输出节点)均方差的总和直接决定,这样,训练的网络只能是不同任务的折中,对于某个任务来说,就无法达到最佳的效果。
而RBF神经网络则可以使每个任务之间的影响降到较低的水平,从而每个任务都能达到较好的效果,这种并行的多任务系统会使RBF神经网络的应用越来越广泛。
总之,RBF神经网络可以根据具体问题确定相应的网络拓扑结构,具有自学习、自组织、自适应功能,它对非线性连续函数具有一致逼近性,学习速度快,可以进行大范围的数据融合,可以并行高速地处理数据。
RBF神经网络的优良特性使得其显示出比BP神经网络更强的生命力,正在越来越多的领域内替代BP神经网络。
目前,RBF神经网络已经成功地用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。