模糊控制的Matlab仿真_第1頁
模糊控制的Matlab仿真_第2頁
模糊控制的Matlab仿真_第3頁
模糊控制的Matlab仿真_第4頁
模糊控制的Matlab仿真_第5頁
已閱讀5頁,還剩161頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、用用MATLAB的模糊邏輯工具箱的模糊邏輯工具箱(Fuzzy toolbox)實現(xiàn)實現(xiàn) lMatlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),為仿真模糊控制系統(tǒng)提供了很大的方便。 l在Simulink環(huán)境下對PID控制系統(tǒng)進行建模是非常方便的,而模糊控制系統(tǒng)與PID控制系統(tǒng)的結(jié)構(gòu)基本相同,僅僅是控制器不同。 l對模糊控制系統(tǒng)的建模關(guān)鍵是對模糊控制器的建模。Matlab軟件提供了一個模糊推理系統(tǒng)(FIS)編輯器,只要在Matlab命令窗口鍵入Fuzzy就可進入模糊控制器編輯環(huán)境。 1. Matlab模糊邏輯工具箱仿真模糊邏輯工具箱仿真l模糊推理系統(tǒng)編輯器(模糊推理系統(tǒng)編

2、輯器(FuzzyFuzzy) l模糊推理系統(tǒng)編輯器用于設(shè)計和顯示模糊推理系統(tǒng)的一些基本信息,如推理系統(tǒng)的名稱,輸入、輸出變量的個數(shù)與名稱,模糊推理系統(tǒng)的類型、解模糊方法等。其中模糊推理系統(tǒng)可以采用Mandani或Sugeuo兩種類型,解模糊方法有最大隸屬度法、重心法、加權(quán)平均等。l打開模糊推理系統(tǒng)編輯器,在MATLAB的命令窗(command window)內(nèi)鍵入:fuzzy 命令,彈出模糊推理系統(tǒng)編輯器界面,如下圖所示。多個輸入時,在多個輸入時,在EditEdit菜單中,選菜單中,選Add variable -Add variable -input,input,加入新的輸入加入新的輸入inp

3、ut,input,如下圖所示如下圖所示 選擇選擇input(input(選中選中為紅框為紅框),),在在界面右邊文界面右邊文字輸入處鍵字輸入處鍵入相應(yīng)的輸入相應(yīng)的輸入名稱,例入名稱,例如如, ,溫度輸入溫度輸入用用 tmp-tmp-input, input, 磁能磁能輸入用輸入用 mag-mag-inputinput,等。,等。l隸屬度函數(shù)編輯器隸屬度函數(shù)編輯器(Mfedit)(Mfedit)l該編輯器提供一個友好的人機圖形交互環(huán)境,用來設(shè)計和修改模糊推理系中各語言變量對應(yīng)的隸屬度函數(shù)的相關(guān)參數(shù),如隸屬度函數(shù)的形狀、范圍、論域大小等,系統(tǒng)提供的隸屬度函數(shù)有三角、梯形、高斯形、鐘形等,也可用戶自

4、行定義。l雙擊所選input,彈出一新界面,在左下Range處和Display Range處,填入取只范圍,例如 0至9 (代表0至90)。l在右邊文字文字輸入Name處,填寫隸屬函數(shù)的名稱,例如lt或LT(代表低溫)。l在Type處選擇trimf(意為:三角形隸屬函數(shù)曲線,triangle member function),當(dāng)然也可選其它形狀。 在在Params(Params(參數(shù)參數(shù)) )處,選擇三角形涵蓋的區(qū)間,填寫三個值,處,選擇三角形涵蓋的區(qū)間,填寫三個值,分別為三角形底邊的左端點、中點和右端點在橫坐標(biāo)上的分別為三角形底邊的左端點、中點和右端點在橫坐標(biāo)上的值。這些值由設(shè)計者確定。值。

5、這些值由設(shè)計者確定。用類似的方法設(shè)置輸出用類似的方法設(shè)置輸出outputoutput的參數(shù)。比如:共有的參數(shù)。比如:共有9 9個規(guī)個規(guī)則,所以相應(yīng)地有則,所以相應(yīng)地有9 9個輸出隸屬函數(shù)。默認(rèn)個輸出隸屬函數(shù)。默認(rèn)3 3個隸屬函數(shù),個隸屬函數(shù),剩下剩下6 6個由設(shè)計者加入。點擊個由設(shè)計者加入。點擊EditEdit菜單,選菜單,選 Add Custom Add Custom MS-MS-繼續(xù)填入相應(yīng)參數(shù)即可。繼續(xù)填入相應(yīng)參數(shù)即可。l模糊推理規(guī)則編輯器Ruleeditl通過隸屬度函數(shù)編輯器來設(shè)計和修改“IF.THEN”形式的模糊控制規(guī)則。由該編輯器進行模糊控制規(guī)則的設(shè)計非常方便,它將輸入量各語言變量

6、自動匹配,而設(shè)計者只要通過交互式的圖形環(huán)境選擇相應(yīng)的輸出語言變量,這大大簡化了規(guī)則的設(shè)計和修改。另外,還可為每條規(guī)則選擇權(quán)重,以便進行模糊規(guī)則的優(yōu)化。l選Edit菜單,選擇Rules, 彈出一新界面Rule Editor. 在底部的選擇框內(nèi),選擇相應(yīng)的 IFANDTHEN 規(guī)則,點擊Add rule 鍵,上部框內(nèi)將顯示相應(yīng)的規(guī)則。本例中用9條左右的規(guī)則,依次加入。如下圖所示: l模糊規(guī)則瀏覽器用于顯示各條模糊控制規(guī)則對應(yīng)的輸入量和輸出量的隸屬度函數(shù)。通過指定輸入量,可以直接的顯示所采用的控制規(guī)則,以及通過模糊推理得到相應(yīng)輸出量的全過程,以便對模糊規(guī)則進行修改和優(yōu)化。l所有規(guī)則填入后,選菜單Vi

7、ew, 選擇Rules,彈出一新界面Rule Viewer,如下圖所示。l上圖表示當(dāng)溫度為45度、磁能為45瓦時,輸出干度為約70個單位。左右拉動界面中的兩支紅線,拉到欲選的近似值,右邊圖頂顯示相應(yīng)的干度結(jié)果。l上圖中選菜單View, 選擇Surface,彈出一新界面Surface Viewer,彈出該課題結(jié)果的三維圖。如下圖所示。注意將鼠標(biāo)箭頭放置圖內(nèi),移動鼠標(biāo)可得到不同注意將鼠標(biāo)箭頭放置圖內(nèi),移動鼠標(biāo)可得到不同角度的視圖,如下圖所示。角度的視圖,如下圖所示。Matlab模糊控制仿真演示例子模糊控制仿真演示例子l模型sltank.mdl 使用模糊控制器對水箱水位進行控制。l假定水箱有一個進水

8、口和一個出水口,可以通過控制一個閥門來控制流入的水量(即水位高度),但是流出的速度取決于出水口的半徑(定值)和水箱底部的壓力(隨水箱中的水位高度變化)。系統(tǒng)有許多非線性特性。l要求設(shè)計的目標(biāo)是一個合適的進水口閥門的控制器,能夠根據(jù)水箱水位的實時測量結(jié)果對進水閥門進行相應(yīng)控制,使水位滿足特定要求(即特定輸入信號)。一般情況下,控制器以水位偏差(理想水位和實際水位的差值)及水位變化率作為輸入,輸出的控制結(jié)果是進水閥打開或關(guān)閉的速度。l在Matlab中仿真,可以看到出現(xiàn)一個水箱模型的仿真動畫窗口。該動畫由一個S函數(shù)”animtank.m”實現(xiàn)。從動畫中,可以觀察到實際系統(tǒng)的水位跟隨殊榮的要求水位信號

9、變化。l如果對S函數(shù)的實現(xiàn)感興趣,可以鍵入命令open animtank(或edit animtank)來查看” animtank.m”文件l在Simulink編輯窗口左邊的模塊瀏覽區(qū)可以看到在水箱仿真系統(tǒng)中包括水箱子模型水箱子模型、閥門子閥門子模型及模型及 PID 控制子模型控制子模型。直接在瀏覽區(qū)中點擊或右鍵點擊它們,并在彈出菜單中選擇 look under mask 】 ,可以看到這些模塊實現(xiàn)的細(xì)節(jié)結(jié)構(gòu),如圖 所示。l這里暫時不討論具體的系統(tǒng)模型的構(gòu)造問題,我們可以先在這個已經(jīng)建立好的系統(tǒng)模型上進行修改,體驗?zāi):壿嬇c仿真環(huán)境結(jié)合使用的優(yōu)勢。l對于仿真模型系統(tǒng)中已經(jīng)建立的水箱模塊、閥門模

