人工神经网络作业MATLAB仿真(完整版).doc

上传人:yyf 文档编号:5048911 上传时间:2020-01-30 格式:DOC 页数:9 大小:180KB
返回 下载 相关 举报
人工神经网络作业MATLAB仿真(完整版).doc_第1页
第1页 / 共9页
人工神经网络作业MATLAB仿真(完整版).doc_第2页
第2页 / 共9页
人工神经网络作业MATLAB仿真(完整版).doc_第3页
第3页 / 共9页
人工神经网络作业MATLAB仿真(完整版).doc_第4页
第4页 / 共9页
人工神经网络作业MATLAB仿真(完整版).doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《人工神经网络作业MATLAB仿真(完整版).doc》由会员分享,可在线阅读,更多相关《人工神经网络作业MATLAB仿真(完整版).doc(9页珍藏版)》请在三一文库上搜索。

1、中科院2005-2006第一学期神经网络三级倒立摆的神经网络控制摘要:建立了基于人工神经网络改进BP算法的三级倒立摆的数学模型,并给出了BP网络结构,利用Matlab软件进行训练仿真,结果表明,改进的BP算法控制倒立摆精度高、收敛快,在非线性控制、鲁棒控制等领域具有良好的应用前景。1.引言倒立摆系统的研究开始于19世纪50年代,它是一个典型的非线性、高阶次、多变量、强耦合和绝对不稳定系统.许多抽象的控制概念,如系统的稳定性、可控性、系统的收敛速度和抗干扰能力都可以通过倒立摆直观地表现出来。随着现代控制理论的发展,倒立摆的研究对于火箭飞行控制和机器人控制等现代高科技的研究具有重要的实践意义。目前

2、比较常见的倒立摆稳定控制方法有线性控制,如LQR,LQY等;智能控制,如变论域自适应模糊控制,遗传算法,预测控制等。2.系统的数学模型2.1三级倒立摆的模型及参数三级倒立摆主要由小车,摆1、摆2、摆3组成,它们之间自由链接。小车可以在水平导轨上左右平移,摆杆可以在铅垂平面内运动,将其置于坐标系后如图1 所示:规定顺时针方向的转角和力矩均为正。此外,约定以下记号:为外界作用力,为小车位移,(=1,2,3)为摆与铅垂线方向的夹角, 分别为摆的链接点位置。其它的系统参数说明如下:- 小车系统等效质量; - 二摆质心至旋转轴之间的距离;- 一摆质量; - 三摆质心至旋转轴之间的距离;- 二摆质量; -

3、 一、二摆之间的距离;- 三摆质量; - 二、三摆之间的距离;- 一摆对其质心处转动惯量; - 小车系统的摩擦系数;- 二摆对其质心处转动惯量; - 一摆转轴处的摩擦阻力矩系数;- 三摆对其质心处转动惯量; - 二摆转轴处的摩擦阻力矩系数;- 一摆质心至旋转轴之间的距离; - 三摆转轴处的摩擦阻力矩系数。2.2三级倒立摆的非线性模型为:其中 , 3.神经网络控制器的设计3.1 BP神经网络人工神经网络(ANN)由于具有信息的分布存储、并行处理以及自学习能力等优点,在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。近年来,已有多种ANN模型被提出并得以深入研究。其中,80%90

4、%的人工神经网络模型是采用BP网络或它的改进形式,它是前向网络的核心部分,体现了网络最精华的部分。标准的BP网络是根据WidrowHoff规则,采用梯度下降算法,主要由信息信号的正向传播和误差信号的反向传播两部分组成。BP神经网络在未经任何训练的情况下,不能作为系统控制器使用。训练样本数的多少对训练结果有很大影响。样本数越多,网络训练结果越精确,但运行时间加长,计算成本也增加,所以合理选择样本数据非常重要。在实际仿真过程中,经过试探训练样本数为5000时结果较为合理,此时样本数据能够反映系统的基本特征,可以得到预期的仿真结果。3.2控制程序整个的程序设计如下:p=x3_1;x3_2;x3_3;

