智能控制讲义第六章Matlab在模糊控制中的应用.docx
《智能控制讲义第六章Matlab在模糊控制中的应用.docx》由会员分享,可在线阅读,更多相关《智能控制讲义第六章Matlab在模糊控制中的应用.docx(68页珍藏版)》请在冰豆网上搜索。
智能控制讲义第六章Matlab在模糊控制中的应用
第6章Matlab在模糊控制中的应用
Matlab(是“MatrixLaboratory”的缩写)是由美国Mathworks公司于1984年正式推出的一套高性能的科学计算软件。
针对模糊逻辑尤其是模糊控制的迅速推广应用,MathWork公司在其MATLAB版中添加了FuzzyLogic工具箱。
该工具箱由长期从事模糊逻辑和模糊控制研究与开发工作的有关专家和技术人员编制。
MATLABFuzzyLogic工具箱以其功能强大和方便易用的特点得到了用户的广泛欢迎。
模糊逻辑的创始人Zadeh教授称赞该工具箱“在各方面都给人以深刻的印象,使模糊逻辑成为智能系统的概念与设计的有效工具”。
在本章中,以Matlab6.5为开发环境,基于模糊控制工具箱(FuzzyLogicToolbox),通过一些简单直观的例子,对模糊控制系统进行分析、设计与研究,并通过对部分例子的详细说明,使读者能够初步掌握模糊逻辑工具箱的使用。
6.1模糊逻辑工具箱函数
一、模糊逻辑工具箱函数简介
Matlab的模糊逻辑工具箱函数为模糊控制系统的分析与设计提供了许多工具箱函数,它们可按主题分为如下几大类:
GUI(图形用户界面)工具、隶属度函数、FIS(模糊推理系统)数据结构管理、先进技术、Simulink仿真模块、模糊系统演示程序、其它函数。
以函数名称与对应的功能格式分别用表6-1~6-7表示。
表6-1GUI(图形用户界面)工具
函数
功能
函数
功能
anfisedit
fuzzy
mfedit
打开ANFIS编辑器的GUI
调用基本的FIS编辑器
隶属度函数编辑器
ruleedit
ruleview
surfview
规则编辑器和解析器
规则观察器和模糊推理方框图
输出曲面观察器
表6-2隶属度函数
函数
功能
函数
功能
dsigmf
gauss2mf
gaussmf
gbellmf
pimf
由两个Sigmoid型隶属度函数之差构成的隶属度函数
联合高斯型隶属度函数
高斯型隶属度函数
广义钟型隶属度函数
∏型隶属度函数
psigmf
sigmf
smf
trapmf
trimf
zmf
由两个Sigmoid型隶属度函数的积构成的隶属度函数
Sigmoid型隶属度函数
S型隶属度函数
梯型隶属度函数
三角形型隶属度函数
Z型隶属度函数
表6-3先进技术
函数
功能
函数
功能
anfis
fcm
genfis1
Sugeno型FIS的训练程序
模糊C均值聚类
不使用数据聚类的方法从数据中生成FIS结构
genfis2
subclust
使用减法聚类的方法从数据中生成FIS结构
用减法聚类的方法寻找聚类中心
表6-4FIS数据结构管理
函数
功能
函数
功能
addmf
addrule
addvar
defuzz
evalfis
evalmf
gensurf
getfis
mf2mf
newfis1
在FIS中添加隶属度函数
在FIS中添加规则
在FIS中添加变量
对隶属度函数进行反模糊化
完成模糊推理计算
通用隶属度函数的计算
生成FIS输出曲面
获取模糊系统的特性
在两个隶属度函数之间进行参数转换
建立新的FIS
parsrule
plotfis
piotmf
readfis
rmmf
revar
setfis
showfis
shoerule
writefis
模糊规则解析
绘图表示FIS
绘制给定变量的所有隶属度函数
从磁盘中装入FIS
从FIS中删除某一变量的某一隶属度函数
从FIS中删除某一变量
设置模糊系统的属性
以分行的形式显示FIS结构的所有属性
显示FIS的规则
将FIS保存到磁盘中
表6-5Simulink仿真模块
函数
功能
函数
功能
fuzblock
Simulink模糊逻辑控制器库
sffis
用于Simulink的模糊推理S-函数
表6-6其它函数
函数
功能
函数
功能
convertfis
findcluster
fuzarith
FIS结构的版本变换
模糊C均值和减法聚类交换GUI
完成模糊算术运算
mam2sug
fuzdemos
将Mamdanni型的FIS变换成Sugeno型的FIS
模糊逻辑工具箱演示程序列表
表6-7模糊系统演示程序
函数
功能
函数
功能
defuzzdm
fcdemo
gasdemo
juggler
invkine
irsfcm
去模糊方法
FCM聚类方法演示(二维)
使用减法聚类的ANFIS演示
魔球演示
机械臂的倒置
FCM聚类演示(四维)
noiedm
slbb
slcp
sltank
sltankrule
sltbu
自适应噪声消除
棒球控制
倒立摆控制
水位控制
带观测器的水位控制
卡车倒车控制
下面主要介绍GUI(图形用户界面)工具、隶属度函数、FIS数据结构管理这三类模糊逻辑工具箱的一些函数。
二、有关GUI(图形用户界面)的工具箱函数
1.anfisedit
功能:
打开ANFIS编辑器的GUI。
格式:
anfisedit(‘a’)
anfisedit(a)
anfisedit
界面:
anfisedit函数打开ANFIS编辑器的GUI如图6-1所示。
说明:
利用anfisedit函数打开ANFIS编辑器的GUI,从中可装入数据集合并训练ANFIS。
利用anfisedit('a')可从磁盘中装入名为a.fis的FIS结构文件,并打开ANFIS编辑器的GUI。
利用anfisedit(a)可按同样方式打开FIS结构变量a(只是此时的a保存在工作空间中)。
菜单项:
(1)File菜单下各子菜单
NEWFIS…:
建立新的FIS系统,可选择为Mamdani型的或者是Sugeno型的FIS系统。
此时默认的文件名为Untitled。
Importfromworkspace…:
从工作空间中装入制定的FIS结构变量。
Importfromdisk…:
从磁盘中将指定的.fis文件装入系统。
Exporttoworkspace…:
将系统保存到工作空间指定的FIS结构变量中。
Exporttodisk…:
将当前系统以自己指定的命名保存到磁盘中。
Print:
打印指定的系统内容。
Close:
关闭GUI窗口。
(2)Edit菜单项下各子菜单
Undo:
撤销最近的操作。
FISproperties…:
打开FIS编辑器。
Membershipfunctions…:
打开隶属度函数编辑器。
Rules…:
打开规则编辑器。
(3)View菜单下各子菜单
Rules…:
打开规则编辑器。
Surface…:
打开曲面观测器。
2.fuzzy
功能:
调用基本的FIS编辑器。
格式:
fuzzy
fuzzy(fismat)
界面:
fuzzy函数打开FIS编辑器的GUI如图6-2所示。
说明:
FIS编辑器可让用户方便的创建或修改FIS(模糊推理系统)的高级特性,如输入、输出变量的个数、反模糊化方法等。
FIS编辑器是FIS的高级显示,它允许用户调用各种其他的编辑器来进行FIS操作,这种接口为访问更高级的编辑器提供了方便。
FIS编辑器主要包括如下几大部分:
图表:
包括输入、输出和中心模糊规则处理器三大部分。
点击输入、输出变量框时所选框为当前变量,当前变量所对应的框为一个红色加亮的框,此时可在相应的Name文本编辑栏中对变量进行命名或对变两名进行修改。
还可以通过Edit菜单下的AddVariable…来增加输入或输出变量,对于所选得当前变量,可以用键盘上的Delete键直接删除,也可以用Edit菜单下的RemoveSelectedVariable进行删除。
双击其中的1个变量,可进入隶属度函数编辑器。
双击模糊规则处理器(输入、输出变量框之间的那个方框)可进入规则编辑器。
当规则框中没有规则时,输入、输出变量框与规则处理器框之间相连的线为虚线,有规则后变为实线。
推理方法下拉式菜单由5个下拉式菜单可用于改变模糊推理过程的5种基本推理方法:
(1)Andmethod(与方法):
可为其选择min(最小)、prod(乘积)或Custom(自定义)运算。
(2)Ormethod(或方法):
可以选择max(最大)、probor(概率方法)或Custom运算。
(3)Implication(蕴含):
可以选择min、prod或Custom运算,此方法不适应于Sugeno型的模糊推理。
(4)Aggregation(集结):
可以选择max、sum、probor或Custom运算,此方法不适应于Sugeno型的模糊推理。
(5)Defuzzication(反模糊化):
对Mamdani型模糊推理,可以选择centroid(区域重心法)、bisector(区域等分法)、mom(极大平均法)、som(极大最小法)、lom(极大最大法)或Custom;对Sugeno型的模糊推理,可以选择wtaver(加权平均)或stsum(加权求和)。
菜单项:
(1)File菜单下的子菜单:
与ANFIS编辑器中File菜单相同.
(2)Edit菜单下的子菜单:
Undo:
撤销最近的操作。
AddInputVariable:
在当前系统中增加1个输入变量。
AddOutputVariable:
在当前系统中增加1个输出变量。
RemoveSelectedVariable:
删除选中的变量。
Membershipfunctions…:
打开隶属度函数编辑器。
Rules…:
打开规则编辑器。
3.mfedit
功能:
隶属度函数编辑器。
格式:
mfedit
mfedit('a')
mfedit(a)
界面:
mfedit函数打开MF编辑器的GUI如图6-3所示。
说明:
mfedit可用于打开隶属度函数编辑器;mfedit(‘a’)可打开隶属度函数编辑器,其中包含文件a.fis的隶属度函数,通过编辑器可对其进行修改;mfedit(a)可打开保存在工作空间变量a中的FIS结构。
对于每个隶属度函数,我们可修改其名称、类型及其参数。
在隶属度函数编辑器中有11种内部的隶属度函数可供选择,当然也可以建立用户自定义的隶属度函数。
隶属度函数编辑器主要包括以下内容:
图表:
在窗口左上角的FISVariables标题下选择变量图标,此时在图形区域显示出相应的隶属度函数,点击图形区域中的曲线可选择隶属度函数。
隶属度函数种类下拉式菜单:
右下角组合框中Type标签的右面有一个下拉式菜单,其中有11种内部的隶属度函数可供选择。
系统也提供了安装用户自定义隶属度函数的选项。
菜单项:
(1)File菜单下的子菜单:
与ANFIS编辑器中File菜单相同。
(2)Edit菜单下的子菜单:
Undo:
撤销最近的操作。
AddMfs…:
在当前变量中添加隶属度函数。
AddCustomMfs…:
在当前变量中添加自定义的隶属度函数。
RemoveSelectedMf:
删除选中的隶属度函数。
RemoveAllMfs:
删除当前变量的所有隶属度函数。
FISProlperties…:
打开FIS编辑器。
Rules…:
打开规则编辑器。
(3)View菜单下的子菜单:
与ANFIS编辑器中的View菜单项相同。
4.ruleedit
功能:
规则编辑器和解析器。
格式:
ruleedit(‘a’)
ruleedit(a)
界面:
ruleedit函数打开规则编辑器的GUI如图6-4所示。
说明:
利用ruleedit(‘a’)可打开规则编辑器,从中可以查看或修改文件a.fis所对应的FIS结构中的规则。
Ruleedit(a)格式可用来打开在工作空间中已存在的名为a的FIS结构所对应的规则编辑器。
利用规则编辑器建立规则,首先应定义FIS使用的所有输入和输出变量,然后利用输入和输出变量的列表框和复选框进行选择,最后选择相应的联结方式及权值。
菜单项:
(1)File菜单下的子菜单与ANFIS编辑器中File菜单相同。
(2)Edit菜单下的子菜单
Undo:
撤销最近的操作。
FISProperties…:
打开FIS编辑器。
Membershipfunctions…:
打开隶属度函数编辑器。
(3)View菜单下的子菜单与ANFIS编辑器中的View菜单项相同。
(4)Options菜单下的子菜单
Language:
可选择不同的语言,有English(英语)、Deutsch(德语)和Francais(法语)3种。
Format:
格式选择:
Verbose(详细):
使用单词“if”、“then”、“and”或“or”等建立句子表达。
例如,规则“ifAandBthenC”。
Symbolic(符号):
利用逻辑推理符号表达。
例如下面的规则可表达为:
“A&B=>C”。
Indexed(编号):
用编号和模糊推理框图。
格式:
ruleview(‘a’)
ruleview(a)
界面:
ruleview函数打开规则观测器的GUI如图6-5所示。
说明:
利用ruleview(‘a’)可打开文件a.fis规则善的规则观测器,从中可对a.fis文件的FIS结构画出模糊推理框图,通常可显示整个推理框图,这时改变各变量的输入值,可以立即得到系统重新调整后的情况,并计算出新的输出。
ruleview(a)用于打开工作空间中已存在的变量a规则观测器。
菜单项:
(1)File菜单下的子菜单与ANFIS编辑器中File菜单相同。
(2)Edit菜单下的子菜单
Undo:
撤销最近的操作。
FISProperties…:
打开FIS编辑器。
Membershipfunctions…:
打开隶属度函数编辑器。
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菜单下的子菜单与ANFIS编辑器中File菜单相同。
(2)Edit菜单下的子菜单
Undo:
撤销最近的操作。
FISProperties…:
打开FIS编辑器。
Membershipfunctions…:
打开隶属度函数编辑器。
Rules…:
打开规则编辑器。
(3)View菜单下的子菜单
Ruleview…:
打开规则观测器。
(4)Options菜单下的子菜单
Plot:
它下面有8种绘图格式可供选择。
ColorMap:
用于选择不同的颜色方案。
Alwaysevaluate:
选中该项时,一旦对系统进行了修改,就自动进行计算并绘制出新的曲面。
再选一次可使它无效。
三、隶属度函数
在Matlab的模糊逻辑工具箱内部本身有11种隶属度函数可供用户选择,由于篇幅所限,在此不做详细介绍。
四、FIS数据结构管理函数
1.addmf
功能:
将隶属度函数加到FIS(模糊推理系统)。
格式:
a=addmf(a,’varType’,’varIndex’,’mfName’,’mfType’,’mfParams’)。
说明:
隶属度函数只能添加到MATLAB工作空间中已经建立的FIS结构中。
按隶属度函数添加的顺序将其编号,这样给变量添加的第一个隶属度函数称为该变量的1号隶属度函数,如果系统中只有1个输入变量,则不能给第2个变量添加隶属度函数。
addmf函数有6个输入变量:
(1)a:
工作空间中的FIS结构变量名;
(2)varType:
要添加的隶属度函数的变量类型(input或output);
(3)varIndex:
要添加的隶属度函数的变量编号;
(4)mfName:
新添加的隶属度函数名;
(5)mfType:
新隶属度函数的类型;
(6)mfParams:
指定隶属度函数的参数变量。
示例:
a=newfis(‘Simple’);%建立新的FIS系统
a=addvar(a,’input’,’e’,[-6,6]);%给FIS添加新的输入变量“e”
a=addmf(a,’input’,’1’,’NL’,’trapmf’,[-6,-6,-5,-3]);
a=addmf(a,’input’,’1’,’NS’,’trapmf’,[-5,-3,-2,0]);
a=addmf(a,’input’,’1’,’ZR’,’trimf’,[-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列的值决定模糊操作符的类型:
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)varBounds:
变量的取值范围。
添加的变量按其添加的顺序进行编号,这样添加到系统的第1个变量总是称为系统的输入变量1,输入与输出变量分开编号。
示例:
a=newfis(‘Simple’);%建立新的FIS系统
a=addvar(a,’input’,’e’,[-6,6]);%给FIS添加新的输入变量“e”
4.defuzz
功能:
对模糊隶属度函数进行反模糊化。
格式:
out=defuzz(x,mf,type)
说明:
defuzz(x,mf,type)可得到输入为x时隶属度函数mf的反模糊化值,其反模糊化的策略由type指定。
变量type可取:
(1)centroid:
区域重心法;
(2)bisector:
区分等分法;
(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]=evalfis(input,fismat,numPts)
说明:
evalfis函数具有下列参数。
(1)input:
指定输入的数值或矩阵。
如果输入为
矩阵时(n为输入变量维数),则evalfis将输入的每一行看作输入变量,并在输出变量output中产生
矩阵,其中每一行为输出向量,1为输出变量数。
(2)fismat:
要计算的FIS结构。
(3)numPts:
计算输入和输出隶属度函数时采用的取样点数,如果缺省,则采用缺省值101。
(4)output:
evalfis函数的输出变量-
矩阵,其中m表示输入变量数,1表示输出变量数。
(5)IRR:
输入值通过隶属度函数后的结果,这是numRules矩阵,其中numrules为规则数,n为输入变量数。
(6)ORR:
输出值通过隶属度函数后的结果,这是
,其中numRules为规则数,1为输出变量数。
这个矩阵的前numRules列对应于第1个输出,接下来的numRules列对应于第2个输出,如此等等。
(7)ARR:
沿着每个输出的取值范围已numPts取样得到的
矩阵。
只有当输入变量为行向量时,evalfis才计算可选的输出变量值。
当只有1个输出变量引用evalfis函数时,可计算出由结构fismat指定的FIS和由input指定的输出向量output。
6.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)
说明:
gensurf(fis)函数针对给定FIS的前两个输入和第一个输出绘制出曲面。
gensurf(fis,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’)
g