Matlab 的 Fuzzy 工具箱实现模糊控制(rulelist的确定)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

引用如何在MATLAB下把模糊推理系统转化为查询表(原创) Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅

引用

foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)

李会先

摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效

果与模糊推理模块在线推理控制是一致的。

关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试

Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fu zzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is very

well.

Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest

1. 引言

在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。在MATLAB里,还没有把模糊推理系统直接转化为查询表的工具,尽管Fuzzy Logic 提供的gensurf(FIS)指令可生成响应面的数据,但用这种方法获得的数据生成查询表控制效果不理想,借助于MATLAB下的系统测试工具是另一种实现这一目标的方法。因为查询表用于一些廉价的嵌入式系统效率比较高,也节省系统资源,所以在MATLAB下实现这种转化是非常有意义的。

我们知道,模糊逻辑推理系统是输入变量空间到输出变量空间的一种映射,而查询表也是实现输入变量空间到输出变量空间的一种映射,它们只不过是可实现非线性映射的两种方法而已。当通过Simulink/Fuzzy Logic Toolbox实现了一个模糊推理系统,不妨把它看成一个黑箱按系统辩识的思路来测试它,这时我们只关心它的输入与输出,每当在这个黑箱的输入端馈入一个输入,那么它的输出就相应有一个输出响应,能否在这个黑箱输入端送入所有输入变量的可能组合来观测输出呢?答案是肯定的,查询表的构造正需要这些输入输出数据组,有了这些数据,建立一个查询表就简单了。一般来说输入变量有一定义范围,计算机的A/D变换和模糊系统模糊化处理时都存在量化过程,在这个黑箱的输入端送入的测试变量值当然也是离散化了的,一个两变量的系统,如果每个变量被离散化为10个值,那么总共就需要100次测试,随着系统变量的增加或量化等级的提高,需做的输入测试成级数快数增长,借助与MATLAB里的系统测试工具,可以快速做这类测试并收集系统输出数据。

2. 系统测试准备

下面以MATLAB下的一简单的模糊控制演示系统为例来阐述把模糊逻辑转化为查询表的过程。

2.1 准备模糊控制系统模型

在MATLAB的Fuzzy Logic下打开Water Level Control in a Tank(水槽水位控制),另保存到一个不同的目录下,名字为sltankrule,该演示Simulink模型如下:

图1 水槽水位模糊控制系统

该演示模型目的比较模糊控制和PID控制水位的效果,其中Fuzzy Controller with Ruleviever模块里的tank模糊推理系统已经做好了,这里不在熬述,在其两个输入中,水位误差输入变量范围是[-1 1],水位变化率输入变量范围是[-0.1 0.1],输出变量阀门开度范围是[-1 1]。

2.2 准备模糊控制系统测试模型

把这个模型修改成如下样字,另存为一个文件名,比如sltankruletotest。

图2 水槽水位模糊控制系统测试模型

修改成这种样字后,A、B分别模拟该模糊系统水位误差输入、水位变化率,Out1模拟阀门的开度,注意把Simulation Stop Time设置为0.02。

2.3 准备查询表模型

在Simulink下建一个二维查询表模型,另存为一个文件名,比如FuzzyLookup,这样做是为了以后查询表调试好后,可用Simulink的代码生产工具把它生成C代码,样子如下:

图3 查询表模型

3. 系统测试操作

模型切换到sltankruletotest ,点击Tools\SytemTest…样子如下:

相关文档
最新文档