模糊控制的Matlab仿真-

上传人:左****笑 文档编号:145536863 上传时间:2020-09-21 格式:PPT 页数:165 大小:2.04MB
返回 下载 相关 举报
模糊控制的Matlab仿真-_第1页
第1页 / 共165页
模糊控制的Matlab仿真-_第2页
第2页 / 共165页
模糊控制的Matlab仿真-_第3页
第3页 / 共165页
模糊控制的Matlab仿真-_第4页
第4页 / 共165页
模糊控制的Matlab仿真-_第5页
第5页 / 共165页
点击查看更多>>
资源描述

《模糊控制的Matlab仿真-》由会员分享,可在线阅读,更多相关《模糊控制的Matlab仿真-(165页珍藏版)》请在金锄头文库上搜索。

1、模糊控制技术,模糊控制的Matlab仿真,用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现,Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。 在Simulink环境下对PID控制系统进行建模是非常方便的,而模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。 对模糊控制系统的建模关键是对模糊控制器的建模。Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊控制器编辑环境。,Matlab模糊逻辑工具箱仿真,模糊推理系统编辑器(Fuzzy) 模糊推理系

2、统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。 打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如下图所示。,多个输入时,在Edit菜单中,选Add variable -input,加入新的输入input,如下图所示,选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用 tmp-input

3、, 磁能输入用 mag-input,等。,隶属度函数编辑器(Mfedit) 该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。 双击所选input,弹出一新界面,在左下Range处和Display Range处,填入取只范围,例如 0至9 (代表0至90)。 在右边文字文字输入Name处,填写隶属函数的名称,例如lt或LT(代表低温)。 在Type处选择trimf(意为:三角形隶属函数曲线,triangle member functio

4、n),当然也可选其它形状。,在Params(参数)处,选择三角形涵盖的区间,填写三个值,分别为三角形底边的左端点、中点和右端点在横坐标上的值。这些值由设计者确定。,用类似的方法设置输出output的参数。比如:共有9个规则,所以相应地有9个输出隶属函数。默认3个隶属函数,剩下6个由设计者加入。点击Edit菜单,选 Add Custom MS-继续填入相应参数即可。,模糊推理规则编辑器Ruleedit 通过隶属度函数编辑器来设计和修改“IF.THEN”形式的模糊控制规则。由该编辑器进行模糊控制规则的设计非常方便,它将输入量各语言变量自动匹配,而设计者只要通过交互式的图形环境选择相应的输出语言变量

5、,这大大简化了规则的设计和修改。另外,还可为每条规则选择权重,以便进行模糊规则的优化。 选Edit菜单,选择Rules, 弹出一新界面Rule Editor. 在底部的选择框内,选择相应的 IFANDTHEN 规则,点击Add rule 键,上部框内将显示相应的规则。本例中用9条左右的规则,依次加入。如下图所示:,模糊逻辑工具箱仿真结果 模糊规则浏览器用于显示各条模糊控制规则对应的输入量和输出量的隶属度函数。通过指定输入量,可以直接的显示所采用的控制规则,以及通过模糊推理得到相应输出量的全过程,以便对模糊规则进行修改和优化。 所有规则填入后,选菜单View, 选择Rules,弹出一新界面Rul

6、e Viewer,如下图所示。,上图表示当温度为45度、磁能为45瓦时,输出干度为约70个单位。左右拉动界面中的两支红线,拉到欲选的近似值,右边图顶显示相应的干度结果。 上图中选菜单View, 选择Surface,弹出一新界面Surface Viewer,弹出该课题结果的三维图。如下图所示。,注意将鼠标箭头放置图内,移动鼠标可得到不同角度的视图,如下图所示。,Matlab模糊控制仿真演示例子,模型sltank.mdl 使用模糊控制器对水箱水位进行控制。 假定水箱有一个进水口和一个出水口,可以通过控制一个阀门来控制流入的水量(即水位高度),但是流出的速度取决于出水口的半径(定值)和水箱底部的压力

