•模糊控制在MATLAB中的实现模糊工具箱内置的隶属度函数模糊逻辑工具箱中包含了11个内置的隶属度函数类型。这11个函数又由几个基函数构成:分段线性函数,高斯分布函数,S形曲线,二次和三次多项式曲线。按照MATLAB的惯例,所有隶属度函数最后的两个字母都是“mf”。Trimf----三角隶属度函数Trapmf---梯形隶属度函数Gaussmf----高斯函数Gauss2mf----曲线两侧由不同高斯曲线组合而成Gbellmf-----钟形隶属度函数Sigmf----简单sigmoidal型隶属度函数Dsigmf----差型sigmoidal隶属度函数Psigmf----积型sigmoidal隶属度函数Zmf----Z型隶属度函数smf---S型隶属度函数Pimf---π型隶属度函数MATLAB模糊逻辑工具箱2.1模糊推理过程在模糊逻辑工具箱中,可以实现两种类型的模糊推理系统:Mamdani型和Sugeno。在模糊逻辑工具箱中,模糊推理过程由5个部分构成,即输入变量的模糊化、前提中模糊算子(AND或OR)的应用、从前提到结果的蕴含关系、模糊规则结果的聚类和反模糊化。1.模糊推理过程的步骤(1)第1步:输入的模糊化(2)第2步:应用模糊算子模糊逻辑工具箱中内置了两个模糊交方法:min(最小值)和prod(乘积),同样还内置了两个模糊或方法:max(最大值)和probor(OR代数和方法)。(3)第3步:模糊推理(4)第4步:聚类输出由于决策是在对模糊推理系统中所有规则进行测试的基础上作出的,故必须以某种方式将规则结合起来以作出决策。聚类就是将表示每个规则输出的模糊集结合成一个单独的模糊集。只在反模糊化之前,才对每个输出变量进行一次聚类。聚类过程的输入是对每个规则的蕴含过程返回的截断输出函数,其输出是一个输出变量的模糊集合。工具箱有3个内置方法:max,probor和sum。(5)第5步:反模糊化反模糊化过程的输入是一个模糊集,即上一步中的聚类输出模糊集,其输出为一个单值。最常用的方法是重心计算。工具箱中有5个内置方法:重心法(centroid),二等分法(bisector),中间最大值法(middleofmaximum)(输出集最大值的平均),最大最大值法(largestofmaximum),最小最大值法(smallestofmaximum)。2.自定义模糊推理用户可以用自己的MATLAB函数代替在上面详细说明的5步中默认使用的任何函数,亦即用户可以定义自己的隶属函数、AND和OR方法、蕴含、聚类方法及反模糊化方法。2.2模糊逻辑工具箱的图形界面工具模糊逻辑工具箱有5个主要的GUI工具可以用来建立、编辑和观察模糊推理系统。FIS编辑器:处理系统的高级问题,如:有多少个输入和输出变量?其名称是什么?等等。隶属函数编辑器:用于定义与每个变量关联的隶属函数的形状。模糊规则编辑器:用于编辑规则列表,该规则列表定义了系统的行为。模糊规则观察器和输出曲面观察器:用于观察(但不能编辑)模糊推理系统。FIS编辑器如果已经存在一个模糊推理系统aaa.fis,则在工作区中键入“fuzzyaaa”可以直接用模糊逻辑工具箱打开这个模糊推理系统。如果只是要打开FIS编辑器,则在工作区中键入“fuzzy”隶属函数编辑器下面3种方式中的任何一个都可打开隶属函数编辑器:拉下edit菜单项,选定“EditMembershipFunctions…”。双击输出变量图标。在命令行键入“mfedit”。模糊规则编辑器在前面已经完成了对变量命名,同时各变量的隶属函数也有了适当的形状和名字,下面开始编辑模糊规则。有两种方法可以调用模糊规则编辑器:在FIS编辑器(同样也可在隶属函数编辑器)中的view菜单中选定“Editrules”在命令行中键入“ruleedit”模糊规则观察器模糊规则观察器的功能是可以令用户观察模糊推理图,并观察模糊推理系统的行为是否与预期的一样。要打开模糊规则观测器,可在工作区中键入“ruleview”或从FIS编辑器(同样也可以从隶属函数编辑器或模糊规则编辑器)的view菜单中选择“Viewrules”输出曲面观察器如果要看到模糊推理系统的全部输出曲面,也就是与整个输入区间相对应的整个输出区间,则需要打开模糊逻辑工具箱中的输出曲面观察器要打开输出曲面观察器,可在工作区中键入“surfview”或从FIS编辑器(同样也可以从隶属函数编辑器、模糊规则编辑器或模糊规则观察器)的View菜单中选择“Viewsurface”自定义模糊推理系统如果用户想在使用模糊逻辑工具箱时将自定义函数包括进去,那么需要遵循下面的规定,即用户提供的AND方法、OR方法、聚类方法和反模糊化方法需要与MATLAB中的max,min,或prod的工作方式相似,即,他们必须能向下运算矩阵的列.如与min函数相似,蕴含应当对矩阵一列一列地运算.a=[12;34];b=[22;22];min(a,b)ans=1222用户可以用M文件建立自己的隶属函数。(0-1之间)自定义隶属函数的限制是其参数不能超过16个。例如,要建立一个名为“custmf”的自定义隶属函数,则步骤如下:为函数建立一个M文件custmf.m,其取值在0-1间,且参数最多为16个。在隶属函数编辑器的Edit菜单选择“AddCustomMF”,弹出一个对话框。在弹出对话框的M-filefunctionname文本框中输入自定义隶属函数的M文件名“custmf”。在Parameterlist文本框中输入在自定义隶属函数中想要使用的参数矢量。在MFname文本框中对自定义隶属函数制定一个名称。这个名称必须与模糊推理系统中使用的其它任何历数函数的名称都不相同。单击该弹出对话框的“OK”按钮。2.3模糊逻辑工具箱的命令行工作方式2.3.1系统结构参数系统结构参数主要有:readfis,setfis,getfis,showfis,structure要载入一个已存在的名为“aaa.fis”的模糊推理系统,须在工作区中键入:a=readfis(‘aaa.fis’);MATLAB工作区将输出该模糊推理系统的如下信息:name(系统名称),type(推理类型),andMethod(与算子),orMethod(或算子),defuzzMethod(反模糊化方法),impMethod(蕴含算子),aggMethod(聚类算子),input(输入向量维数),output(输出向量维数),rule(模糊规则个数)函数getfis(a)与函数getfis对应的函数是setfis,使用该函数可以改变FIS的任何属性。如要改变系统的名称:a=setfis(a,’name’,’gratuity’)则将系统名称设置为gratuity.使用函数showfis(a)可以更深入地看到FIS的结构当变量a被指定为某一个模糊推理系统时,在命令行可以直接调用该模糊推理系统5个GUI的任何部分。Fuzzy(a):调出FIS编辑器Mfedit(a):调出隶属函数编辑器Ruleedit(a):调出模糊规则编辑器Ruleview(a):调出模糊规则观察器Surfview(a):调出输出曲面观察器2.3.2系统显示函数模糊逻辑工具箱在命令行中设计了3个函数,可以用它们得到高水准的模糊推理系统图形。plotfis(a)-----绘制出与FIS编辑器上相同的全系统模块图plotmf如果所有的MATLAB图形或GUI窗口都已被关闭,函数plotmf将画出与给定变量相关联的所有隶属函数。其使用格式为:plotmf(a,’input’,1)plotmf(a,’output’,1)如果5个图形化工具中的任何一个是打开的,那么调用plotmf后,隶属函数图将以GUI或MATLAB图的方式显示。gensurf-----画出给定系统输入变量中的任一个或两个与输出变量中的任一个之间的图形,该图形是二维曲线或三维曲面。2.4模糊控制器与Simulink的连接将模糊系统嵌入Simulink的步骤如下:载入模糊推理系统打开Simulink模型设定模糊控制器的输入与输出设计一模糊控制器使其超调量不超过1%,输出的上升时间0.3。步骤1.确定e,de和u的论域2.e,de和u语言变量的选取3.规则的制定4.推理方法的确定456.864.15.0228.422sssG假定被控对象的传递函数为:1.根据系统实际情况,选择e,de和u的论域erange:[-11]derange:[-0.10.1]urange:[02]2.e,de和u语言变量的选取e8个:NB,NM,NS,NZ,PZ,PS,PM,PBde7个:NB,NM,NS,Z,PS,PM,PBU7个:NB,NM,NS,Z,PS,PM,PB利用MATLAB的Toolbox工具3.模糊规则确定NBNMNSNZPZPSPMPBNBPBPBPBPMPMNMNBPMNMPBPBPSPSPMNMNBPMNSPBPMPSPSPSNMNBPSZPBPMPSZNSNMNBZPSPBPMNSNSNSNMNBNSPMPBPMNMNMNSNSNBNMPBPBPMNMNMNBNBNBNMuede4.隐含和推理方法的制定隐含采用‘mamdani’方法:‘max-min‘推理方法,即‘min‘方法去模糊方法:面积中心法。选择隶属函数的形式:三角型0.11-0.1-102也可以用viewsurf菜单命令看模糊控制器的输出量Scope2Scope1Scope3模糊逻辑工具箱输入变量的个数没有限制。但是,输入变量的个数会受到计算机内存的限制。如果输入变量的个数太多,或隶属函数的个数太多,则可能难于使用其它GUI工具来分析FIS。例如,假定已经建立了一个名为“aaa”的模糊控制器或模糊控制系统,则单击模糊逻辑工具箱5个GUI界面中任一个的File菜单,选择其中的“Savetoworkspace”,将其保存到MATLAB的工作区中;如果已建立的模糊控制器或模糊控制系统尚未命名,则选择“Savetoworkspaceas”,以“aaa”为模糊控制系统的名称将其存在MATLAB工作区。在MATLAB工作区内用命令“Simulink”建立或打开自己的Simulink仿真模型。SimulinkLibararyBrowserFuzzyLogicToolbox,其下有两个选择对象,分别为“FuzzyLogicController”和“FuzzyLogicControllerwithRuleviewer”将选项“FuzzyLogicController”或“FuzzyLogicControllerwithRuleviewer”拖到Simulink仿真系统中,双击其图标,出现如下对话框:一个FIS结构的输入变量的个数往往多于一个,但因为“FuzzyLogicController”的图标是单输入的,因此需要用到一个向量信号组合工具。SimulinkSignalRoutingMux拖到Simulink仿真系统中