版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章Matlab在模糊控制中的应用Matlab(是“MatrixLaboratory”的缩写)是由美国Mathworks公司于1984年正式推出的一套高性能的科学计算软件。针对模糊逻辑尤其是模糊控制的迅速推广应用,MathWork公司在其MATLAB版中添加了FuzzyLogic工具箱。该工具箱由长期从事模糊逻辑和模糊控制研究与开发工作的有关专家和技术人员编制。MATLABFuzzyLogic工具箱以其功能强大和方便易用的特点得到了用户的广泛欢迎。模糊逻辑的创始人Zadeh教授称赞该工具箱“在各方面都给人以深刻的印象,使模糊逻辑成为智能系统的概念与设计的有效工具”。在本章中,以Matlab6
2、.5为开发环境,基于模糊控制工具箱(FuzzyLogicToolbox),通过一些简单直观的例子,对模糊控制系统进行分析、设计与研究,并通过对部分例子的详细说明,使读者能够初步掌握模糊逻辑工具箱的使用。6.1模糊逻辑工具箱函数一、模糊逻辑工具箱函数简介Matlab的模糊逻辑工具箱函数为模糊控制系统的分析与设计提供了许多工具箱函数,它们可按主题分为如下几大类:GUI(图形用户界面)工具、隶属度函数、FIS(模糊推理系统)数据结构管理、先进技术、Simulink仿真模块、模糊系统演示程序、其它函数。以函数名称与对应的功能格式分别用表6-16-7表示。表6-1GUI(图形用户界面)工具函数功能函数功
3、能anfisedit打开ANFIS编辑器的GUIruleedit规则编辑器和解析器fuzzy调用基本的FIS编辑器ruleview规则观察器和模糊推理方框图mfedit隶属度函数编辑器surfview输出曲面观察器表6-2隶属度函数函数功能函数功能dsigmf由两个Sigmoid型隶属度函数之差构成的隶属度函数psigmf由两个Sigmoid型隶属度函数的积构成的隶属度函数gauss2mf联合高斯型隶属度函数sigmfSigmoid型隶属度函数gaussmfgbellmf高斯型隶属度函数广义钟型隶属度函数smftrapmftrimfS型隶属度函数梯型隶属度函数三角形型隶属度函数pimf口型隶属
4、度函数zmfZ型隶属度函数表6-3先进技术函数功能函数功能anfisfcmgenfis1Sugeno型FIS的训练程序模*®C均值聚类不使用数据聚类的方法从数据中生成FIS结构genfis2subclust使用减法聚类的方法从数据中生成FIS结构用减法聚类的方法寻找聚类中心1表6-4FIS数据结构管理函数功能函数功能addmf在FIS中添加隶属度函数parsrule模糊规则解析addrule在FIS中添加规则plotfis绘图表示FISaddvar在FIS中添加变量piotmfreadfis绘制给定变量的所有隶属度函数从磁盘中装入FISdefuzzevalfis对隶属度函数进行反模糊
5、化完成模糊推理计算rmmf从FIS中删除某一变量的某一隶属度函数evalmf通用隶属度函数的计算revar从FIS中删除某一变量gensurf生成FIS输出曲面setfis设置模糊系统的属性getfis族取模糊系统的特性showfis以分行的形式显示FIS结构的所后属性mf2mf在两个隶属度函数之间进行shoerule显示FIS的规则newfis1参数转换建立新的FISwritefis将FIS保存W磁盘中表6-5Simulink仿真模块函数功能函数功能fuzblockSimulink模糊逻辑控制器库sffis用丁Simulink的模糊推理S-函数表6-6其它函数函数功能函数功能convertf
6、isFIS结构的版本变换模*®C均值和减法聚类交换mam2sug将Mamdanni型的FIS变换成Sugeno型的FISfindclusterGUIfuzdemos模糊逻辑工具箱演示程序列表fuzarith完成模糊算术运算表6-7模糊系统演示程序函数功能函数功能defuzzdm去模糊方法noiedm自适应噪声消除fcdemoFCM聚类方法演示(一维)slbb棒球控制gasdemo使用减法聚类的ANFIS演示slcp倒立摆控制juggler魔球演示sltank水位控制invkine机械臂的倒置sltankrule带观测器的水位控制irsfcmFCM聚类演示(四维)sltbu卡车倒车控制
7、下面主要介绍GUI(图形用户界面)工具、隶属度函数、FIS数据结构管理这三类模糊逻辑工具箱的一些函数。二、有关GUI(图形用户界面)的工具箱函数1. anfisedit功能:打开ANFIS编辑器的GUI。格式:anfisedit(,a?)anfisedit(a)anfisedit2界面:an巾sedit函数打开ANFIS编辑器的GUI如图6-1所示。图6-1 ANFIS编辑器的GUI说明:利用an危edit函数打开ANFIS编辑器的GUI,从中可装入数据集合并训练ANFIS。利用aMisedit('a')可从磁盘中装入名为afis的FIS结构文件,并打开ANFIS编辑器的GUI
8、o利用an巾sedit(a)可按同样方式打开FIS结构变量a(只是此时的a保存在工作空间中)。菜单项:(1) File菜单下各子菜单NEWFIS:建立新的FIS系统,可选择为Mamdani型的或者是Sugeno型的FIS系统。此时默认的文件名为Untitled。Importfromworkspace从工作空间中装入制定的FIS结构变量。Importfromdisk从磁盘中将指定的.fis文件装入系统。Exporttoworkspace将系统保存到工彳空间指定的FIS结构变量中。Exporttodisk将当前系统以自己指定的命名保存到磁盘中。Print:打印指定的系统内容。Close:关闭GUI
9、窗口。(2) Edit菜单项下各子菜单Undo:撤销最近的操作。FISproperties打开FIS编辑器。Membershipfunctions打开隶属度函数编辑器。Rules打开规则编辑器。(3) View菜单下各子菜单Rules打开规则编辑器。Surface打开曲面观测器。2. fuzzy功能:调用基本的FIS编辑器。格式:fuzzyfuzzy(fismat)界面:fuzzy函数打开FIS编辑器的GUI如图6-2所示。FIS Rdit or; ITnrjit Ird_ | 口!X图6-2 基本的FIS编辑器说明:FIS编辑器可让用户方便的创建或修改FIS(模糊推理系统)的高级特性,如输入
10、、输出变量的个数、反模糊化方法等。FIS编辑器是FIS的高级显示,它允许用户调用各种其他的编辑器来进行FIS操作,这种接口为访问更高级的编辑器提供了方便。FIS编辑器主要包括如下几大部分:图表:包括输入、输出和中心模糊规则处理器三大部分。点击输入、输出变量框时所选框为当前变量,当前变量所对应的框为一个红色加亮的框,此时可在相应的Name文本编辑栏中对变量进行命名或对变两名进行修改。还可以通过Edit菜单下的AddVariable来增加输入或输出变量,对于所选得当前变量,可以用键盘上的Delete键直接删除,也可以用Edit菜单下的RemoveSelectedVariables行删除。双击其中的
11、1个变量,可进入隶属度函数编辑器。双击模糊规则处理器(输入、输出变量框之间的那个方框)可进入规则编辑器。当规则框中没有规则时,输入、输出变量框与规则处理器框之间相连的线为虚线,有规则后变为实线。推理方法下拉式菜单由5个下拉式菜单可用于改变模糊推理过程的5种基本推理方法:(1) Andmethod(与方法):可为其选择min(最小)、prod(乘积)或Custom(自定义)运算。(2) Ormethod(或方法):可以选择max(最大)、probor(概率方法)或Custom运算。(3)Implication(蕴含):可以选择min、prod或Custom运算,此方法不适应于Sugeno型的模糊
12、推理。(4)Aggregation(集结):可以选择max、sumsprobor或Custom运算,此方法不适应于Sugeno型的模糊推理。(5)Defuzzication(反模糊化):对Mamdani型模糊推理,可以选择centroid(区域重心法)、bisector(区域等分法)、mom(极大平均法)、som(极大最小法)、lom(极大最大法)或Custom对Sugeno型的模糊推理,可以选择wtaver(加权平均)或stsum(加权求和)。菜单项:(3) File菜单下的子菜单:与ANFIS编辑器中File菜单相同.(4) Edit菜单下的子菜单:Undo:撤销最近的操作。AddInpu
13、tVariable:在当前系统中增加1个输入变量。AddOutputVariable:在当前系统中增加1个输出变量。RemoveSelectedVariables除选中的变量。Membershipfunctions打开隶属度函数编辑器。Rules打开规则编辑器。3. mfedit功能:隶属度函数编辑器。格式:mfeditmfedit('a')mfedit(a)界面:mfedit函数打开MF编辑器的GUI如图6-3所示。图6-3隶属度函数编辑器说明:mfedit可用于打开隶属度函数编辑器;mfedit(,a?)可打开隶属度函数编辑器,其中包含文件a.fis的隶属度函数,通过编辑器
14、可对其进行修改;mfedit(a)可打开保存在工作空间变量a中的FIS结构。对于每个隶属度函数,我们可修改其名称、类型及其参数。在隶属度函数编辑器中有11种内部的隶属度函数可供选择,当然也可以建立用户自定义的隶属度函数。隶属度函数编辑器主要包括以下内容:图表:在窗口左上角的FISVariables标题下选择变量图标,此时在图形区域显示出相应的隶属度函数,点击图形区域中的曲线可选择隶属度函数。隶属度函数种类下拉式菜单:右下角组合框中Type标签的右面有一个下拉式菜单,其中有11种内部的隶属度函数可供选择。系统也提供了安装用户自定义隶属度函数的选项。菜单项:(1)File菜单下的子菜单:与ANFI
15、S编辑器中File菜单相同(2)Edit菜单下的子菜单:Undo:撤销最近的操作。AddMfs在当前变量中添加隶属度函数。AddCustomMfs在当前变量中添加自定义的隶属度函数。RemoveSelectedMf删除选中的隶属度函数。RemoveAllMfs:删除当前变量的所有隶属度函数。FISProlperties打开FIS编辑器。Rules:打开规则编辑器。View菜单下的子菜单:与ANFIS编辑器中的View菜单项相同4. ruleedit功能:规则编辑器和解析器。格式:ruleedit(,a?)ruleedit(a)界面:ruleedit函数打开规则编辑器的GUI如图6-4所示。图6
16、-4规则编辑器和解析器说明:利用ruleedit(,a?)可打开规则编辑器,从中可以查看或修改文件a.fis所对应的FIS结构中的规则。Ruleedit(a)格式可用来打开在工作空间中已存在的名为a的FIS结构所对应的规则编辑器。利用规则编辑器建立规则,首先应定义FIS使用的所有输入和输出变量,然后利用输入和输出变量的列表框和复选框进行选择,最后选择相应的联结方式及权值。菜单项:(1) File菜单下的子菜单与ANFIS编辑器中File菜单相同。(2) Edit菜单下的子菜单Undo:撤销最近的操作。FISProperties打开FIS编辑器。Membershipfunctions打开隶属度函
17、数编辑器。(3) View菜单下的子菜单与ANFIS编辑器中的View菜单项相同。(4) Options菜单下的子菜单Language:可选择不同的语言,有English(英语)、Deutsch(彳惠语)和Francais(法语)3种。Format:格式选择:Verbose(详细):使用单词“if、”“then”“anc®"o等建立句子表达。例如,规贝U"ifAandBthenC”Symbolic(符号):利用逻辑推理符号表达。例如下面的规则可表达为:“A&B=>C'。Indexed(编号):用编号和模糊推理框图。格式:ruleview(,a
18、?)ruleview(a)界面:ruleview函数打开规则观测器的GUI如图6-5所示。说明:利用ruleview(,a?)可打开文件a.fis规则善的规则观测器,从中可对a.fis文件的FIS结构画出模糊推理框图,通常可显示整个推理框图,这时改变各变量的输入值,可以立即得到系统重新调整后的情况,并计算出新的输出。ruleview(a)用于打开工作空间中已存在的变量a规则观测器。图6-5规则观测器和模糊推理框图菜单项:File菜单下的子菜单与ANFIS编辑器中File菜单相同Edit菜单下的子菜单Undo:撤销最近的操作。FISProperties:打开FIS编辑器。Membershipfu
19、nctions:打开隶属度函数编辑器。Rules:打开规则编辑器。(3) View菜单下的子菜单Surfview:打开曲面观测器。6.srufview功能:输出曲面观测器。格式:surfview(,a?)界面:surfview函数打开曲面观测器的GUI如图6-6所示说明:利用surfview(,a?)可打开输出曲面观测器,从中可查看保存在文件a.fis中的单输入或双输入FIS结构的输出曲面。由于它不会改变推理系统及相应的FIS结构。因此它是一个只读编辑器。利用X、Y、Z轴对应的3个下拉式菜单,可以选择输入、输出坐标轴的变量。选择Evaluate按钮可完成计算并绘制出输出曲面。(1) File菜
20、单下的子菜单与ANFIS编辑器中File菜单相同。(2) Edit菜单下的子菜单图6-6输出曲面观测器Undo:撤销最近的操作。FISProperties打开FIS编辑器。Membershipfunctions:打开隶属度函数编辑器。Rules:打开规则编辑器。(3) View菜单下的子菜单Ruleview:打开规则观测器。Options菜单下的子菜单Plot:它下面有8种绘图格式可供选择。ColorMap:用于选择不同的颜色方案。Alwaysevaluate:选中该项时,一旦对系统进行了修改,就自动进行计算并绘制出新的曲面。再选一次可使它无效。三、隶属度函数在Matlab的模糊逻辑工具箱内部
21、本身有11种隶属度函数可供用户选择,由于篇幅所限,在此不做详细介绍。四、FIS数据结构管理函数1 addmf功能:将隶属度函数加到FIS(模糊推理系统)。格式:a=addmf(a,?varType?,?varIndex?,?mfName?,?mfType?,?mfPara。ms?)说明:隶属度函数只能添加到MATLAB工作空间中已经建立的FIS结构中。按隶属度函数添加的顺序将其编号,这样给变量添加的第一个隶属度函数称为该变量的1号隶属度函数,如果系统中只有1个输入变量,则不能给第2个变量添加隶属度函数。addmf函数有6个输入变量:(1) a:工作空间中的FIS结构变量名;(2) varTyp
22、e要添加的隶属度函数的变量类型(input或output);(3) varIndex:要添加的隶属度函数的变量编号;(4) mfName:新添加的隶属度函数名;(5) mfType:新隶属度函数的类型;(6) mfParams:指定隶属度函数的参数变量。示例:a=newfis(,Simple?);%建立新的FIS系统a=addvar(a,?input?,?e%;6);%给FIS添加新的输入变量“e”a=addmf(a,?input?,?1?,?NL?,?trapm-f6?,-6,-5,-3);a=addmf(a,?input?,?1?,?NS?,?trapm-f5?,-3,-2,0);a=ad
23、dmf(a,?input?,?1?,?ZR?,?trim-f?2,0,2)。2 addrule功能:在FIS中添加规则。格式:a=addrule(a,ruleList)说明:addrule函数有2个变量,第1个变量a为FIS的变量名,第2个变量ruleList表示规则矩阵。规则列表矩阵的格式有严格的要求:当模糊系统由m个输入,n个输出时,规则列表矩阵有m+n+2列,前m列表示系统的输入,每列数值表示输入变量隶属度函数的编号;接着的n列表示系统的输出,每列的数值表示输出变量隶属度函数的编号;第m+n+1列的内容为该条规则的权值:0到1之间的值,通常设定为1;第m+n+2列的值决定模糊操作符的类型
24、:1(当模糊操作符为and时)或2(当模糊操作符为or时)示例:ruleList=11111;12211;a=addrule(a,ruleList);如果系统a有2个输入(X和Y)和1个输出(Z),则上述定义的第1条规则为IfXisx1andYisy1thenZisz1。3 addvar功能:在FIS中添加变量。格式:a=addvar(a,?varType?,?varName?,?varBounds?)说明:addvar函数有4个输入变量。(1) a:工作空间中FIS的变量名;(2) varType:要添加的变量类型(input或output);(3) varName:要添加的变量名;(4)
25、varBounds:变量的取值范围。添加的变量按其添加的顺序进行编号,这样添加到系统的第1个变量总是称为系统的输入变量1,输入与输出变量分开编号。示例:a=newfis(,Simple?);%建立新的FIS系统a=addvar(a,?input?,?e%;6);%给FIS添加新的输入变量“e”4 defuzz功能:对模糊隶属度函数进行反模糊化。格式:out=defuzz(x,mf,type)说明:defuzz(x,mf,type)可得到输入为x时隶属度函数mf的反模糊化值,其反模糊化的策略由type指定。变量type可取:(1) centroid:区域重心法;(2) bisector:区分等分
26、法;(3) mom:极大平均法;(4) som:极大最小值法;(5) lom:极大最大值法;如果type不取上述各种方法,则默认为用户自定义的方法,x和mf通过这一函数可以产生反模糊化的结果。示例:x=10:0:10;mf=trapmf(x,-10-8-47);xx=defuzz(x,mf,?centroid?)。5 evalfis功能:完成模糊推理计算。格式:out=evalfis(input,fismat)out=evalfis(input,fismat,numPts)output,IRR,ORR,ARR=evalfis(input,fismat)output,IRR,ORR,ARR=ev
27、alfis(input,fismat,numPts)说明:evalfis函数具有下列参数。(1) input:指定输入的数值或矩阵。如果输入为mn矩阵时(n为输入变量维数),则evalfis将输入的每一行看作输入变量,并在输出变量output中产生m黑1矩阵,其中每一行为输出向量,1为输出变量数。(2) fismat:要计算的FIS结构。(3) numPts:计算输入和输出隶属度函数时采用的取样点数,如果缺省,则采用缺省值101。(4) output:evalfis函数的输出变量一m><1矩阵,其中m表示输入变量数,1表示输出变量数。numRules矩阵,其中 numrules为n
28、umPts numRulesM 1 ,其中numRules歹!J对应于第1个输出,(5) IRR:输入值通过隶属度函数后的结果,这是规则数,n为输入变量数。(6) ORR:输出值通过隶属度函数后的结果,这是numRules为规则数,1为输出变量数。这个矩阵的前接下来的numRules歹!J对应于第2个输出,如此等等。(7) ARR:沿着每个输出的取值范围已numPts取样得到的numPts"矩阵。只有当输入变量为行向量时,evalfis才计算可选的输出变量值。当只有1个输出变量引用evalfis函数时,可计算出由结构fismat指定的FIS和由input指定的输出向量outputo6
29、 evalmf功能:普通隶属度函数的计算。格式:y=evalmf(x,mfParams,?mfType?)说明:evalmf函数可计算任意的隶属度函数,其中x为要计算的隶属度函数取值,mfType为工具箱中存在的一只能够隶属度函数,mfParams为该函数的相应参数。如果建立了自己的隶属度函数,evalmf函数也能很好的工作,这是因为evalmf只计算隶属度函数,并不对其名字进行识别。7 gensurf功能:产生FIS输出曲面。格式:gensurf(fis)gensurf(fis,input,output)gensurf(fis,input,output,grids,refinput)说明:g
30、ensurf(fis)函数针对给定FIS的前两个输入和第一个输出绘制出曲面。gensurffis,input,output)可在绘制输出曲面时用input和output指定的输入和输出。gensurf(fis,input,output,grids,refinput)中grids指定X和Y方向的栅格数,refinput指定系统不变的输入。8 getfis功能:获取模糊系统的特性。格式:getfis(a)getfis(a,?fisprop?)getfis(a,?varType?,varIndex,?fisprop)?getfis(a,?varType?,varIndex,?mf?,mfInde)x
31、getfis(a,?varType?,varIndex,?mf?,mfIndex,?mfPro)p?说明:这是C的基本访问函数,利用这一函数获取FIS的每个部分。Getfis函数的输入变量的含义说明如下。(1) a:FIS结构的变量名。(2) varType:变量类型的字符串,可取input或output。(3) varIndex:变量序号。(4) mf:要搜索的隶属度函数信息的字符串。(5) mfIndex:要搜索信息的隶属度函数的序号。9 mf2mf功能:在隶属度函数之间进行参数交换。格式:outParams=mf2mf(inParams,inType,outType)说明:mf2mf函数
32、可根据隶属度函数的参数集,将一种隶属度函数变换成另一种,原则上,mf2mf函数在新旧隶属度函数的对称点上进行匹配。这种变换偶尔也会导致信息的丢失,因此如果再将其变换回原来的隶属度函数类型时,则可能会与原隶属度函数不一致。mf2mf的输入变量有:(1) inParams:要变换的隶属度函数的参数。(2) inType:要变换的隶属度函数的字符串。(3) outType:要变换的隶属度函数类型的字符串。示例:mfp1=123;mfp2=mf2mf(mfp1,?gbellmf?,?trimf?);mfp1代表gbellmf的参数,mfp2代表变换为trimf后对应的参数。10 newfis功能:建立
33、新的FIS。格式:a=newfis(fisName,fisType,andMethod,orMethod,impMethod,aggMethod,defuzzMethod)说明:这一函数可建立新的FIS结构,newfis函数最多可有7个输入变量,其输出变量为FIS结构。newfis函数7个输入变量为:(1) fisName:FIS结构名,其后缀默认为.fis。(2) fisType:FIS类型。(3) andMethod,orMethod,impMethod,aggMethod,defuzzMethod分别表示与,或,蕴含,结集和反模糊化方法。11 parsrule功能:模糊规则解析。格式:f
34、is2=parsrule(fis,txtRuleList)fis2=parsrule(fis,txtRuleList,ruleFormat)fis2=parsrule(fis,txtRuleList,ruleFormat,lang)说明:这一函数可对MATLAB工作空间中FIS变量定义的规则进行解析,如果原来的FIS结构具有初始的规则,则它们将在新的结构中被取代,这里可通过ruleFormat指定3种格式:verbose,symbolic和indexd,其缺省格式为verbose当对lang选项进行设定时,规则按verbose模式解析,lang可设定为English、Deutsh或Franca
35、is、English为默认设置。12 plotfis功能:绘图表示FIS。格式:plotfis(fismat)说明:plotfis函数可绘制出FIS结构的框图,图中包含输入及其隶属度函数(左边),规则处理器方框(中间),输出及其隶属度函数(右边)。13 plotmf功能:绘制出指定变量的所有隶属度函数。格式:plotmf(fismat,?varTypt?,varIndex)说明:plotmf函数可以绘制FIS结构种指定变量的所有隶属度函数,fismat表示指定的FIS结构,varTypt指定变量类型(input或output),varIndex指定变量的序号。14 readfis功能:从磁盘中
36、装入FIS。格式:fismat=readfis(?filename?)说明:从磁盘.fis文件中读取模糊推理系统,并保存于工作空间中。fismat=readfis将打开读取文件的对话框,以便输入文件名及其路径。15 rmmf功能:从FIS中删除隶属度函数。格式:fis=rmmf(fis,?varType?,varIndex,?mf?,mfIndex)说明:rmmf可从FIS中删除指定的隶属度函数,其中fis指定FIS结构,varIndex指定变量序号,varType指定变量类型,mfIndex指定要删除的隶属度函数的序号,字符串mf指定要删除的隶属度函数。16 rmvar功能:从FIS中删除变
37、量。格式:fis2,errorStr=rmvar(fis,?varType?,varIndex)fis2=rmvar(fis,?varType?,varIndex)说明:fis2=rmvarfis,?varType?,varIndex)可从FIS中删除变量,其中fis指定FIS结构,varIndex指定要删除的变量序号,varType指定变量类型,fis2,errorStr=rmvar(fis,?varType?,varIndex丹在errorStr中得到错误信息。17 setfis功能:设置模糊推理系统的特性。格式:a=setfis(a,?varPropname?,?newfisProp?)
38、a=setfis(a,?varType?,varIndex,?varPropname?,?newfisProp?a=setfis(a,?varType?,varIndex,?mf?,mfIndex,?varPropname?,?newfisProp?)说明:根据要设置的FIS特性不同,setfis命令可有3个,5个或7个输入变量,下面给出了这些变量的含义说明。(1) a:工作空间中的FIS变量。(2) varType:变量类型。(3) varIndex:输入,输出变量序号。(4) mf:指定隶属函数。(5) mfIndex:所选变量隶属度函数的序号。(6) varPropname:表示要设置的
39、FIS特性的字符串,这里可取Name、Type、andMethod、orMethod、impMethod、aggMethod、defuzzMethod。(7)?newfisProp?描述要设置的FIS特性或方法的字符串。(8)?varPropname?指定要设置的变量域名。可取Name或Range(9) ,newvarProp?当变量域名为Name时,这一部分为要设置的变量名的字符串;变量域名为Range时,这一部分为改变变量范围的阵列。(10) ,mfPropname?要设置的隶属度函数域名的字符串,可取Name,Type或Params(11) ,newmfProp?:当隶属度函数域名为Na
40、me或Type时,这一部分为要设置的隶属度函数域名或类型;为Params时,这一部分为参数阵列。18 showfis功能:显示带注释的FIS。格式:showfis(fismat)说明:showfis(fismat)可显示出FIS结构fismat,从而更容易观察FIS结构各个域的重要性及内容。19 showrule功能:显示FIS规则。格式:showrule(fis)showrule(fis,indexList)showrule(fis,indexList,format)showrule(fis,indexList,format,lang)说明:showrule可显示出FIS系统的规则,它可有1
41、到4个输入变量:fis为FIS结构变量名;indexList为要显示的规则的序号向量;format用于指定规则显示的格式;lang用于指定显示规则的语言。当调用showrule4个变量都采用时,第3个变量format的设置必须是verbose。20 writefis功能:将FIS结构保存到磁盘文件中。格式:writefis(fismat)writefis(fismat,?filename?)writefis(fismat,?filename?,?dialog?)说明:writefis可将MATLAB工作空间中的FIS结构变量fismat保存到磁盘文件中。writefis(fismat)可打开一
42、个对话框,以输入变量的文件名及其路径。write巾s(fismat?ilename?则lft接指定文件名filename.fis,这时不会出现对话框,文件保存在当前目录中。write巾s(fismat,?filename?,?dialog初打开对话框,并且以filename.fis为文件名。五Simulink仿真模块函数1 fuzblock功能:模糊逻辑控制器仿真模块。格式:fuzblock说明:此命令将打开Simulink系统的模糊逻辑模块库,里面含有有关模糊逻辑器件的演示框图,它们分别为:FuzzyLogicController:模糊逻辑控制器;FuzzyLogicControllerWi
43、thRuleViewer:带有规则观测器的模糊逻辑控制器;MemberShipFunctions:隶属度函数,里面包含有11种内定的隶属度函数。2 sffis功能:Simulink中的模糊推理S函数。格式:output=sffis(t,x,u,flag,fismat)说明:用此函数可得到一个由Simulink使用的MEX文件,通常由evalfis函数完成计算工作,并且在Simulink环境中已经达到最优,这就意味着sffis可在Simulink仿真的初始阶段就建立起数据结构,并一直在仿真中使用。自变量t、x和flag为Simulink中S函数标准变量,变量u为Matlab工作空间FIS结构fi
44、smat的输入。关于模糊系统工具箱的其它内容可参考其它有关书籍,在此不再介绍。6.2模糊推理系统(FIS)的建立一个模糊推理系统的任务可分为三大块,即可用三个步骤概括:首先,对测量数据进行Fuzzy化(即模糊化);其次,建立控制规则表;第三,输出信息的Fuzzy判决,即对模糊量进行反模糊化,得到精确输出量。具体来说,Fuzzy化的过程,就是针对输入变量的量测值,根据实际工程需要,选取合适的论域范围,并分为几种可能的情况选取几个语言变量值,从而对输入量测值进行量化,每个语言变量值可以选用某种隶属度函数来表示;建立规则表,就是根据控制过程中的实际经验,依照推理合成法或其它方法建立一系列规则,组成规
45、则表;输出信息的Fuzzy判决,就是通过一系列反模糊化方法对推理后所得模糊输出信息进行反模糊化运算(Defuzzication)。对Mamdani型模糊推理,通常可以选择centroid(区域重心法)、bisector(区域等分法)、mom(极大平均法)、som(极大最小法卜lom(极大最大法)或Custom;对Sugeno型模糊推理,可以选择wtaver(力口权平均)或wtsum(加权求和)。模糊推理系统的建立,往往是设计一个模糊控制系统的基础。要想建立一个模糊推理系统,通常可以用两类方法:一种是利用GUI(图形用户界面)建立模糊推理系统;另一种就是利用Matlab命令行建立模糊推理系统。下
46、面分别用这两类方法结合具体的例子来介绍建立一个模糊推理系统的过程。一、利用GUI建立模糊推理系统在前面介绍模糊逻辑工具箱的图形用户界面工具中,我们对FIS编辑器、隶属度函数编辑器、规则编辑器、规则观测器、曲面观测器和ANFIS编辑器已有所了解。下面我们通过一个具体的例子介绍利用GUI建立FIS的过程。例6-1水箱水位控制问题,如图6-7所示。通过控制进水阀使得水箱水位保持在一定水平上。我们通常取水位误差e和误差变化率ec作为模糊控制器的输入变量。其中,e=r-y(误差=设定值测量值)。选取误差e的论域范围为-1,1,3个语言变量值为negative、zero、positive,它们的隶属度函数
47、均取gaussmf俯斯曲线);水位变化率ec的论域为-0.1,0.1,3个语言变量值为negativezero和positive,它们的隶属度函数也取gaussmt确定输出变量数为1个,名字为u,其论域为-1,1,5个语言变量值为close-fast、close-slow、no-change,open-slow和open-fast,隶度函数选为trimf(三角形曲线)。根据水箱水位控制的实际经验,可得到如下控制规则(用if-then语句表达):(1)Ifeisnegativethenuisclose-fast(2)Ifeiszerothenuisno-change(3)Ifeispositiv
48、ethenuisopen-fast;(4)Ifeiszeroandecisnegativethenuisopen-slow;(5)Ifeiszeroandecispositivethenuisclose-slow。利用GUI建立一个FIS系统的具体步骤说明如下。1 .进入FIS编辑器在Matlab的CommandWindow窗口提示符下,键入fuzzy可打开FIS编辑器,其界面如图6-8所示。此时编辑器里还没有FIS系统,文件名为Untitled,且被默认为Mamdani型系统。此时上面图表部分有1个输入、1个输出,还有中间的规则处理器。在FIS编辑器界面中进行的工作说明如下:(1)添加输入变
49、量由于本例有2个输入变量,因此需要再添加1个输入变量,操作方法为:菜单Edit-AddVariable一Input匕时系统便有2个输入变量,1个输出变量。(2)命名输入-输出变量点击输入框(input1或input2)或输出框(output1),在CurrentVariable组合框的Name编辑栏内修改变量名。本例中input1、Input2和output1分别命名为e、ec和为u。(3)保存系统选择菜单File-Export-ToDisk。本例中将创建的水位控制系统命名为wl_control,此时,所显示的即为初始的水位模糊推理系统wl_control,如图6-9所示。也可以在FIS编辑器
50、中删除不想要的输入或输出变量,方法为选中想要删除的变量fEdit-RemoveSelectedVariable。也可以在选中变量后,直接按键盘上的Delete键进行删除。利用FIS编辑器得到了初始模糊推理系统后,需要在隶属度函数编辑器中进行隶属度函数的定义。2 .进入隶属度函数编辑器进入隶属度函数编辑器有三种方法。(1)在FIS编辑器中双击任意一个输入或输出变量的图框;(2)通过菜单Edit一MembershipFunctions;34(3)在Matlab的CommandWindow(命令窗口)提示符下键入mfedit(wl_control)。图6-8基本的FIS编辑器图6-9 初始wl_co
51、ntrol模糊推理系在隶属度函数编辑器中,可以对各个变量的论域范围、隶属度函数进行编辑。首先,修改各变量的论域范围。点击FISVariables下面的各输入输出变量框一在CurrentVariable组合框中Range右边编辑栏内,修改选中变量的论域范围。Range编辑栏修改后,DisplayRange编辑栏内的值跟着改变,变得与Range编辑栏内的一致。本例中,输入变量e的Range为-11,输入变量ec的Range为-0.10.1,输出变量u的Range为-11。其次,编辑输入和输出变量的隶属函数所对应的Name(名字)、Type(类型)、Params参数)。点击某个变量,在Members
52、hipfunctionplots下面的图表中将显示所选变量的隶属度函数曲线,默认情况每个变量有3个隶属度函数,均为trimf(三角形隶属度函数)。若所选变量所需的隶属度函数个数少于3个,则可通过Edit-RemoveSelectedMF删除多余的隶属度函数,也可通过键盘上的Delete键直接删除。若选中变量所需隶属度函数的个数多于3个,则可通过Edit-AddMFs添加所需的隶属度函数。隶属度函数个数确定好后,需要对每个隶属度函数进行编辑,依次选中各隶属度函数曲线,对其Name、Type及Params进行编辑。在本例中,对于输入变量e,其隶属度函数正好3个,从mf1到mf3,逐个编辑,将它们的
53、Name项分另U设置为negative、zero、positive,Type均设定为gaussmf,Params分别设置为0.45-1、0.450、0.451。对输入变量ec,其隶属度函数也是3个,从mf1到mf3,逐一编辑,将它们的Name项分别设置为negative、zero>positive,Type土匀设定为gaussmf,Params分另1J设置为0.045-0.1、0.0450、0.0450.1。对于输出变量u,其隶属度函数需要5个trimf,则需要通过Edit-AddMFs添加2个trimf隶属函数,从mf1到mf5,我们逐个编辑,将它们的Name项分别设置为close-f
54、ast、close-slow、no-changaopen-slow、open-fast,Tytp均设定为trimf,Params分别设置为-1.5-1-0.5、-1-0.50、-0.500.5卜00.51、0.511.5。至耻匕,便完成了隶属度函数的编辑操作。此时,对应变量e、ec和u的隶属度函数曲线在隶属度函数编辑器的GUI中分别如图6-10与图6-11所示。图6-11输出变量u的隶属函数编辑器界面图6-10输入变量e和ec隶属函数编辑器界面编辑完所有变量的隶属度函数之后,便可以进入规则编辑器来编辑规则。3 .进入规则编辑器可以通过三种途径打开规则编辑器:(1)点击FIS编辑器图表部分中间的
55、方框一规则处理器方框;(2)通过菜单Edit-Rules(3)在Matlab的CommandWindow(命令窗口)提示符下键入ruleedit(wl_control)。打开的FIS结构wl_control的规则编辑器,图6-12为规则编辑前的规则编辑器状况。规则编辑器的GUI下面的规则前件、后件栏中已给出各个变量的模糊变量值。但规则栏中是空的现在,对本例前面给出的5条控制规则进行编辑。对第(1)条规则Ifeisnegativethenuisclose-fast编辑过程如下:在输入变量e的语言变量栏中选择negative,在输入变量ec的语言变量栏中选择none,用Connection复选框中and进行连接,权值Weight设定默认值1,在输出变量u的语言变量栏中选择close-fast。规则的前件及后件都设定好之后,按Addrule按钮,便在规则栏中加入了第(1)条规则。对其他的规则,可以用类似步骤添加。在添加规则的过程中,如果需要用到某个语言变量相反的模糊值,则可以在该语言变量域的下面选not框。如果输入了不正确的规则,可利用Deleterule按钮删除规则,然后重新添加正确的规则,或者利用Changerule按钮修改规则。添加完规则后的规则编辑器如图6-13所示。图6-12规则编辑前的规则编辑器图6-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论