《神經(jīng)模糊預(yù)測控制及其MATLAB實現(xiàn)》 第5版 課件 第5章MATLAB模糊邏輯工具箱_第1頁
《神經(jīng)模糊預(yù)測控制及其MATLAB實現(xiàn)》 第5版 課件 第5章MATLAB模糊邏輯工具箱_第2頁
《神經(jīng)模糊預(yù)測控制及其MATLAB實現(xiàn)》 第5版 課件 第5章MATLAB模糊邏輯工具箱_第3頁
《神經(jīng)模糊預(yù)測控制及其MATLAB實現(xiàn)》 第5版 課件 第5章MATLAB模糊邏輯工具箱_第4頁
《神經(jīng)模糊預(yù)測控制及其MATLAB實現(xiàn)》 第5版 課件 第5章MATLAB模糊邏輯工具箱_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

5.1MATLAB模糊邏輯工具箱簡介5.2利用模糊邏輯工具箱建立模糊推理系統(tǒng)5.3MATLAB模糊邏輯工具箱的圖形用戶界面5.4基于Simulink的模糊邏輯的系統(tǒng)模塊5.5模糊推理系統(tǒng)在控制系統(tǒng)中的應(yīng)用第5章MATLAB模糊邏輯工具箱1

針對模糊邏輯尤其是模糊控制的迅速推廣應(yīng)用,MathWorks公司在其MATLAB版中添加了FuzzyLogic工具箱。該工具箱由長期從事模糊邏輯和模糊控制研究與開發(fā)工作的有關(guān)專家和技術(shù)人員編制。MATLABFuzzyLogic工具箱以其功能強大和方便易用的特點得到了用戶的廣泛歡迎。模糊邏輯的創(chuàng)始人Zadeh教授稱贊該工具箱“在各方面都給人以深刻的印象,使模糊邏輯成為智能系統(tǒng)的概念與設(shè)計的有效工具?!?/p>

25.1.1模糊邏輯工具箱的功能特點1.易于使用模糊邏輯工具箱提供了建立和測試模糊邏輯系統(tǒng)的一整套功能函數(shù),包括定義語言變量及其隸屬度函數(shù)、輸入模糊推理規(guī)則、整個模糊推理系統(tǒng)的管理以及交互式地觀察模糊推理的過程和輸出結(jié)果。5.1MATLAB模糊邏輯工具箱簡介32.提供圖形化的系統(tǒng)設(shè)計界面在模糊邏輯工具箱中包含五個圖形化的系統(tǒng)設(shè)計工具,這五個設(shè)計工具是:

?模糊推理系統(tǒng)編輯器,該編輯器用于建立模糊邏輯系統(tǒng)的整體框架,包括輸入與輸出數(shù)目、去模糊化方法等;

?隸屬度函數(shù)編輯器,用于通過可視化手段建立語言變量的隸屬度函數(shù);

?模糊推理規(guī)則編輯器;

?系統(tǒng)輸入輸出特性曲面測覽器;

?模糊推理過程瀏覽器。

43.支持模糊邏輯中的高級技術(shù)?自適應(yīng)神經(jīng)模糊推理系統(tǒng)(ANFIS,AdaptiveNeuralFuzzyInferenceSystem);?用于模式識別的模糊聚類技術(shù);?模糊推理方法的選擇,用戶可在廣泛采用的

Mamdani型推理方法和

Sugeno型推理方法兩者之間選擇。

54.集成的仿真和代碼生成功能模糊邏輯工具箱不但能夠?qū)崿F(xiàn)Simulink的無縫連接,而且通過Real-TimeWorkshop能夠生成ANSIC源代碼,從而易于實現(xiàn)模糊系統(tǒng)的實時應(yīng)用。

5.獨立運行的模糊推理機在用戶完成模糊邏輯系統(tǒng)的設(shè)計后,可以將設(shè)計結(jié)果以ASCII碼文件保存;利用模糊邏輯工具箱提供的模糊推理機,可以實現(xiàn)模糊邏輯系統(tǒng)的獨立運行或者作為其他應(yīng)用的一部分運行。

65.1.2

模糊推理系統(tǒng)的基本類型在模糊系統(tǒng)中,模糊模型的表示主要有兩類:一類是模糊規(guī)則的后件是輸出量的某一模糊集合,如NB,PB等,這是最常用到的情況,因而稱它為模糊系統(tǒng)的標(biāo)準(zhǔn)模型表示;另一類是模糊規(guī)則的后件是輸入語言變量的函數(shù),典型的情況是輸入變量的線性組合。由于該方法是日本學(xué)者高木(Takagi)和關(guān)野(Sugeno)首先提出來的,因此通常稱它為模糊系統(tǒng)的Takagi-Sugeno(高木-關(guān)野)模型,或簡稱為Sugeno模型。

71基于標(biāo)準(zhǔn)模型的模糊邏輯系統(tǒng)在標(biāo)準(zhǔn)型模糊邏輯系統(tǒng)中,模糊規(guī)則的前件和后件均為模糊語言值,即具有如下形式:IFx1isA1andx2isA2and…andxnisAnTHENyisB其中Ai(i=1,2,…,n)是輸入模糊語言值,B是輸出模糊語言值。圖5-1基于標(biāo)準(zhǔn)模型的模糊邏輯系統(tǒng)原理圖

基于標(biāo)準(zhǔn)模型的模糊邏輯系統(tǒng)的框圖如圖5-1。圖中的模糊規(guī)則庫由若干“IF——THEN”規(guī)則構(gòu)成。模糊推理機在模糊推理系統(tǒng)中起著核心作用,它將輸入模糊集合按照模糊規(guī)則映射成輸出模糊集合。它提供了一種量化專家語言信息和在模糊邏輯原則下系統(tǒng)地利用這類語言信息的一般化模式。82基于高木——關(guān)野(Takagi——Sugeno)模型的模糊邏輯系統(tǒng)高木——關(guān)野模糊邏輯系統(tǒng)是一類較為特殊的模糊邏輯系統(tǒng),其模糊規(guī)則不同于一般的模糊規(guī)則形式。在高木——關(guān)野模糊邏輯系統(tǒng)中,采用如下形式的模糊規(guī)則:IFx1isA1andx2isA2and…andxnisAnTHEN其中Ai(i=1,2,…,n)是輸入模糊語言值,ci(i=1,2,…,n)是真值參數(shù)。9

可以看出,高木-關(guān)野模糊邏輯系統(tǒng)的輸出量是精確值。這類模糊邏輯系統(tǒng)的優(yōu)點是輸出量可用輸入值的線性組合來表示,因而能夠利用參數(shù)估計方法來確定系統(tǒng)的參數(shù)ci(i=1,2,…,n);同時,可以應(yīng)用線性控制系統(tǒng)的分析方法來近似分析和設(shè)計模糊邏輯系統(tǒng)。其缺點是規(guī)則的輸出部分不具有模糊語言值的形式,因此不能充分利用專家的控制知識,模糊邏輯的各種不同原則在這種模糊邏輯系統(tǒng)中應(yīng)用的自由度也受到限制。

105.1.3

模糊邏輯系統(tǒng)的構(gòu)成前面討論了模糊邏輯系統(tǒng)的基本類型,標(biāo)準(zhǔn)型模糊邏輯系統(tǒng)應(yīng)用最為廣泛。在MATLAB模糊邏輯工具箱中主要針對這一類型的模糊邏輯系統(tǒng)提供了分析和設(shè)計手段,但同時對高木一關(guān)野模糊邏輯系統(tǒng)也提供了一些相關(guān)函數(shù)。下面將以標(biāo)準(zhǔn)型模糊邏輯系統(tǒng)作為主要討論對象。11構(gòu)造一個模糊邏輯系統(tǒng),首先必須明確其主要組成部分。一個典型的模糊邏輯系統(tǒng)主要由如下幾個部分組成:(1)輸入與輸出語言變量,包括語言值及其隸屬度函數(shù);(2)模糊規(guī)則;(3)輸入量的模糊化方法和輸出變量的去模糊化方法;(4)模糊推理算法。