10、塊以及動畫仿真顯示模塊可以直接使用,這里我們重點討論與模糊推理系統(tǒng)設(shè)計問題相關(guān)的模糊系統(tǒng)變量 tank (即 MATLAB 的模糊邏輯推理系統(tǒng))。在 MATLAB 命令窗口中鍵入命令 fuzzy tank ,就可以開始對模糊系統(tǒng) tank 進行編輯了。l為簡單起見,我們直接利用系統(tǒng)里已經(jīng)編輯好的模糊推理系統(tǒng),在它的基礎(chǔ)上進行修改。這里我們采用與tank . fis中輸入輸出變量模糊集合完全相同的集合隸屬度函數(shù)定義,只是對模糊規(guī)則進行一些改動,來學(xué)習(xí)模糊工具箱與仿真工具的結(jié)合運用。對于這個問題,根據(jù)經(jīng)驗和直覺很顯然可以得到如下的模糊控制規(guī)則: If (水位誤差?。﹖hen(閥門大小不變(權(quán)重 1

11、 )If (水位低) then (閥門迅速打開)(權(quán)重 1 ) If (水位高) then (閥門迅速關(guān)閉)(權(quán)重 1 )l這相當(dāng)于在原有模糊系統(tǒng)模型上減少兩條模糊規(guī)則得到的新的模糊推理系統(tǒng)。l改動完成后進行仿真,觀察示波器模塊,可以得到系統(tǒng)水位變化,如圖所示。l從上圖的仿真控制結(jié)果曲線中可以看出上述由三條模糊規(guī)則組成的模糊控制系統(tǒng)的結(jié)果并不理想,因此可以再增加如下兩條模糊控制規(guī)則:If (水位誤差小且變化率為負(fù)) then (閥門緩慢關(guān)閉)(權(quán)重 1 ) If (水位誤差小且變化率為正) then (閥門緩慢打開)(權(quán)重 1 ) l系統(tǒng)的輸出變化曲線如下圖所示。l從上圖可以看出,在增加了模糊

12、控制規(guī)則后,系統(tǒng)的動態(tài)特性得到較大改善,不但具有較短的響應(yīng)時間,而且超調(diào)量也很小。可以用 Surfview tank 命令來顯示模糊控制系統(tǒng)的輸出曲面,如圖所示。l在這個例子中,還可以用傳統(tǒng)的 PID 控制方法與模糊邏輯推理控制進行比較。在水箱仿真環(huán)境主界面中將控制方法選擇開關(guān)中間的 const 模塊的值由由-1 改為 1 ,這時系統(tǒng)將用傳統(tǒng)的 PID 控制方法進行控制,如圖所示。其他例子其他例子l模型Shower.mdl淋浴溫度調(diào)節(jié)模糊控制系統(tǒng)仿真; l模型slcp.mdl單級小車倒擺模糊控制系統(tǒng)仿真;l模型 slcp1.mdl變長度倒擺小車模糊控制系統(tǒng)仿真;l模型 slcpp1.mdl定長

13、、變長二倒擺模糊控制系統(tǒng)仿真;l模型slbb.mdl球棒模糊控制系統(tǒng)仿真;l模型sltbu.mdl卡車智能模糊控制倒車系統(tǒng)仿真;l模型sltank2.mdl 用子系統(tǒng)封裝的水箱控制仿真。l學(xué)習(xí) MATLAB 仿真工具的一個快速有效的方法就是學(xué)習(xí)示例模型,通過看懂這些模型和模塊的功能以及搭建過程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具來設(shè)計和搭建自己獨特的模型。l下面以模型Shower.mdl的結(jié)構(gòu)作一個介紹,方便讀者更好地理解和學(xué)習(xí)這個例子。l模型Shower.mdl是一個淋浴溫度及水量調(diào)節(jié)的模糊控制系統(tǒng)的仿真,該模糊控制器的輸入變量分別是水流量和水溫,輸出變量分別是對熱水閥和冷水

14、閥的控制方式。該問題是一個典型的經(jīng)驗查表法控制示例,是 Mamdani型系統(tǒng),其模糊控制矩陣存為磁盤文件shower.fis。l這個仿真模型的輸出是用示波器來表示的,如圖所示。通過示波器上的圖形我們可以清楚地看到溫度和水流量跟蹤目標(biāo)要求的性能。水溫示波器水溫示波器水流示波器水流示波器水溫偏差區(qū)間模糊劃分及隸屬度函數(shù)水溫偏差區(qū)間模糊劃分及隸屬度函數(shù)水流量偏差區(qū)間模糊劃分及隸屬度函數(shù)水流量偏差區(qū)間模糊劃分及隸屬度函數(shù)輸出對冷水閥控制策略的模糊化分及隸屬度函數(shù)輸出對冷水閥控制策略的模糊化分及隸屬度函數(shù)輸出對熱水閥控制策略的模糊化分及隸屬度函數(shù)輸出對熱水閥控制策略的模糊化分及隸屬度函數(shù)其中輸入變量水溫

15、與流速的偏差與輸出熱水閥、冷水閥的控制方法的經(jīng)驗表格如表1及表2所示。根據(jù)這兩個輸出控制表,可以產(chǎn)生九條模糊控制規(guī)則,如下:系統(tǒng)的模糊推理運算相關(guān)定義如下:其余例子,請各位同學(xué)自行打開研究學(xué)習(xí)。通過通過Maltab命令(程序)創(chuàng)建和命令(程序)創(chuàng)建和計算模糊邏輯系統(tǒng)計算模糊邏輯系統(tǒng)l前面介紹過如何使用圖形化工具建立模糊邏輯系統(tǒng),我們也可以完全用命令行或程序段的方式來實現(xiàn)。l小費問題:l實際生活中有著許多模糊的概念和邏輯方式,“給小費”問題就是一個可以用模糊邏輯來分析的經(jīng)典的例子。下圖表示的是一個關(guān)于飯店的服務(wù)質(zhì)量和顧客所給小費之間的關(guān)系圖,左邊表示飯店的服務(wù)質(zhì)量,作為輸入;右邊表示顧客所給的小

16、費,作為輸出,兩者是有一定邏輯關(guān)系的。l圖中的黑箱表示一種映射規(guī)則,將服務(wù)質(zhì)量映射到小費。這個黑箱就是這一邏輯關(guān)系的核心部分,它可以理解為各種不同的邏輯,例如模糊邏輯、線性邏輯、專家系統(tǒng)、神經(jīng)網(wǎng)絡(luò)、微分方程、多維表格查詢或者隨機選擇器等。在上述問題中,模糊邏輯被證明是最佳的。l在國外飯店就餐后一般需要付給侍者小費,這是國外模糊系統(tǒng)的教材中一個非常經(jīng)典的例子。下面我們通過小費問題來說明模糊邏輯的作用。l“小費”問題的核心就是:多少小費是“合適”的?我們先把問題簡化,假定用從 0 10 的數(shù)字代表服務(wù)的質(zhì)量(10 表示非常好,0 表示非常差),小費應(yīng)該給多少?這里還考慮到問題的背景 在美國平均的小

17、費是餐費15,但具體多少隨服務(wù)質(zhì)量而變。l首先考慮最簡單的情況,顧客總是多給總賬單的15作為小費:l用 MATLAB 語句繪圖,如下圖所示。雖然是簡單的線性關(guān)雖然是簡單的線性關(guān)系,但這樣的結(jié)果已系,但這樣的結(jié)果已經(jīng)基本能夠反映服務(wù)經(jīng)基本能夠反映服務(wù)質(zhì)量對小費的影響效質(zhì)量對小費的影響效果了,如果考慮到顧果了,如果考慮到顧客所給的小費也應(yīng)當(dāng)客所給的小費也應(yīng)當(dāng)能反映食物的質(zhì)量,能反映食物的質(zhì)量,那么問題就在原來的那么問題就在原來的基礎(chǔ)上擴展為:給定基礎(chǔ)上擴展為:給定兩個從兩個從 0 到到 10 的數(shù)的數(shù)字分別代表服務(wù)和食字分別代表服務(wù)和食物的質(zhì)量(物的質(zhì)量( 10 表示表示非常好,非常好, 0 表示

18、非常表示非常差),這時小費與它差),這時小費與它們之間的關(guān)系又應(yīng)當(dāng)們之間的關(guān)系又應(yīng)當(dāng)如何反映呢?如何反映呢?假設(shè)是二元線性關(guān)系假設(shè)是二元線性關(guān)系用下列用下列 MATLAB 語句可繪出下圖語句可繪出下圖 。可以看到,如果不考慮服務(wù)質(zhì)量因素比食物質(zhì)量因素對可以看到,如果不考慮服務(wù)質(zhì)量因素比食物質(zhì)量因素對于小費的支付占有更大的比重,上面的關(guān)系圖形已經(jīng)能于小費的支付占有更大的比重,上面的關(guān)系圖形已經(jīng)能夠反映一些實際的情況了。假如希望服務(wù)質(zhì)量占小費的夠反映一些實際的情況了。假如希望服務(wù)質(zhì)量占小費的 80 % , 80 % , 而食物僅占而食物僅占 20 20 。這里可以設(shè)定權(quán)重因子:。這里可以設(shè)定權(quán)重因

19、子:用下列用下列 MATLAB MATLAB 語句可繪出下圖語句可繪出下圖這樣的結(jié)果與實際情況還是有些不符。通常顧客都是給這樣的結(jié)果與實際情況還是有些不符。通常顧客都是給1515的的小費,只有服務(wù)特別好或特別不好的時候才有改變,也就是說,小費,只有服務(wù)特別好或特別不好的時候才有改變,也就是說,希望在圖形中間部分的響應(yīng)平坦些,而在兩端(服務(wù)好或壞)希望在圖形中間部分的響應(yīng)平坦些,而在兩端(服務(wù)好或壞)有凸起或凹陷。這時服務(wù)與小費是分段線性的關(guān)系。例如,用有凸起或凹陷。這時服務(wù)與小費是分段線性的關(guān)系。例如,用下面下面 MATLAB MATLAB 語句繪出的下圖的情況。語句繪出的下圖的情況。上圖沒有

20、考慮食物質(zhì)量的影響,我們加入這個因素后,上圖沒有考慮食物質(zhì)量的影響,我們加入這個因素后,擴展為三維的,就有如下的結(jié)果:擴展為三維的,就有如下的結(jié)果:用下列用下列 MATLAB MATLAB 語句可繪出圖語句可繪出圖l現(xiàn)在的結(jié)果比較好了,可是函數(shù)看起來有點復(fù)雜,而且程序也越來越長,將來不便于修改和增加新的規(guī)則及排除檢查錯誤。對于不清楚設(shè)計過程的人來說,設(shè)計人員的思維是不容易被理解的。l模糊系統(tǒng)可以很好地結(jié)合人類的自然語言。對于小費問題,現(xiàn)在只考慮關(guān)鍵因素,把問題簡化,得出下面三條規(guī)則: 當(dāng)服務(wù)很差的時候,小費比較少。 當(dāng)服務(wù)比較好的時候,小費中等。 當(dāng)服務(wù)非常好的時候,小費比較高。l如果我們把食

21、物對小費的影響考慮進來,可以增加下面兩條規(guī)則: 當(dāng)食物很差時,小費比較少。 當(dāng)食物很好時,小費比較高。l上面五條規(guī)則不分先后順序,但是各條規(guī)則的重要性可以是不同的,在沒有特殊要求的情況下,可以認(rèn)為這些規(guī)則的重要性(權(quán)重)是相同的。l可以把服務(wù)和食物的質(zhì)量綜合起來,總結(jié)為如下三條規(guī)則: 當(dāng)服務(wù)差或食物差的時候,小費少。 當(dāng)服務(wù)好的時候,小費中等。 當(dāng)服務(wù)很好或食物好的時候,小費高。l當(dāng)我們已經(jīng)得到上述三條模糊邏輯系統(tǒng)的推理規(guī)則后,只要再給出其中的模糊變量(例如“服務(wù)差”、“服務(wù)好”、“服務(wù)非常好”等概念)的定義和表示,就建立了該問題的一個完整的模糊推理系統(tǒng)的方案。這個系統(tǒng)的核心就是上述三條規(guī)則以

22、及相關(guān)模糊變量的定義。l使用Matlab圖形化工具,可以方便地建立起模糊控制系統(tǒng)。用命令行函數(shù)實現(xiàn)模糊邏輯系統(tǒng)用命令行函數(shù)實現(xiàn)模糊邏輯系統(tǒng)l前面主要介紹了 MATLAB 圖形化工具的使用, MATLAB 同樣也提供了一些函數(shù)命令來實現(xiàn)模糊邏輯系統(tǒng)。l這些函數(shù)不僅能完全實現(xiàn)圖形化方式所提供的功能,同時還可以實現(xiàn)圖形化方式所難以實現(xiàn)的功能。l特別是對于那些比較復(fù)雜的模糊推理系統(tǒng),在輸入輸出變量、隸屬度函數(shù)、模糊規(guī)則數(shù)目比較多的時候,如果要在圖形化界面中人工輸入,效率就很低。l如果通過命令行方式的編程,就可以讓計算機完成許多重復(fù)性的輸入工作,大大減少了工作量。l還有其他一些情況,如輸入輸出變量、隸屬

23、度函數(shù)、模糊規(guī)則等是由程序計算得到的,這時如果采用命令行的編程會更加簡單方便。lMATLAB 模糊工具箱的圖形化工具與命令行函數(shù)是統(tǒng)一的,我們可以將它們結(jié)合使用。l無論是命令行方式或是圖形化方式創(chuàng)建的系統(tǒng),其格式都是一樣的。因此,如果根據(jù)需要同時使用兩種方法來編輯一個模糊邏輯系統(tǒng),往往會達到更好的效果。命令行函數(shù)使用示例入門命令行函數(shù)使用示例入門小費問題是模糊邏輯工具箱中提供的一個模糊推理系統(tǒng)的示例。在 MATLAB 中一個模糊邏輯推理系統(tǒng)被當(dāng)作是一種 FIS 結(jié)構(gòu)。例如,我們在命令行工作環(huán)境鍵入命令:結(jié)果:該命令加載小費問題模糊推理系統(tǒng)的數(shù)據(jù)文件到當(dāng)前的工作空間中,并存為變量 a , a 是

24、一種 FIS 結(jié)構(gòu)的變量。在上面的結(jié)果之列中,冒號左邊的標(biāo)號表示 MATLAB 的 FIS 結(jié)構(gòu)中的與 tipper . fis 相關(guān)的結(jié)構(gòu)成員變量名,可以通過“結(jié)構(gòu)名成員名”的方式來訪問這些結(jié)構(gòu)成員變量。例如鍵入命令:其實在 MATLAB 里,模糊推理系統(tǒng)是以特定的語法用文本方式來存儲的。如果鍵入命令:type tipper.fis就可以看到這個用 ASCll 代碼存儲的模糊系統(tǒng)。函數(shù) readfis 得到了這個數(shù)據(jù)文件中的所有屬性,并把它們存入一個結(jié)構(gòu)(也可以看作是一個廣義的矩陣)。上面的例子中通過語句 a = readfis ( tipper . fis ) 變量 a 被賦予一個 FIS

25、 ( Fuzzy Inference system )結(jié)構(gòu)變量矩陣。這個矩陣主要由 ASCll 代碼構(gòu)成,通常表現(xiàn)為數(shù)字的排列,這樣就不便于閱讀,因此需要特定的函數(shù)來顯示系統(tǒng)屬性。函數(shù) getfis ( a )返回結(jié)果是關(guān)于模糊推理系統(tǒng)的一般屬性,比如說系統(tǒng)名稱,輸入、輸出變量的名稱等等。例如鍵入命令: getfis ( a )結(jié)果:從上面的結(jié)果我們可以看到,有些屬性并不是結(jié)構(gòu)變量 a 中所包含的。例如鍵入:系統(tǒng)返回如下錯誤信息:但是,如果鍵入:系統(tǒng)返回結(jié)果:getfis 函數(shù)還有若干種使用方法,可以鍵入右邊命令試一試,看看結(jié)果。前述功能同樣可以通過“結(jié)構(gòu)名成員名”的方式來訪問,只是具體的訪問

26、方式與成員的類型相關(guān)。例如,要得到上述 getfis ( a ,Inlabels )命令的結(jié)果,可以采用如下的方式:返回結(jié)果:setfis是和getfis相對應(yīng)的函數(shù),它允許改變一個 FIS系統(tǒng)的特性。如果想將上述系統(tǒng)的名字 tipper 改為 gratuity ,可以運行命令:返回結(jié)果:在結(jié)果中可以看到 name 變?yōu)?gratuity ,同樣上面的操作也可以用命令“ a .name = gratuity ” ,來實現(xiàn)。如果想要知道更詳細(xì)的內(nèi)容,通過函數(shù) showfis ( a )就可以得到這個 FIS 矩陣的詳細(xì)屬性。這個函數(shù)最主要是用來進行程序調(diào)試,但同時它也能分行顯示所有記錄在 FIS

27、 矩陣的信息。在這里結(jié)構(gòu)變量 a 代表一個小費問題的模糊推理系統(tǒng),前面提到的圖形化編輯工具都可以用來對它進行相關(guān)操作。下面這些函數(shù)命令將打開相應(yīng)的小費系統(tǒng)圖形化工具界面。如果 a 是一個 Sugeno 型的模糊系統(tǒng),命令 anfisedit ( a )將打開 ANFIS (模糊神經(jīng)網(wǎng)絡(luò)系統(tǒng))圖形編輯界面。通過通過 MATLAB 命令(程序)創(chuàng)建命令(程序)創(chuàng)建和計算模糊邏輯系統(tǒng)和計算模糊邏輯系統(tǒng)l前面介紹過如何用圖形化工具建立模糊邏輯系統(tǒng),這些也可以完全用命令行或程序段的方式實現(xiàn)。l仍然使用小費問題的例子作為范例,在這個例子中將用到 newfis 、 addvar 、 addmf 、 addr

28、de 等幾個函數(shù)。l在用命令行建立模糊邏輯系統(tǒng)的過程中,往往最令人迷惑的就是模糊規(guī)則在系統(tǒng)中的簡述表達方式。規(guī)則是通過函數(shù) addrule 來加入的,每一個輸入或輸出的變量都有一個索引 ( index )值,同樣每一個隸屬度函數(shù)也有一個 index 值,輸入規(guī)則的函數(shù)就是使用這些索引來創(chuàng)建相應(yīng)的模糊規(guī)則,在 MATLAB 中模糊規(guī)則一般具有如下形式:模糊規(guī)則按照下面的邏輯被轉(zhuǎn)化成一種數(shù)據(jù)結(jié)構(gòu)(或矩陣)的形式來表示:如果系統(tǒng)由 m 個輸入、 n 個輸出變量和 k 條模糊規(guī)則組成,則該規(guī)則結(jié)構(gòu)是一個( m + n + 2 , k )的矩陣。該矩陣的每個行向量代表一條模糊規(guī)則,這個行向量的前 m 個

29、數(shù)表示前 m 個輸入變量對應(yīng)的隸屬度函數(shù)的索引值例如,第一列表示第一個輸入變量在各條規(guī)則的相應(yīng)的隸屬度函數(shù)的索引,第二列表示第二個輸入變量相應(yīng)的隸屬度函數(shù)的索引。接著的 n 列表示 n 個輸出變量對應(yīng)的隸屬度函數(shù)的索引值。第 m + n + 1 列的數(shù)分別表示各條規(guī)則的權(quán)重(一般為 1 ) ,第 m + n + 2 列表示各條規(guī)則之間的相互連接方式( and = l , or = 2 )。這樣,上面這條規(guī)則用MATLAB的結(jié)構(gòu)表示為一個行向量。如果輸入或是輸出變量加了否定修飾詞not的話,則只需在相應(yīng)的隸屬度函數(shù)索引值前鍵入一個負(fù)號。例如,對于規(guī)則:其對應(yīng)的行向量變?yōu)椋?1 3 2 0.5 2