7、(随水箱中的水位高度变化)。系统有许多非线性特性。 要求设计的目标是一个合适的进水口阀门的控制器,能够根据水箱水位的实时测量结果对进水阀门进行相应控制,使水位满足特定要求(即特定输入信号)。一般情况下,控制器以水位偏差(理想水位和实际水位的差值)及水位变化率作为输入,输出的控制结果是进水阀打开或关闭的速度。,在Matlab中仿真,可以看到出现一个水箱模型的仿真动画窗口。该动画由一个S函数”animtank.m”实现。从动画中,可以观察到实际系统的水位跟随殊荣的要求水位信号变化。,如果对S函数的实现感兴趣,可以键入命令open animtank(或edit animtank)来查看” animt

8、ank.m”文件,在Simulink编辑窗口左边的模块浏览区可以看到在水箱仿真系统中包括水箱子模型、阀门子模型及 PID 控制子模型。直接在浏览区中点击或右键点击它们,并在弹出菜单中选择 look under mask 】 ,可以看到这些模块实现的细节结构,如图 所示。,这里暂时不讨论具体的系统模型的构造问题,我们可以先在这个已经建立好的系统模型上进行修改,体验模糊逻辑与仿真环境结合使用的优势。 对于仿真模型系统中已经建立的水箱模块、阀门模块以及动画仿真显示模块可以直接使用,这里我们重点讨论与模糊推理系统设计问题相关的模糊系统变量 tank (即 MATLAB 的模糊逻辑推理系统)。在 MAT