12

針對模糊邏輯系統(tǒng)的以上主要構(gòu)成,在MATLAB模糊邏輯工具箱中構(gòu)造一個模糊推理系統(tǒng)有如下步驟:(1)模糊推理系統(tǒng)對應(yīng)的數(shù)據(jù)文件,其后綴為.fis,用于對該模糊系統(tǒng)進行存儲、修改和管理;(2)確定輸入、輸出語言變量及其語言值;(3)確定各語言值的隸屬度函數(shù),包括隸屬度函數(shù)的類型與參數(shù);(4)確定模糊規(guī)則;(5)確定各種模糊運算方法,包括模糊推理方法、模糊化方法、去模糊化方法等。

135.2

利用模糊邏輯工具箱建立模糊推理系統(tǒng)5.2.1模糊推理系統(tǒng)的建立、修改與存儲管理前面討論了模糊推理系統(tǒng)的主要構(gòu)成部分,即一個模糊推理系統(tǒng)由輸入、輸出語言變量及其隸屬度函數(shù)、模糊規(guī)則、模糊推理機和去模糊化方法等各部分組成,在MATLAB模糊邏輯工具箱中,把模糊推理系統(tǒng)的各部分作為一個整體,并以文件形式對模糊推理系統(tǒng)進行建立、修改和存儲等管理功能。表5-1所示為該工具箱提供的有關(guān)模糊推理系統(tǒng)管理的函數(shù)及其功能。

14函數(shù)名功能newfis()創(chuàng)建新的模糊推理系統(tǒng)readfis()從磁盤讀出存儲的模糊推理系統(tǒng)getfis()獲得模糊推理系統(tǒng)的特性數(shù)據(jù)writefis()保存模糊推理系統(tǒng)showfis()顯示添加注釋了的模糊推理系統(tǒng)setfis()設(shè)置模糊推理系統(tǒng)的特性plotfis()圖形顯示模糊推理系統(tǒng)的輸入—輸出特性表5-1模糊推理系統(tǒng)的管理函數(shù)

151.創(chuàng)建新的模糊推理系統(tǒng)函數(shù)newfis()

該函數(shù)用于創(chuàng)建一個新的模糊推理系統(tǒng),模糊推理系統(tǒng)的特性可由函數(shù)的參數(shù)指定,其參數(shù)個數(shù)可達7個。調(diào)用格式為fisMat=newfis(‘fisName’,fisType,andMethod,orMethod,impMethod,aggMethod,defuzzMethod)其中,fisName為模糊推理系統(tǒng)名稱;fisType為模糊推理系統(tǒng)類型(Mamdani型或Sugeno型);andMethod為與運算操作符;orMethod為或運算操作符;impMethod為模糊蘊含方法;aggMethod為各條規(guī)則推理結(jié)果的綜合方法;defuzzMethod為去模糊化方法;返回值fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱,因模糊推理系統(tǒng)在MATLAB內(nèi)存中數(shù)據(jù)是以矩陣形式存儲的。

16例:>>fisMat=newfis(‘mysys’);getfis(fisMat)顯示:Name=mysysType=mamdaniNumInputs=0InLabels=NumOutputs=0OutLabels=NumRules=0AndMethod=minOrMethod=maxImpMethod=minAggMethod=maxDefuzzMethod=centroid172.從磁盤中加載模糊推理系統(tǒng)函數(shù)readfis()調(diào)用格式fisMat=readfis(‘filemame’)其中

filename為指定打開的模糊推理系統(tǒng)的數(shù)據(jù)文件名(.fis),并將其加載到當(dāng)前的工作空間(Workspace)中,當(dāng)未指定文件名時,MATLAB將會打開一個文件對話窗口,提示用戶指定某一.fis文件;返回值fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱。

18例如利用以下命令可加載一個MATLAB自帶的關(guān)于“小費”問題的模糊推理系統(tǒng)tipper.fis。>>fisMat=readfis('tipper');getfis(fisMat);結(jié)果顯示:

Name=tipperType=mamdaniNumInputs=2InLabels=servicefoodNumOutputs=1OutLabels=tipNumRules=3AndMethod=minOrMethod=maxImpMethod=minAggMethod=maxDefuzzMethod=centroid193.獲得模糊推理系統(tǒng)的屬性函數(shù)getfis()

利用getfis()可獲取模糊推理系統(tǒng)的部分或全部特性,格式為

getfis(fisMat)getfis(fisMat,’fisPropname’)getfis(fisMat,’varType’,varIndex,’varPropname’);getfis(fisMat,’varType’,varIndex,’mf’,mfIndex)getfis(fisMat,’varType’,varIndex,’mf’,mfIndex,’mfPropname’);其中,fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱;fisPropname為要設(shè)置的FIS特性的字符串,可取name,type,andMethod,orMethod,impMethod,aggMethod和defuzzMethod;varType指定語言變量的類型(即輸入語言變量為input或輸出語言變量為output);varIndex指定語言變量的編號;varPropname為要設(shè)置的變量域名的字符串,可取name或range;mf為隸屬度函數(shù)的名稱;mfIndex為隸屬度函數(shù)的編號;mfPropname為要設(shè)置的隸屬度函數(shù)域名的字符串,可取name,type或params。20例

>>fisMat=readfis('tipper')或>>fisMat=readfis('tipper');getfis(fisMat,'type')>>fisMat=readfis('tipper');getfis(fisMat,'input',1);>>fisMat=readfis('tipper');getfis(fisMat,'input',1,'name')>>fisMat=readfis('tipper');getfis(fisMat,'input',1,'mf',2);>>fisMat=readfis('tipper');getfis(fisMat,'input',1,'mf',2,'name')21

4.將模糊推理系統(tǒng)以矩陣形式保存在內(nèi)存中的數(shù)據(jù)寫入磁盤文件函數(shù)writefis()

模糊推理系統(tǒng)在內(nèi)存中的數(shù)據(jù)是以矩陣形式存儲的,其對應(yīng)的矩陣名為fisMat。當(dāng)需要將模糊推理系統(tǒng)的數(shù)據(jù)寫入磁盤文件時,就可利用writefis()函數(shù)。其調(diào)用格式為

writefis(fisMat)writefis(fisMat,’filename’)writefis(fisMat,’filename’,’dialog’)其中,fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱。在只有一個參數(shù)即writefis(fisMat)的情況下,MATLAB將打開一個文件對話窗口,提示用戶選擇某一磁盤文件或輸入一個新的文件名;用戶也可直接在函數(shù)的第2個參數(shù)filename中指定某一磁盤文件名;writefis(fisMat,filename,’dialog’)則打開一個以filename為缺省文件名的對話窗口,用戶仍可重新輸入文件名。文件名的后綴缺省為.fis。例:>>fisMat=newfis(’tipper’);writefis(fisMat,’my_file’)225.以分行的形式顯示模糊推理系統(tǒng)矩陣的所有屬性函數(shù)showfis()調(diào)用格式showfis(fisMat)其中fisMat為模糊推理系統(tǒng)在內(nèi)存中的矩陣表示。例:>>fisMat=readfis(’tipper’);showfis(fisMat)6.設(shè)置模糊推理系統(tǒng)的屬性函數(shù)setfis()調(diào)用格式fisMat=setfis(fisMat,’propname’,newprop)

fisMat=setfis(fisMat,vartype,varindex,’propname’,newprop)

fisMat=setfis(fisMat,vartype,varindex,’mf’,mfindex,’propname’,nemeprop);