30、,依次解釋如下:-1表示not MF1;3表示MF3;2表示MF2;0.5表示weight=0.5;2表示or。下面是用“結(jié)構(gòu)名成員名”表達方式編寫的創(chuàng)建小費模糊推理系統(tǒng) tipper. fis的命令行程序示例。例 用命令行方式建立小費推理系統(tǒng)模糊模型。這樣的程序相當(dāng)繁瑣,如果用前面所提到的規(guī)則結(jié)構(gòu)變量以及相應(yīng)的一些 MATLAB函數(shù)來實現(xiàn)會簡單得多,例如:使用模糊邏輯推理系統(tǒng)對于給定輸入得到相應(yīng)的輸出結(jié)果才是實際使用中最終的目的,這個過程在 MATLAB 里可以通過函數(shù) evalfis 來完成。例如,下面的命令行用來計算小費推理系統(tǒng)對于輸入變量為 1 , 2 的輸出結(jié)果:MATLAB 的的

31、FIS 結(jié)構(gòu)和存儲結(jié)構(gòu)和存儲l在 MATLAB 中模糊推理系統(tǒng)是以一種 FIS 的結(jié)構(gòu)類型來表示和存儲的。無論是圖形化的工具或是像 getfis 和 setfis 這樣的函數(shù),都可以對這種結(jié)構(gòu)進行直接的操作,同樣也可以用“結(jié)構(gòu)名成員名” ( “ Structure . field ” )的語法方式來訪問。l FIS 的結(jié)構(gòu)組成很簡單,是將 MATLAB 模糊邏輯的各個函數(shù)統(tǒng)一起來使用的基礎(chǔ)。l FIS 結(jié)構(gòu)可以看作是一種層次結(jié)構(gòu),如下圖所示。模糊推理系統(tǒng)模糊推理系統(tǒng) FIS FIS 結(jié)構(gòu)層次結(jié)構(gòu)層次可以用 Showfis 函數(shù)來生成關(guān)于 FIS 結(jié)構(gòu)變量的詳細(xì)信息列表。例如鍵入除了圖形化環(huán)境,

