RBF神經網絡參考模型自適應MATLAB實現(分析)

由於BP神經網絡的收斂速度慢,不適合安在自適應系統裏,所以選擇了速度比較快的RBF神經網絡,看了關於RBF神經網絡自適應控制的一些原理和MATLAB代碼,有一些自己的理解寫在這裏。

一般的神經網絡的作用是去做一些分類,迴歸等工作,能夠根據系統輸入,在訓練好的神經網絡系統下分類或者預測出系統的輸出,我主要的工作不是做分類器,這個方法主要運用在機器視覺上,我的研究生主要工作是逼近一個未知模型,這就需要用到神經網絡的迴歸,構建系統未知的非線性模型,運用到實際操作上。

下面是一個關於RBF神經網絡參考模型自適應的系統框圖
在這裏插入圖片描述
這兩天主要是學習了一些關於RBF神經網絡在自適應控制系統的應用。上圖的參考模型,是根據理論建立的理想模型,得到輸出ym(k),系統輸入yd(k),RBF神經網絡的輸入爲被控對象輸入u(k),反饋誤差e(k)和系統輸入yd(k),其餘的參數初始化以及高斯核函數的建立我這裏就不多做解釋了,在頁尾附的MATLAB代碼中有註釋。

主要想法是,RBF神經網絡會將自身的網絡輸出u(k)當作網絡的輸入來訓練網絡,在一些有監督的模型下RBF可以單單輸入信號yd(k)做成1-n-1的網絡模型,不一定要加入網絡的輸出做輸入信號。

還有一個點,查資料會有發現,RBF神經網絡是一種類似SVM設置中心點取歐式距離的方法來做優化處理,而這樣做的好處是在到輸出層的時候,網絡輸出變成了線性輸出,計算難度大大降低,速度可以提高,缺點就是優化能力下降,這和初始設置的中心有關,在網絡優化上RBF只具有局部優化能力,用最簡單的梯度下降的方法也只能找到局部最優解,不是全局最優解,所以這種網絡設置初始中心還是蠻重要的。

下面,附MATLAB代碼,帶註釋



%Model Reference Aapative 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.55;

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);  %被控對象輸出

 

for j=1:1:7

   
h(j)=exp(-norm(x-c(:,j))^2/(2*b^2));%節點高斯核函數

end

u(k)=w*h;%RBF神經網絡輸出
      

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');


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章