摘 要:本文介紹了自適應神經(jīng)模糊網(wǎng)絡(luò )控制系統的結構,并在此基礎上重點(diǎn)介紹了自適應神經(jīng)模糊系統及其MATLAB實(shí)現。
關(guān)鍵詞:自適應;神經(jīng)模糊系統;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 引言
模糊神經(jīng)網(wǎng)絡(luò )控制在控制領(lǐng)域里目前已經(jīng)成為一個(gè)研究的熱點(diǎn),其原因在于神經(jīng)網(wǎng)絡(luò )和模糊系統兩者之間的互補關(guān)系。盡管模糊推理系統的設計(隸屬度函數和模糊規則的建立)不主要依靠對象的模型,但是它卻相當依靠專(zhuān)家或操作人員的經(jīng)驗和知識。若缺乏這樣的經(jīng)驗和知識,則很難期望它能獲得滿(mǎn)意的控制效果。而神經(jīng)網(wǎng)絡(luò )的一大特點(diǎn)就是其自學(xué)習功能,將這種自學(xué)習的方法應用于對模型特征的分析與建模上,產(chǎn)生自適應的神經(jīng)網(wǎng)絡(luò )技術(shù)。這種自適應的神經(jīng)網(wǎng)絡(luò )技術(shù)對于模糊系統的模型建立(模糊規則庫的建立)是非常有效的工具。而自適應神經(jīng)模糊系統就是基于數據的建模方法,該系統中的模糊隸屬度函數及模糊規則是通過(guò)大量的已知數據的學(xué)習得到的,而不是基于經(jīng)驗和直覺(jué)任意給定的,這對于那些特性還不被人們所完全了解或者特性非常復雜的系統尤為重要。
2 自適應神經(jīng)模糊網(wǎng)絡(luò )控制系統的結構
自適應神經(jīng)模糊網(wǎng)絡(luò )系統的定義是指具有學(xué)習算法的神經(jīng)模糊網(wǎng)絡(luò )系統,這里的神經(jīng)模糊網(wǎng)絡(luò )系統是由服從模糊邏輯規則的一系列“如果—則”規則所構造的;而學(xué)習算法則依靠數據信息來(lái)對神經(jīng)模糊系統的參數進(jìn)行調整。自適應模糊神經(jīng)系統被認為是通過(guò)學(xué)習能自動(dòng)產(chǎn)生模糊規則的神經(jīng)模糊網(wǎng)絡(luò )系統。神經(jīng)模糊網(wǎng)絡(luò )控制系統的結構圖如圖1所示。其中NFNC為神經(jīng)模糊網(wǎng)絡(luò )控制器;R為輸入信號;E、EC分別為誤差及誤差變化量化后的模糊量;Ke、Kc為量化因子。