32、 MATLAB 的命令行方式提供了下列與 FIS 結(jié)構(gòu)的創(chuàng)建和編輯相關(guān)的函數(shù): getfis 、 setfis 、 showfis 、 addvar 、 addmf 、 addrule 、 rmvar 及 rnmlf 。關(guān)于這些函數(shù)的使用方法將在后面的內(nèi)容里介紹。* . fis 文件格式及存儲文件格式及存儲l在 MATLAB 中模糊推理系統(tǒng)使用一種特定格式的文本文件來存儲,通常以后綴 fis 命名。工具箱提供了 readfis 和 writefis 兩個函數(shù)分別來讀寫這種文件。l FIS 文件是以文本方式存儲,也可以不用圖形工具或是相關(guān)函數(shù)而直接用文本編輯器來編輯它。但是這樣往往比較復(fù)雜而且容

33、易出錯,因為改動了一個參數(shù)可能需要在文件的許多地方進行考慮和修改。l例如,如果刪除了一條隸屬度函數(shù),那么所有與該隸屬度函數(shù)相關(guān)的規(guī)則就得刪除,而且其他隸屬度函數(shù)的序號也會發(fā)生改變,其他規(guī)則也要做相應(yīng)改動。l在 FIS 文件中,模糊規(guī)則是以 index 方式表示的。直接用文本編輯器或是用命令 type tipper.fis (或 open tipper.fis, edit tipper.fis )都可以查看到小費問題模糊推理系統(tǒng)的文件 tipper . fis ,例如:前面提到的一些函數(shù),例如 readfis 、 getfis 、 setfis 、 showfis 等,都是模糊工具箱提供的命令行

