资源描述
,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,本幻灯片资料仅供参考,不能作为科学依据,如有不当之处,请参考专业资料。,1 MATLAB含糊逻辑工具箱介绍,2 利用含糊逻辑工具箱建立含糊推理系统,3 MATLAB含糊逻辑工具箱图形用户界面,4 基于Simulink含糊逻辑系统模块,MATLAB含糊逻辑,工具箱函数,第1页,1,针对含糊逻辑尤其是含糊控制快速推广应用,,MathWorks,企业在其,MATLAB,版中添加了,Fuzzy Logic,工具箱。该工具箱由长久从事含糊逻辑和含糊控制研究与开发工作相关教授和技术人员编制。,MATLAB Fuzzy Logic,工具箱以其功效强大和方便易用特点得到了用户广泛欢迎。含糊逻辑创始人,Zadeh,教授称赞该工具箱“在各方面都给人以深刻印象,使含糊逻辑成为智能系统概念与设计有效工具。”,第2页,2,1.1 含糊逻辑工具箱功效特点,1易于使用,含糊逻辑工具箱提供了建立和测试含糊逻辑系统一整套功效函数,包含定义语言变量及其隶属度函数、输入含糊推理规则、整个含糊推理系统管理以及交互式地观察含糊推理过程和输出结果。,1 MATLAB含糊逻辑工具箱介绍,第3页,3,2.提供图形化系统设计界面,在含糊逻辑工具箱中包含五个图形化系统设计工具,这五个设计工具是:,含糊推理系统编辑器,该编辑器用于建立含糊逻辑系统整体框架,包含输入与输出数目、去含糊化方法等;,隶属度函数编辑器,用于经过可视化伎俩建立语言变量隶属度函数;,含糊推理规则编辑器;,系统输入输出特征曲面测览器;,含糊推理过程浏览器。,第4页,4,3.支持含糊逻辑中高级技术,自适应神经含糊推理系统(ANFIS,Adaptive Neural Fuzzy Inference System);,用于模式识别含糊聚类技术;,含糊推理方法选择,用户可在广泛采取,Mamdani,型推理方法和,Sugeno,型推理方法二者之间选择。,第5页,5,4.集成仿真和代码生成功效,含糊逻辑工具箱不但能够实现Simulink无缝连接,而且经过 RealTime Workshop能够生成ANSI C源代码,从而易于实现含糊系统实时应用。,5.独立运行含糊推理机,在用户完成含糊逻辑系统设计后,能够将设计结果以,ASCII,码文件保留;利用含糊逻辑工具箱提供含糊推理机,能够实现含糊逻辑系统独立运行或者作为其它应用一部分运行。,第6页,6,5.1.2,含糊推理系统基本类型,在含糊系统中,含糊模型表示主要有两类:一类是含糊规则后件是输出量某一含糊集合,如,NB,,,PB,等,,因为这种表示比较惯用,且首次由Mamdani采取,因而称它为含糊系统标准模型或Mamdani模型表示;,另一类是含糊规则后件是输入语言变量函数,经典情况是输入变量线性组合。因为该方法是日本学者高木(,Takagi,)和关野(,Sugeno,)首先提出来,所以通常称它为含糊系统,Takagi,-,Sugeno,(高木-关野)模型,或简称为,Sugeno模型,。,第7页,7,1 基于标准模型含糊逻辑系统,在标准型含糊逻辑系统中,含糊规则前件和后件均为含糊语言值,即含有以下形式:,IF x,1,is A,1,and x,2,is A,2,andand x,n,is A,n,THEN y is B,其中A,i,(i=1,2,n)是输入含糊语言值,B是输出含糊语言值。,图5-1 基于标准模型含糊逻辑系统原理图,基于标准模型含糊逻辑系统框图如图5-1。图中含糊规则库由若干“IFTHEN”规则组成。含糊推理机在含糊推理系统中起着关键作用,它将输入含糊集合按照含糊规则映射成输出含糊集合。它提供了一个量化教授语言信息和在含糊逻辑标准下系统地利用这类语言信息普通化模式。,第8页,8,2 基于高木关野(TakagiSugeno)模型含糊逻辑系统,高木关野含糊逻辑系统是一类较为特殊含糊逻辑系统,其含糊规则不一样于普通含糊规则形式。,在高木关野含糊逻辑系统中,采取以下形式含糊规则:,IF x,1,is A,1,and x,2,is A,2,andand x,n,is A,n,THEN,其中,A,i,(i=1,2,n),是输入含糊语言值,,c,i,(i=1,2,n),是真值参数。,第9页,9,能够看出,高木-关野含糊逻辑系统输出量是准确值。这类含糊逻辑系统优点是输出量可用输入值线性组合来表示,因而能够利用参数预计方法来确定系统参数,c,i,(i=1,2,n),;同时,能够应用线性控制系统分析方法来近似分析和设计含糊逻辑系统。其缺点是规则输出部分不含有含糊语言值形式,所以不能充分利用教授控制知识,含糊逻辑各种不一样标准在这种含糊逻辑系统中应用自由度也受到限制。,第10页,10,5.1.3,含糊逻辑系统组成,前面讨论了含糊逻辑系统基本类型,标准型含糊逻辑系统应用最为广泛。在MATLAB含糊逻辑工具箱中主要针对这一类型含糊逻辑系统提供了分析和设计伎俩,但同时对高木一关野含糊逻辑系统也提供了一些相关函数。下面将以标准型含糊逻辑系统作为主要讨论对象。,第11页,11,结构一个含糊逻辑系统,首先必须明确其主要组成部分。一个经典含糊逻辑系统主要由以下几个部分组成:,(1)输入与输出语言变量,包含语言值及其隶属度函数;,(2)含糊规则;,(3)输入量含糊化方法和输出变量去含糊化方法;,(,4,)含糊推理算法。,第12页,12,针对含糊逻辑系统以上主要组成,在MATLAB含糊逻辑工具箱中结构一个含糊推理系统有以下步骤:,(1)含糊推理系统对应数据文件,其后缀为.fis,用于对该含糊系统进行存放、修改和管理;,(2)确定输入、输出语言变量及其语言值;,(3)确定各语言值隶属度函数,包含隶属度函数类型与参数;,(4)确定含糊规则;,(,5,)确定各种含糊运算方法,包含含糊推理方法、含糊化方法、去含糊化方法等。,第13页,13,5.2,利用含糊逻辑工具箱建立含糊推理系统,5.2.1 含糊推理系统建立、修改与存放管理,前面讨论了含糊推理系统主要组成部分,即一个含糊推理系统由输入、输出语言变量及其隶属度函数、含糊规则、含糊推理机和去含糊化方法等各部分组成,在,MATLAB,含糊逻辑工具箱中,把含糊推理系统各部分作为一个整体,并以文件形式对含糊推理系统进行建立、修改和存放等管理功效。表,5-1,所表示为该工具箱提供相关含糊推理系统管理函数及其功效。,第14页,14,表2-7 含糊推理系统管理函数,函 数 名,功 能,newfis(),创建新含糊推理系统,readfis(),从磁盘读出存放含糊推理系统,getfis(),取得含糊推理系统特征数据,writefis(),保留含糊推理系统,showfis(),显示添加注释了含糊推理系统,setfis(),设置含糊推理系统特征,plotfis(),图形显示含糊推理系统输入输出特征,表,5-1,含糊推理系统管理函数,第15页,15,1.创建新含糊推理系统函数newfis(),该函数用于创建一个新含糊推理系统,含糊推理系统特征可由函数参数指定,其参数个数可达7个。调用格式为,fisMat=newfis(fisName,fisType,andMethod,orMethod,impMethod,aggMethod,defuzzMethod),第16页,16,例:fisMat=newfis(mysys);getfis(fisMat),显示:Name=mysys,Type=mamdani,NumInputs=0,InLabels=,NumOutputs=0,OutLabels=,NumRules=0,AndMethod=min,OrMethod=max,ImpMethod=min,AggMethod=max,DefuzzMethod=centroid,第17页,17,2.从磁盘中加载含糊推理系统函数readfis(),调用格式,fisMat=readfis(filemame),第18页,18,比如利用以下命令可加载一个MATLAB自带关于“小费”问题含糊推理系统tipper.fis。,fisMat=readfis(tipper);getfis(fisMat);,结果显示:,Name =tipper,Type =mamdani,NumInputs=2,InLabels =,service,food,NumOutputs=1,OutLabels=,tip,NumRules=3,AndMethod=min,OrMethod=max,ImpMethod=min,AggMethod=max,DefuzzMethod=centroid,第19页,19,3.取得含糊推理系统属性函数getfis(),利用getfis()可获取含糊推理系统部分或全部特征,格式为,getfis(fisMat),getfis(fisMat,fisPropname),getfis(fisMat,varType,varIndex,varPropname);,getfis(fisMat,varType,varIndex,mf,mfIndex),getfis(fisMat,varType,varIndex,mf,mfIndex,mfPropname);,第20页,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页,21,4.将含糊推理系统以矩阵形式保留在内存中数据写入磁盘文件函数writefis(),含糊推理系统在内存中数据是以矩阵形式存放,其对应矩阵名为fisMat。当需要将含糊推理系统数据写入磁盘文件时,就可利用writefis()函数。其调用格式为,writefis(fisMat),writefis(fisMat,filename),writefis(fisMat,filename,dialog),例:,fisMat=newfis(tipper);writefis(fisMat,my_ file),第22页,22,5.以分行形式显示含糊推理系统矩阵全部属性函数showfis(),调用格式,showfis(fisMat),其中 fisMat为含糊推理系统在内存中矩阵表示。,例:fisMat=readfis(tipper);showfis(fisMat),6.设置含糊推理系统属性函数setfis(),调用格式,fisMat=setfis(fisMat,propname,newprop),fisMat=setfis(fisMat,vartype,varindex,propname,newprop),fisMat=setfis(fisMat,vartype,varindex,mf,mfindex,propname,nemeprop);,第23页,23,该函数能够有3个、5个或7个输入参数。例,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),第24页,24,7.绘图表示含糊推理系统函数plotfis(),该函数调用格式为,plotfis(fisMat),其中,fisMat为含糊推理系统对应矩阵名称。,例:fisMat=readfis(tipper);plotfis(fisMat),8.将Mamdani型含糊推理系统转换成Sugeno型含糊推理系统函数mam2sug(),函数mam2sug()可将Mamdani型含糊推理系统转换成零阶Sugeno型含糊推理系统。得到Sugeno型含糊推理系统含有常数隶属度函数,其常数值由原来Mamdani型系统得到隶属度函数质心确定,而且其前件不变,该函数调用格式为,sug_fisMat=mam2sug(mam_fisMat),例:,mam_fisMat=readfis(tipper);sug_fisMat=mam2sug(mam_fisMat),第25页,25,5.2.2 含糊语言变量及其语言值,在含糊推理系统中,教授控制知识以含糊规则形式表示。为直接反应人类自然语言含糊性特点,含糊规则前件和后件中引入语言变量和语言值概念。语言变量分为输入语言变量和输出语言变量,输入语言变量是对含糊推理系统输入变量含糊化描述,通常位于含糊规则前件中,输出语言变量是对含糊推理系统输出变量含糊化描述,通常位于含糊规则后件中。,第26页,26,语言变量含有多个语言值,每个语言值对应一个隶属度函数。语言变量语言值组成了对输入和输出空间含糊分割,含糊分割个数即语言值个数以及语言值对应隶属度函数决定了含糊分割精细化程度。含糊分割个数也决定了含糊规则个数,含糊分割数越多,控制规则数也越多。所以在设计含糊推理系统时,应在含糊分割精细程度与控制规则复杂性之间取得折衷。,第27页,27,在MATLAB含糊逻辑工具箱中,提供了向含糊推理系统添加或删除含糊语言变量及其语言值函数,如表5-2所表示。,表,5-2,添加或删除含糊语言变量函数,函 数 名,功 能,addvar(),添加含糊语言变量,rmvar(),删除含糊语言变量,第28页,28,1向含糊推理系统添加语言变量函数addvar(),调用格式,fisMat2=addvar(fisMat1,varType,varName,varBounds),例,fisMat=newfis(mysys);fisMat=addvar(fisMat,input,service,0 10),第29页,29,2.从含糊推理系统中删除语言变量rmvar(),调用格式,fisMat2=rmvar(fisMat1,varType,varIndex),当一个含糊语言变量正在被当前含糊规则集使用时,则不能删除该变量。在一个含糊语言变量被删除后,MATLAB含糊逻辑工具箱将会自动地对含糊规则集进行修改,以确保一致性。,例,fisMat=newfis(mysys);fisMat=addvar(fisMat,input,temperature,0 100);,fisMat1=rmvar(fisMat,input,1),第30页,30,5.2.3 含糊语言变量隶属度函数,每个含糊语言变量含有多个含糊语言值。含糊语言值名称通常含有一定含义,如 NB(负大)、NM(负中)、NS(负小)、ZE(零)、PS(正小)、PM(正中)、PB(正大)等。每个语言值都对应一个隶属度函数。隶属度函数可有两种描述方式,即数值描述方式和函数描述方式。数值描述方式适合用于语言变量论域为离散情形,此时隶属度函数可用向量或表格形式来表示;对于论域为连续情况,隶属度函数则采取函数描述方式。,第31页,31,在MATLAB含糊逻辑工具箱中支持隶属度函数类型有以下几个:高斯型、三角型、梯形、钟型、Sigmoid型、型以及Z型。利用工具箱中提供函数能够建立和计算上述各种类型隶属度函数。,隶属度函数曲线形状决定了对输入、输出空间含糊分割,对含糊推理系统性能有主要影响。在,MATLAB,含糊逻辑工具箱中提供了丰富隶属度函数类型支持,利用工具箱相关函数能够方便地对各类隶属度函数进行建立、修改和删除等操作,函数如表,5-3,所表示。,第32页,32,表,5-3,语言变量隶属度函数,函 数 名,功 能,plotmf(),绘制隶属度函数曲线,addmf(),添加含糊语言变量隶属度函数,rmmf(),删除隶属度函数,gaussmf(),建立高斯型隶属度函数,gauss2mf(),建立双边高斯型隶属度函数,gbellmf(),建立普通钟型隶属度函数,pimf(),建立,型隶属度函数,sigmf(),建立sigmiod型隶属度函数,trapmf(),建立梯形隶属度函数,trimf(),建立三角型隶属度函数,zmf(),建立Z型隶属度函数,mf2mf(),隶属度函数间参数转换,psigmf(),计算两个sigmiod隶属度函数之积,dsigmf(),计算两个sigmiod隶属度函数之和,第33页,33,1.绘制语言变量隶属度曲线函数plotmf(),调用格式,x,mf=plotmf(fisMat,varType,varIndex),2.向含糊推理系统语言变量添加隶属度函数addmf(),函数addmf()只能给含糊推理系统中存在某一语言变量添加隶属度函数,而不能添加到一个不存在语言变量中。某个语言变量隶属度函数(即语言值)按照添加次序加以编号,第一个添加隶属度函数被编为1号,今后依次递增。该函数调用格式为,fisMat2=addmf(fisMat1,varType,varIndex,mfName,mfType,mfParams),第34页,34,比如利用以下命令,可得如图5-2所表示隶属度函数曲线。,fisMat=newfis(mysys);,fisMat=addvar(fisMat,input,service,0 10);,fisMat=addmf(fisMat,input,1,poor,gaussmf,1.5 0);,fisMat=addmf(fisMat,input,1,good,gaussmf,1.5 5);,fisMat=addmf(fisMat,input,1,excellent,gaussmf,1.5 10);,plotmf(fisMat,input,1),第35页,35,3.从含糊推理系统中删除一个语言变量某一隶属度函数rmmf(),当一个隶属度函数正在被当前含糊推理规则使用时,则不能删除。调用格式为,fisMat2=rmmf(fisMat1,varType,varIndex,mf,mfIndex),第36页,36,4.建立高斯型隶属度函数gaussmf(),调用格式 ygaussmf(x,params),ygaussmf(x,sig c),其中 c决定了函数中心点,sig决定了函数曲线宽度。高斯型函数形状由sig和c两个参数决定,高斯函数表示式以下:,参数x用于指定变量论域。,例利用以下命令,可建立如图5-3所表示高斯型隶属度函数曲线。,x=0:0.1:10,y=gaussmf(x,2 5);,plot(x,y),xlabel(gaussmf,p=2 5),第37页,37,5.建立双边高斯型隶属度函数gauss2mf(),调用格式 y=gauss2mf(x,params),y=gauss2mf(x,sig1 c1 sig2 c2),双边高斯型函数曲线由两个中心点相同高斯型函数左、右半边曲线组合而成,其表示式以下式所表示。参数sigl,c1,sig2,c2分别对应左、右半边高斯函数宽度与中心点,c2c1。,例利用以下命令,,可建立如图5-4所,示双边高斯型隶属度函数。,x=0:0.1:10;,y=gauss2mf(x,1 3 3 4);,plot(x,y),xlabel(gauss2mf,p=1 3 3 4),第38页,38,6.建立普通钟形隶属度函数gbellmf(),调用格式 y=gbellmf(x,params),y=gbellmf(x,a b c),其中 参数x指定变量论域范围,a b c指定钟形函数形状,钟形函数表示式以下:,例利用以下命令,可建立如图5-5所表示钟形隶属度函数曲线。,x=0:0.1:10,y=gbellmf(x,2 4 6);,plot(x,y),xlabel(gbellmf,p=2 4 6),第39页,39,7.建立,型隶属度函数,pimf(),型函数是一个基于样条函数,因为其形状类似字母,而得名。该函数调用格式为:,y=pimf(x,params),y=pimf(x,a b c d),其中 参数x指定函数自变量范围,a b c d决定函数形状,a,b分别对应曲线下部左右两个拐点,b和c分别对应曲线上部左右两个拐点。,例利用以下命令,可建立如图5-6所表示,型隶属度函数曲线,x=0:0.1:10;y=pimf(x,1 4 5 10);,plot(x,y),xlabel(pimf,p=1 4 5 10),第40页,40,8.建立Sigmoid型隶属度函数sigmf(),调用格式,y=sigmf(x,params),y=sigmf(x,a c),其中 参数x用于指定变量论域范围,a c决定了Sigmoid型函数形状,其表示式以下:,Sigmoid型函数曲线含有半开形状,因而适于作为“极大”、“极小”等语言值隶属度函数。,例利用以下命令,可建立如图5-7,所表示sigmoid型隶属度函数曲线。,x=0:0.1:10;y=sigmf(x,2 4);,plot(x,y),xlabel(sigmf,p=2 4),第41页,41,9.建立梯形隶属度函数trapmf(),调用格式 y=trapmf(x,params),y=trapmf(x,a,b,c,d),其中 参数x指定变量论域范围,参数a、b、c和d指定梯形隶属度函数形状,其对应表示式以下:,例利用以下命令,可建立如图5-8所表示梯形隶属度函数曲线。,x=0:0.1:10;y=trapmf(x,1 5 7 8);,plot(x,y),xlabel(trapmf,p=1 5 7 8),第42页,42,10.建立三角形隶属度函数trimf(),调用格式 y=trimf(x,params),y=trimf(x,a,b,c),其中 参数x指定变量论域范围,参数a、b和c指定三角形函数形状,其表示式以下:,例利用以下命令,可建立如图5-9所表示三角形隶属度函数并绘制曲线。,x=0:0.1:10;y=trimf(x,3 6 8);,plot(x,y),xlabel(trimf,p=3 6 8),第43页,43,11.建立Z形隶属度函数曲线函数zmf(),调用格式,y=zmf(x,params),y=zmf(x,a,b,c),Z形函数是一个基于样条插值函数,两个参数a和b分别定义样条插值起点和终点;参数x指定变量论域范围。,例利用以下命令,可建立如图5-10所表示Z形隶属度函数曲线。,x=0:0.1:10;,y=zmf(x,3 6 8);,plot(x,y),xlabel(trimf,p=3 6 8),第44页,44,12.经过两个Sigmoid型函数乘积来结构新隶属度函数psigmf(),为了得到更符合人们习惯隶属度函数形状,能够利用两个sigmoid型函数之和或乘积来结构新隶属度函数类型,含糊逻辑工具箱中提供了对应函数,参见psigmf()和dsigmf()。调用格式,y=psigmf(x,params),y=psigmf(x,a1 c1 a2 c2),其中 参数al,c1和a2,c2分别用于指定两个Sigmoid型函数形状,参数x指定变量利用范围。新函数表示式以下:,第45页,45,例利用以下命令,由两个sigmoid型函数乘积来结构新隶属度函数,如图5-11所表示。,x=0:0.1:10;y=psigmf(x,2 3 5 8);,plot(x,y),xlabel(psigmf,p=2 3 -5 8),第46页,46,13.经过计算两个sigmoid型函数之和来结构新隶属度函数dsigmf(),调用格式 y=dsigmf(x,params),y=dsigmf(x,a1,c1,a2,c2),本函数使用方法与函数psigmf()类似,参数a1、c1和a2、c2分别用于指定两个Sigmoid型函数形状,结构得到新隶属度函数表示式为:,例利用以下命令,绘制两个sigmoid型函数之和隶属度函数曲线,如图5-12所表示。,x=0:0.1:10,y=dsigmf(x,5 2 5 7);,plot(x,y),xlabel(dsigmf,p=5 2 5 7),第47页,47,14.进行不一样类型隶属度函数之间参数转换函数mf2mf(),调用格式 outParams=mf2mf(inParams,inType,outType),其中 inParams为转换前隶属度函数参数;outParams为转换后隶属度函数参数;inType为 转换前隶属度函数类型;outType为转换后隶属度函数类型。,该函数将尽可能保持两种类型隶属度函数曲线在形状上近似,尤其是保持隶属度等于0.5处点重合。但不可防止地会丢失一些信息。所以当再次使用该函数进行反向转换时将无法得到与原来函数相同参数。,第48页,48,例利用以下命令,实现钟型隶属度函数向三角形隶属度函数转换,如图5-13所表示。,x=0:0.1:5;mfp1=1 2 3;,mfp2=mf2mf(mfp1,gbellmf,trimf);,plot(x,gbellmf(x,mfp1),x,trimf(x,mfp2),第49页,49,15.隶属度函数计算函数fuzarith(),调用格式,C=fuzarith(x,A,B,operator),其中,x为要计算隶属度函数论域;A,B为隶属度函数值;operator为含糊运算符,能够是sum(加)、sub(减)、prod(乘)和div(除)四种运算中任一个;C为A,B含糊运算后隶属度函数值。例,x=0:0.1:10;A=trapmf(x,1 3 6 8);B=trimf(x,4 7 9);,C=fuzarith(x,A,B,sum);plot(x,A,-,x,B,-,x,C,x),第50页,50,16.计算隶属度函数值evalmf(),调用格式,y=evalmf(x,myParams,myType),其中,x为要计算隶属度函数论域;myParams为隶属度函数参数值;myType为隶属度函数类型;y为隶属度函数值。,例利用以下命令,可得钟型隶属度函数计算结果曲线,如图5-14所表示。,x=0:0.1:10;myParams=2 4 6;,y=evalmf(x,myParams,gbellmf);,plot(x,y);xlabel(gbellmf,x=2 4 6),第51页,51,5.2.4 含糊规则建立与修改,在含糊推理系统中,含糊规则以含糊语言形式描述人类经验和知识,规则是否正确地反应人类教授经验和知识,是否反应对象特征,直接决定含糊推理系统性能。通常含糊规则形式是“,IF,前件,THEN,后件”,前件由对含糊语言变量语言值描述组成,如“温度较高,压力较低”。在普通含糊推理系统中,后件由对输出含糊语言变量语言值描述组成,但在高木关野含糊推理系统中,后件将输出变量表示成输入量准确值组合。含糊规则这种形式化表示是符合人们经过自然语言对许多知识描述和记忆习惯。,第52页,52,含糊规则建立是结构含糊推理系统关键。在实际应用中,初步建立含糊规则往往难以抵达良好效果,必须不停加以修正和试凑。在含糊规则建立修正和试凑过程中,应尽可能确保含糊规则完备性和相容性。在MATLAB含糊逻辑工具箱中,提供了相关对含糊规则建立和操作函数,如表5-4所表示。,表,5-4,含糊规则建立和修改函数,函 数 名,功 能,addrule(),向含糊推理系统添加含糊规则函数,parsrule(),解析含糊规则函数,showrule(),显示含糊规则函数,第53页,53,1.向含糊推理系统添加含糊规则函数addrule(),调用格式,fisMat2=addrule(fisMat1,rulelist),其中,参数fisMat1/2为填加规则前后含糊推理系统对应矩阵名称;rulelist以向量形式给出需要添加含糊规则,该向量格式有严格要求,假如含糊推理系统有m个输入语言变量和n个输出语言变量,则向量rulelist列数必须为mn2,而行数任意。在rulelist每一行中,前m个数字表示各输入变量对应隶属度函数编号,其后n个数字表示输出变量对应隶属度函数编号,第mn1个数字是该规则适用权重,权重值在0到 1之间,普通设定为 l;第mn2个数字为0或1两个值之一,假如为1则表示含糊规则前件各语言变量之间是“与”关系,假如是0则表示是“或”关系。,第54页,54,比如系统fisMat有两个输入和一个输出,其中两条含糊规则分别为:,IF x is X1 and y is Y1 THEN z is Z1,IF x is X1 and y is Y2 THEN z is Z2,则可采取以下MATLAB命令来实现以上两条含糊规则。,rulelist=1 1 1 1 1;,1 2 2 1 1;,fisMat=addrule(fisMat,rulelist),第55页,55,例5-1,假设一单输入单输出系统,输入为表征饭店侍者服务好坏值(0,10),输出为客人付给小费(0,30)。其中规则有以下三条:,IF 服务 差 THEN 小费 低,IF 服务 好 THEN 小费 中等,IF 服务 很好 THEN 小费 高,适当选择服务和小费隶属度函数后,设计一基于Mamdani模型含糊推理系统,并绘制输入/输出曲线。,解,利用以下程序,可得如图5-15所表示隶属度函数设定与输入/输出曲线。,%ex5_1.m,第56页,56,由图5-15可见,因为隶属度函数适当选择,含糊系统输出是输入严格递增函数,也就是说,付给客人小费是伴随服务质量提升而增加。当隶属度函数选取不能确保相邻含糊量交点大于0.5时(如将以上程序中服务隶属度函数参数1.8修改为1.0),输出将不是输入严格递增函数,这时小费有时可能会伴随服务质量提升而降低。,第57页,57,例5-2,假设一单输入单输出系统,输入x,0,15含糊化成三级:小、中和大;输出y,0,15由以下三条规则确定:,IF x is 小 THEN y=x,IF x is 中 THEN y=-0.5x+9,IF x is 大 THEN y=2x-18.,设计一基于Sugeno模型含糊推理系统,并绘制输入/输出曲线。,解,在利用MATLAB设计Sugeno含糊系统时,其步骤依然与建立Mamdani含糊系统相同,只是输出变量值隶属度概念被含糊规则中线性函数或是常数取代了,所以推理过程就省略蕴涵运算以及不一样含糊规则之间结果合成运算,以致在后面介绍基本含糊推理系统编辑器(fuzzy)环境里“Implication”和“Aggregation”算法选择项都不能使用。,第58页,58,不过这里对于输出依然会用到“隶属度函数”提法,只是对于Sugeno型系统输出变量“隶属度函数”不是通常含糊逻辑意义中隶属度函数,而是输出变量取值关于输入变量线性或是常值函数(姑且将它们看作单点含糊集,所以也可将系统输出看作含糊量,其隶属度函数分别采取constant和linear)。这么也就使输出变量范围无法直接确定(论域不能事先确定),因而在MATLAB中对于Sugeno型系统输出变量范围(Rang)指定是没有作用。利用以下MATLAB程序,可得如图5-16所表示输入隶属度函数设定与输入/输出曲线。,%ex5_2.m,第59页,59,由图5-16可见,因为隶属度函数适当选择,含糊系统输出曲线是光滑。从以上输入输出关系图上能够清楚地看到,经过Sugeno方法运算后,输入输出关系由原来给定三个线性函数内插为一条光滑输入输出曲线,这也说明了Sugeno系统是一个将线性方法用于非线性系统简单有效伎俩。这一点正是它被广泛使用在诸如系统控制、系统建模等领域一个主要原因。,第60页,60,2.解析含糊规则函数parsrule(),函数parsrule()对给定含糊语言规则进行解析并添加到含糊推理系统矩阵中,其调用格式,fisMat2=parsrule(fisMat1,txtRuleList,ruleFormat,lang),例,:,fisMat1=readfis(tipper);ruleTxt=if service is poor then tip is generous;,fisMat2=parsrule(fisMat1,ruleTxt,verbose);showrule(fisMat2),第61页,61,3.显示含糊规则函数showrule(),调用格式:showrule(fisMat,indexList,format,lang),本函数用于显示指定含糊推理系统含糊规则,含糊规则能够按三种方式显示,即:详述方式(verbose)、符号方式(symbolic)和隶属度函数编号方式(membership function index referencing)。第一个参数是含糊推理系统矩阵名称,第二个参数是规则编号,第三个参数是规则显示方式。规则编号能够以向量形式指定多个规则。例,fisMat=readfis(tipper);showrule(fisMat,1),fisMat=readfis(tipper);showrule(fisMat,2),fisMat=readfis(tipper);showrule(fisMat,3 1,symbolic),fisMat=readfis(tipper);showrule(fisMat,1:3,indexed),第62页,62,5.2.5 含糊推理计算与去含糊化,在建立好含糊语言变量及其隶属度值,并结构完成含糊规则之后,就可执行含糊推理计算了。含糊推理执行结果与含糊蕴含操作定义、推理合成规则、含糊规则前件部分连接词“and”操作定义等相关,因而有各种不一样算法。,当前惯用含糊推理合成规则是“极大一极小”合成规则,设R表示规则:“X为A,Y,为 B”表示含糊关系,则当X为 A时,按照“极大一极小”规则进行含糊推理结论B计算以下:,第63页,63,基于含糊蕴含操作不一样定义,人们提出了各种含糊推理算法,其中较为惯用是 Mamdani含糊推理算法和Larsen含糊推理算法。另外,对于输出为准确量一类特殊含糊逻辑系统Takagi-Sugeno型含糊推理系统,采取了将含糊推理与去含糊化结合运算操作。与其它类型含糊推理方法不一样,TakagiSugeno型含糊推理将去含糊化也结合到含糊推理中,其输出为准确量。这是由TakagiSugeno型含糊规则形式所决定,在Sugeno型含糊规则后件部分将输出量表示为输入量线性组合,零阶Sugeno型含糊规则含有以下形式。,IF x为A 且 y为B THEN z=k,其中,k为常数。,第64页,64,而一阶Sugeno型含糊规则形式以下:,IF x为A 且 y为B THEN z=p*x+q*y+r,式中 p,q,r均为常数。,对于一个由n条规则组成Sugeno型含糊推理系统,设每条规则含有下面形式:,R,i,:IF x为A,i,且y为B,i,THEN z=z,i,(i=1,2,n),则系统总输出用下式计算:,第65页,65,在MATLAB含糊逻辑工具箱中提供了相关对含糊推理计算与去含糊化函数,如表5-5所表示。,表,5-5,含糊推理计算与去含糊化函数,函 数 名,功 能,evalfis(),执行含糊推理计算函数,defuzz(),执行输出去含糊化函数,gensurf(),生成含糊推理系统输出曲面并显示函数,第66页,66,1.执行含糊推理计算函数evalfis(),该函数用于计算已知含糊系统在给定输入变量时输出值,其调用格式,output=evalfis(input,fisMat),第67页,67,例5-3,某一工业过程要依据测量温度和压力来确定阀门开启角度。假设输入温度,0,30 含糊化成两级:冷和热;压力,0,3含糊化成两级:高和正常;输出阀门开启角度增量,-10,10含糊化成三级:正、负和零。含糊规则为:,IF
展开阅读全文