智能控制实验大作业.docx
- 文档编号:10430488
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:20
- 大小:496.17KB
智能控制实验大作业.docx
《智能控制实验大作业.docx》由会员分享,可在线阅读,更多相关《智能控制实验大作业.docx(20页珍藏版)》请在冰点文库上搜索。
智能控制实验大作业
一、一级倒立摆神经网络控制
1.实验要求:
利用LQR将模型线性化,通过调制神经网络层数和神经元个数设计BP神经网络控制器,以达到对倒立摆的良好控制效果。
2.控制器设计
根据牛顿力学对倒立摆建立数学模型:
其中m=0.1kg,是摆干的质量,M=1kg,是小车的质量,L=1米是摆干的长度,
x是小车的位移,ϕ是摆干的偏角,f=50N/s为摩擦系数,u为控制律。
对于神经网络控制器,最重要的是获得理想的训练样本,为了获得理想的训练样本,需要先设计出能够取得理想控制效果的线性控制器,然后将线性控制器的输出和输入进行采样,这样就得到了理想的训练样本。
为设计线性控制器,首先要对原先的非线性系统进行线性化处理。
因为ϕ在稳定的时候会很小,所以将它的高阶项略去,sinϕ=ϕ,cosϕ=1,可得线性化状态方程
。
经验算该系统可控,可以为此系统设计线性控制器。
应用Matlab中的求解工具lqr(A,B,Q,R)可以求出最优反馈系数矩阵K的值,需要选择Q,R这两个参数是用来平衡输入量和状态量的权重,其中Q11表示小车位置的权重,Q33表示摆干角度的权重。
在实验中要优先考虑角度,所以Q,R选择为Q=[8000000;0000;0010000;0000],R=1。
得到反馈系数矩阵K,在原先的系统模型中用一个函数的模块作为线性控制器模块,输入为原系统的状态量,控制律f(u)=K*U。
将输入输出量导入到工作空间即得样本。
系统控制结构图
图1系统simulink仿真图
LQR控制器设计
将一级倒立摆的模型进行线性化后得到模型A,B,C,D。
利用matlab函数lqr()设计线性二次型最优控制反馈阵K,输出量u=-K*X’。
因此可得输入输出的导师样本。
A=[0100;0-4.9725-0.71780;0001;03.72947.89590];
B=[0
0.9756
0
-0.7317];
C=[1000;0100;0010;0001];
D=[0;0;0;0];
Q=[8000000;0000;0010000;0000];
R=1;
K=lqr(A,B,Q,R);
Ac=[(A-B*K)];
Bc=[B];
Cc=[C];
Dc=[D];
t=0:
0.005:
20;
U=ones(size(t));
x0=[0.0500.080];
[Y,X]=lsim(Ac,Bc,Cc,Dc,U,t,x0);
plot(t,Y);
xlabel('t');
ylabel('Y');
u=-K*X';
图2LQR控制器曲线
神经网络控制器设计
由LQR得到输入输出导师样本X(:
1)';X(:
2)';X(:
3)';X(:
4)'和u。
经过神经网络训练即可得到逼近LQR控制效果的神经网络控制器,神经网络代码如下所示:
P=[X(:
1)';X(:
2)';X(:
3)';X(:
4)'];
t=u;
Q=[-11;-11;-11;-11];
net=newff(Q,[481],{'tansig''tansig''purelin'});
net.trainparam.epochs=2000;
net.trainparam.goal=0.000001;
net=train(net,P,t);
gensim(net);
图3神经网络训练性能
3.控制器仿真
图4一级倒立摆神经网络控制曲线
由仿真结果可知,小车的位移稳定,摆杆的角度很快到达零,且超调量比较小,符合实验要求。
因为电脑打不开远程倒立摆仿真应用程序并没有询问到其它同学联系信息所以用的是matlab仿真曲线观察控制效果。
二、二级倒立摆神经网络控制
1.实验要求:
用LQR线性化模型设计神经网络控制器,实现对二级倒立摆的良好控制效果。
2.控制器设计
系统控制结构图
图5系统simulink仿真图
LQR控制器设计
将二级倒立摆的模型进行线性化后得到模型A,B,C,D。
利用matlab函数lqr()设计线性二次型最优控制反馈阵K,输出量u=-K*X’。
因此可得输入输出的导师样本。
A=[000100;000010;000001;
0-2.68651.0204-16.84580.0168-0.0128;
031.8459-29.323542.9296-0.27760.2912;
0-40.983597.4089-55.24730.6280-0.8572];
B=[0;0;0;8.7213;-22.2253;28.6023];
C=[100000;010000;001000;000100;000010;000001];
D=[0;0;0;0;0;0];
Q=diag([10011111]);
R=0.01;
K=lqr(A,B,Q,R);
Ac=[(A-B*K)];
Bc=[B];
Cc=[C];
Dc=[D];
t=0:
0.005:
20;
U=[ones
(1),zeros(1,4000)];
x0=[0.05,0.08,0.01,0,0,0];
[YX]=lsim(Ac,Bc,Cc,Dc,U,t,x0);
plot(t,Y);
xlabel('t');
ylabel('Y');
u=-K*X';
图6LQR控制器曲线
神经网络控制器设计
由LQR得到输入输出导师样本X(:
1)',X(:
2)',X(:
3)',X(:
4)',X(:
5)',X(:
6)和u。
经过神经网络训练即可得到逼近LQR控制效果的神经网络控制器。
代码如下所示:
P=[X(:
1)';X(:
2)';X(:
3)';X(:
4)';X(:
5)';X(:
6)'];
t=u;
Q=[-11;-11;-11;-11;-11;-11];
net=newff(Q,[681],{'tansig''tansig''purelin'});
net.trainparam.epochs=2000;
net.trainparam.goal=0.000001;
net=train(net,P,t);
gensim(net);
图7神经网络训练性能
3.控制器仿真
图8二级倒立摆神经网络控制曲线
由仿真结果可知,小车的位移稳定,摆杆的角度很快到达零,且超调量比较小,符合实验要求。
三、三级倒立摆神经网络控制
1.实验要求:
利用LQR线性化模型设计神经网络控制器,以实现对三级倒立摆的良好控制效果。
2.控制器设计
系统控制结构图
图9系统simulink仿真图
LQR控制器设计
将三级倒立摆的模型进行线性化后得到模型A,B,C,D。
利用matlab函数lqr()设计线性二次型最优控制反馈阵K,输出量u=-K*X’。
因此可得输入输出的导师样本。
A=[00001000;00000100;00000010;00000001;
00.05020.5267-0.0336-16.67480.0126-0.00570.0012;
0-40.2597-48.73103.112141.0042-0.22450.1725-0.1082;
0111.5608128.9199-21.5015-49.26990.4599-0.42870.3936;
0-87.3543-98.243269.307610.1268-0.28850.3936-0.7282];
B=[0;0;0;0;8.6450;-21.2584;25.5437;-5.2502];
C=[10000000;01000000;00100000;00010000;
00001000;00000100;00000010;00000001];
D=[0;0;0;0;0;0;0;0];
Q=diag([1001111111]);
R=0.01;
K=lqr(A,B,Q,R);
Ac=[(A-B*K)];
Bc=[B];
Cc=[C];
Dc=[D];
t=0:
0.005:
20;
U=ones(size(t));
x0=[0.050.080.0010.0080000];
[YX]=lsim(Ac,Bc,Cc,Dc,U,t,x0);
plot(t,Y);
xlabel('t');
ylabel('Y');
u=-K*X';
图10LQR控制器曲线
神经网络控制器设计
由LQR得到输入输出导师样本X(:
1)',X(:
2)',X(:
3)',X(:
4)',X(:
5)',X(:
6),X(:
7)',X(:
8)'和u。
经过神经网络训练即可得到逼近LQR控制效果的神经网络控制器。
P=[X(:
1)';X(:
2)';X(:
3)';X(:
4)';X(:
5)';X(:
6)';X(:
7)';X(:
8)'];
t=u;
Q=[-11;-11;-11;-11;-11;-11;-11;-11];
net=newff(Q,[2841],{'tansig''tansig''tansig''purelin'});
net.trainparam.epochs=2000;
net.trainparam.goal=0.000001;
net=train(net,P,t);
gensim(net);
图11神经网络训练性能
3.控制器仿真
图12三级倒立摆神经网络控制曲线
由仿真结果可知,小车的位移稳定,摆杆的角度很快到达零,且超调量比较小,符合实验要求。
神经网络层数和每层节点个数对神经网络控制效果影响很大,下面是选择三层网络[8101]和四层网络[4821],[1281]仿真效果。
增加网络的层数可以提高网络性能,减小误差,提高精度,同时使网络结构复杂化,增加训练的时间。
实验中三层神经网络训练性能很差。
图13[8101]神经网络性能
若隐层节点数太少,网络可能根本不能训练或网络性能很差;若隐层节点数太多,虽然可使网络的系统误差减小,但一方面使网络训练时间延长,另一方面,训练容易陷入局部极小点而得不到最优点,也是训练时出现“过拟合”的内在原因。
图为节点个数不同的仿真结果。
图14[4821]神经网络仿真结果
图15[1281]神经网络仿真结果
通过对比,得出神经网络层数和节点对系统影响很大,因此合理选择神经网络的参数十分重要。
四、一级倒立摆模糊控制
1.实验要求:
利用matlab设计基于模糊控制的一级倒立摆,在simulink下进行仿真并得到良好的控制效果。
2.模糊控制器设计
倒立摆是一种多变量系统,经典的模糊控制是由系统的误差以及误差的导数
作为输入,所以对于倒立摆的模糊控制有相当的难度。
参照信息融合思想,将多变量化为2变量设计模糊控制器,取得了很好的控制效果。
一级倒立摆系统的控制目标以稳定摆杆为主、小车次之,故选取倒立摆角度及其角速度为主元,小车位移和速度为副元,分别归并到前面两主元中去。
物理意义表示将位移信息转化为角度信号的干扰信号,作为角度控制的辅助。
在matlab命令窗口输入fuzzy弹出模糊工具箱,输入变量e和ec及输出变量范围设置为[-66],选择e,ec和u的模糊集合为{负大,负中,负小,零,正小,正中正大}即{NB,NM,NS,ZE,PS,PM,PB}。
添加模糊控制规则
配置好后将文件输出到matlab工作空间命名为FUZZY1。
然后在simulink模糊框图中输入FUYY1,并按下图绘制模糊控制器系统图,将其封装成为一个模糊控制器子系统添加到一级倒立摆控制系统中即得到一级倒立摆的模糊控制系统。
一级倒立摆模糊控制结构图
图16一级倒立摆子系统图
图17一级倒立摆模糊控制系统图
模糊控制器子系统结构图
图18模糊控制器系统图
3.参数调整
模糊控制中,两个输入(误差与误差导数)前要加入量化因子,将连续论域转化为离散论域,误差量化因子Ke=
误差导数量化因子Kec=
输出量u的比例因子Ku=
。
量化因子Ke和Kec对控制系统的动态性能影响很大。
Ke大时,系统超调较大,过渡时间较长;Kec选择越大系统超调越小,但系统的响应速度变慢,Kec对超调的抑制作用十分明显。
输出比例因子Ku作为模糊控制的总增益,它的大小影响控制器的输出,也影响着模糊控制系统的特性。
Ku选择过小会使系统动态响应过程变长,且会有负的稳态误差;而Ku选择过大会导致系统振荡加剧,且产生正的稳态误差。
这里选择参数:
x=0.1,dx=0.3,phi=0.9,dphi=0.7,K1=1.2,K2=1.5,K=-80。
4.仿真结果
图19一级倒立摆模糊控制器仿真图
由仿真结果可知,小车的位移稳定,摆杆的角度很快到达零,且超调量比较小,符合实验要求。
总结
参照从邮箱下载的课件资料和网上查找解决问题的方法经过两三个星期的学习终于对神经网络与模糊控制有了一定的了解,在利用它们在matlab上进行对倒立摆的运行仿真时遇到很多问题,最终通过课件与网上资料解决了这些问题,获得对倒立摆的良好控制。
在此感谢陈老师的授课与指导。
智能控制是很有意思与实用价值的课程,希望以后再学习中能应用它解决问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 控制 实验 作业