
模糊控制的MATLAB实现具体过程(强势吐血推荐)[共62页].ppt
62页MATLAB模糊逻辑工具箱工具命令行函数(以 .m文件存放)图形交互工具(GUI-Graphical User Interface)(图形用户界面)接口仿真逻辑模块(Simulink环境)建立模糊逻辑推理系统图形交互工具箱提供的图形化工具有五类:模糊推理系统编辑器Fuzzy隶属度函数编辑器Mfedit (Membership function)模糊规则编辑器Ruleedit模糊规则观察器Ruleview模糊推理输入输出曲面视图Surfview (Surface)12⑴ 模糊推理系统编辑器Fuzzy处理最顶层构建问题,例如输入输出变量的数目、变量名等激活(进入)方法:命令窗口(command window)执行Fuzzy命令激活模糊推理系统系统编辑器 :3组成输入模糊变量图形框双击Mfedit模糊规则图形框双击Ruleedit输出模糊变量图形框双击Mfedit基本属性4基本属性包括:•模糊集合合成运算(连接词的运算)① andmin(最小法)prod(乘积法)5② ormax(最大法)prober(概率法)prober(a,b)=a+b-ab62. 蕴涵计算(Implication)minprod (乘积法)73. 输出的合成计算Aggregation(模糊规则综合采用的方法)Aggregationmaxprober (概率法)sum(求和法)prober(a,b)=a+b-ab84. 逆模糊化计算(Defuzzification)centroid(重心法)mom(平均最大隶属度法)som(最大隶属度函数中的取最小值法)bisector(面积平分法)lom(最大隶属度函数中的取最大值法)⑵ 在命令窗口键入mfedit可激活隶属度函数编辑器9MATLAB的FIS结构和存储1、FIS(模糊推理系统)结构模糊推理系统是以一种FIS的结构来表示和存储的访问方法①GUI工具②函数③结构名.成员名2、存储( .fis文件)访问readfis-读writefis-写10命令函数1、隶属度函数①函数trimf(表示triangular membership function)格式:y=trimf(x,[a b c])其中:参数x指定变量论域范围,参数a,b和c指定三角形函数的形状,该函数在b点处取最大值1,a,c点为0。
例:建立三角形隶属度函数并绘制曲线 x=0:0.1:10;y=trimf(x, [3 6 8]);plot(x,y)xlable(‘trimf,P=[3 6 8]’) 功能:建立三角形隶属度函数11②函数trapmf(trap表示trapezium梯形)格式:y=trapmf(x,[a b c d])其中:参数x指定变量论域范围,参数a,b, c和d指定梯形隶属度函数的形状,该函数在b,c点处取最大值1,a,d点为0功能:建立梯形隶属度函数例: x=0:0.1:10;y=trapmf(x, [1 5 7 8]);plot(x,y)xlable(‘trapmf,P=[1 5 7 8]’)12③ 函数gaussmf格式:y=gaussmf(x,[sig c])功能:建立高斯型隶属度函数其中:参数x指定变量论域范围,参数c决定了函数的中心点,sig决定了函数曲线的宽度σ高斯函数的表达式为:例: x=0:0.1:10;y=gaussmf(x, [2 5]);plot(x,y)xlable(‘gaussmf,P=[2 5]’)13④函数zmf 格式:y=zmf(x,[a b])功能:建立Z型隶属度函数。
说明:曲线在(a,b)之间是光滑的样条曲线,在a左段为1,b右段为0,跳跃点是(a+b)/2参数x指定变量论域范围例: x=0:0.1:10;y=zmf(x, [2 8]);plot(x,y)xlable(‘zmf,P=[2 8]’)14⑤函数smf格式:y=smf(x,[a b])功能:建立S型隶属度函数说明:曲线在(a,b)之间是光滑的样条曲线,在a左段为0,b右段为1,跳跃点是(a+b)/2参数x指定变量论域范围例: x=0:0.1:10;y=smf(x, [2 8]);plot(x,y)xlable(‘smf,P=[2 8]’)152、模糊逻辑系统输入输出变量及隶属度函数的添加①函数addvar功能:向模糊推理系统中添加语言变量格式:a=addvar(a, varType, varName, varBounds)说明:参数列表中,a为模糊推理系统对应的矩阵变量名, varType用于指定语言变量的类型为字符型(如‘input’或‘output’); varName用于指定语言变量的名; varBounds用于指定语言变量的论域范围注意:对于添加到同一个模糊推理系统的语言变量,按先后顺序自动编号,编号从1开始,逐渐递增。
对于分属于输入与输出的不同语言变量则独立地分别编号例:a=newfis(‘tipper’); //创建并返回一个新的FIS系统 a=addvar(a,’input’,’service’,[0 10]); getfis(a,’input’,1) //取得FIS的部分或全部属性16②函数addmf功能:向模糊推理系统的语言变量添加隶属度函数格式:a=addmf(a, varType, varIndex,mfName,mfType, mfParams)说明:隶属度函数只能为模糊推理系统中已经存在的某一语言变量的语言值添加隶属度函数参数列表中,a为模糊推理系统对应的矩阵变量名, varType指定语言变量类型的字符串(如‘input’或‘output’); varIndex指定语言变量编号的数字;mfName指定隶属度函数名称;mfType指定隶属度函数类型; mfParams指定隶属度函数的参数17注意:对于每个语言变量的隶属度函数按该函数被添加的顺序编号,编号从1开始,依次递增例:a=newfis(‘tipper’); a=addvar(a,’input’,’service’,[0 10]); a=addmf(a,’input’,1,’poor’,’guassmf’,[1.5 0]); a=addmf(a,’input’,1,’good’,’guassmf’,[1.5 5]); a=addmf(a,’input’,1,’excellent’,’guassmf’,[1.5 10]); plot(a,’input’,1)183、FIS系统相关操作① 函数newfis功能:创建并返回一个新的模糊推理系统。
格式:a=newfis(‘fisName’)②函数readfis功能:从磁盘中读出并返回模糊推理系统结构变量格式:Fismat=readfis(‘’)例:fismat=readfis(‘tipper’); //tipper.fis已经存在说明:打开一个由指定的数据文件(.fis),并将其加载到当前的工作空间(Workspace)中的变量Fismat中19③函数getfis功能:取得模糊推理系统的部分或全部属性格式:getfis(a) //显示系统所有属性 getfis(a,’fisprop’) //显示系统某一属性 getfis(a,’vartype’,varindex,’varprop’)例:a=readfis(‘tipper’); getfis(a)输出结果:Name=tipper Type=mamdani NumInputs=2 ………20例:getfis(a,’input’,1)注:属性为‘input’或‘output’时,后面的第三个参数指定某一个输入或输出语言变量。
输出结果:Name=service NumMFs=3 MFLabels=poor good excellent Range=[0 10]例:getfis(a,’input’,1,’name’)输出结果:service21④ 函数showfis功能:以分行的形式显示模糊推理系统矩阵的所有属性格式:showfis(fismat)⑤ 函数writefis功能:将以矩阵形式保存在内存中的模糊推理系统的数据写入磁盘文件中格式:writefis(fismat,)例:writefis(a,’my_file’) type my_22⑥ 函数setfis功能:设置、改变模糊推理系统的属性格式:FIS2=setfis(fis1,’fispropname’,newPropValue)说明:参数fis1指明模糊推理系统的名称;fispropname指明模糊推理系统的全局属性; newPropValue指明此属性的新值例:a=readfis(‘tipper’); a2=setfis(a,’DefuzzMethod’,’mom’);Defuzzification:centroid(重心法:系统默认)mom(平均最大隶属度法)som(最大隶属度函数中的取最小值法)bisector(面积平分法)lom(最大隶属度函数中的取最大值法)234、系统图形显示函数① 函数plotfis功能:绘制模糊推理系统的推理过程结构框图。
例:plotfis(‘tipper’)② 函数plotmf功能:绘制语言变量所有语言值的隶属度函数曲线格式:plotmf(fismat,varType,varIndex)说明:参数fismat指明模糊推理系统的对应矩阵变量名称;varType指明变量类型(’input’或’output’);varIndex指明输入或输出语言变量的编号例: plotmf(a,’input’,2)245、模糊规则建立①函数addrule功能:向模糊推理系统添加模糊规则格式:a=addrule(a,rulelist)说明:参数a为模糊推理系统对应的矩阵变量名称,rulelist以向量的形式给出需要添加的模糊规则如果模糊推理系统有m个输入语言变量和n个输出语言变量,则向量rulelist的列数必须为m+n+2,而行数等于需要添加的规则数目 在rulelist的每一行中,前m个数字表示各输入语言变量的语言值(隶属度函数的编号),随后的n个数字表示输出语言变量的语言值,第n+m+1个数字是该规则的权重,权重的值在0到1之间,一般设定为1;第n+m+2个数字为0或1两者之一,为1表示模糊规则各输入语言变量之间是and关系,为0则表示是or关系。
25②函数showrule格式:showrule(fis) showrule(fis,indexlist) showrule(fis,indexlist,format)说明:fis为模糊推理系统矩阵变量的名称;indexlist为规则编号,可以以向量形式指定显示多条规则;format为显示方式,有三种显示方式,即语句方式(verbose),符号方式(symbolic)和索引方式(indexed)例:showrule(a,1:2,’indexed’)输出结果:1 1,1(1):1 1 2,2(1):1266、计算模糊推理输出结果函数evalfis格式:y=evalfis(U,FIS)说明:参数U是输入数据,FIS是模糊推理矩阵U的每一行是一个特定的输入向量,Y的每一行是一个特定的输出向量 如果输入U是M*N矩阵,则系统是N输入的,返回的Y是M*L矩阵,L是系统的输出的数目例:fis=readfis(‘tipper’); out=evalfis([2 1; 4 9],fis)输出结果:out=7.0169 19.681027MATLAB模糊控制系统设计实例1一、设计目的:了解用MATLAB模糊工具箱的图形界面可视化工具实现模糊控制系统的方法。
二、系统设计要求:1、输入变量:偏差e、偏差变化率de;输出变量:u相应隶属度函数为:282、规则要求:3、反模糊化方法:平均最大隶属度函数法mom29三、设计步骤:1、进入MATLAB系统,在MATLAB命令窗口执行fuzzy命令即可激活基本模糊推理系统编辑器,首先增加一个输入变量 2、在图形界面中通过鼠标双击就能激活隶属度函数编辑器和模糊规则编辑器等相应的编辑窗口,在窗口中进行相应属性设置即可;再在模糊推理系统编辑器中设置反模糊化方法3、进入Ruleview观察器,观察模糊推理系统的输出情况四、设计结果要求1、记录模糊规则编辑器Ruleedit中索引indexed方式显示的规则2、记录Ruleview观察器中模糊推理系统的输出情况: 当e=-2,de=1时u为多少?当e=1,de=2时u为多少?30激活模糊推理系统编辑器 :3132增加一个输入变量:333435双击进入Mfedit:3637修改每个变量的论域和隶属度函数:38trimf三角形(triangular membership function)39404142trapmf(trapezium-梯形)Gaussmf(高斯型)zmf(Z型) smf(S型)NB选哪种Type?4344增加隶属度函数个数:4546PB选哪种Type?trapmf(trapezium-梯形)Gaussmf(高斯型)zmf(Z型) smf(S型)4748添加规则:4950语句表示的规则:规则显示方式:Verbose:语句Symbolic:符号Indexed:索引51索引indexed方式显示的规则: 第一条规则1 1,5(1):1是啥意思?52符号symbolic方式显示的规则: 53在FIS Editor中设置反模糊化的方法:54进入Ruleview观察器,观察模糊推理系统的输出情况:1,2,…9指的是啥?55当e=-2,de=1时u为多少?56当e=1,de=2时u为多少?57保存此FIS系统后:58双击1.fis后的命令行函数:59606162。
