[MATLAB]初探模糊推理系统-MyFIS

时间:2024-05-21 07:09:50

所需工具

MATLAB是进行科学研究常用软件,上面也搭载了很多常用的APP。虽然本人科研99%时间都是用Python,但因课程需要,也初步摸索以备后用。(下面开始菜鸟级表演)
1. Simulink
该工具是建立仿真系统的必备工具,一般下载安装MATLAB时会默认(大概会)安装。在命令窗口键入simulink开启,界面如图:
[MATLAB]初探模糊推理系统-MyFIS

2. Fuzzy Logical Designer
该工具是建立模糊推理系统的必备工具,在命令窗口键入fuzzy开启,界面如图:
[MATLAB]初探模糊推理系统-MyFIS
By the way,如果没有安装上述两个包,无需再重新下载MATLAB重选一次,在这里可以下载并安装。
[MATLAB]初探模糊推理系统-MyFIS
工具有了,就可以开工了!以一个3阶系统为例。

FIS-Fuzzy Logical Designer

首先,我们要确定模糊推理系统(Fuzzy inference system, FIS)的输入输出以及模糊规则等。这里,我以误差 ee、误差变化率 dede 为输入,经过FIS得到控制输出 uu

[MATLAB]初探模糊推理系统-MyFIS

Rules

Part of the Rules 见下表:

NB NM NS NZ PZ PS PM PB
PB PB PM NM NM NM NL NB NB
PM PB PM NM Z
PS PB PM NS Z
Z PB PM PS Z
NS
NM
NB

Input & Output

一些默认参数,一般不需修改。
[MATLAB]初探模糊推理系统-MyFIS
目前界面锁定在Input, 可以通过点击Edit->Add Variable来添加输入变量;点击蓝色output同样可以添加变量。直接在Name修改变量名;Edit->Membership Function定义隶属函数,可以对每个隶属函数进行编辑,也可以在Edit->Add MFs一次性输入多个MF,默认为三角隶属函数,注意: Params、Range要定义,别忘了对output隶属函数进行定义。
[MATLAB]初探模糊推理系统-MyFIS
返回FIS首界面,Edit->Rules定义模糊规则。这个比较麻烦,不像MF还可以一次定义多个,一个eedede对应一个uu,再点击Add rule就完成了一步,然后一个一个对应吧(本人未找到其他lazy方法)。
[MATLAB]初探模糊推理系统-MyFIS
最后需要定义去模糊化方法:Defuzzification. 聪明的你一定发现了,该选择在FIS首页界面下方,默认方法为重心法Centroid,可改选。然后,File->Export->To File/Workspace,建议To File,先保存到本地磁盘,然后再输出到工作区以备接下来Simulink使用。

搭建仿真系统-Simulink

从首界面点击Blank Model,新建model。点击设置按钮旁边的Library Browser进行组件选择,在收缩框内输入名称即可,拖拽组件到主界面进行系统搭建。此处,在eededeuu后分别放置了三个scope用以观察输出值大小,因为前面设置了range,所以需要保证输出值在输入范围内。比如ee的输出值在-10~10之间变化,但是range为[-1, 1],所以在其后加入一个比例为0.1的gain组件,其他同理。元件Fuzzy Logic Controller with Ruleviewer里面需要定义FIS,也就是你export到workspace里面的FIS文件的变量名字。然后在Simulation里面的configuration里面修改一个地方:Algorithm-Adaptive.
最后便是一些调参(比例系数等等)工作,同时观察示波器的输出,看超调量、上升时间、稳态误差是否符合要求啦!

[MATLAB]初探模糊推理系统-MyFIS
[MATLAB]初探模糊推理系统-MyFIS
[MATLAB]初探模糊推理系统-MyFIS

结果展示:

FIS工作
[MATLAB]初探模糊推理系统-MyFIS
Output
[MATLAB]初探模糊推理系统-MyFIS
e
[MATLAB]初探模糊推理系统-MyFIS完结,睡觉 zzzzzz