Matlab Fuzzy Toolbox 的认识与使用(7月6 ,7,8)

模糊控制器的设计

在模糊控制的设计中,利用matlab的中的模糊控制工具可以很方便地进行输入以及输出的变量的定义,云烟变量隶属函数的定义,模糊控制规则的定义及输入输出预览。它集成了FIS编辑器,隶属函数编辑器,模糊规则控制器,骨折浏览器和输出预览器的可视化工具。

FIS编辑器

在这里插入图片描述
FIS编辑器的界面入上图所示,设计这在该编辑器中设置模糊控制器的模糊算子,输入输出变量的个数,模糊变量的名称及解模糊化的方法。

隶属函数编辑器

输入模糊子集E的隶属函数

其中的Params是隶属函数曲线的参数
输入模糊子集Ec的隶属函数
在这里插入图片描述
输出模糊子集U的隶属函数
在这里插入图片描述
隶属函数的形状有多种选择,模糊子集的范围为都[-6 6],这与事前计算的量化因子和比例因子有关,而且模糊子集的语言描述届为{负大 负小 零 正小 正大}。具体功能请往下看;

模糊规则编辑

在这里插入图片描述
论域中有五个值,所以总共有7X7共49条规则。可以根据前面文章分享的模糊规则参数表
当规则正确输入后,选择view surface 可以查看模糊规则的三维坐标图;

在这里插入图片描述
这样就大概完成了fuzzy—control 的建立。以后可以在sim那里调用。

例子(7月7)

在这里插入图片描述
如图所示 :误差量化因子为0.1,误差变化量的量化因子是5,达到减少超调量的作用,然后是输出量的比例因子为-10,为什么是负呢,这与模糊控制器的设定有关,我觉得应该是表格上的输出的效果应该是指最后的输出——?。但是理解模糊控制器的规则还是一样的道理。
在这里插入图片描述
运行时间需要自行设置大一点(stop time = 1000)。
而且使用时,需要好模糊控制器的fis文件和simulink的文件的路径,否则无法读取模糊控制器。

系统的改进


常规的二维模糊控制器是以误差和误差变化为输入值,一般认为这种控制器具有模糊比例——微分控制作用,但是缺少了模糊积分作用,使得本身消除其系统稳态误差的能力比较差,难以达到较高的控制精度。
二 原因
是模糊控制器的输入量被模糊量化后而引起的控制器调节死区以及控制量的分档而引起的调节过粗,再加上缺少积分作用,属于一个粗糙控制器。然后前辈们就提出一个自调整规则因子模糊控制。
在这里插入图片描述

单调节因子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多调节因子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再次改进

在这里插入图片描述
在这里插入图片描述

自调整模糊控制器的调节模糊控制

设置一个自调整模糊控制器
首先这个自调整模糊控制器的输入为误差,误差变换。模糊控制器需要像前面一样自行设计,然后输出是调节因子。然后通过U=<aE+(1-a)EC>,这一条式子(通过乘法器实现),实际上这一条式子是调节Ke,Kec的,并没有直接调节Ku(不过有的自调整控制器会对它进行调整)。
这种模式下需要调节ke kec ku 【ke1 ke2(自调整模糊控制器参数)】五个值。而且这次的隶属函数的曲线与前面有所区别,所以会有误差。

自调整因子控制规则表

在这里插入图片描述
在这里插入图片描述
值得注意的是,输入E和Ec的模糊子集的论域都是不变的。
在这里插入图片描述
在这里插入图片描述
输出的调节因子的论域为[0 1],与真实所希望的值的(基本论域)是一样的,所以这里可以省略比例因子。按照上面的步骤便可以完成自调节因子模糊控制器。
在这里插入图片描述
然后在示波器
在这里插入图片描述
由于之前设计的时候使用的隶属函数曲线不一样,所以并没有看到新的曲线的性能全面压制住旧的曲线,但是可以看到,新的曲线的上升时间加快,动态反应时间加快。这也说明了有改善。
在这里插入图片描述
在改正一样后发现,还是差不多的图像走向。
为什么原先的图会没有超调量的发生,是因为误差变化的量化因子大,遏制住了。
但由于新的模式的控制器的两个输入值都乘以一个小数,也就是都减少了。
相当于调节后,ke减少了——上升时间变短;Kec减少了——超调量有一点点上升。
我觉得还能再对新的模式的控制再调节一样,减少超调量。

结束

相关推荐
j用MatlabFuzzy工具箱实现模糊控制-Fuzzy_Control.rar [url=http://blog.daviesliu.net/article/entry20050328-153616]用 MatlabFuzzy 工具箱实现模糊控制 [/url] 用 Matlab 中的 Fuzzy 工具箱做一个简单的模糊控制,流程如下: 1、创建一个 FIS 对象, a = newfis一般只用提供第一个参数即可,后面均用默认值。 2、增加模糊语言变量 a = addvar模糊变量有两类:input 和 output。在每增加模糊变量,都会按顺序分配一个 index,后面要通过该 index 来使用该变量。 3、增加模糊语言名称,即模糊集合。 a = addmf每个模糊语言名称从属于一个模糊语言。Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。参数 mfType 即隶属度函数,它可以是 Gaussmf、trimf、trapmf等,也可以是自定义的函数。每一个语言名称也会有一个 index,按加入的先后顺序得到,从 1 开始。 4、增加控制规则,即模糊推理的规则。 a = addrule 其中 ruleList 是一个矩阵,每一行为一条规则,他们之间是 ALSO 的关系。 假定该 FIS 有 N 个输入和 M 个输出,则每行有 N M 2 个元素,前 N 个数分别表示 N 个输入变量的某一个语言名称的 index,没有的话用 0 表示,后面的 M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示 AND,2 表示 OR。例如,当“输入1” 为“名称1” 和 “输入2” 为“名称3” 时,输出为 “ 输出1” 的“状态2”,则写为:[1 3 2 1 1] 5、给定输入,得到输出,即进行模糊推理。 output = evalfis其中 fismat 为前面建立的那个 FIS 对象。一个完整的例子如下: matlab程序在附件里
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页