第3章 CHAPTER 3 基于梯度下降法的 RBF神经网络控制 离散神经网络控制系统中,常采用梯度下降法实现神经网络权值的学习,有代表性的研究工作如文献[12]。 3.1基于RBF神经网络的监督控制 3.1.1RBF监督控制 图3.1为基于RBF神经网络的监督控制系统,其控制思想为: 初始阶段采用PD反馈控制,然后过渡到神经网络控制。在控制过程中,如出现较大的误差,则PD控制起主导作用, 图3.1基于RBF神经网络的监督控制系统 神经网络控制起调节作用。 设径向基向量为h=h1,h2,…,hmT,hj为高斯函数,则 hj=exp-‖xk-cj‖22b2j(3.1) 其中,i=1; j=1,2,…,m; xk为RBF神经网络的输入; cj=[c11,c12,…,c1m]; b=[b1,b2,…,bm]T。 设权值向量为 w=w1,w2,…,wmT(3.2) RBF神经网络的输出为 un(k)=h1w1+…+hjwj+…+hmwm(3.3) 其中,m为隐含层节点的个数。 总控制输入为uk=unk+upk,误差指标为 Ek=12[unk-uk]2(3.4) 采用梯度下降法,网络权值学习算法为 Δwjk=-ηEkwjk=η[unk-uk]hjk wk=wk-1+Δwk+α[wk-1-wk-2](3.5) 其中,η∈0,1为学习速率; α∈0,1为动量因子。 3.1.2仿真实例 设控制对象为 G(s)=1000s3+87.35s2+10470s 取采样周期为1ms,对上述对象进行离散化,可得 y(k)=-den(2)yk-1-den(3)y(k-2)+ num(2)u(k-1)+num(3)u(k-2) 取神经网络的结构为141,理想跟踪指令ydk取幅值为0.5的大波信号,网络输入为yd(k),网络的初始权值取[0,1]的随机数,根据网络的输入范围,高斯函数参数取c=[-2-112]T,bj=0.5。 取学习速率η=0.30,动量因子α=0.05。 仿真结果如图3.2和图3.3所示。RBF监督控制的仿真程序为chap3_1.m,详见附录。 图3.2方波跟踪效果 图3.3神经网络输入、PD控制 输入及总控制输入 3.2基于RBF神经网络的模型参考自适应控制 3.2.1控制系统设计 图3.4为基于RBF神经网络的模型参考自适应控制系统框图。 图3.4基于RBF神经网络的模型参考 自适应控制系统 设理想跟踪指令为ymk,则定义跟踪误差为 ek=ymk-yk(3.6) 网络权值学习误差指标为 Ek=12ek2(3.7) 控制输入为RBF神经网络的输出: u(k)=h1w1+…+hjwj+…+hmwm(3.8) 其中,m为隐含层的节点个数; wj为节点的权值; hj为高斯函数的输出。 在RBF神经网络中,x=x1,x2,…,xnT为网络输入, h=h1,h2,…,hmT,hj为高斯函数: hj=exp-‖x-cj‖22b2j(3.9) 其中,i=1,2,…,n; j=1,2,…,m。bj>0,cj=cj1,…,cji,…,cjn,b=b1,b2,…,bmT。 设权值向量为 w=w1,w2,…,wmT(3.10) 由梯度下降法,网络的学习算法为 Δwj(k)=-ηE(k)w=ηec(k)y(k)u(k)hj wj(k)=wj(k-1)+Δwj(k)+αΔwj(k)(3.11) 其中,η为学习速率; α为动量因子; η∈0,1,α∈0,1。 同理可得 Δbjk=-ηEkbj=ηeckykukukbj =ηeckykukwjhj‖x-cij‖2b3j(3.12) bj(k)=bj(k-1)+ηΔbjk+α[bj(k-1)-bj(k-2)](3.13) Δcijk=-ηEkcij=ηeckykukukcij =ηeckykukwjhjxi-cijb2j(3.14) cij(k)=cij(k-1)+ηΔcijk+α[cij(k-1)-cij(k-2)](3.15) 其中,ykuk为Jacobian阵,表征系统输出对控制输入的灵敏度。 在学习算法中,y(k)u(k)值可采用差分求得,不精确部分可通过权值的调整来修正。可用Δy(k)Δu(k)的正负号来代替y(k)u(k),这样可使算法更加简单。 3.2.2仿真实例 取离散被控对象为 yk=[-0.10yk-1+uk-1]/[1+yk-12] 其中,采样周期为ts=1ms,参考模型为 ymk=0.6ymk-1+ydk,理想跟踪指令为yd(k)=0.50sin2πk×ts。 取RBF神经网络的输入为ydk、eck和yk,学习速率为η=0.35,动量因子为α=0.05。 根据网络的输入范围,高斯函数参数值为c=-3-2-1123-3-2-1123-3-2-1123T,b=[2,2,2,2,2,2]T,网络初始权值取[0,1]的随机值。 仿真结果如图3.5和图3.6所示。基于RBF神经网络的模型参考自适应控制程序为chap3_2.m。 图3.5正弦跟踪 图3.6控制输入 3.3RBF神经网络自校正控制 3.3.1系统描述 考虑被控对象: yk+1=fyk+buk(3.16) 其中,u和y分别为输入和输出,b为已知实数。 若f(·)已知,则根据确定性等价原则,自校正控制算法为 uk=-f(·)+ydk+1b(3.17) 采用控制律式(3.17),系统的输出yk能精确地跟踪输入ydk。 3.3.2RBF控制算法设计 若f(·)未知,则可通过在线训练神经网络辨识器,得到f(·)的辨识值Nφ(·),此时自校正控制算法为 uk=-Nφ(·)+ydk+1b(3.18) 采用RBF神经网络可实现未知函数项f(·)的辨识。在RBF神经网络结构中,取网络的输入为yk,hj为网络第i个输入第j个结点高斯函数输出: hj=exp-‖y(k)-c1j‖22b2j(3.19) 其中,i=1,j=1,…,m,bj为节点j的宽度参数,bj>0,cij为网络第i个输入第j个结点的中心点坐标值。 网络的权向量为W=w1,w2,…,wmT,RBF神经网络的输出为 Nφk=∑mj=1hjwj(3.20) 其中,m为RBF网络隐层神经元的个数。 辨识后,对象的输出为 ynk=Nφyk-1+buk-1(3.21) 神经网络调整的性能指标为 Ek=12yk-ynk2(3.22) 采用梯度下降法调整网络的权值: Δwjk=-ηEkwjk=ηyk-ynkhjk 神经网络权值的调整过程为 Wk=Wk-1+ΔWk+αWk-1-Wk-2(3.23) 其中,η为学习速率,α为动量因子。 由式(3.16)和式(3.21)可得 yk-ynk=fyk-1-Nφyk-1 通过梯度下降法,可实现t→∞时,Ek→0,Nφyk-1→fyk-1,从而实现未知函数f(·)的辨识。 3.3.3仿真实例 被控对象为 y(k)=0.8sin[y(k-1)]+15u(k-1) 其中,fyk=0.8sinyk-1。 输入信号为正弦信号ydk=sin(0.1πt)。取yk作为网络的输入,网络隐含层神经元个数取m=5,网络结构为151,网络的初始权值每个值取1.0,bj=5.0。 采用控制律式(3.18),网络权值学习参数为η=0.10,α=0.05。RBF神经网络自校正控制程序为chap3_3.m。仿真结果如图3.7~图3.9所示。 仿真程序为chap3_3.m,详见附录。 图3.7正弦位置跟踪 图3.8输出y及其逼近yn 图3.9fx,t及其辨识结果f^x,t 附录仿真程序 3.1.2节的程序 RBF监督控制仿真程序: chap3_1.m %RBF Supervisory Control clear all; close all; ts=0.001; sys=tf(1000,[1,50,2000]); dsys=c2d(sys,ts,'z'); [num,den]=tfdata(dsys,'v'); y_1=0;y_2=0; u_1=0;u_2=0; e_1=0; xi=0; x=[0,0]'; b=0.5*ones(4,1); c=[-2 -1 1 2]; w=rands(4,1); w_1=w; w_2=w_1; xite=0.30; alfa=0.05; kp=25; kd=0.3; for k=1:1:1000 time(k)=k*ts; S=1; if S==1 yd(k)=0.5*sign(sin(2*2*pi*k*ts)); %Square Signal elseif S==2 yd(k)=0.5*(sin(3*2*pi*k*ts)); %Sine Signal end y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; e(k)=yd(k)-y(k); xi=yd(k); for j=1:1:4 h(j)=exp(-norm(xi-c(:,j))^2/(2*b(j)*b(j))); end un(k)=w'*h'; %PD Controller up(k)=kp*x(1)+kd*x(2); M=2; if M==1 %Only Using PID Control u(k)=up(k); elseif M==2%Total control output u(k)=up(k)+un(k); end if u(k) >=10 u(k)=10; end if u(k) <=-10 u(k)=-10; end %Update NN Weight d_w=-xite*(un(k)-u(k))*h'; w=w_1+d_w+alfa*(w_1-w_2); w_2=w_1; w_1=w; u_2=u_1; u_1=u(k); y_2=y_1; y_1=y(k); x(1)=e(k); %Calculating P x(2)=(e(k)-e_1)/ts; %Calculating D e_1=e(k); end figure(1); plot(time,yd,'r',time,y,'k:','linewidth',2); xlabel('time(s)');ylabel('Position tracking'); legend('Ideal position signal','Tracking position signal'); figure(2); subplot(311); plot(time,un,'k','linewidth',2); xlabel('time(s)');ylabel('un'); legend('Control input with RBF'); subplot(312); plot(time,up,'k','linewidth',2); xlabel('time(s)');ylabel('up'); legend('Control input with PD'); subplot(313); plot(time,u,'k','linewidth',2); xlabel('time(s)');ylabel('u'); legend('Total control input'); 3.2.2节的程序 基于RBF神经网络的模型参考自适应控制: chap3_2.m %Model Reference Adaptive RBF Control clear all; close all; u_1=0; y_1=0; ym_1=0; x=[0,0,0]'; c=[-3 -2 -1 0 1 2 3; -3 -2 -1 0 1 2 3; -3 -2 -1 0 1 2 3]; b=2; w=rands(1,7); xite=0.35; alfa=0.05; h=[0,0,0,0,0,0,0]'; c_1=c;c_2=c; b_1=b;b_2=b; w_1=w;w_2=w; ts=0.001; for k=1:1:3000 time(k)=k*ts; yd(k)=0.50*sin(2*pi*k*ts); ym(k)=0.6*ym_1+yd(k); y(k)=(-0.1*y_1+u_1)/(1+y_1^2); %Nonlinear plant for j=1:1:7 h(j)=exp(-norm(x-c(:,j))^2/(2*b^2)); end u(k)=w*h; ec(k)=ym(k)-y(k); dyu(k)=sign((y(k)-y_1)/(u(k)-u_1)); d_w=0*w; for j=1:1:7 d_w(j)=xite*ec(k)*h(j)*dyu(k); end w=w_1+d_w+alfa*(w_1-w_2); %Return of parameters u_1=u(k); y_1=y(k); ym_1=ym(k); x(1)=yd(k); x(2)=ec(k); x(3)=y(k); w_2=w_1;w_1=w; end figure(1); plot(time,ym,'r',time,y,'k:','linewidth',2); xlabel('time(s)');ylabel('ym,y'); legend('Ideal position signal','Tracking position signal'); figure(2); plot(time,u,'r','linewidth',2); xlabel('time(s)');ylabel('Control input'); 3.3.3节的程序 RBF神经网络自校正控制: chap3_3.m clear all; close all; xite=0.10; alfa=0.05; w=ones(5,1); cij=[-2 -1 0 1 2]; bj=15; h=zeros(5,1); w_1=w;w_2=w_1; u_1=0;y_1=0; ts=0.02; for k=1:1:5000 time(k)=k*ts; yd(k)=sin(0.1*pi*k*ts); %Practical Plant; f(k)=0.8*sin(y_1); b=15; y(k)=f(k)+b*u_1; for j=1:1:5 h(j)=exp(-norm(y(k)-cij(:,j))^2/(2*bj^2)); end fn(k)=w'*h; yn(k)=fn(k)+b*u_1; e(k)=y(k)-yn(k); d_w=0*w; for j=1:1:5 d_w(j)=xite*e(k)*h(j); end w=w_1+d_w+alfa*(w_1-w_2); u(k)=(-fn(k)+yd(k))/b; u_1=u(k); y_1=y(k); w_2=w_1; w_1=w; end figure(1); plot(time,yd,'r',time,y,'-.k','linewidth',2); xlabel('Time');ylabel('y and yd'); figure(2); plot(time,y,'r',time,yn,'-.k','linewidth',2); xlabel('Time');ylabel('y and yn'); figure(3); plot(time,f,'r',time,fn,'-.k','linewidth',2); xlabel('Time');ylabel('f and fn'); 参考文献 [1]NORIEGA J R,WANG H. A direct adaptive neural network control for unknown nonlinear systems and its application[J]. IEEE Transactions on Neural Networks,1998,9(1): 2734. [2]SUYKENS J A K,VANDEWALLE J P L,DEMOOR B L R. Artificial neural networks for modeling and control of nonlinear systems[M].Boston: Kluwer Academic,1996. [3]刘金琨.智能控制[M].2版.北京: 电子工业出版社,2012.