圖1 自適應神經(jīng)模糊網(wǎng)絡(luò )控制系統結構圖
因此可以說(shuō)神經(jīng)模糊網(wǎng)絡(luò )是具有自適應性的, 并能夠根據被控對象和環(huán)境的變化來(lái)調整控制規則和控制器的參數。
3 模糊推理系統生成方式
(1)在MATLAB模糊邏輯工具箱中,提供了有關(guān)對自適應神經(jīng)模糊推理系統的初始化和建模函數,如表1所示。
表1 模糊神經(jīng)系統函數
函數名 |
功能 |
genfis1( )
anfis ( ) |
采用網(wǎng)格分割方式生成模糊推理函數
自適應神經(jīng)模糊系統的建模函數 |
(2)采用網(wǎng)格分割方式生成模糊推理系統
函數genfis1( )可為訓練自適應神經(jīng)模糊推理系統(Adaptive Neuro-Fuzzy Inference System,簡(jiǎn)稱(chēng)ANFIS)產(chǎn)生Takagi-Sugeno型模糊推理系統(Fuzzy Inference System,簡(jiǎn)稱(chēng)FIS)結構的初值(隸屬度函數參數的初值),它采用網(wǎng)格分割的方式,根據給定數據集生成一個(gè)模糊推理系統,一般與函數anfis ( )配合使用。由genfis1( )生成的模糊推理系統的輸入和隸屬度函數的類(lèi)型、數目可以在使用時(shí)指定,也可以采用默認值。該函數的調用格式為
fisMat=genfisl(data)
fisMat= genfisl(data,numMFs,inMFType,outMFType)
其中,data為給定的輸入/輸出數據集合,除了一系列為輸出數據外,其余列均表示輸入數據;numMFs為一向量,其各個(gè)分量用于指定每個(gè)輸入語(yǔ)言變量的隸屬度函數的數量,如果每個(gè)輸入的隸屬度函數的數量相同,則只需輸入標量值;inMFType為一字符串陣列,其每一列指定一個(gè)輸入變量的隸屬度類(lèi)型,如果類(lèi)型相同,則該參數將變成一個(gè)一維的字符串;outMFType指定輸出隸屬度類(lèi)型的字符串,由于只能采用Takagi-Sugeno型系統,因此系統只能有一個(gè)輸出,其類(lèi)型僅取linear或constant;fisMat為生成的模糊推理系統矩陣。當僅使用一個(gè)輸入參數而不指定隸屬度函數的個(gè)數和類(lèi)型時(shí),將使用默認值,即輸入隸屬度函數個(gè)數為2,輸入隸屬度函數類(lèi)型為鐘形(gbellmf)曲線(xiàn),輸出隸屬度函數為線(xiàn)行(linear)曲線(xiàn)。
我們可以利用函數genfis1( )產(chǎn)生一個(gè)兩輸入—單輸出的模糊推理系統。其中要求輸入隸屬度函數分別為π形(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系統訓練前的初始隸屬度函數曲線(xiàn),如圖2所示。

圖2 由函數genfis1( )生成的隸屬度函數曲線(xiàn)
由圖2可以看出,根據函數genfis1( )生成的模糊推理系統的輸入/輸出隸屬度函數的曲線(xiàn),在確保覆蓋整個(gè)輸入/輸出空間的基礎上對其進(jìn)行了均勻分割。
(3)自適應神經(jīng)模糊系統的建模
在MATLAB模糊邏輯工具箱中,提供了對基于Takagi-Sugeno型模型的自適應神經(jīng)模糊推理系統ANFIS的建模方法,該模糊推理系統利用BP反向傳播算法和最小二乘算法來(lái)完成對輸入/輸出數據對的建模。該系統為模糊建模的過(guò)程,提供了一種能夠從數據集中提取相應信息(模糊規則)的學(xué)習方法。這種學(xué)習方法與神經(jīng)網(wǎng)絡(luò )的學(xué)習方法非常相似,通過(guò)學(xué)習能夠有效的計算出隸屬度函數的最佳參數,使得設計出來(lái)的Takagi-Sugeno型模糊推理系統能夠最好地模擬出希望的或是實(shí)際的輸入/輸出關(guān)系。相應的函數為anfis(),該函數的輸出為一個(gè)三維或五維向量。當未指定檢驗數據時(shí),輸出向量為三維。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為訓練學(xué)習的輸入/輸出數據矩陣,該矩陣的每一行對應一組輸入/輸出數據,其中最后一列為輸出數據(該函數僅支持單輸出的Takagi-Sugeno型模糊系統);
2) initFis是指定初始的模糊推理參數(包括隸屬度函數的類(lèi)型和參數)的矩陣,該矩陣可以使用命令fuzzy通過(guò)模糊推理系統編輯器生成,也可使用函數genfisl()由訓練數據直接生成。函數genfisl()的功能是采用網(wǎng)格分割法生成模糊推理系統。如果沒(méi)有指明該參數,則函數anfis()會(huì )自動(dòng)調用genfisl()來(lái)按照輸入/輸出數據生成一個(gè)默認初始FIS推理系統參數。這里使用函數genfisl()的作用是先根據一定的專(zhuān)家經(jīng)驗給出一個(gè)初始模糊系統的合適結構,在使用函數 anfis()的訓練過(guò)程中,已經(jīng)給定的初始模糊系統的結構(隸屬度函數的個(gè)數、模糊規則數目)不會(huì )改變,只是對相應的結構參數進(jìn)行調整和優(yōu)化;
3) trnOpt指定訓練的有關(guān)選項,參數trnOpt為一個(gè)五維向量,其各個(gè)分量的定義如下:trnOpt(1)為訓練的次數,默認值為10;trnOpt(2)為期望誤差,默認值是0;trnOpt(3)為初始步長(cháng),默認值是0.01;trnOpt(4)為步長(cháng)遞減速率,默認值是0.9;trnOpt(5)為步長(cháng)遞增速率,默認值為1.1。如果trnOpt的任一個(gè)分量為NaN(非數值,IEEE的標準縮寫(xiě))或被省略,則訓練采用默認參數。學(xué)習訓練的過(guò)程在參數得到指定值或訓練誤差得到期望誤差時(shí)停止。訓練過(guò)程中的步長(cháng)調整采用以下的策略:當誤差連續四次減小時(shí),則增加步長(cháng);當誤差變化連續兩次出現震蕩,即一次增加和一次減少交替發(fā)生時(shí),則減小步長(cháng)。trnOpt的第四個(gè)和第五個(gè)參數分別按照上述策略控制訓練步長(cháng)的調整;
4) disOpt用于控制訓練過(guò)程中MATLAB命令窗口的顯示內容,參數disOpt為一個(gè)四維向量,各分量分別定義如下:
disOpt(1)顯示ANFIS的信息,如輸入/輸出隸屬度函數的次數,默認值為1;disOpt(2)顯示誤差測量,默認值為1;
disOpt(3)顯示訓練步長(cháng),默認值為1;disOpt(4)顯示最終結果,默認值為1。當disOpt的一個(gè)分量為0時(shí)不顯示相應內容,如果為1或NaN或省略則顯示相應內容;
5) chkData參數為一個(gè)與訓練數據矩陣有相同列數的矩陣,用于提供檢驗數據,當提供檢驗數據時(shí),anfis()返回對檢驗數據具有最小均方根誤差的模糊推理系統chkFis;
6) optMethod為隸屬度函數參數訓練中的可選最優(yōu)化方法,其中1表示混合方法(BP算法和最小二乘法的組合),0表示BP方法,默認值為1;
返回參數Fis為學(xué)習完成后得到的對應訓練數據具有最小均方根誤差的模糊推理系統矩陣;
7) error為訓練數據對應的最小根誤差向量;
8) stepsize為訓練步長(cháng)向量(當指定檢驗數據后,輸出向量為五維參數向量);
9) chkFis為對檢驗數據具有最小均方根誤差的模糊推理系統;
10) chkEr為檢驗數據對應的最小均方根誤差。
利用anfis()函數進(jìn)行自適應模糊系統建模,除了給定系統期望的輸入/輸出數據之外,還必須提供一個(gè)初始模糊推理系統(包括隸屬度函數的類(lèi)型和參數),否則函數anfis()會(huì )自動(dòng)調用genfisl()來(lái)按照輸入/輸出數據生成一個(gè)默認的系統。我們對于這樣一個(gè)非線(xiàn)性函數