23其中,fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱;fisPropname為要設(shè)置的FIS特性的字符串,可取name,type,andMethod,orMethod,impMethod,aggMethod和defuzzMethod;newfisProp為要設(shè)置的FIS特性或方法的字符串;varType為語言變量的類型(即input或output);varIndex為語言變量的編號;varPropname為要設(shè)置的變量域名的字符串,可取name或range;newvarProp當(dāng)變量域名為name時,這一部分為要設(shè)置的變量名的字符串,當(dāng)變量域名為range時,這一部分為該變量范圍的陣列;mf為隸屬度函數(shù)的名稱;mfIndex為隸屬度函數(shù)的編號;mfPropname為要設(shè)置的隸屬度函數(shù)域名的字符串,可取name,type或params;newmfProp當(dāng)函數(shù)域名為name或type時,這一部分為要設(shè)置的隸屬度函數(shù)域名或類型,當(dāng)隸屬度函數(shù)域名為params時,這一部分為參數(shù)范圍的陣列。24該函數(shù)可以有3個、5個或7個輸入?yún)?shù)。例>>fisMat=readfis('tipper');fisMat=setfis(fisMat,'name','eating')或>>fisMat=readfis('tipper');fisMat=setfis(fisMat,'input',1,'name','help')>>fisMat=readfis('tipper');fisMat=setfis(fisMat,'input',1,'mf',2,'name','wretched')

257.繪圖表示模糊推理系統(tǒng)的函數(shù)plotfis()

該函數(shù)的調(diào)用格式為

plotfis(fisMat)其中,fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣名稱。例:>>fisMat=readfis('tipper');plotfis(fisMat)8.將Mamdani型模糊推理系統(tǒng)轉(zhuǎn)換成Sugeno型模糊推理系統(tǒng)的函數(shù)mam2sug()

函數(shù)mam2sug()可將Mamdani型模糊推理系統(tǒng)轉(zhuǎn)換成零階的Sugeno型模糊推理系統(tǒng)。得到的Sugeno型模糊推理系統(tǒng)具有常數(shù)隸屬度函數(shù),其常數(shù)值由原來Mamdani型系統(tǒng)得到的隸屬度函數(shù)的質(zhì)心確定,并且其前件不變,該函數(shù)的調(diào)用格式為

sug_fisMat=mam2sug(mam_fisMat)其中,mam_fisMat為Mamdani型模糊推理系統(tǒng)對應(yīng)的矩陣名稱;sug_fisMat為變換后Sugeno型模糊推理系統(tǒng)對應(yīng)的矩陣名稱。例:>>mam_fisMat=readfis('tipper');sug_fisMat=mam2sug(mam_fisMat)265.2.2模糊語言變量及其語言值在模糊推理系統(tǒng)中,專家的控制知識以模糊規(guī)則形式表示。為直接反映人類自然語言的模糊性特點,模糊規(guī)則的前件和后件中引入語言變量和語言值的概念。語言變量分為輸入語言變量和輸出語言變量,輸入語言變量是對模糊推理系統(tǒng)輸入變量的模糊化描述,通常位于模糊規(guī)則的前件中,輸出語言變量是對模糊推理系統(tǒng)輸出變量的模糊化描述,通常位于模糊規(guī)則的后件中。

27

語言變量具有多個語言值,每個語言值對應(yīng)一個隸屬度函數(shù)。語言變量的語言值構(gòu)成了對輸入和輸出空間的模糊分割,模糊分割的個數(shù)即語言值的個數(shù)以及語言值對應(yīng)的隸屬度函數(shù)決定了模糊分割的精細化程度。模糊分割的個數(shù)也決定了模糊規(guī)則的個數(shù),模糊分割數(shù)越多,控制規(guī)則數(shù)也越多。因此在設(shè)計模糊推理系統(tǒng)時,應(yīng)在模糊分割的精細程度與控制規(guī)則的復(fù)雜性之間取得折衷。

28

在MATLAB模糊邏輯工具箱中,提供了向模糊推理系統(tǒng)添加或刪除模糊語言變量及其語言值的函數(shù),如表5-2所示。表5-2添加或刪除模糊語言變量函數(shù)

函數(shù)名功能addvar()添加模糊語言變量rmvar()刪除模糊語言變量291.向模糊推理系統(tǒng)添加語言變量函數(shù)addvar()

調(diào)用格式fisMat2=addvar(fisMat1,’varType’,’varName’,varBounds)其中,fisMati為模糊推理系統(tǒng)的對應(yīng)矩陣變量名;varType用于指定語言變量的類型(即input或output);varName用于指定該變量的名稱;varBounds用于指定該變量的論域范圍。對于添加到同一個模糊推理系統(tǒng)的語言變量,將按照添加的先后順序分別賦予一個編號,輸入與輸出的不同語言變量則分別獨立地進行編號,編號均從1開始,逐漸遞增。例>>fisMat=newfis('mysys');fisMat=addvar(fisMat,'input','service',[010])

302.從模糊推理系統(tǒng)中刪除語言變量rmvar()

