智能控制讲义第六章Matlab在模糊控制中的应用.docx

上传人:b****3 文档编号:12914702 上传时间:2023-04-22 格式:DOCX 页数:68 大小:1.64MB
下载 相关 举报
智能控制讲义第六章Matlab在模糊控制中的应用.docx_第1页
第1页 / 共68页
智能控制讲义第六章Matlab在模糊控制中的应用.docx_第2页
第2页 / 共68页
智能控制讲义第六章Matlab在模糊控制中的应用.docx_第3页
第3页 / 共68页
智能控制讲义第六章Matlab在模糊控制中的应用.docx_第4页
第4页 / 共68页
智能控制讲义第六章Matlab在模糊控制中的应用.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

智能控制讲义第六章Matlab在模糊控制中的应用.docx

《智能控制讲义第六章Matlab在模糊控制中的应用.docx》由会员分享,可在线阅读,更多相关《智能控制讲义第六章Matlab在模糊控制中的应用.docx(68页珍藏版)》请在冰豆网上搜索。

智能控制讲义第六章Matlab在模糊控制中的应用.docx

智能控制讲义第六章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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1