34、函數(shù),直接調(diào)用這些函數(shù)就可以實現(xiàn)對模糊推理系統(tǒng)進行建立、修改以及存儲等操作,下面將詳細(xì)介紹常用的命令行函數(shù)。說明:在參數(shù)列表中, a 為模糊推理系統(tǒng)對應(yīng)的矩陣變量名, varType 用于指定語言變量的類型為字符型(如input 或 output ) ; varName 也為字符型變量,用于指定語言變量的名; varBoundS 用于指定語言變量的論域范圍。對于添加到同一個模糊推理系統(tǒng)的語言變量,將按照添加的先后順序自動編號,編號從 1 開始,逐漸遞增。對于分屬于輸入與輸出的不同語言變量則獨立地分別編號。說明:當(dāng)一個模糊語言變量正在被當(dāng)前的模糊規(guī)則集使用時,試圖刪除該變量會導(dǎo)致其他相關(guān)規(guī)則被刪

35、除。系統(tǒng)出現(xiàn)詢問對話框,問是否確認(rèn)刪除命令。在一個模糊語言變量被刪除后,Matlab模糊邏輯工具箱將會自動地對模糊規(guī)則集進行修改以保證一致性。從varType表示語言變量的類型,為字符型,如input 或 output ; varIndex表示語言變量的編號。說明:隸屬度函數(shù)只能為模糊推理系統(tǒng)中已經(jīng)存在的某一語言變量的語言值添加隸屬度函數(shù),而不能添加到一個尚不存在的語言變量中。對于每個語言變量的隸屬度函數(shù)按照該函數(shù)被添加的順序加以編號,第一個添加的隸屬度函數(shù)被編為1號,此后依次遞增編號。函數(shù)必須指定輸入以下六個參數(shù):例 加入三條高斯型隸屬度函數(shù),如圖所示。說明:當(dāng)一個隸屬度函數(shù)正在被當(dāng)前模糊推

