摘 要:本文介紹了自適應神經模糊網絡控制系統的結構,并在此基礎上重點介紹了自適應神經模糊系統及其MATLAB實現。
關鍵詞:自適應;神經模糊系統;MATLAB
Abstract: This text has introduced the structure of the fuzzy network control system of adaptive nerve ,and has recommended especially fuzzy system and MATLAB of the adaptive nerve are realized on this basis.
Key woeds: adaptive;neuro_fuzzy system;MATLAB
1 引言
模糊神經網絡控制在控制領域里目前已經成為一個研究的熱點,其原因在于神經網絡和模糊系統兩者之間的互補關系。盡管模糊推理系統的設計(隸屬度函數和模糊規則的建立)不主要依靠對象的模型,但是它卻相當依靠專家或操作人員的經驗和知識。若缺乏這樣的經驗和知識,則很難期望它能獲得滿意的控制效果。而神經網絡的一大特點就是其自學習功能,將這種自學習的方法應用于對模型特征的分析與建模上,產生自適應的神經網絡技術。這種自適應的神經網絡技術對于模糊系統的模型建立(模糊規則庫的建立)是非常有效的工具。而自適應神經模糊系統就是基于數據的建模方法,該系統中的模糊隸屬度函數及模糊規則是通過大量的已知數據的學習得到的,而不是基于經驗和直覺任意給定的,這對于那些特性還不被人們所完全了解或者特性非常復雜的系統尤為重要。
2 自適應神經模糊網絡控制系統的結構
自適應神經模糊網絡系統的定義是指具有學習算法的神經模糊網絡系統,這里的神經模糊網絡系統是由服從模糊邏輯規則的一系列“如果—則”規則所構造的;而學習算法則依靠數據信息來對神經模糊系統的參數進行調整。自適應模糊神經系統被認為是通過學習能自動產生模糊規則的神經模糊網絡系統。神經模糊網絡控制系統的結構圖如圖1所示。其中NFNC為神經模糊網絡控制器;R為輸入信號;E、EC分別為誤差及誤差變化量化后的模糊量;Ke、Kc為量化因子。
圖1 自適應神經模糊網絡控制系統結構圖
因此可以說神經模糊網絡是具有自適應性的, 并能夠根據被控對象和環境的變化來調整控制規則和控制器的參數。
3 模糊推理系統生成方式
(1)在MATLAB模糊邏輯工具箱中,提供了有關對自適應神經模糊推理系統的初始化和建模函數,如表1所示。
表1 模糊神經系統函數
函數名 |
功能 |
genfis1( )
anfis ( ) |
采用網格分割方式生成模糊推理函數
自適應神經模糊系統的建模函數 |
(2)采用網格分割方式生成模糊推理系統
函數genfis1( )可為訓練自適應神經模糊推理系統(Adaptive Neuro-Fuzzy Inference System,簡稱ANFIS)產生Takagi-Sugeno型模糊推理系統(Fuzzy Inference System,簡稱FIS)結構的初值(隸屬度函數參數的初值),它采用網格分割的方式,根據給定數據集生成一個模糊推理系統,一般與函數anfis ( )配合使用。由genfis1( )生成的模糊推理系統的輸入和隸屬度函數的類型、數目可以在使用時指定,也可以采用默認值。該函數的調用格式為
fisMat=genfisl(data)
fisMat= genfisl(data,numMFs,inMFType,outMFType)
其中,data為給定的輸入/輸出數據集合,除了一系列為輸出數據外,其余列均表示輸入數據;numMFs為一向量,其各個分量用于指定每個輸入語言變量的隸屬度函數的數量,如果每個輸入的隸屬度函數的數量相同,則只需輸入標量值;inMFType為一字符串陣列,其每一列指定一個輸入變量的隸屬度類型,如果類型相同,則該參數將變成一個一維的字符串;outMFType指定輸出隸屬度類型的字符串,由于只能采用Takagi-Sugeno型系統,因此系統只能有一個輸出,其類型僅取linear或constant;fisMat為生成的模糊推理系統矩陣。當僅使用一個輸入參數而不指定隸屬度函數的個數和類型時,將使用默認值,即輸入隸屬度函數個數為2,輸入隸屬度函數類型為鐘形(gbellmf)曲線,輸出隸屬度函數為線行(linear)曲線。
我們可以利用函數genfis1( )產生一個兩輸入—單輸出的模糊推理系統。其中要求輸入隸屬度函數分別為π形(pimf)和三角形(trimf),分割數分別為5和7。編程MATLAB為:
data=[rand(10,1) 10*rand(10,1)-5 rand(10,1)];numMFs = [5 7];imfType=str2mat('pimf','trimf');omfType=str2mat('linear');fisMat=genfis1(data,numMFs,imfType,omfType);%生成模糊推理系統subplot(2,1,1);plotmf(fisMat,'input',1);subplot(2,1,2);plotmf(fisMat,'input',2);
根據以上MATLAB程序,可以得到由函數genfis1( )生成的ANFIS系統訓練前的初始隸屬度函數曲線,如圖2所示。
圖2 由函數genfis1( )生成的隸屬度函數曲線
由圖2可以看出,根據函數genfis1( )生成的模糊推理系統的輸入/輸出隸屬度函數的曲線,在確保覆蓋整個輸入/輸出空間的基礎上對其進行了均勻分割。
(3)自適應神經模糊系統的建模
在MATLAB模糊邏輯工具箱中,提供了對基于Takagi-Sugeno型模型的自適應神經模糊推理系統ANFIS的建模方法,該模糊推理系統利用BP反向傳播算法和最小二乘算法來完成對輸入/輸出數據對的建模。該系統為模糊建模的過程,提供了一種能夠從數據集中提取相應信息(模糊規則)的學習方法。這種學習方法與神經網絡的學習方法非常相似,通過學習能夠有效的計算出隸屬度函數的最佳參數,使得設計出來的Takagi-Sugeno型模糊推理系統能夠最好地模擬出希望的或是實際的輸入/輸出關系。相應的函數為anfis(),該函數的輸出為一個三維或五維向量。當未指定檢驗數據時,輸出向量為三維。Anfis()支持采用輸出加權平均的一階或零階Takagi-Sugeno型模糊推理。該函數的調用格式為
[ Fis,error,stepsize ]=anfis (trnData)[ Fis,error,stepsize ]=anfis (trnData,initFis)[ Fis,error,stepsize ]=anfis (trnData,initFis,trnOpt,disOpt)[ Fis,error,stepsize,chFis,chkEr ]=anfis (trnData,initFis,trnOpt,disOpt.chkData)[ Fis,error,stepsize,chFis,chkEr ]=anfis (trnData,initFis,trnOpt,disOpt.chkData,optMethod)
其中,
1) trnData為訓練學習的輸入/輸出數據矩陣,該矩陣的每一行對應一組輸入/輸出數據,其中最后一列為輸出數據(該函數僅支持單輸出的Takagi-Sugeno型模糊系統);
2) initFis是指定初始的模糊推理參數(包括隸屬度函數的類型和參數)的矩陣,該矩陣可以使用命令fuzzy通過模糊推理系統編輯器生成,也可使用函數genfisl()由訓練數據直接生成。函數genfisl()的功能是采用網格分割法生成模糊推理系統。如果沒有指明該參數,則函數anfis()會自動調用genfisl()來按照輸入/輸出數據生成一個默認初始FIS推理系統參數。這里使用函數genfisl()的作用是先根據一定的專家經驗給出一個初始模糊系統的合適結構,在使用函數 anfis()的訓練過程中,已經給定的初始模糊系統的結構(隸屬度函數的個數、模糊規則數目)不會改變,只是對相應的結構參數進行調整和優化;
3) trnOpt指定訓練的有關選項,參數trnOpt為一個五維向量,其各個分量的定義如下:trnOpt(1)為訓練的次數,默認值為10;trnOpt(2)為期望誤差,默認值是0;trnOpt(3)為初始步長,默認值是0.01;trnOpt(4)為步長遞減速率,默認值是0.9;trnOpt(5)為步長遞增速率,默認值為1.1。如果trnOpt的任一個分量為NaN(非數值,IEEE的標準縮寫)或被省略,則訓練采用默認參數。學習訓練的過程在參數得到指定值或訓練誤差得到期望誤差時停止。訓練過程中的步長調整采用以下的策略:當誤差連續四次減小時,則增加步長;當誤差變化連續兩次出現震蕩,即一次增加和一次減少交替發生時,則減小步長。trnOpt的第四個和第五個參數分別按照上述策略控制訓練步長的調整;
4) disOpt用于控制訓練過程中MATLAB命令窗口的顯示內容,參數disOpt為一個四維向量,各分量分別定義如下:
disOpt(1)顯示ANFIS的信息,如輸入/輸出隸屬度函數的次數,默認值為1;disOpt(2)顯示誤差測量,默認值為1;
disOpt(3)顯示訓練步長,默認值為1;disOpt(4)顯示最終結果,默認值為1。當disOpt的一個分量為0時不顯示相應內容,如果為1或NaN或省略則顯示相應內容;
5) chkData參數為一個與訓練數據矩陣有相同列數的矩陣,用于提供檢驗數據,當提供檢驗數據時,anfis()返回對檢驗數據具有最小均方根誤差的模糊推理系統chkFis;
6) optMethod為隸屬度函數參數訓練中的可選最優化方法,其中1表示混合方法(BP算法和最小二乘法的組合),0表示BP方法,默認值為1;
返回參數Fis為學習完成后得到的對應訓練數據具有最小均方根誤差的模糊推理系統矩陣;
7) error為訓練數據對應的最小根誤差向量;
8) stepsize為訓練步長向量(當指定檢驗數據后,輸出向量為五維參數向量);
9) chkFis為對檢驗數據具有最小均方根誤差的模糊推理系統;
10) chkEr為檢驗數據對應的最小均方根誤差。
利用anfis()函數進行自適應模糊系統建模,除了給定系統期望的輸入/輸出數據之外,還必須提供一個初始模糊推理系統(包括隸屬度函數的類型和參數),否則函數anfis()會自動調用genfisl()來按照輸入/輸出數據生成一個默認的系統。我們對于這樣一個非線性函數 , 建立一個自適應神經模糊推理系統,對其進行逼近。編寫MATLAB程序如下:
X=0:0.1:10;y=sin(2*x)./exp(x/5);trnData=[x'y'];%訓練學習的輸入/輸出數據
numMFs =5;mfType='gbellmf';initFis= genfis1(trnData,numMFs, mfType);epoch_n=30;fisMat=anfis(trnData, initFis, epoch_n);plot(x,y,'-',x,evalfis(x, fisMat),':');legend('Training Data','ANFIS Output')
由此可以得到如圖2所示的函數實際輸出和模糊推理系統輸出曲線。
圖3 實際輸出和ANFIS輸出曲線
從圖中可以看出,經過訓練的模糊推理系統基本能夠模擬原函數。
4 結論
隨著計算機及其相關技術的發展,模糊控制也由最初的經典模糊控制發展到自適應模糊控制,對一些非線性,大延時,強耦合,時變參數等復雜的工業過程有很好的控制過程。MATLAB工具箱提供了許多進行神經網絡和模糊邏輯設計和分析的工具函數,即使不了解算法的本質,也可以直接應用功能豐富的函數來實現自己的目的。
參考文獻
[1] 李士勇。模糊控制神經控制和智能控制論。哈爾濱:哈爾濱工業大學出版社,1998
[2] Kevin M.Passino,Stephen Yurkovich.Fuzzy control. July 1997
[3] 涂承宇,涂承媛,楊曉萊,賀佳。模糊控制理論與實踐。地震出版社,1998
[4] 吳曉莉,林哲輝等。MATLAB輔助模糊系統設計。西安:西安電子科技大學出版社,2002