9、LAB 命令窗口中键入命令 fuzzy tank ,就可以开始对模糊系统 tank 进行编辑了。,为简单起见,我们直接利用系统里已经编辑好的模糊推理系统,在它的基础上进行修改。这里我们采用与tank . fis中输入输出变量模糊集合完全相同的集合隶属度函数定义,只是对模糊规则进行一些改动,来学习模糊工具箱与仿真工具的结合运用。对于这个问题,根据经验和直觉很显然可以得到如下的模糊控制规则: If (水位误差小)then(阀门大小不变(权重 1 ) If (水位低) then (阀门迅速打开)(权重 1 ) If (水位高) then (阀门迅速关闭)(权重 1 ),这相当于在原有模糊系统模型上减

10、少两条模糊规则得到的新的模糊推理系统。 改动完成后进行仿真,观察示波器模块,可以得到系统水位变化,如图所示。,从上图的仿真控制结果曲线中可以看出上述由三条模糊规则组成的模糊控制系统的结果并不理想,因此可以再增加如下两条模糊控制规则: If (水位误差小且变化率为负) then (阀门缓慢关闭)(权重 1 ) If (水位误差小且变化率为正) then (阀门缓慢打开)(权重 1 ) 系统的输出变化曲线如下图所示。,从上图可以看出,在增加了模糊控制规则后,系统的动态特性得到较大改善,不但具有较短的响应时间,而且超调量也很小。可以用 Surfview tank 命令来显示模糊控制系统的输出曲面,如

11、图所示。,在这个例子中,还可以用传统的 PID 控制方法与模糊逻辑推理控制进行比较。在水箱仿真环境主界面中将控制方法选择开关中间的 const 模块的值由由-1 改为 1 ,这时系统将用传统的 PID 控制方法进行控制,如图所示。,其他例子,模型Shower.mdl淋浴温度调节模糊控制系统仿真; 模型slcp.mdl单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl变长度倒摆小车模糊控制系统仿真; 模型 slcpp1.mdl定长、变长二倒摆模糊控制系统仿真; 模型slbb.mdl球棒模糊控制系统仿真; 模型sltbu.mdl卡车智能模糊控制倒车系统仿真; 模型sltank2.mdl 用子

12、系统封装的水箱控制仿真。,学习 MATLAB 仿真工具的一个快速有效的方法就是学习示例模型,通过看懂这些模型和模块的功能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。 下面以模型Shower.mdl的结构作一个介绍,方便读者更好地理解和学习这个例子。 模型Shower.mdl是一个淋浴温度及水量调节的模糊控制系统的仿真,该模糊控制器的输入变量分别是水流量和水温,输出变量分别是对热水阀和冷水阀的控制方式。该问题是一个典型的经验查表法控制示例,是 Mamdani型系统,其模糊控制矩阵存为磁盘文件shower.fis。,这个仿真模型的输出是用示波器来表示

13、的,如图所示。通过示波器上的图形我们可以清楚地看到温度和水流量跟踪目标要求的性能。,水温示波器,水流示波器,水温偏差区间模糊划分及隶属度函数,水流量偏差区间模糊划分及隶属度函数,输出对冷水阀控制策略的模糊化分及隶属度函数,输出对热水阀控制策略的模糊化分及隶属度函数,其中输入变量水温与流速的偏差与输出热水阀、冷水阀的控制方法的经验表格如表1及表2所示。,根据这两个输出控制表,可以产生九条模糊控制规则,如下:,系统的模糊推理运算相关定义如下:,其余例子,请各位同学自行打开研究学习。,通过Maltab命令(程序)创建和计算模糊逻辑系统,前面介绍过如何使用图形化工具建立模糊逻辑系统,我们也可以完全用命

14、令行或程序段的方式来实现。 小费问题: 实际生活中有着许多模糊的概念和逻辑方式,“给小费”问题就是一个可以用模糊逻辑来分析的经典的例子。下图表示的是一个关于饭店的服务质量和顾客所给小费之间的关系图,左边表示饭店的服务质量,作为输入;右边表示顾客所给的小费,作为输出,两者是有一定逻辑关系的。,图中的黑箱表示一种映射规则,将服务质量映射到小费。这个黑箱就是这一逻辑关系的核心部分,它可以理解为各种不同的逻辑,例如模糊逻辑、线性逻辑、专家系统、神经网络、微分方程、多维表格查询或者随机选择器等。在上述问题中,模糊逻辑被证明是最佳的。,在国外饭店就餐后一般需要付给侍者小费,这是国外模糊系统的教材中一个非常

15、经典的例子。下面我们通过小费问题来说明模糊逻辑的作用。 “小费”问题的核心就是:多少小费是“合适”的?我们先把问题简化,假定用从 0 10 的数字代表服务的质量(10 表示非常好,0 表示非常差),小费应该给多少?这里还考虑到问题的背景 在美国平均的小费是餐费15,但具体多少随服务质量而变。,首先考虑最简单的情况,顾客总是多给总账单的15作为小费:,用 MATLAB 语句绘图,如下图所示。,虽然是简单的线性关系,但这样的结果已经基本能够反映服务质量对小费的影响效果了,如果考虑到顾客所给的小费也应当能反映食物的质量,那么问题就在原来的基础上扩展为:给定两个从 0 到 10 的数字分别代表服务和食

16、物的质量( 10 表示非常好, 0 表示非常差),这时小费与它们之间的关系又应当如何反映呢?,假设是二元线性关系,用下列 MATLAB 语句可绘出下图 。,可以看到,如果不考虑服务质量因素比食物质量因素对于小费的支付占有更大的比重,上面的关系图形已经能够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 。这里可以设定权重因子:,用下列 MATLAB 语句可绘出下图,这样的结果与实际情况还是有些不符。通常顾客都是给15的小费,只有服务特别好或特别不好的时候才有改变,也就是说,希望在图形中间部分的响应平坦些,而在两端(服务好或坏)有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用下面 MATLAB 语句绘出的下图的情况。,上图没有考虑食物质量的影响,我们加入这个因素后,扩展为三维的,就有如下的结果:,用下列 MATLAB 语句可绘出图,现在的结果比较好了,可是函数看起来有点复杂,而且程序也越来越长,将来不便于修改和增加新的规则及排除检查错误。对于不清楚设计过程的人来说,设计人员的思维是不容易被理解的。 模糊系统可以很好地结合人类的自然语言。对于小费问题

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号