36、理規(guī)則使用時,如果刪除該隸屬度函數(shù)將會刪除涉及它的模糊規(guī)則,系統(tǒng)會出現(xiàn)要求確認(rèn)消息框,如果確認(rèn)刪除將自動刪除相關(guān)的一些規(guī)則。各參數(shù)的含義說明如下:例 刪除隸屬度函數(shù)結(jié)果。例 刪除被模糊規(guī)則使用的隸屬度函數(shù)。FIS 系統(tǒng)相關(guān)操作系統(tǒng)相關(guān)操作說明:該函數(shù)用于創(chuàng)建并返回一個新的模糊推理系統(tǒng),模糊推理系統(tǒng)的特性可由函數(shù)的參數(shù)指定,其參數(shù)個數(shù)可達 7 個。如果不指定相應(yīng)參數(shù)則取為缺省值。參數(shù)的含義及類型說明如下:例 使用缺省參數(shù)的 newfis 函數(shù)創(chuàng)建 mamdani 和 sugeno 型模糊系統(tǒng)。說明:打開一個由 filename 指定的模糊推理系統(tǒng)的數(shù)據(jù)文件( . fis ) ,并將其加載到當(dāng)前的

37、工作空間( workspace )中的變量 FISMAT 中。當(dāng)未指定文件名時, MATLAB 將會打開一個文件對話窗口,提示用戶指定某一 fis 文件。說明:使用該函數(shù)是獲得模糊推理系統(tǒng)及其對應(yīng)矩陣的所有屬性的基本方法。也可以用“結(jié)構(gòu)名成員名” ( Structure . field )的語法方式來替代這個函數(shù)。在參數(shù)列表中, a 為模糊推理系統(tǒng)結(jié)構(gòu)在內(nèi)存中對應(yīng)的矩陣變量,必須已經(jīng)存在,這是必須指定的參數(shù),后面的其他參數(shù)則可以省略。僅有參數(shù) a 時,函數(shù)將列出模糊推理系統(tǒng)的所有屬性。說明: fismat 為 MATLAB 工作環(huán)境內(nèi)存中的模糊推理系統(tǒng)結(jié)構(gòu)的矩陣變量。例 以分行的形式顯示模糊推