調(diào)用格式fisMat2=rmvar(fisMat1,'varType',varIndex)其中,fisMati為模糊推理系統(tǒng)的對應(yīng)矩陣名稱,varType用于指定語言變量的類型;varIndex為語言變量的編號。當(dāng)一個模糊語言變量正在被當(dāng)前的模糊規(guī)則集使用時,則不能刪除該變量。在一個模糊語言變量被刪除后,MATLAB模糊邏輯工具箱將會自動地對模糊規(guī)則集進行修改,以保證一致性。例>>fisMat=newfis('mysys');fisMat=addvar(fisMat,'input','temperature',[0100]);>>fisMat1=rmvar(fisMat,'input',1)315.2.3模糊語言變量的隸屬度函數(shù)每個模糊語言變量具有多個模糊語言值。模糊語言值的名稱通常具有一定的含義,如NB(負大)、NM(負中)、NS(負?。?、ZE(零)、PS(正小)、PM(正中)、PB(正大)等。每個語言值都對應(yīng)一個隸屬度函數(shù)。隸屬度函數(shù)可有兩種描述方式,即數(shù)值描述方式和函數(shù)描述方式。數(shù)值描述方式適用于語言變量的論域為離散的情形,此時隸屬度函數(shù)可用向量或表格的形式來表示;對于論域為連續(xù)的情況,隸屬度函數(shù)則采用函數(shù)描述方式。32

在MATLAB模糊邏輯工具箱中支持的隸屬度函數(shù)類型有如下幾種:高斯型、三角型、梯形、鐘型、Sigmoid型、л型以及Z型。利用工具箱中提供的函數(shù)可以建立和計算上述各種類型隸屬度函數(shù)。隸屬度函數(shù)曲線的形狀決定了對輸入、輸出空間的模糊分割,對模糊推理系統(tǒng)的性能有重要的影響。在MATLAB模糊邏輯工具箱中提供了豐富的隸屬度函數(shù)類型的支持,利用工具箱的有關(guān)函數(shù)可以方便地對各類隸屬度函數(shù)進行建立、修改和刪除等操作,函數(shù)如表5-3所示。

33表5-3語言變量的隸屬度的函數(shù)

函數(shù)名功能plotmf()繪制隸屬度函數(shù)曲線addmf()添加模糊語言變量的隸屬度函數(shù)rmmf()刪除隸屬度函數(shù)gaussmf()建立高斯型隸屬度函數(shù)gauss2mf()建立雙邊高斯型隸屬度函數(shù)gbellmf()建立一般的鐘型隸屬度函數(shù)pimf()建立

型隸屬度函數(shù)sigmf()建立sigmiod型的隸屬度函數(shù)trapmf()建立梯形隸屬度函數(shù)trimf()建立三角型隸屬度函數(shù)zmf()建立Z型隸屬度函數(shù)mf2mf()隸屬度函數(shù)間的參數(shù)轉(zhuǎn)換psigmf()計算兩個sigmiod隸屬度函數(shù)之積dsigmf()計算兩個sigmiod隸屬度函數(shù)之和341.繪制語言變量的隸屬度曲線函數(shù)plotmf()

調(diào)用格式

[x,mf]=plotmf(fisMat,’varType’,varIndex)其中,x為變量的論域范圍;mf為隸屬度函數(shù)的值;fisMat為模糊推理系統(tǒng)的對應(yīng)矩陣名稱;varType為語言變量的類型(即input或output);varIndex為語言變量的編號。

352.向模糊推理系統(tǒng)的語言變量添加隸屬度函數(shù)addmf()

函數(shù)addmf()只能給模糊推理系統(tǒng)中存在的某一語言變量添加隸屬度函數(shù),而不能添加到一個不存在的語言變量中。某個語言變量的隸屬度函數(shù)(即語言值)按照添加的順序加以編號,第一個添加的隸屬度函數(shù)被編為1號,此后依次遞增。該函數(shù)調(diào)用格式為fisMat2=addmf(fisMat1,’varType’,varIndex,’mfName’,’mfType’,mfParams)其中,fisMati為模糊推理系統(tǒng)的對應(yīng)矩陣;varType為語言變量的類型(即input或output);varIndex為語言變量的編號;mfName指定隸屬度函數(shù)的名稱;mfType和mfParams分別指定隸屬度函數(shù)的類型和參數(shù)向量。

36例如利用以下命令,可得如圖5-2所示的隸屬度函數(shù)曲線。>>fisMat=newfis('mysys');>>fisMat=addvar(fisMat,'input','service',[010]);>>fisMat=addmf(fisMat,'input',1,'poor','gaussmf',[1.50]);>>fisMat=addmf(fisMat,'input',1,'good','gaussmf',[1.55]);>>fisMat=addmf(fisMat,'input',1,'excellent','gaussmf',[1.510]);>>plotmf(fisMat,'input',1)373.從模糊推理系統(tǒng)中刪除一個語言變量的某一隸屬度函數(shù)rmmf()

當(dāng)一個隸屬度函數(shù)正在被當(dāng)前模糊推理規(guī)則使用時,則不能刪除。調(diào)用格式為fisMat2=rmmf(fisMat1,’varType’,varIndex,’mf’,mfIndex)

其中,fisMati為模糊推理系統(tǒng)的對應(yīng)矩陣;varType為語言變量的類型;varIndex為語言變量的編號;mf為隸屬度函數(shù)的名稱;mfIndex為隸屬度函數(shù)的編號。384.建立高斯型隸屬度函數(shù)gaussmf()調(diào)用格式y(tǒng)=gaussmf(x,params)y=gaussmf(x,[sigc])其中c決定了函數(shù)的中心點,sig決定了函數(shù)曲線的寬度σ。高斯型函數(shù)的形狀由sig和c兩個參數(shù)決定,高斯函數(shù)的表達式如下:參數(shù)x用于指定變量的論域。例利用以下命令,可建立如圖5-3所示的高斯型隸屬度函數(shù)曲線。>>x=0:0.1:10>>y=gaussmf(x,[25]);>>plot(x,y)>>xlabel(‘gaussmf,p=[25]’)395.建立雙邊高斯型隸屬度函數(shù)gauss2mf()調(diào)用格式y(tǒng)=gauss2mf(x,params)y=gauss2mf(x,[sig1c1sig2c2])

雙邊高斯型函數(shù)的曲線由兩個中心點相同的高斯型函數(shù)的左、右半邊曲線組合而成,其表達式如下式所示。參數(shù)sigl,c1,sig2,c2分別對應(yīng)左、右半邊高斯函數(shù)的寬度與中心點,c2>c1。例利用以下命令,可建立如圖5-4所示的雙邊高斯型隸屬度函數(shù)。>>x=0:0.1:10;>>y=gauss2mf(x,[1334]);>>plot(x,y),>>xlabel('gauss2mf,p=[1334]')406.建立一般的鐘形隸屬度函數(shù)gbellmf()調(diào)用格式y(tǒng)=gbellmf(x,params)y=gbellmf(x,[abc])其中參數(shù)x指定變量的論域范圍,[abc]指定鐘形函數(shù)的形狀,鐘形函數(shù)的表達式如下:

例利用以下命令,可建立如圖5-5所示的鐘形隸屬度函數(shù)曲線。>>x=0:0.1:10>>y=gbellmf(x,[246]);>>plot(x,y)>>xlabel(‘gbellmf,p=[246]’)417.建立

型隸屬度函數(shù)pimf()

型函數(shù)是一種基于樣條的函數(shù),由于其形狀類似字母

而得名。該函數(shù)調(diào)用格式為:y=pimf(x,params)y=pimf(x,[abcd])

其中參數(shù)x指定函數(shù)的自變量范圍,[abcd]決定函數(shù)的形狀,a,b分別對應(yīng)曲線下部的左右兩個拐點,b和c分別對應(yīng)曲線上部的左右兩個拐點。例利用以下命令,可建立如圖5-6所示的

型隸屬度函數(shù)曲線>>x=0:0.1:10;y=pimf(x,[14510]);>>plot(x,y),xlabel(‘pimf,p=[14510]’)428.建立Sigmoid型隸屬度函數(shù)sigmf()調(diào)用格式y(tǒng)=sigmf(x,params)y=sigmf(x,[ac])其中參數(shù)x用于指定變量的論域范圍,[ac]決定了Sigmoid型函數(shù)的形狀,其表達式如下:

Sigmoid型函數(shù)曲線具有半開的形狀,因而適于作為“極大”、“極小”等語言值的隸屬度函數(shù)。例利用以下命令,可建立如圖5-7所示的sigmoid型隸屬度函數(shù)曲線。>>x=0:0.1:10;y=sigmf(x,[24]);>>plot(x,y),xlabel(‘sigmf,p=[24]’)439.建立梯形隸屬度函數(shù)trapmf()調(diào)用格式y(tǒng)=trapmf(x,params)y=trapmf(x,[a,b,c,d])其中參數(shù)x指定變量的論域范圍,參數(shù)a、b、c和d指定梯形隸屬度函數(shù)的形狀,其對應(yīng)的表達式如下:

例利用以下命令,可建立如圖5-8所示的梯形隸屬度函數(shù)曲線。>>x=0:0.1:10;y=trapmf(x,[1578]);>>plot(x,y),xlabel(‘trapmf,p=[1578]’)

4410.建立三角形隸屬度函數(shù)trimf()調(diào)用格式y(tǒng)=trimf(x,params)y=trimf(x,[a,b,c])其中參數(shù)x指定變量的論域范圍,參數(shù)a、b和c指定三角形函數(shù)的形狀,其表達式如下:

例利用以下命令,可建立如圖5-9所示的三角形隸屬度函數(shù)并繪制曲線。>>x=0:0.1:10;y=trimf(x,[368]);

>>plot(x,y),xlabel(‘trimf,p=[368]’)

4511.建立Z形隸屬度函數(shù)曲線函數(shù)zmf()調(diào)用格式y(tǒng)=zmf(x,params)y=zmf(x,[a,b,c])Z形函數(shù)是一種基于樣條插值的函數(shù),兩個參數(shù)a和b分別定義樣條插值的起點和終點;參數(shù)x指定變量的論域范圍。例利用以下命令,可建立如圖5-10所示的Z形隸屬度函數(shù)曲線。>>x=0:0.1:10;>>y=zmf(x,[368]);>>plot(x,y),>>xlabel('trimf,p=[368]')4612.通過兩個Sigmoid型函數(shù)的乘積來構(gòu)造新的隸屬度函數(shù)psigmf()

為了得到更符合人們習(xí)慣的隸屬度函數(shù)形狀,可以利用兩個sigmoid型函數(shù)之和或乘積來構(gòu)造新的隸屬度函數(shù)類型,模糊邏輯工具箱中提供了相應(yīng)的函數(shù),參見psigmf()和dsigmf()。調(diào)用格式y(tǒng)=psigmf(x,params)y=psigmf(x,[a1c1a2c2])

其中參數(shù)al,c1和a2,c2分別用于指定兩個Sigmoid型函數(shù)的形狀,參數(shù)x指定變量的利用范圍。新的函數(shù)表達式如下:47例利用以下命令,由兩個sigmoid型函數(shù)的乘積來構(gòu)造新的隸屬度函數(shù),如圖5-11所示。>>x=0:0.1:10;y=psigmf(x,[23–58]);>>plot(x,y)>>xlabel(‘psigmf,p=[23-58]’)4813.通過計算兩個sigmoid型函數(shù)之和來構(gòu)造新的隸屬度函數(shù)dsigmf()調(diào)用格式y(tǒng)=dsigmf(x,params)y=dsigmf(x,[a1,c1,a2,c2])本函數(shù)的用法與函數(shù)psigmf()類似,參數(shù)a1、c1和a2、c2分別用于指定兩個Sigmoid型函數(shù)的形狀,構(gòu)造得到的新的隸屬度函數(shù)表達式為:

例利用以下命令,繪制兩個sigmoid型函數(shù)之和的隸屬度函數(shù)曲線,如圖5-12所示。>>x=0:0.1:10>>y=dsigmf(x,[5257]);>>plot(x,y)>>xlabel(‘dsigmf,p=[5257]’)4914.進行不同類型隸屬度函數(shù)之間的參數(shù)轉(zhuǎn)換函數(shù)mf2mf()調(diào)用格式outParams=mf2mf(inParams,inType,outType)其中inParams為轉(zhuǎn)換前的隸屬度函數(shù)的參數(shù);outParams為轉(zhuǎn)換后的隸屬度函數(shù)的參數(shù);inType為轉(zhuǎn)換前的隸屬度函數(shù)的類型;outType為轉(zhuǎn)換后的隸屬度函數(shù)的類型。該函數(shù)將盡量保持兩種類型的隸屬度函數(shù)曲線在形狀上的近似,特別是保持隸屬度等于0.5處的點的重合。但不可避免地會丟失一些信息。所以當(dāng)再次使用該函數(shù)進行反向轉(zhuǎn)換時將無法得到與原來函數(shù)相同的參數(shù)。50例利用以下命令,實現(xiàn)鐘型隸屬度函數(shù)向三角形隸屬度函數(shù)的轉(zhuǎn)換,如圖5-13所示。>>x=0:0.1:5;mfp1=[123];>>mfp2=mf2mf(mfp1,'gbellmf','trimf');>>plot(x,gbellmf(x,mfp1),x,trimf(x,mfp2))5115.隸屬度函數(shù)的計算函數(shù)fuzarith()

調(diào)用格式C=fuzarith(x,A,B,’operator’)其中,x為要計算的隸屬度函數(shù)的論域;A,B為隸屬度函數(shù)的值;operator為模糊運算符,可以是sum(加)、sub(減)、prod(乘)和div(除)四種運算中的任一種;C為A,B模糊運算后的隸屬度函數(shù)值。例>>x=0:0.1:10;A=trapmf(x,[1368]);B=trimf(x,[479]);

>>C=fuzarith(x,A,B,'sum');plot(x,A,'--',x,B,'-',x,C,'x')5216.計算隸屬度函數(shù)的值evalmf()

調(diào)用格式y(tǒng)=evalmf(x,myParams,’myType’)其中,x為要計算的隸屬度函數(shù)的論域;myParams為隸屬度函數(shù)的參數(shù)值;myType為隸屬度函數(shù)的類型;y為隸屬度函數(shù)的值。例利用以下命令,可得鐘型隸屬度函數(shù)的計算結(jié)果曲線,如圖5-14所示。

>>x=0:0.1:10;myParams=[246];>>y=evalmf(x,myParams,'gbellmf');>>plot(x,y);xlabel('gbellmf,x=[246]')535.2.4模糊規(guī)則的建立與修改在模糊推理系統(tǒng)中,模糊規(guī)則以模糊語言的形式描述人類的經(jīng)驗和知識,規(guī)則是否正確地反映人類專家的經(jīng)驗和知識,是否反映對象的特性,直接決定模糊推理系統(tǒng)的性能。通常模糊規(guī)則的形式是“IF前件THEN后件”,前件由對模糊語言變量的語言值描述構(gòu)成,如“溫度較高,壓力較低”。在一般的模糊推理系統(tǒng)中,后件由對輸出模糊語言變量的語言值描述構(gòu)成,但在高木——關(guān)野模糊推理系統(tǒng)中,后件將輸出變量表示成輸入量的精確值的組合。模糊規(guī)則的這種形式化表示是符合人們通過自然語言對許多知識的描述和記憶習(xí)慣的。

54

模糊規(guī)則的建立是構(gòu)造模糊推理系統(tǒng)的關(guān)鍵。在實際應(yīng)用中,初步建立的模糊規(guī)則往往難以到達良好的效果,必須不斷加以修正和試湊。在模糊規(guī)則的建立修正和試湊過程中,應(yīng)盡量保證模糊規(guī)則的完備性和相容性。在MATLAB模糊邏輯工具箱中,提供了有關(guān)對模糊規(guī)則建立和操作的函數(shù),如表5-4所示。表5-4模糊規(guī)則建立和修改函數(shù)

函數(shù)名功能addrule()向模糊推理系統(tǒng)添加模糊規(guī)則函數(shù)parsrule()解析模糊規(guī)則函數(shù)showrule()顯示模糊規(guī)則函數(shù)551.向模糊推理系統(tǒng)添加模糊規(guī)則函數(shù)addrule()調(diào)用格式fisMat2=addrule(fisMat1,rulelist)其中,參數(shù)fisMat1/2為填加規(guī)則前后模糊推理系統(tǒng)對應(yīng)的矩陣名稱;rulelist以向量的形式給出需要添加的模糊規(guī)則,該向量的格式有嚴(yán)格的要求,如果模糊推理系統(tǒng)有m個輸入語言變量和n個輸出語言變量,則向量rulelist的列數(shù)必須為m+n+2,而行數(shù)任意。在rulelist的每一行中,前m個數(shù)字表示各輸入變量對應(yīng)的隸屬度函數(shù)的編號,其后的n個數(shù)字表示輸出變量對應(yīng)的隸屬度函數(shù)的編號,第m+n+1個數(shù)字是該規(guī)則適用的權(quán)重,權(quán)重的值在0到1之間,一般設(shè)定為l;第m+n+2個數(shù)字為0或1兩個值之一,如果為1則表示模糊規(guī)則前件的各語言變量之間是“與”的關(guān)系,如果是0則表示是“或”的關(guān)系。56例如系統(tǒng)fisMat有兩個輸入和一個輸出,其中兩條模糊規(guī)則分別為:IFXisx1andYisy1THENZisz1IFXisx1andYisy2THENZisz2則可采用如下的MATLAB命令來實現(xiàn)以上兩條模糊規(guī)則。>>rulelist=[11111;12211];>>fisMat=addrule(fisMat,rulelist)57

例5-1假設(shè)一單輸入單輸出系統(tǒng),輸入為表征飯店侍者服務(wù)好壞的值(0

10),輸出為客人付給的小費(0

30)。其中規(guī)則有如下三條:IF服務(wù)差THEN小費低

IF服務(wù)好THEN小費中等IF服務(wù)很好THEN小費高適當(dāng)選擇服務(wù)和小費的隸屬度函數(shù)后,設(shè)計一基于Mamdani模型的模糊推理系統(tǒng),并繪制輸入/輸出曲線。解利用以下程序,可得如圖5-15所示的隸屬度函數(shù)的設(shè)定與輸入/輸出曲線。%ex5_1.m58

由圖5-15可見,由于隸屬度函數(shù)的合適選擇,模糊系統(tǒng)的輸出是輸入的嚴(yán)格遞增函數(shù),也就是說,付給客人的小費是隨著服務(wù)質(zhì)量的提高而增加。當(dāng)隸屬度函數(shù)的選取不能保證相鄰模糊量的交點大于0.5時(如將以上程序中服務(wù)隸屬度函數(shù)的參數(shù)1.8修改為1.0),輸出將不是輸入的嚴(yán)格遞增函數(shù),這時小費有時可能會隨著服務(wù)質(zhì)量的提高而減少。59

例5-2假設(shè)一單輸入單輸出系統(tǒng),輸入x

[0,15]模糊化成三級:小、中和大;輸出y

[0,15]由下列三條規(guī)則確定:IFxis小THENy=xIFxis中THENy=-0.5x+9IFxis大THENy=2x-18.

設(shè)計一基于Sugeno模型的模糊推理系統(tǒng),并繪制輸入/輸出曲線。解在利用MATLAB設(shè)計Sugeno模糊系統(tǒng)時,其步驟仍然與建立Mamdani模糊系統(tǒng)相似,只是輸出變量值的隸屬度的概念被模糊規(guī)則中的線性函數(shù)或是常數(shù)取代了,因此推理的過程就省略蘊涵運算以及不同模糊規(guī)則之間結(jié)果的合成運算,以致在后面介紹的基本模糊推理系統(tǒng)編輯器(fuzzy)環(huán)境里的“Implication”和“Aggregation”算法選擇項都不能使用。60

但是這里對于輸出仍然會用到“隸屬度函數(shù)”的提法,只是對于Sugeno型系統(tǒng)輸出變量的“隸屬度函數(shù)”不是通常模糊邏輯意義中的隸屬度函數(shù),而是輸出變量取值關(guān)于輸入變量的線性或是常值函數(shù)(姑且將它們看作單點模糊集,因此也可將系統(tǒng)的輸出看作模糊量,其隸屬度函數(shù)分別采用constant和linear)。這樣也就使的輸出變量的范圍無法直接確定(論域不能事先確定),因而在MATLAB中對于Sugeno型系統(tǒng)輸出變量的范圍(Rang)指定是沒有作用的。利用以下MATLAB程序,可得如圖5-16所示的輸入隸屬度函數(shù)的設(shè)定與輸入/輸出曲線。%ex5_2.m61

由圖5-16可見,由于隸屬度函數(shù)的合適選擇,模糊系統(tǒng)的輸出曲線是光滑的。從以上的輸入輸出關(guān)系圖上可以清楚地看到,經(jīng)過Sugeno方法運算后,輸入輸出的關(guān)系由原來給定的三個線性函數(shù)內(nèi)插為一條光滑的輸入輸出曲線,這也說明了Sugeno系統(tǒng)是一種將線性方法用于非線性系統(tǒng)的簡單有效的手段。這一點正是它被廣泛使用在諸如系統(tǒng)控制、系統(tǒng)建模等領(lǐng)域的一個重要原因。622.解析模糊規(guī)則函數(shù)parsrule()

函數(shù)parsrule()對給定的模糊語言規(guī)則進行解析并添加到模糊推理系統(tǒng)矩陣中,其調(diào)用格式

fisMat2=parsrule(fisMat1,txtRuleList,ruleFormat,lang)其中,fisMati為模糊推理系統(tǒng)矩陣;txtRuleList為模糊語言規(guī)則;ruleFormat為規(guī)則的格式,包括語言型(’verbose’)、符號型(’symbolic’)和索引型(’indexed’);lang為規(guī)則使用的語言,可以是“English”、“Francais”和“Deusch”。Lang值確省為English,此時關(guān)鍵詞為if、then、is、and、or和not,ruleFormat參數(shù)會自動設(shè)為語言型(’verbose’)。例:>>fisMat1=readfis('tipper');ruleTxt='ifserviceispoorthentipisgenerous';>>fisMat2=parsrule(fisMat1,ruleTxt,'verbose');showrule(fisMat2)633.顯示模糊規(guī)則函數(shù)showrule()

調(diào)用格式:showrule(fisMat,indexList,format,lang)其中,fisMati為模糊推理系統(tǒng)矩陣;indexList為規(guī)則編號;format為規(guī)則的格式,同函數(shù)parsrule()中的ruleFormat參數(shù)定義;lang為規(guī)則使用的語言,同函數(shù)parsrule()中定義。本函數(shù)用于顯示指定的模糊推理系統(tǒng)的模糊規(guī)則,模糊規(guī)則可以按三種方式顯示,即:詳述方式(verbose)、符號方式(symbolic)和隸屬度函數(shù)編號方式(membershipfunctionindexreferencing)。第一個參數(shù)是模糊推理系統(tǒng)矩陣的名稱,第二個參數(shù)是規(guī)則編號,第三個參數(shù)是規(guī)則顯示方式。規(guī)則編號可以以向量形式指定多個規(guī)則。例>>fisMat=readfis('tipper');showrule(fisMat,1)>>fisMat=readfis('tipper');showrule(fisMat,2)>>fisMat=readfis('tipper');showrule(fisMat,[31],'symbolic')>>fisMat=readfis('tipper');showrule(fisMat,1:3,'indexed')645.2.5模糊推理計算與去模糊化在建立好模糊語言變量及其隸屬度的值,并構(gòu)造完成模糊規(guī)則之后,就可執(zhí)行模糊推理計算了。模糊推理的執(zhí)行結(jié)果與模糊蘊含操作的定義、推理合成規(guī)則、模糊規(guī)則前件部分的連接詞“and”的操作定義等有關(guān),因而有多種不同的算法。目前常用的模糊推理合成規(guī)則是“極大一極小”合成規(guī)則,設(shè)R表示規(guī)則:“X為A

Y為B”表達的模糊關(guān)系,則當(dāng)X為A’時,按照“極大一極小”規(guī)則進行模糊推理的結(jié)論B’計算如下:

65

基于模糊蘊含操作的不同定義,人們提出了多種模糊推理算法,其中較為常用的是Mamdani模糊推理算法和Larsen模糊推理算法。另外,對于輸出為精確量的一類特殊模糊邏輯系統(tǒng)——Takagi-Sugeno型模糊推理系統(tǒng),采用了將模糊推理與去模糊化結(jié)合的運算操作。與其他類型的模糊推理方法不同,Takagi——Sugeno型模糊推理將去模糊化也結(jié)合到模糊推理中,其輸出為精確量。這是由Takagi——Sugeno型模糊規(guī)則的形式所決定的,在Sugeno型模糊規(guī)則的后件部分將輸出量表示為輸入量的線性組合,零階Sugeno型模糊規(guī)則具有如下形式。IFx為A且y為BTHENz=k其中,k為常數(shù)。66而一階Sugeno型模糊規(guī)則的形式如下:IFx為A且y為BTHENz=p*x+q*y+r式中p,q,r均為常數(shù)。對于一個由n條規(guī)則組成的Sugeno型模糊推理系統(tǒng),設(shè)每條規(guī)則具有下面的形式:

Ri:IFx為Ai且y為BiTHENz=zi(i=1,2,…,n)則系統(tǒng)總的輸出用下式計算:67

在MATLAB模糊邏輯工具箱中提供了有關(guān)對模糊推理計算與去模糊化的函數(shù),如表5-5所示。表5-5模糊推理計算與去模糊化的函數(shù)

函數(shù)名功能evalfis()執(zhí)行模糊推理計算函數(shù)defuzz()執(zhí)行輸出去模糊化函數(shù)gensurf()生成模糊推理系統(tǒng)的輸出曲面并顯示函數(shù)681.執(zhí)行模糊推理計算函數(shù)evalfis()該函數(shù)用于計算已知模糊系統(tǒng)在給定輸入變量時的輸出值,其調(diào)用格式output=evalfis(input,fisMat)其中,input為輸入向量,它的每一行對應(yīng)一組輸入變量值;output為輸出向量,每一行對應(yīng)一組輸出變量值;fisMat為模糊推理系統(tǒng)的矩陣名稱。輸入向量是M

N矩陣,其中N是輸入變量個數(shù);輸出向量是M

L矩陣,其中L是輸出語言變量個數(shù)。evalfis()有兩種文件格式,即m-文件和MEX-文件,考慮到運算的速度,通常調(diào)用MEX-文件執(zhí)行模糊推理計算。69

例5-3某一工業(yè)過程要根據(jù)測量的溫度和壓力來確定閥門開啟的角度。假設(shè)輸入溫度

[0,30]]模糊化成兩級:冷和熱;壓力

