fcm模糊聚类matlab实例_simulink控制系统仿真之模糊控制系统仿真

525255e31b6d5eeb4c0bbb44a7288ce8.png

模糊控制系统的核心是模糊控制器,也就是前面所介绍的模糊推理系统。本节将介绍如何将模糊控制器与simulink模型连接。进而建立模糊控制系统。

模糊逻辑图形化工具模糊逻辑工具箱简介

1. 模糊逻辑图形化工具(GUI界面,上节内容)

2. simulink模块

在simulink模块浏览器中可以找到Fuzzy Logic Toolbox,它包含三类模块:

2d7e1fa4d225728fc83ce2401ad4f01f.png

隶属函数中包含许多不同类型隶属函数模块。后两个模块都是模糊逻辑控制器,区别在于后者带有规则观察器。对这两个模块使用look under mask(Crtl+u)可以看到内部结构。如下图所示。

f7c7a7c3420f783e5d4200658671d05e.png

5ad27da61ef84ceb8fc1ff8f62633e1e.png

3.MATLAB函数

(1)打开GUI所需函数

                名   称

                功    能

         fuzzy

打开FIS编辑器

         mfedit

打开隶属函数编辑器

        ruleedit

打开规则编辑器

        ruleview

打开规则观察器

        surfview

打开曲面观察器

(2)对FIS进行操作的函数

名称

功能

名称

功能

newfis

新建一个fis文件

getfis

获得fis属性

readfis

导出fis文件到工作空间

setfis

设置fis属性

writefis

导出fis至文件

addmf

添加隶属函数

genfis1

利用数据生成一个fis

rmmf

删除一个隶属函数

showfis

展示fis细节

addvar

向FIS添加变量

plotfis

绘制fis

emvar

删除变量

addrule

添加模糊规则

rmrule

删除FIS的模糊规则

FIS与模糊逻辑控制器连接

要想使用Fuzzy Logic Controller模块,必须将FIS嵌入模块中。Fuzzy Logic Controller模块可以接受来自文件和工作空间的FIS。

      (1)将FIS导入工作空间的两种方法:

使用readfis函数(直接输入fis在磁盘中自己选择路径也可以)

fismat(可更换成自己想要的名字)=readfis('文件名')

通过FIS editor界面

输入fuzzy 文件名,在FIS editor中单击命令file-export-to workspace,自定义变量名称。

0e4b50f9e2719a330d8aeb6e03f926d7.png

(2)把FIS嵌入模糊控制器模块

在仿真模型中,双击Fuzzy Logic Controller模块,填入FIS文件名称。

a3f1000194ff3e873844b7e4d7b68209.png

模糊控制系统的仿真

模糊控制系统仿真的基本步骤:

(1)创建FIS文件

(2)建立FIS文件与模糊控制器的连接

(3)构建模糊控制系统的仿真模型

(4)进行系统仿真

下面以一个例子详细说明构建模糊控制系统模型仿真的方法。

例:

8050c2c99a7705f6dc9ea788a4579c44.png

73bd578558a08085df6bb137607f0499.png

(1)在MATLAB中输入fuzzy,创建一个新的FIS(M型)。

(2)编辑输入输出变量

以闭环系统误差e及误差率de为两个输入变量,被控对象的控制输入u为输出变量,考虑到控制目标为跟踪单位阶跃信号,误差e的范围需控制在[-1,1]内。输入变量e和de的论域均可取在[-1,1]内。同时为了满足输入的上界限制,取u的论域为[-2,2]。 61e9282966d4515d629e7c1c017563fe.png 按照表格输入各隶属函数

b3780c6fa6511156126bdd721b4c9884.png

(3)编辑模糊规则

完成对输入、输出变量的编辑后,需要添加模糊规则,模糊规则的制定,是人经验来确定的,于是就有下面的分析 当误差e为NB负大时,无论误差率de如何,控制输入都应该为NB负大,以尽快减小误差,所以有规则 Rulel: if e is NB then u is NB 当误差c为NS负小时,就要考虑误差率的影响。如果de为NB负大,会导致c负,所以控制输入仍然应该为NB负大;如果de为ZE零或PS正小,则需要较小的控制输入以帮助误差c恢复至零;如果de为PB正大,则不怎么需要控制输入。所以有下面的规则。 Rule2: ife is NS and de is NB then u is NB. Rule3: ife is NS and de is NS then u is NB Rule4: if e is NS and de is ZE then u is NS. Rules: if e is NS and de is PS then u is NS. Rule6: if e is NS and de is PB then u is ZE. 当误差c接近于零,即为ZE时,主要矛盾集中于稳定性,这时较小的控制输入会更加适合小幅度的调整,所以有下面的规则。 Rule7: if e is ZE and de is NB then u is PS. Rule8: ife is ZE and de is NS then u is ZE. Rule9: ife is ZE and de is ZE then u is ZE. Rule10: ife is ZE and de is PS then u is ZE Rulell: if e is ZE and de is PB then u is NS. 对称地可以得出余下的6条规则

7b50de087f52f7058c0a23b29e5447ff.png

将规则添加至规则编辑器。 418b6832cc5d34ac6a7d5f65e593d18b.png

(4)在FIS Editor界面上,选择file-export-to workspace,将FIS导入工作空间。

(5)建立如图仿真模型

525255e31b6d5eeb4c0bbb44a7288ce8.png

可以看出曲线非常平稳。没有超调量,没有震荡。

36baa2cf7908f5404351a2c04db0a747.png

利用PID控制器建立仿真模型,如下图所示。

94edb8e032696744c8825268d0bf4091.png

     确定一组PID参数:

4b23a99f525e1b298f51d4323149ec9c.png 仿真后,可以看出虽然系统较快趋于稳定,但产生了多次震荡,超调量很大。

621e6af258c302e90463bc63523e2974.png

712ac29d649f5163fe430fb9f01c03d0.png 对被控对象加入随机扰动(random number),再次建立模糊逻辑控制系统。发现响应曲线虽然波动,但一直稳定在1附近,说明模糊逻辑控制器具有一定干扰抑制作用。(中间报错,原因不明,暂无结果)

f9325b3be492f4acae1fd6c0a2f6ddfa.png

1cad6b33697883da90b5fb6f3f810b11.png

控制输入变化曲线最终稳定在0附近。 另外在MATLAB中还有许多系统自带的仿真实例,直接在系统中输入这些实例名字就可以进行调用。如slank(水箱水位恒定模糊控制系统)/slcp(车-倒摆模糊控制系统)/sltbu(卡车倒行入库模糊控制系统)等。 通过对控制器模块使用look under mask可以观察到系统内部结构,包括输入、规则、反模糊化、输出。如下图所示。通过对经典案例的学习可以加深对模糊控制系统的理解。

dd324c643de240c5788339143ffa780a.png

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值