X=0:0.1:10;y=sin(2*x)./exp(x/5);trnData=[x'y'];%訓練學(xué)習的輸入/輸出數據
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所示的函數實(shí)際輸出和模糊推理系統輸出曲線(xiàn)。
圖3 實(shí)際輸出和ANFIS輸出曲線(xiàn)
從圖中可以看出,經(jīng)過(guò)訓練的模糊推理系統基本能夠模擬原函數。
4 結論
隨著(zhù)計算機及其相關(guān)技術(shù)的發(fā)展,模糊控制也由最初的經(jīng)典模糊控制發(fā)展到自適應模糊控制,對一些非線(xiàn)性,大延時(shí),強耦合,時(shí)變參數等復雜的工業(yè)過(guò)程有很好的控制過(guò)程。MATLAB工具箱提供了許多進(jìn)行神經(jīng)網(wǎng)絡(luò )和模糊邏輯設計和分析的工具函數,即使不了解算法的本質(zhì),也可以直接應用功能豐富的函數來(lái)實(shí)現自己的目的。
參考文獻
[1] 李士勇。模糊控制神經(jīng)控制和智能控制論。哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1998
[2] Kevin M.Passino,Stephen Yurkovich.Fuzzy control. July 1997
[3] 涂承宇,涂承媛,楊曉萊,賀佳。模糊控制理論與實(shí)踐。地震出版社,1998
[4] 吳曉莉,林哲輝等。MATLAB輔助模糊系統設計。西安:西安電子科技大學(xué)出版社,2002