[0,3]模糊化成兩級:高和正常;輸出閥門開啟角度的增量

[-10,10]模糊化成三級:正、負和零。模糊規(guī)則為:

IF溫度is冷and壓力is高THEN閥門角度的增量is正

IF溫度is熱and壓力is高THEN閥門角度的增量is負

IF壓力is正常THEN閥門角度的增量is零適當(dāng)選擇隸屬度函數(shù)后,設(shè)計一基于Mamdani模型的模糊推理系統(tǒng),計算當(dāng)溫度和壓力分別為5和1.5以及11和2時閥門開啟的角度的增量,并繪制輸入/輸出曲面圖。解利用以下MATLAB程序,可得如下結(jié)果和如圖5-17所示的系統(tǒng)輸入/輸出曲面圖。ex5_3.m70執(zhí)行結(jié)果:out=2.50003.3921

由以上結(jié)果可知,當(dāng)溫度和壓力分別為5和1.5時,閥門開啟角度的增量為2.5;溫度和壓力分別為11和2時,角度的增量為3.3921。712.執(zhí)行輸出去模糊化函數(shù)defuzz()調(diào)用格式:out=defuzz(x,mf,type)其中,參數(shù)x是變量的論域范圍;mf為待去模糊化的模糊集合;type是去模糊化的方法,去模糊化的方法包括5種,即centroid(面積中心法)、bisector(面積平分法)、mom(平均最大隸屬度方法)、som(最大隸屬度中的取最小值方法)、lom(最大隸屬度中的取最大值方法)。例:>>x=-10:0.1:10;mf=trapmf(x,[-10-8-47]);xx=defuzz(x,mf,’centroid’)輸出結(jié)果:xx=-3.2857723.生成模糊推理系統(tǒng)的輸出曲面并顯示函數(shù)gensurf()調(diào)用格式gensurf(fisMat)gensurf(fisMat,inputs,outputs)gensurf(fisMat,inputs,outputs,grids,refinput)其中,參數(shù)fisMat為模糊推理系統(tǒng)對應(yīng)的矩陣;inputs為模糊推理系統(tǒng)的一個或兩個輸入語言變量的編號;output為模糊系統(tǒng)的輸出語言變量的編號;參數(shù)grids用干指定x和y坐標(biāo)方向的網(wǎng)絡(luò)數(shù)目;當(dāng)系統(tǒng)輸入變量多于兩個時,參數(shù)refinput用于指定保持不變的輸入變量。73