5、x3_4;x3_5;x3_6;x3_7;x3_8;u=x_u;%初始化训练数据net=newff(minmax(p),8,1,tansig,purelin,trainlm);%生成一个两层的神经网络,第一层的传递函数为,第二层的传递函数为net.trainParam.goal=0.0000001;%设置与网络训练相关的数据,包括训练精度和最大训练次数net.trainParam.epochs=5000;net=init(net);%初始化网络net=train(net,p,u);%根据前面的数据和设置的参数对网络进行训练y=sim(net,p)%对已经训练好的网络进行仿真,检查所得的网络是否符

6、合要求plot(u,r)hold on;plot(y,*)%将训练所用数据和神经网络仿真的数据画在同一张图上,进行对比gensim(net,-1)%如果所得到的网络符合要求,则将得到的网络生成一个simulink模块,替代原来的反馈矩阵对倒立摆模型进行控制采用LQR方法对系统进行建模生成系统传递函数程序如下所示:clc clear m0= 1.32822; m1= 0.2200; m2= 0.2200; m3= 0.1870; J1= 0.0049626; J2= 0.0049626; J3 = 0.0048235; d1= 0.304; d2= 0.304; d3= 0.226; D1= 0

7、.49; D2= 0.49; f0= 22.9147; f1= 0.007056; f2= 0.002646; f3= 0.002646; g= 9.81; M=m0+m1+m2+m3 m1*d1+m2*D1+m3*D1 m2*d2+m3*D2 m3*d3; m1*d1+m2*D1+m3*D1 J1+m1*d1*d1+m2*D1*D1+m3*D1*D1 m2*d2*D1+m3*D1*D2 m3*d3*D1; m2*d2+m3*D2 m2*d2*D1+m3*D1*D2 J2+m2*d2*d2+m3*D2*D2 m3*d3*D2; m3*d3 m3*d3*D1 m3*d3*D2 J3+m3*d3*

8、d3M=1.95522 0.26631 0.15851 0.042262; 0.26631 0.12301522 0.0776699 0.02070838; 0.15851 0.0776699 0.07019322 0.02070838; 0.042262 0.02070838 0.02070838 0.014375212F=-f0 0 0 0; 0 -f1-f2 f2 0; 0 f2 -f2-f3 f3; 0 0 f3 -f3F= -22.9147 0 0 0; 0 -0.009702 0.002646 0; 0 0.002646 -0.005292 0.002646; 0 0 0.0026

