第6章 Matlab在模糊控制中的应用
Matlab(是“Matrix Laboratory”的缩写)是由美国Mathworks公司于1984年正式推出的一套高性能的科学计算软件。针对模糊逻辑尤其是模糊控制的迅速推广应用,MathWork公司在其MATLAB版中添加了Fuzzy Logic工具箱。该工具箱由长期从事模糊逻辑和模糊控制研究与开发工作的有关专家和技术人员编制。MATLAB Fuzzy Logic 工具箱以其功能强大和方便易用的特点得到了用户的广泛欢迎。模糊逻辑的创始人Zadeh教授称赞该工具箱“在各方面都给人以深刻的印象,使模糊逻辑成为智能系统的概念与设计的有效工具”。
在本章中,以Matlab6.5为开发环境,基于模糊控制工具箱(Fuzzy Logic Toolbox),通过一些简单直观的例子,对模糊控制系统进行分析、设计与研究,并通过对部分例子的详细说明,使读者能够初步掌握模糊逻辑工具箱的使用。
6.1 模糊逻辑工具箱函数
一、模糊逻辑工具箱函数简介
Matlab的模糊逻辑工具箱函数为模糊控制系统的分析与设计提供了许多工具箱函数,它们可按主题分为如下几大类:GUI(图形用户界面)工具、隶属度函数、FIS(模糊推理系统)数据结构管理、先进技术、Simulink仿真模块、模糊系统演示程序、其它函数。以函数名称与对应的功能格式分别用表6-1~6-7表示。
表6-1 GUI(图形用户界面)工具 函 数 anfisedit fuzzy mfedit 函 数 dsigmf gauss2mf gaussmf gbellmf pimf 函 数 anfis fcm genfis1 功 能 打开ANFIS编辑器的GUI 调用基本的FIS编辑器 隶属度函数编辑器 功 能 由两个Sigmoid型隶属度函数之差构成的隶属度函数 联合高斯型隶属度函数 高斯型隶属度函数 广义钟型隶属度函数 ∏型隶属度函数 功 能 Sugeno型FIS的训练程序 模糊C均值聚类 不使用数据聚类的方法从数据中生成FIS结构 函 数 ruleedit ruleview surfview 函 数 psigmf sigmf smf trapmf trimf zmf 函 数 genfis2 subclust 功 能 规则编辑器和解析器 规则观察器和模糊推理方框图 输出曲面观察器 功 能 由两个Sigmoid型隶属度函数的积构成的隶属度函数 Sigmoid型隶属度函数 S 型隶属度函数 梯型隶属度函数 三角形型隶属度函数 Z型隶属度函数 功 能 使用减法聚类的方法从数据中生成FIS结构 用减法聚类的方法寻找聚类中心 表6-2 隶属度函数 表6-3 先进技术
1
表6-4 FIS数据结构管理 函 数 addmf addrule addvar defuzz evalfis evalmf gensurf getfis mf2mf newfis1 函 数 fuzblock 函 数 convertfis findcluster fuzarith 函 数 defuzzdm fcdemo gasdemo juggler invkine irsfcm 功 能 在FIS中添加隶属度函数 在FIS中添加规则 在FIS中添加变量 对隶属度函数进行反模糊化 完成模糊推理计算 通用隶属度函数的计算 生成FIS输出曲面 获取模糊系统的特性 在两个隶属度函数之间进行参数转换 建立新的FIS 功 能 Simulink模糊逻辑控制器库 功 能 FIS结构的版本变换 模糊C均值和减法聚类交换GUI 完成模糊算术运算 功 能 去模糊方法 FCM聚类方法演示(二维) 使用减法聚类的ANFIS演示 魔球演示 机械臂的倒置 FCM聚类演示(四维) 函 数 parsrule plotfis piotmf readfis rmmf revar setfis showfis shoerule writefis 功 能 模糊规则解析 绘图表示FIS 绘制给定变量的所有隶属度函数 从磁盘中装入FIS 从FIS中删除某一变量的某一隶属度函数 从FIS中删除某一变量 设置模糊系统的属性 以分行的形式显示FIS结构的所有属性 显示FIS的规则 将FIS保存到磁盘中 表6-5 Simulink仿真模块
函 数 sffis 函 数 mam2sug 功 能 用于Simulink的模糊推理S-函数 功 能 将Mamdanni型的FIS变换成Sugeno型的FIS 表6-6 其它函数 fuzdemos 模糊逻辑工具箱演示程序列表 表6-7 模糊系统演示程序 函 数 noiedm slbb slcp sltank sltankrule sltbu 功 能 自适应噪声消除 棒球控制 倒立摆控制 水位控制 带观测器的水位控制 卡车倒车控制
下面主要介绍GUI(图形用户界面)工具、隶属度函数、FIS数据结构管理这三类模糊逻辑工具箱的一些函数。
二、有关GUI(图形用户界面)的工具箱函数 1. anfisedit
功能:打开ANFIS编辑器的GUI。 格式:anfisedit(?a?) anfisedit(a) anfisedit
2
界面:anfisedit函数打开ANFIS编辑器的GUI如图6-1所示。
说明:利用anfisedit函数打开ANFIS编辑器的GUI,从中可装入数据集合并训练ANFIS。利用anfisedit('a')可从磁盘中装入名为a.fis的FIS结构文件,并打开ANFIS编辑器的GUI。利用anfisedit(a)可按同样方式打开FIS结构变量a(只是此时的a保存在工作空间中)。
菜单项:
(1)File菜单下各子菜单 NEW FIS…:建立新的FIS系统,可选择为Mamdani型的或者是Sugeno型的FIS系统。此时默认的文件名为Untitled。
Import from workspace…:从
工作空间中装入制定的FIS结构变量。
Import from disk…:从磁盘中
将指定的 .fis文件装入系统。
图6-1 ANFIS编辑器的GUI Export to workspace…:将系统保存到工作空间指定的FIS结构变量中。 Export to disk…:将当前系统以自己指定的命名保存到磁盘中。 Print:打印指定的系统内容。 Close:关闭GUI窗口。 (2)Edit菜单项下各子菜单 Undo:撤销最近的操作。
FIS properties…:打开FIS编辑器。
Membership functions…:打开隶属度函数编辑器。 Rules…:打开规则编辑器。 (3)View菜单下各子菜单 Rules…:打开规则编辑器。 Surface…:打开曲面观测器。 2. fuzzy
功能:调用基本的FIS编辑器。 格式:fuzzy fuzzy(fismat)
界面:fuzzy函数打开FIS编辑器的GUI如图6-2所示。
3
说明:FIS编辑器可让用户方便的创建或修改FIS(模糊推理系统)的高级特性,如输入、输出变量的个数、反模糊化方法等。
FIS编辑器是FIS的高级显示,它允许用户调用各种其他的编辑器来进行FIS操作,这种接口为访问更高级的编辑器提供了方便。FIS编辑器主要包括如下几大部分:
图表:包括输入、输出和中心模糊规则处理器三大部分。点
图6-2 基本的FIS编辑器 击输入、输出变量框时所选框为当前变量,当前变量所对应的框为一个红色加亮的框,此时可在相应的Name文本编辑栏中对变量进行命名或对变两名进行修改。还可以通过Edit菜单下的Add Variable…来增加输入或输出变量,对于所选得当前变量,可以用键盘上的Delete键直接删除,也可以用Edit菜单下的Remove Selected Variable进行删除。双击其中的1个变量,可进入隶属度函数编辑器。双击模糊规则处理器(输入、输出变量框之间的那个方框)可进入规则编辑器。当规则框中没有规则时,输入、输出变量框与规则处理器框之间相连的线为虚线,有规则后变为实线。
推理方法下拉式菜单由5个下拉式菜单可用于改变模糊推理过程的5种基本推理方法:
(1) And method(与方法):可为其选择min(最小)、prod(乘积)或Custom(自定义)运算。
(2) Or method(或方法):可以选择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菜单下的子菜单:
4
Undo:撤销最近的操作。
Add Input Variable:在当前系统中增加1个输入变量。 Add Output Variable:在当前系统中增加1个输出变量。 Remove Selected Variable:删除选中的变量。 Membership functions…:打开隶属度函数编辑器。 Rules…:打开规则编辑器。 3. mfedit
功能:隶属度函数编辑器。 格式:mfedit mfedit('a') mfedit(a)
界面:mfedit函数打开MF编辑器的GUI如图6-3所示。 说明:mfedit可用于打开隶属度函数编辑器;mfedit(?a?)可打开隶属度函数编辑器,其中包含文件a.fis的隶属度函数,通过编辑器可对其进行修改;mfedit(a)可打开保存在工作空间变量a中的FIS结构。对于每个隶属度函数,我们可修改其名称、类型及其参数。在隶属度函数编辑器中有11种内部的隶属度函数可供选择,当然也可以建立用户自定义的隶属度函数。隶属度函数编辑器主要包括以下内容:
图表:在窗口左上角的FIS Variables标题下选择变量图标,此时在图形区域显示出相应的隶属度函数,点击图形区域中的曲线可选择隶属度函数。
隶属度函数种类下拉式菜单:右下角组合框中Type标签的右面有一个下拉式菜单,其中有11种内部的隶属度函数可供选择。系统也提供了安装用户自定义隶属度函数的选项。
菜单项:
(1)File 菜单下的子菜单:与ANFIS编辑器中File菜单相同。 (2)Edit菜单下的子菜单: Undo:撤销最近的操作。
Add Mfs…:在当前变量中添加隶属度函数。
5
图6-3 隶属度函数编辑器