由于gensurf()函數(shù)只能繪制二維平面圖或三維曲面圖,當(dāng)系統(tǒng)的輸入?yún)?shù)多于兩個時,函數(shù)gensurf(fisMat)(僅有一個參數(shù)fisMat)生成由模糊推理系統(tǒng)的前兩個輸入和第一個輸出構(gòu)成的三維曲面,否則應(yīng)指明繪制哪兩個輸入和哪一個輸出的三維曲面。例針對兩輸入單輸出的模糊推理系統(tǒng)tipper,函數(shù)gensurf()有以下幾種使用方法:

>>fisMat=readfis('tipper');gensurf(fisMat)或>>fisMat=readfis('tipper');gensurf(fisMat,[12],1)>>fisMat=readfis('tipper');gensurf(fisMat,1,1)>>fisMat=readfis('tipper');gensurf(fisMat,2,1)745.3MATLAB模糊邏輯工具箱的圖形用戶界面

前面介紹了模糊邏輯工具箱中有關(guān)構(gòu)造模糊推理系統(tǒng)的函數(shù),這些函數(shù)都是直接在MATLAB命令行窗口執(zhí)行并顯示結(jié)果的。為了進一步方便用戶,模糊邏輯工具箱供了一套用于構(gòu)造模糊推理系統(tǒng)的圖形用戶界面,它具有以下五大功能。

