Matlab的Fuzzy工具箱实现模糊控制rulelist的确定_第1页
Matlab的Fuzzy工具箱实现模糊控制rulelist的确定_第2页
Matlab的Fuzzy工具箱实现模糊控制rulelist的确定_第3页
Matlab的Fuzzy工具箱实现模糊控制rulelist的确定_第4页
Matlab的Fuzzy工具箱实现模糊控制rulelist的确定_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、                                          李会先摘  要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直

3、接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。 关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试  Abstract:This article discuss a skill that make a translation from fuzzy logic system to L

4、ookup 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 fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill b

5、y 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 

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

7、模糊逻辑推理系统是输入变量空间到输出变量空间的一种映射,而查询表也是实现输入变量空间到输出变量空间的一种映射,它们只不过是可实现非线性映射的两种方法而已。当通过Simulink/Fuzzy Logic Toolbox实现了一个模糊推理系统,不妨把它看成一个黑箱按系统辩识的思路来测试它,这时我们只关心它的输入与输出,每当在这个黑箱的输入端馈入一个输入,那么它的输出就相应有一个输出响应,能否在这个黑箱输入端送入所有输入变量的可能组合来观测输出呢?答案是肯定的,查询表的构造正需要这些输入输出数据组,有了这些数据,建立一个查询表就简单了。一般来说输入变量有一定义范围,计算机的A/D变换和模糊系统模糊化

8、处理时都存在量化过程,在这个黑箱的输入端送入的测试变量值当然也是离散化了的,一个两变量的系统,如果每个变量被离散化为10个值,那么总共就需要100次测试,随着系统变量的增加或量化等级的提高,需做的输入测试成级数快数增长,借助与MATLAB里的系统测试工具,可以快速做这类测试并收集系统输出数据。 2.   系统测试准备  下面以MATLAB下的一简单的模糊控制演示系统为例来阐述把模糊逻辑转化为查询表的过程。      2.1 准备模糊控制系统模型      在MATL

9、AB的Fuzzy Logic下打开Water Level Control in a Tank(水槽水位控制),另保存到一个不同的目录下,名字为sltankrule,该演示Simulink模型如下:                            图1 水槽水位模糊控制系统该演示模型目的比较模糊控制和PID控制水位的效果,其中Fuzz

10、y Controller with Ruleviever模块里的tank模糊推理系统已经做好了,这里不在熬述,在其两个输入中,水位误差输入变量范围是-1 1,水位变化率输入变量范围是-0.1 0.1,输出变量阀门开度范围是-1 1。 2.2 准备模糊控制系统测试模型把这个模型修改成如下样字,另存为一个文件名,比如sltankruletotest。                     

11、       图2 水槽水位模糊控制系统测试模型 修改成这种样字后,A、B分别模拟该模糊系统水位误差输入、水位变化率,Out1模拟阀门的开度,注意把Simulation Stop Time设置为0.02。2.3 准备查询表模型在Simulink下建一个二维查询表模型,另存为一个文件名,比如FuzzyLookup,这样做是为了以后查询表调试好后,可用Simulink的代码生产工具把它生成C代码,样子如下:           &

12、#160;                       图3 查询表模型 3.  系统测试操作模型切换到sltankruletotest ,点击ToolsSytemTest样子如下:               

13、;                            图4 系统测试设置1在系统测试main Test里加入Simulink组件,该组件Mappings下的Define Model overrides属性项可以把Simulink模型的输入参数映射到用户自定义的测试向量,该组件Mappings下的Define Map Simu

14、link Data to Test Variables 属性项把Simulink模型的输出参数映射到用户自定义的测试变量,这里把被测试模糊模型sltankruletotest里的A、B映射到自定义测试向量TestVector1、TestVector2,TestVector1定义为-1:0.2 : 1、 TestVector2定义为-0.1:0.01 :0.1,模糊模型输出out1映射到自定义测试变量st_signal.最后选择系统测试环境Test Browser下的Save Results项,设置成下面的样子:        

15、;                              图5 系统测试设置2 在SystemTest环境下,点击Run,开始系统测试,系统进行迭代测试,测试结束后点击FileSave Test Results as保存测试结果在T.mat文件下,以备后用,测试结束后,可以查看如下系统输入输出曲面结果:&

16、#160;                  图6 水槽水位模糊系统测试输入输出结果界面切换到MATLAB主界面,点击File/Open,打开T.mat,在命令窗下键入命令whos,会看到如下结构变量:stresults  1x1  2268  struct,该结构保存了模型sltankruletotest的输入变量的测试数据,输出变量响应数据,它们分别是:两输入测试向量数据组:一输出向量数据组:可以在MA

17、TLAB命令行键入以上命令看这些变量具体数据内容。界面切换到FuzzyLookup,双击LookupTable (2-D),界面属性设置如下:                       图7 查询表模块参数设置再点击该属性窗上的Edit,Simulink自动生成如下样式的表格:        &#

18、160;                             图8 查询表模块数据查询表生成后样子如下:                 

19、0;        图9 生成查询表模块外观4.  用查询表替代模糊控制器测试水位控制效果把生成的查询表考贝到sltankrule,替换掉原来的模糊推理组件,样子如下:                             &#

20、160;  图10 用查询替换模糊控制器后的控制系统查询表采用interplolation-extrapolstion查寻方法,现在再仿真该水位控制系统,通过看水位控制动画表示,查寻表水位的控制和原来的模糊规则控制效果已经相当,如果换一种查询表查询方法,比如use input nearest查寻方法,控制效果就差了,究其原因是在测试环节我们的测试向量量化等级不足所致,如果把测试向量修改一下,比如:TestVector1定义为-1:0.08 : 1、 TestVector2定义为-0.1:0.01 :0.1再做测试收集数据,生成查询表,那么查询表无论采用那一种查询方法,水位的控制效果都

21、很好了,这时查询表表格变大了些。获得这个表格后,对于嵌入式系统,即使用汇编语言写出该表的查询程序也是很容易了。5. 总结本文讲述了在MATLAB 环境下,把模糊逻辑系统转化为查询表的一种方法,这种方法简单易行,查询表控制也达到了模糊控制的同样效果,按以上思路,也容易理解在MATLAB 下,用其它方法建立的部分系统模型,如果有必要的话,也可使用同样的的方法把它转化成查询表,从工程角度出发,这种方法使得工程技术人员在产品设计中轻松实现模糊逻辑建模仿真到实际应用的连贯设计流程。Matlab 的 Fuzzy 工具箱实现模糊控制(rulelist的确定) 用 Matlab 的 Fuzzy 工具

22、箱实现模糊控制- -用 Matlab 中的 Fuzzy 工具箱做一个简单的模糊控制,流程如下:1、创建一个 FIS (Fuzzy Inference System ) 对象,a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)一般只用提供第一个参数即可,后面均用默认值。2、增加模糊语言变量a = addvar(a,'varType','varName',varBounds)模糊变量有两类:input 和 output。在每增加模糊变量,都会按顺序分配一个

23、index,后面要通过该 index 来使用该变量。3、增加模糊语言名称,即模糊集合。a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。参数 mfType 即隶属度函数(Membership Functions),它可以是 Gaussmf、trimf、trapmf等,也可以是自定义的函数。每一个语言名称也会有一个 index,按加入的先后顺序得到,从 1 开始。4、增加控制规则,即模糊推理的规则。a = addrule(a,ruleList)其中 ruleList 是一个矩阵,每一行为一条规则,他们之间是 ALSO 的关系。假定该 FIS 有 N 个输入和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论