38、理系統(tǒng) tipperfis 矩陣的所有屬性。說明:該函數(shù)的參數(shù)個數(shù)可以有 3 、 5 、 7 三種情況。當(dāng)參數(shù)個數(shù)為 3 時,用于設(shè)定模糊推理系統(tǒng)的全局屬性,包括:當(dāng)參數(shù)個數(shù)為 5 個時,用于設(shè)定模糊推理系統(tǒng)矩陣某一個語言變量的屬性,包括: name (變量名稱)和 bounds (論域范圍)。當(dāng)參數(shù)個數(shù)為 7 時,用于設(shè)定一個語言變量的某一隸屬度函數(shù)的屬性,包括 name (隸屬度函數(shù)名稱)、 type (類型)和 params (參數(shù))。系統(tǒng)圖形顯示函數(shù)系統(tǒng)圖形顯示函數(shù)l模糊邏輯工具箱中提供了三個函數(shù): plotfis 、 plotmf 和 gensurf ,用于模糊推理系統(tǒng)的圖形顯示。下

39、面詳細(xì)介紹這三個函數(shù)。模糊邏輯工具箱命令函數(shù)應(yīng)用模糊邏輯工具箱命令函數(shù)應(yīng)用l前一節(jié)簡要介紹了用命令行方式來實現(xiàn)模糊邏輯推理。運用命令行方式工作需要掌握相應(yīng)的一些工具函數(shù)的使用,下面就詳細(xì)介紹這些工具函數(shù)的使用。模糊邏輯工具基本函數(shù)分類表模糊邏輯工具基本函數(shù)分類表l模糊邏輯工具基本函數(shù)包括圖形工具類函數(shù)、隸屬度函數(shù)類函數(shù)、 FIS 結(jié)構(gòu)的相關(guān)類操作函數(shù)、 Sugeno 型模糊系統(tǒng)應(yīng)用函數(shù)、仿真模塊庫相關(guān)操作函數(shù)以及演示范例程序函數(shù)等。1 圖形工具類函數(shù)圖形工具類函數(shù)2 隸屬度函數(shù)類函數(shù)隸屬度函數(shù)類函數(shù)3 . FIS 結(jié)構(gòu)的相關(guān)類操作函數(shù)結(jié)構(gòu)的相關(guān)類操作函數(shù)4 仿真模塊庫相關(guān)操作函數(shù)仿真模塊庫相關(guān)