755.3.1基本模糊推理系統(tǒng)編輯器(Fuzzy)

基本模糊推理系統(tǒng)編輯器提供了利用圖形界面(GUI)對模糊系統(tǒng)的高層屬性的編輯、修改功能,這些屬性包括輸入、輸出語言變量的個數(shù)和去模糊化方法等。用戶在基本模糊編輯器中可以通過菜單選擇激活其他幾個圖形界面編輯器,如隸屬度函數(shù)編輯器(mfedit)、模糊規(guī)則編輯器(ruleedit)等。

76

在MATLAB命令窗口中,可以用以下兩種方法啟動基本模糊推理系統(tǒng)編輯器FISEditer:

1)在MATLAB的命令窗口中直接鍵入fuzzy命令;

2)首先利用MATLAB左下角的Start

Toolboxes

FuzzyLogic命令,打開模糊邏輯系統(tǒng)工具箱菜單窗口。然后利用鼠標(biāo)雙擊模糊邏輯系統(tǒng)(FuzzyLogic)中的FISEditorViewer項。77

在以上兩種方式啟動下,基本模糊推理系統(tǒng)編輯器的圖形界面如圖5-21所示。

圖5-21基本模糊推理系統(tǒng)編輯器圖形界面78

從圖5-21中可以看到,在窗口上半部以圖形框的形式列出了模糊推理系統(tǒng)的基本組成部分,即輸入模糊變量(input1)、模糊規(guī)則(Mamdani型或Sugeno型)和輸出模糊變量(output1)。通過鼠標(biāo)雙擊上述圖形框,能夠激活隸屬度函數(shù)編輯器和模糊規(guī)則編輯器等相應(yīng)的編輯窗口。在窗口下半部分的右側(cè),列出了當(dāng)前選定的模糊語言變量(CurrentVariable)的名稱、類型及其論域范圍。窗口的下半部分的左側(cè)列出了模糊推理系統(tǒng)的名稱(FISName)、類型(FISType)和一些基本屬性,包括“與”運算(Andmethod)、“或”運算(Ormethed)、蘊含運算(Implication)、模糊規(guī)則的綜合運算(Aggregation)以及去模糊化(Defuzzification)等。79