9、46 -0.002646 G=11.88;0;0;0;Nb=0 0 0 0; 0 m1*d1+m2*D1+m3*D1 0 0; 0 0 m2*d2*g+m3*D2*g 0; 0 0 0 m3*d3*gNb= 0 0 0 0; 0 0.26631 0 0; 0 0 1.553398 0; 0 0 0 0.4141676 A22=inv(M)*FA21=inv(M)*NbB2=inv(M)*GA21=inv(M)*NbA22=inv(M)*FB2=inv(M)*GT0=1 0 0 0 ; 0 1 0 0; 0 -1 1 0; 0 0 -1 1;%T0=eye(4,4)A21=T0*A21*inv(

10、T0);A22=T0*A22*inv(T0);B2=T0*B2;A=zeros(4,4) eye(4,4); A21 A22B= zeros(4,1); B2 C = eye(4,4) zeros(4,4) D = zeros(4,1) %LQR%Q=diag(100 1 1 1 1 1 1 1);R = 0.01;K = lqr(A,B,Q,R)Ac = (A-B*K);Bc = B;Cc = C;Dc = D;T = 0:0.01:10;U = ones(size(T);sys_c=ss(Ac,Bc,Cc,Dc);Y,T,X=lsim(sys_c,U,T);figure(1)plot(T,

11、Y)gridxlabel(time(s);legend(Cart,PendulumDown,PendulumMiddle,PendulumUp)Nbar= K(1);Cn = 1 0 0 0 0 0 0 0; %sys = ss(A,B,Cn,0);sys_cl = ss(Ac,Bc*Nbar,Cc,Dc);Y,T,X = lsim(sys_cl,U,T);figure(2)plot(T,Y)gridxlabel(time(s);legend(Cart,PendulumDown,PendulumMiddle,PendulumUp)%全维观测器P = -40 -41 -42 -43 -44 -4

12、5 -46 -47;L = place(A,C,P)Ace = A-B*K B*K; zeros(size(A) (A-L*C); eig(Ace)Bce = B*Nbar; zeros(size(B);Cce = Cc zeros(size(Cc);Dce = 0;0;0;0;est_cl = ss(Ace,Bce,Cce,Dce);Y,T,X = lsim(est_cl,U,T);figure(3)plot(T,Y)gridxlabel(time(s);legend(Cart,PendulumDown,PendulumMiddle,PendulumUp)采用Simulink和S函数进行控制

13、系统的设计,系统仿真程序如下所示:图2 Simulink仿真图functionsys,x0,str,ts=dot2(t,x,u,flag)switch flag case 0, sys,x0,str,ts=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 2,9 sys=; otherwise error(Unhandled flag = ,num2str(flag); endfunction sys,x0,str,ts=mdlInitializeSizes si

14、zes = simsizes;sizes.NumContStates = 8;sizes.NumDiscStates = 0;sizes.NumOutputs = 8;sizes.NumInputs = 1;sizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1;sys = simsizes(sizes);%x0=0.05,0.08,0.008,0.009,0,0,0,0;x0=0.05,0.08,0.001,0.008,0,0,0,0;str=;ts=0 0;function sys=mdlDerivatives(t,x,u)tao=-11.88*

15、u;0;0;0;D=-1.95522 -0.26631*cos(x(2) -0.15851*cos(x(3) -0.042262*cos(x(4); -0.26631*cos(x(2) -0.12301522 -0.0776699*cos(x(3)-x(2) -0.02070838*cos(x(4)-x(2); -0.15851*cos(x(3) -0.0776699*cos(x(3)-x(2) -0.07019322 -0.02070838*cos(x(4)-x(3); -0.042262*cos(x(4) -0.02070838*cos(x(4)-x(2) -0.02070838*cos(

16、x(4)-x(3) -0.014375212;H=-22.947*x(5)+0.26631*sin(x(2)*x(6)2+0.15851*sin(x(3)*x(7)2+0.042262*sin(x(4)*x(8)2; -0.009702*x(6)+0.002646*x(7)+0.0776699*sin(x(3)-x(2)*x(7)2+0.02070838*sin(x(4)-x(2)*x(8)2+2.609838*sin(x(2); 0.002646*x(6)-0.0776699*sin(x(3)-x(2)*x(6)2-0.005292*x(7)+0.002646*x(8)+0.02070838

17、*sin(x(4)-x(3)*x(8)2+1.553398*sin(x(3); -0.02070838*sin(x(4)-x(2)*x(6)2+0.002646*x(7)-0.02070838*sin(x(4)-x(3)*x(7)2-0.002646*x(8)+0.4141676*sin(x(4);sys=x(5); x(6); x(7); x(8); -inv(D)*H+inv(D)*tao;function sys=mdlOutputs(t,x,u)E=1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 -1 1 0 0 0 0 0; 0 0 -1 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 -1 1 0; 0 0 0 0 0 0 -1 1;sys=E*x;图3结果仿真图4.小结通过对一级倒立摆数学模型分析,进行了倒立摆小车改进BP算法的控制系统仿真实验。仿真表明该BP算法收敛性好、计算量小, BP神经网络从理论上可以逼近任意非线性函数,所以它特别适合控制像倒立摆这样的严重非线性、多变量系统。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物业管理


经营许可证编号:宁ICP备18001539号-1