40、操作函數(shù)5 演示范例程序函數(shù)演示范例程序函數(shù)MATLAB 工具箱內(nèi)置隸屬度函數(shù)工具箱內(nèi)置隸屬度函數(shù)應(yīng)用例解應(yīng)用例解l在 MATLAB 模糊邏輯工具箱中支持的隸屬度函數(shù)類型有如下幾種:高斯型、三角形、梯形、鐘型、 Sigmo 記型、 n 型以及 Z 型。l利用工具箱中提供的函數(shù)可以建立和計算上述各種類型隸屬度函數(shù)。l還可以自己定義隸屬度函數(shù)用于調(diào)用。l下面介紹工具箱中內(nèi)含的隸屬度函數(shù)。說明:參數(shù) x 用于指定變量的論域范圍,參數(shù) a 、 b 和 c 指定三角形函數(shù)的形狀,要求 a b c 。該函數(shù)在 b 點處取最大值 1 , a 、 c 點為 0 (如果要獲得頂點小于 1的三角形函數(shù)可以使用 t

41、rapmf),函數(shù)返回該隸屬度函數(shù)對應(yīng)于坐標(biāo)矩陣 x 的函數(shù)值矩陣。其表達式如下:例 建立三角形隸屬度函數(shù)并繪制曲線,如圖所示例 改變參數(shù)曲線對比,如圖所示。說明:參數(shù) x 用于指定變量的論域范圍,參數(shù) a 、 b 、 c 和 d 用于指定梯形隸屬度函數(shù)的形狀,要求 a = b 且 c = c 函數(shù)退化為三角形。函數(shù)返回該隸屬度函數(shù)對應(yīng)于坐標(biāo)矩陣 x 的函數(shù)值矩陣。其對應(yīng)的表達式如下:例 建立并繪制梯形隸屬度函數(shù)曲線,如圖所示。例 改變參的數(shù)曲線對比,如圖所示。說明:高斯型函數(shù)的形狀由兩個參數(shù)決定: sig和 c ,其中 c 決定了函數(shù)的中心點, sig決定了函數(shù)曲線的寬度。參數(shù) x 是用于指定變量論域的矩陣,函數(shù)返回該隸屬度函數(shù)對應(yīng)于坐標(biāo)矩陣 x 的函數(shù)值矩陣。高斯函數(shù)的表達式如下:例 建立高斯型隸屬度函數(shù),如圖所示。例 不同參數(shù)對比,如圖所示。說明:參數(shù) x 是用于指定變量論域的矩陣,函數(shù)返回該隸屬度函數(shù)對應(yīng)于坐標(biāo)矩陣 x 的函數(shù)值。矩陣雙邊高斯型函數(shù)的曲線由兩個中心點相同的高斯型函數(shù)的左、右半邊曲線組合而成,其左右兩段表達式如下:參數(shù) sig1、c1、sig2、c2分別對應(yīng)左、右半邊高斯函數(shù)的寬度與中心點,當(dāng) c1 = c2時,雙邊高斯函數(shù)在( cl , c2 )段達到最大值 1,否則最大值小于 1 。例 建立雙邊高斯型隸屬度函數(shù),如圖所示。例 不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論