用戶只需用鼠標(biāo)即可設(shè)定相應(yīng)的屬性。其中“與”運算(Andmethod)可為其選擇min(最?。?、prod(乘積)或custom(自定義)運算;“或”運算(Ormethed)可為其選擇max(最大)、probor(概率方法)或custom運算;蘊含運算(Implication)可為其選擇min、prod或custom運算,但不適用于Sugeno型的模糊推理;模糊規(guī)則的綜合運算(Aggregation)可為其選擇max、sum(求和)、probor或custom運算,但不適用于Sugeno型的模糊推理;去模糊化(Defuzzification)對Mamdani型模糊推理系統(tǒng),可為其選擇centroid(區(qū)域重心法)、bisector(區(qū)域等分法)、mom(極大平均法)、som(極大最小法)、lom(極大最大法)或custom;對于Sugeno型模糊推理系統(tǒng),可為其選擇wtaver(加權(quán)平均)或wtsum(加權(quán)求和)。80

在圖5-21中,模糊推理系統(tǒng)的基本屬性默認(rèn)設(shè)定為:“與”運算采用極小運算(min),“或”運算采用極大運算(max),模糊蘊含采用極小運算(min),模糊規(guī)則綜合采用極大運算(max),去模糊化采用重心法(centroid)。811.文件(FIIe)菜單文件菜單的主要功能包括:·NewMamdaniFIS——新建Mamdani型模糊推理系統(tǒng);·NewSugenoFIS——新建Sugeno型模糊推理系統(tǒng);·ImportFromWorkspace——從工作空間加載一個模糊推理系統(tǒng);·ImportFromFile——從磁盤文件加載一個模糊推理系統(tǒng);·ExporttoWorkspace—將當(dāng)前的模糊推理系統(tǒng)保存到工作空間;·ExporttoFile——將當(dāng)前的模糊推理系統(tǒng)保存到磁盤文件;·Print——打印模糊推理系統(tǒng)的信息;·CloseWindow——關(guān)閉窗口。82

2.編輯(Edit)菜單編輯菜單的功能包括:

·Undot——撤消最近的操作;·AddVariable...Input——添加輸入語言變量;

·AddVariable...Output—一添加輸出語言變量;

·RemoveSelectedVariable——刪除所選語言變量;·AddMFs——在當(dāng)前變量中添加系統(tǒng)所提供的隸屬度函數(shù);

·AddCustomMF—一在當(dāng)前變量中添加用戶自定義的隸屬度函數(shù)(.m文件);

·RemoveSelectedMF——刪除所選隸屬度函數(shù);·RemoveAllMFs——刪除當(dāng)前變量的所有隸屬度函數(shù);

·MembershipFunctions——打開隸屬度函數(shù)編輯器(Mfedit);

·Rules——打開模糊規(guī)則編輯器(Ruleedit);

·FISProperties——打開模糊推理系統(tǒng)編輯器(Fuzzy)。833.視圖(View)菜單視圖菜單的功能包括:

·Rules——打開模糊規(guī)則瀏覽器(Ruleview);

·Surface——打開模糊系統(tǒng)輸入輸出曲面視圖(Surfview)。845.3.2隸屬度函數(shù)編輯器(Mfedit)在MATLAB命令窗口鍵入mfedit或在基本模糊推理系統(tǒng)編輯器中選擇編輯隸屬度函數(shù)菜單(Edit/MembershipFunctions),都可激活隸屬度函數(shù)編輯器。在該編輯器中,提供了對輸入輸出語言變量各語言值的隸屬度函數(shù)類型、參數(shù)進行編輯、修改的圖形界面工具,其界面如圖5-22所示。

85

在該圖形界面中,窗口上半部分為隸屬度函數(shù)的圖形顯示,下半部分為隸屬度函數(shù)的參數(shù)設(shè)定界面,包括語言變量的名稱、論域和隸屬度函數(shù)的名稱、類型和參數(shù)。

在菜單部分,文件菜單和視圖菜單的功能與模糊推理系統(tǒng)編輯器的文件功能類似。編輯菜單的功能包括添加隸屬度函數(shù)、添加定制的隸屬度函數(shù)以及刪除隸屬度函數(shù)等。

865.3.3模糊規(guī)則編輯器(Ruleedit)在MATLAB命令窗口鍵入ruleedit或在基本模糊推理系統(tǒng)編輯器中選擇編輯模糊規(guī)則菜單(Edit/Rules),均可激活模糊規(guī)則編輯器。在模糊規(guī)則編輯器中,提供了添加、修改和刪除模糊規(guī)則的圖形界面,如圖5-23所示。87

在模糊規(guī)則編輯器中提供了一個文本編輯窗口,用于規(guī)則的輸入和修改。模糊規(guī)則的形式可有三種,即語言型(Verbose)、符號型(Simbolic)以及索引型(Indexed)。在窗口的下部有一個下拉列表框,供用戶選擇某一規(guī)則類型。為利用規(guī)則編輯器建立規(guī)則,首先應(yīng)定義該編輯器使用的所有輸入和輸出變量(系統(tǒng)自動地將在該編輯器中定義的輸入/輸出變量顯示在窗口的左下部),然后在窗口上選擇相應(yīng)的輸入/輸出變量(以及是否加否定詞not)和不同輸入變量之間的連接關(guān)系(or或則and)以及權(quán)重weight的值(默認(rèn)值為1),最后單擊[Addrule]按鈕,便可將此規(guī)則顯示在編輯器的顯示區(qū)域中。模糊規(guī)則編輯器的菜單功能與前兩種編輯器基本類似,在其視圖菜單中能夠激活其他的編輯器或窗口。885.3.4模糊規(guī)則瀏覽器(Ruleview)

在MATLAB命令窗口鍵人ruleview或在上述三種編輯器中選擇相應(yīng)菜單(View/ViewRules),都可激活模糊規(guī)則瀏覽器。在模糊規(guī)則瀏覽器中,以圖形形式描述了模糊推理系統(tǒng)的推理過程,其界面如圖5-24所示。895.3.5模糊推理輸入輸出曲面視圖(Surfview)在MATLAB命令窗口鍵入Surfview命令或在各個編輯器窗口選擇相應(yīng)菜單(View/ViewSurface),即可打開模糊推理的輸入輸出曲面視圖窗口。該窗口以圖形的形式顯示模糊推理系統(tǒng)的輸入輸出特性曲面,其界面如圖5-25所示。

90例5-4利用MATLAB模糊邏輯工具箱的圖形用戶界面:模糊推理系統(tǒng)編輯器(FISEditor),重新求解例5-3中的問題。解首先打開模糊推理系統(tǒng)編輯器(FISEditor)。91

最后利用編輯器窗口中的“File

ExporttoWorkspace…”菜單命令,將當(dāng)前的模糊推理系統(tǒng)以名字fisMat(系統(tǒng)自動將其擴展名設(shè)置為.fis)保存到MATLAB工作空間的fisMat.fis模糊推理矩陣中。此時在MATLAB命令窗口利用以下MATLAB命令,也可得到與例5-3相同的結(jié)果。>>in=[51.5;112];out=evalfis(in,fisMat)925.4基于Simulink的模糊邏輯的系統(tǒng)模塊

MATLAB的模糊邏輯工具箱提供了與Simulink的無縫連接功能。在模糊邏輯工具箱中建立了模糊推理系統(tǒng)后,可以立即在Simulink仿真環(huán)境中對其進行仿真分析。在Simulink中有相應(yīng)的模糊邏輯控制器方塊圖(FuzzyLogicBlock),將該方塊圖拷貝到用戶建立的Simulink仿真模型中,并使模糊邏輯控制器方塊圖的模糊推理矩陣名稱與用戶在MATLAB工作空間(Workspace)建立的模糊推理系統(tǒng)名稱相同,即可完成將模糊推理系統(tǒng)與Sinmlink的連接。

93Simulink的模糊邏輯控制器方塊圖是一個建立在S函數(shù)sffis.mex基礎(chǔ)上的屏蔽方塊圖。該函數(shù)的推理算法與模糊邏輯工具箱的evalfis()函數(shù)相同,但進行了針對Sinlulink仿真應(yīng)用的優(yōu)化。在Simulink庫瀏覽窗口的FuzzyLogicToolbox節(jié)點上,通過單擊鼠標(biāo)右鍵后,便可打開如圖5-26所示的FuzzyLogicToolbox窗口。94在FuzzyLogicToolbox模塊庫中包含了以下三種模塊。*模糊邏輯控制器(FuzzyLogicController);*帶有規(guī)則瀏覽器的模糊邏輯控

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論