rbf神经网络_基于RBF神经网络的监督控制(09)
1.RBF監督控制
基于RBF神經網絡的監督控制系統,其控制思想是:初始階段采用PD反饋控制,然后過渡到神經網絡控制。在控制過程中,如出現較大的誤差,則PD控制起主導作用,神經網絡控制起調節作用。
圖1 基于RBF神經網絡的監督控制系統設:
(1) 徑向基向量h=[h1,...,hm]T,(高斯基函數),hj=exp( -||x(k)-cj||^2/(2bj^2))。
其中,i=1;j=1,...,m;x(k)為RBF網絡的輸入;cj=[c11,...,c1m];b=[b1,...,bm]T。
(2) 權值向量w=[w1,...,wm]T。
(3) RBF神經網絡的輸出為un(k)=h1w1+...+hjwj+...hmwm。
(4) 總控制輸入為u(k)=un(k)+up(k)。
(5) 誤差指標為E(k)=(1/2)*(un(k)-u(k))^2。
(6) 采用梯度下降法,網絡權值學習算法為
△wj(k)=-η*(?E(k)/?wj(k))=η(un(k)-u(k))hj(k),η為學習率,[0,1]。
w(k)=w(k-1)+△w(k)+α(w(k-1)-w(k-2)),α為動量因子,[0,1]。
2. 仿真實例
設被控對象為G(s)=1000/(s^3+87.35s^2+10470s)。
設采樣周期為:1ms。
對上述對象進行離散化,可得:y(k)=-den(2)y(k-1)-den(3)y(k-2)+num(2)u(k-1)+num(3)u(k-2)。
設神經網絡結構為:1-4-1。
理想跟蹤指令為:x(k)=yd(k)。
網絡的初始權值取[0,1]之間的隨機數。
根據網絡輸入范圍,高斯函數中心參數為cj=[-5,-3,0,3,5]T。
設學習速率:η=0.3。
設動量因子:α=0.05。
%% RBF監督控制 clear all; close all;ts = 0.001; % 采樣周期 sys = tf(1000,[1,87.35,10470]); 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; % 輸入層為1個輸入 x = [0,0]';b = 0.5*ones(4,1); c = [-2 -1 1 2]; % 隱藏層為4個節點 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:1000time(k) = k*ts; S = 1; if S == 1yd(k) = 0.5*sign(sin(2*2*pi*k*ts)); % 理想的跟蹤指令:方波信號 elseif S == 2yd(k) = 0.5*(sin(3*2*pi*k*ts)); % 理想的跟蹤指令:正弦信號 endy(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:4h(j) = exp(-norm(xi-c(:,j))^2/(2*b(j)*b(j))); end un(k) = w'*h'; % 總體控制輸入量% PD控制器 up(k) = kp*x(1)+kd*x(2); % PD控制輸入量M = 2; % 使用整體控制 if M == 1 % 僅使用PD控制器u(k) = up(k); elseif M == 2 % 總體控制u(k) = up(k)+un(k); end % 限制總控制量的范圍在[-10,10] if u(k) >= 10u(k) = 10; end if u(k) <= -10u(k) = -10; end % 更新神經網絡權值 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); % 計算PD控制器的比例項 x(2) = (e(k)-e_1)/ts; % 計算PD控制器的微分項 e_1 = e(k); endfigure(1); plot(time,yd,'r',time,y,'k:','linewidth',2); xlabel('time(s)'); ylabel('Position tracking'); legend('理想的位置信號','跟蹤的位置信號');figure(2); subplot(311); plot(time,un,'k','linewidth',2); xlabel('time(s)'); ylabel('un'); legend('RBF控制輸入量'); subplot(312); plot(time,up,'k','linewidth',2); xlabel('time(s)'); ylabel('up'); legend('PD控制輸入量'); subplot(313); plot(time,u,'k','linewidth',2); xlabel('time(s)'); ylabel('u'); legend('總控制輸入量');圖1 方波跟蹤效果圖2 神經網絡輸入、PD控制輸入及總控制輸入問題:傳遞函數離散化?
參考文獻:《RBF神經網絡自適應控制MATLAB仿真》_劉金琨
總結
以上是生活随笔為你收集整理的rbf神经网络_基于RBF神经网络的监督控制(09)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码逻辑分析_入行数据分析师不得不看的1
- 下一篇: python将列表转换为字符串_每日一课