模糊控制的Matlab仿真实例分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为简单起见,我们直接利用系统里已经编辑好的 模糊推理系统,在它的基础上进行修改。这里我 们采用与tank . fis中输入输出变量模糊集合完 全相同的集合隶属度函数定义,只是对模糊规则 进行一些改动,来学习模糊工具箱与仿真工具的 结合运用。对于这个问题,根据经验和直觉很显 然可以得到如下的模糊控制规则: If (水位误差小)then(阀门大小不变(权重 1 ) If (水位低) then (阀门迅速打开)(权重 1 ) If (水位高) then (阀门迅速关闭)(权重 1 )
假设是二元线性关系
用下列 MATLAB 语句可绘出下图 。
可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
用下列 MATLAB 语句可绘出下图
从上图可以看出,在增加了模糊控制规则后,系 统的动态特性得到较大改善,不但具有较短的响 应时间,而且超调量也很小。可以用 Surfview tank 命令来显示模糊控制系统的输出曲面,如图 所示。
在这个例子中,还可以用传统的 PID 控制方 法与模糊逻辑推理控制进行比较。在水箱仿真 环境主界面中将控制方法选择开关中间的 const 模块的值由由-1 改为 1 ,这时系统将用 传统的 PID 控制方法进行控制,如图所示。
输出对热水阀控制策略的模糊化分及隶属度函数
其中输入变量水温与流速的偏差与输出热水阀、冷水阀 的控制方法的经验表格如表1及表2所示。
根据这两个输出控制表,可以产生九条模糊控制规则, 如下:
系统的模糊推理运算相关定义如下:
其余例子,请各位同学自行打开研究学习。
通过Maltab命令(程序)创建和 计算模糊逻辑系统
1. Matlab模糊逻辑工具箱仿真
模糊推理系统编辑器(Fuzzy) 模糊推理系统编辑器用于设计和显示模糊推理 系统的一些基本信息,如推理系统的名称,输 入、输出变量的个数与名称,模糊推理系统的 类型、解模糊方法等。其中模糊推理系统可以 采用Mandani或Sugeuo两种类型,解模糊方法 有最大隶属度法、重心法、加权平均等。 打开模糊推理系统编辑器,在MATLAB的命令窗 (command window)内键入:fuzzy 命令,弹 出模糊推理系统编辑器界面,如下图所示。
这相当于在原有模糊系统模型上减少两条模糊 规则得到的新的模糊推理系统。 改动完成后进行仿真,观察示波器模块,可以 得到系统水位变化,如图所示。
Leabharlann Baidu
从上图的仿真控制结果曲线中可以看出上述由三 条模糊规则组成的模糊控制系统的结果并不理想, 因此可以再增加如下两条模糊控制规则: If (水位误差小且变化率为负) then (阀门缓慢 关闭)(权重 1 ) If (水位误差小且变化率为正) then (阀门缓慢 打开)(权重 1 ) 系统的输出变化曲线如下图所示。
模糊控制技术
模糊控制的Matlab仿真
用MATLAB的模糊逻辑工具箱 (Fuzzy toolbox)实现
Matlab4.2以后的版本中推出的模糊工具箱 (Fuzzy Toolbox),为仿真模糊控制系统提供了 很大的方便。 在Simulink环境下对PID控制系统进行建模是 非常方便的,而模糊控制系统与PID控制系统 的结构基本相同,仅仅是控制器不同。 对模糊控制系统的建模关键是对模糊控制器的 建模。Matlab软件提供了一个模糊推理系统 (FIS)编辑器,只要在Matlab命令窗口键入 Fuzzy就可进入模糊控制器编辑环境。
首先考虑最简单的情况,顾客总是多给总账单 的15%作为小费: 用 MATLAB 语句绘图,如下图所示。
虽然是简单的线性关 系,但这样的结果已 经基本能够反映服务 质量对小费的影响效 果了,如果考虑到顾 客所给的小费也应当 能反映食物的质量, 那么问题就在原来的 基础上扩展为:给定 两个从 0 到 10 的数 字分别代表服务和食 物的质量( 10 表示 非常好, 0 表示非常 差),这时小费与它 们之间的关系又应当 如何反映呢?
模糊逻辑工具箱仿真结果 模糊规则浏览器用于显示各条模糊控制规则对 应的输入量和输出量的隶属度函数。通过指定 输入量,可以直接的显示所采用的控制规则, 以及通过模糊推理得到相应输出量的全过程, 以便对模糊规则进行修改和优化。 所有规则填入后,选菜单View, 选择Rules,弹 出一新界面Rule Viewer,如下图所示。
在Params(参数)处,选择三角形涵盖的区间,填写三个 值,分别为三角形底边的左端点、中点和右端点在横坐标 上的值。这些值由设计者确定。
用类似的方法设置输出output的参数。比如:共有9个规 则,所以相应地有9个输出隶属函数。默认3个隶属函数, 剩下6个由设计者加入。点击Edit菜单,选 Add Custom MS„->继续填入相应参数即可。
这样的结果与实际情况还是有些不符。通常顾客都是给15%的 小费,只有服务特别好或特别不好的时候才有改变,也就是说, 希望在图形中间部分的响应平坦些,而在两端(服务好或坏) 有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用 下面 MATLAB 语句绘出的下图的情况。
Matlab模糊控制仿真演示例子
模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。 假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。 要求设计的目标是一个合适的进水口阀门的控制器, 能够根据水箱水位的实时测量结果对进水阀门进行 相应控制,使水位满足特定要求(即特定输入信 号)。一般情况下,控制器以水位偏差(理想水位 和实际水位的差值)及水位变化率作为输入,输出 的控制结果是进水阀打开或关闭的速度。
学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功 能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。 下面以模型Shower.mdl的结构作一个介绍,方便 读者更好地理解和学习这个例子。 模型Shower.mdl是一个淋浴温度及水量调节的模 糊控制系统的仿真,该模糊控制器的输入变量分 别是水流量和水温,输出变量分别是对热水阀和 冷水阀的控制方式。该问题是一个典型的经验查 表法控制示例,是 Mamdani型系统,其模糊控制 矩阵存为磁盘文件shower.fis。
多个输入时,在Edit菜单中,选Add variable„ >input,加入新的输入input,如下图所示
选择 input(选中 为红框),在 界面右边文 字输入处键 入相应的输 入名称,例 如,温度输入 用 tmpinput, 磁能 输入用 maginput,等。
隶属度函数编辑器(Mfedit) 该编辑器提供一个友好的人机图形交互环境,用 来设计和修改模糊推理系中各语言变量对应的隶 属度函数的相关参数,如隶属度函数的形状、范 围、论域大小等,系统提供的隶属度函数有三角、 梯形、高斯形、钟形等,也可用户自行定义。 双击所选input,弹出一新界面,在左下Range处 和Display Range处,填入取只范围,例如 0至9 (代表0至90)。 在右边文字文字输入Name处,填写隶属函数的名 称,例如lt或LT(代表低温)。 在Type处选择trimf(意为:三角形隶属函数曲线, triangle member function),当然也可选其它形 状。
上图表示当温度为45度、磁能为45瓦时,输出 干度为约70个单位。左右拉动界面中的两支红 线,拉到欲选的近似值,右边图顶显示相应的 干度结果。 上图中选菜单View, 选择Surface,弹出一新界 面Surface Viewer,弹出该课题结果的三维图。 如下图所示。
注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。
热水阀子系统
水量示 波器
温度示 波器 冷水阀子系统
这个仿真模型的输出是用示波器来表示的,如 图所示。通过示波器上的图形我们可以清楚地 看到温度和水流量跟踪目标要求的性能。
水温示波器
水流示波器
水温偏差区间模糊划分及隶属度函数
水流量偏差区间模糊划分及隶属度函数
输出对冷水阀控制策略的模糊化分及隶属度函数
其他例子
模型Shower.mdl―淋浴温度调节模糊控制系统仿真; 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿 真; 模型 slcpp1.mdl—定长、变长二倒摆模糊控制系 统仿真; 模型slbb.mdl―球棒模糊控制系统仿真; 模型sltbu.mdl―卡车智能模糊控制倒车系统仿真; 模型sltank2.mdl ― 用子系统封装的水箱控制仿 真。
PID控 制模块 阀门 模型 水箱 模型 仿真动 画演示
模糊控 制模块
在Matlab中仿真,可 以看到出现一个水箱 模型的仿真动画窗口。 该动画由一个S函 数”animtank.m”实 现。从动画中,可以 观察到实际系统的水 位跟随殊荣的要求水 位信号变化。
如果对S函数的实现感兴趣,可以键入命令open animtank(或edit animtank)来查看” animtank.m”文件
图中的黑箱表示一种映射规则,将服务质量映射 到小费。这个黑箱就是这一逻辑关系的核心部分, 它可以理解为各种不同的逻辑,例如模糊逻辑、 线性逻辑、专家系统、神经网络、微分方程、多 维表格查询或者随机选择器等。在上述问题中, 模糊逻辑被证明是最佳的。
在国外饭店就餐后一般需要付给侍者小费,这 是国外模糊系统的教材中一个非常经典的例子。 下面我们通过小费问题来说明模糊逻辑的作用。 “小费”问题的核心就是:多少小费是“合适” 的?我们先把问题简化,假定用从 0 —10 的 数字代表服务的质量(10 表示非常好,0 表 示非常差),小费应该给多少?这里还考虑到 问题的背景 —在美国平均的小费是餐费15%, 但具体多少随服务质量而变。
在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。
这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。 对于仿真模型系统中已经建立的水箱模块、阀门模块 以及动画仿真显示模块可以直接使用,这里我们重点 讨论与模糊推理系统设计问题相关的模糊系统变量 tank (即 MATLAB 的模糊逻辑推理系统)。在 MATLAB 命令窗口中键入命令 fuzzy tank ,就可以 开始对模糊系统 tank 进行编辑了。
模糊推理规则编辑器Ruleedit 通过隶属度函数编辑器来设计和修改 “IF...THEN”形式的模糊控制规则。由该编辑 器进行模糊控制规则的设计非常方便,它将输入 量各语言变量自动匹配,而设计者只要通过交互 式的图形环境选择相应的输出语言变量,这大大 简化了规则的设计和修改。另外,还可为每条规 则选择权重,以便进行模糊规则的优化。 选Edit菜单,选择Rules, 弹出一新界面Rule Editor. 在底部的选择框内,选择相应的 IF„AND„THEN 规则,点击Add rule 键,上部 框内将显示相应的规则。本例中用9条左右的规 则,依次加入。如下图所示:
前面介绍过如何使用图形化工具建立模糊逻辑系 统,我们也可以完全用命令行或程序段的方式来 实现。 小费问题: 实际生活中有着许多模糊的概念和逻辑方式, “给小费”问题就是一个可以用模糊逻辑来分析 的经典的例子。下图表示的是一个关于饭店的服 务质量和顾客所给小费之间的关系图,左边表示 饭店的服务质量,作为输入;右边表示顾客所给 的小费,作为输出,两者是有一定逻辑关系的。