您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 人工神经网络作业MATLAB仿真(共3篇)
人工神经网络仿真作业(3篇)人工神经网络仿真作业1:三级倒立摆的神经网络控制人工神经网络仿真作业2:基于模型整体逼近的机器人RBF网络自适应控制人工神经网络仿真作业3:基于RBF的机械手无需模型自适应控制研究神经网络仿真作业1:三级倒立摆的神经网络控制摘要:建立了基于人工神经网络改进BP算法的三级倒立摆的数学模型,并给出了BP网络结构,利用Matlab软件进行训练仿真,结果表明,改进的BP算法控制倒立摆精度高、收敛快,在非线性控制、鲁棒控制等领域具有良好的应用前景。1.引言倒立摆系统的研究开始于19世纪50年代,它是一个典型的非线性、高阶次、多变量、强耦合和绝对不稳定系统.许多抽象的控制概念,如系统的稳定性、可控性、系统的收敛速度和抗干扰能力都可以通过倒立摆直观地表现出来。随着现代控制理论的发展,倒立摆的研究对于火箭飞行控制和机器人控制等现代高科技的研究具有重要的实践意义。目前比较常见的倒立摆稳定控制方法有线性控制,如LQR,LQY等;智能控制,如变论域自适应模糊控制,遗传算法,预测控制等。2.系统的数学模型2.1三级倒立摆的模型及参数三级倒立摆主要由小车,摆1、摆2、摆3组成,它们之间自由链接。小车可以在水平导轨上左右平移,摆杆可以在铅垂平面内运动,将其置于坐标系后如图1所示:规定顺时针方向的转角和力矩均为正。此外,约定以下记号:u为外界作用力,x为小车位移,i(i=1,2,3)为摆i与铅垂线方向的夹角,iO分别为摆i的链接点位置。其它的系统参数说明如下:0m--小车系统等效质量;2l--二摆质心至旋转轴之间的距离;1m--一摆质量;3l--三摆质心至旋转轴之间的距离;2m--二摆质量;1L--一、二摆之间的距离;3m--三摆质量;2L--二、三摆之间的距离;1J--一摆对其质心处转动惯量;0f--小车系统的摩擦系数;2J--二摆对其质心处转动惯量;1f--一摆转轴处的摩擦阻力矩系数;3J--三摆对其质心处转动惯量;2f--二摆转轴处的摩擦阻力矩系数;1l--一摆质心至旋转轴之间的距离;3f--三摆转轴处的摩擦阻力矩系数。2.2三级倒立摆的非线性模型为:000),,(),,,,,(),,(0321321321321321321UGNZFZM其中01231121311222112111112131123223222212131221333331312232233132212()cos()cos(,,)()coscos()cos()coscos()()coscoscos(mmmmmlmLmLmlmLJmlmLmLMmlmLmlLmLLmlmlLmlmLmlLmlL13122133131222223233232233332333)cos()cos()cos()cos()mLLmlLJmlmLmlLmlLJml011213111121231232221312121331131223222333322232331313233()sin0()(,,,,,)0()sin()0sin()()sinsin()sin()()fmlmLmLffFfmlLmLLmlLmlmLmlfmlmLmlLfffml3233233322323sin()sin()LfmlLf112131112223223330()sin(,)()sinsinmlmLmLNmlmLgmlg,100TG3.神经网络控制器的设计3.1BP神经网络人工神经网络(ANN)由于具有信息的分布存储、并行处理以及自学习能力等优点,在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。近年来,已有多种ANN模型被提出并得以深入研究。其中,80%~90%的人工神经网络模型是采用BP网络或它的改进形式,它是前向网络的核心部分,体现了网络最精华的部分。标准的BP网络是根据Widrow-Hoff规则,采用梯度下降算法,主要由信息信号的正向传播和误差信号的反向传播两部分组成。BP神经网络在未经任何训练的情况下,不能作为系统控制器使用。训练样本数的多少对训练结果有很大影响。样本数越多,网络训练结果越精确,但运行时间加长,计算成本也增加,所以合理选择样本数据非常重要。在实际仿真过程中,经过试探训练样本数为5000时结果较为合理,此时样本数据能够反映系统的基本特征,可以得到预期的仿真结果。3.2控制程序整个的程序设计如下:p=[x3_1';x3_2';x3_3';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)%%对已经训练好的网络进行仿真,检查所得的网络是否符合要求plot(u,'r')holdon;plot(y,'*')%%将训练所用数据和神经网络仿真的数据画在同一张图上,进行对比gensim(net,-1)%%如果所得到的网络符合要求,则将得到的网络生成一个simulink模块,替代原来的反馈矩阵对倒立摆模型进行控制采用LQR方法对系统进行建模生成系统传递函数程序如下所示:clcclearm0=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.49;D2=0.49;f0=22.9147;f1=0.007056;f2=0.002646;f3=0.002646;g=9.81;M=[m0+m1+m2+m3m1*d1+m2*D1+m3*D1m2*d2+m3*D2m3*d3;m1*d1+m2*D1+m3*D1J1+m1*d1*d1+m2*D1*D1+m3*D1*D1m2*d2*D1+m3*D1*D2m3*d3*D1;m2*d2+m3*D2m2*d2*D1+m3*D1*D2J2+m2*d2*d2+m3*D2*D2m3*d3*D2;m3*d3m3*d3*D1m3*d3*D2J3+m3*d3*d3]M=[1.955220.266310.158510.042262;0.266310.123015220.07766990.02070838;0.158510.07766990.070193220.02070838;0.0422620.020708380.020708380.014375212]F=[-f0000;0-f1-f2f20;0f2-f2-f3f3;00f3-f3]F=[-22.9147000;0-0.0097020.0026460;00.002646-0.0052920.002646;000.002646-0.002646]G=[11.88;0;0;0];Nb=[0000;0m1*d1+m2*D1+m3*D100;00m2*d2*g+m3*D2*g0;000m3*d3*g]Nb=[0000;00.2663100;001.5533980;0000.4141676]A22=inv(M)*FA21=inv(M)*NbB2=inv(M)*GA21=inv(M)*NbA22=inv(M)*FB2=inv(M)*GT0=[1000;0100;0-110;00-11];%T0=eye(4,4)A21=T0*A21*inv(T0);A22=T0*A22*inv(T0);B2=T0*B2;A=[zeros(4,4)eye(4,4);A21A22]B=[zeros(4,1);B2]C=[eye(4,4)zeros(4,4)]D=[zeros(4,1)]%%%LQR%%%%%%%%%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.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,Y)gridxlabel('time(s)');legend('Cart','PendulumDown','PendulumMiddle','PendulumUp')Nbar=K(1);Cn=[10000000];%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-45-46-47];L=place(A',C',P)'Ace=[A-B*KB*K;zeros(size(A))(A-L*C)];eig(Ace)Bce=[B*Nbar;zeros(size(B))];Cce=[Cczeros(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函数进行控制系统的设计,系统仿真程序如下所示:图2Simulink仿真图function[sys,x0,str,ts]=dot2(t,x,u,flag)switchflagcase0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case3,sys=mdlOutputs(t,x,u);case{2,9}sys=[];otherwiseerror(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=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=[00];functionsys=mdlDerivatives(t,x,u)tao=[-11.88*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)
本文标题:人工神经网络作业MATLAB仿真(共3篇)
链接地址:https://www.777doc.com/doc-6633611 .html