模糊逻辑工具箱在Simulink中的使用
标签:
matlab模糊逻辑工具箱simulinkfuzzy教育 |
分类: 无界共享 |
下面用一个简单的例子作介绍:
(本例不是特别针对实现什么功能,只是为了介绍方便)
第一部分 创建一个模糊逻辑(.fis文件)
第一步:打开模糊推理系统编辑器
步骤:
在Commond Window 键入fuzzy
回车
http://s14/middle/73c4589ena5f91bbb753d&690
打开如下窗口,既模糊推理系统编辑器
http://s2/middle/73c4589ena5f91c78f3d1&690
第二步:使用模糊推理系统编辑器
本例用到两个输入,两个输出,但默认是一个输人,一个输出
步骤:
1、添加一个输入
http://s14/middle/73c4589ena5f91cc1097d&690
http://s1/middle/73c4589ena5f91ce267e0&690
得如下图
http://s8/middle/73c4589ena5f91c770367&690
2、选择Input、output(选中为红框),在Name框里修改各输入的名称
并将And method 改为prod,将Or method 改为 probor
http://s8/middle/73c4589ena5f91d29ecf7&690
提示:在命名时’_’在显示时为下标,可从上图看出。
第三步:使用隶属函数编辑器
该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
步骤:
1、 双击任何一个输入量(In_x、In_y)或输出量打开隶属度函数编辑器。
http://s1/middle/73c4589ena5f91d4ed2e0&690
2、在左下处Range和Display
Range处添加取值范围,本例中In_x和In_y的取值范围均为[0 10],
Out_x和Out_y的取值范围均为[0
1]
3、默认每个输入输出参数中都只有3个隶属度函数,本例中每个输入输出参数都需要用到五个,其余几个需要自己添加:
选中其中一个输入输出参数
点击Edit菜单,选Add MFS…打开下列对话框
http://s5/middle/73c4589ena5f91cd315a4&690
将MF type设置为trimf(三角形隶属度函数曲线,当然你也需要选择其他类型)
将Number of MFs 设置为2
点击OK按钮
同样给其他三个加入隶属度函数
4、选中任何一个隶属度函数(选中为红色),在Name 中键入名称,在Type中选择形状,在Params中键入范围,然后回车如下图:
http://s15/middle/73c4589ena5f91d84224e&690
本例中:In_x,In_y隶属度函数相同,如下
|
Name |
Type |
Params |
|
IXL2\IYL2 |
zmf |
[1 1.5] |
|
IXL1\IYL1 |
trimf |
[1 2.5 4] |
|
IXZ\IYZ |
trimf |
[3 5 7] |
|
IXR1\IYR1 |
trimf |
[6 7.5 9] |
|
IXR2\IYR2 |
smf |
[8.5 9] |
Out_x,Out_y隶属度函数相同,如下:
|
Name |
Type |
Params |
|
OXL2\OYL2 |
zmf |
[0.1 0.15] |
|
OXL1\OYL2 |
trimf |
[0.1 0.25 0.4] |
|
OXZ\OYZ |
trimf |
[0.3 0.5 0.7] |
|
OXR1\OYR1 |
trimf |
[0.6 0.75 0.9] |
|
OXR2\OYR2 |
smf |
[0.85 0.9] |
http://s6/middle/73c4589ena5f91db66375&690
5、关闭隶属函数编辑器
第四步:使用规则编辑器
通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。由该编辑器进行模糊控制规则的设计非常方便,它将输入量各语言变量自动匹配,而设计者只要通过交互式的图形环境选择相应的输出语言变量,这大大简化了规则的设计和修改。另外,还可为每条规则选择权重,以便进行模糊规则的优化。
步骤:
1、打开规则编辑器
点击Edit菜单,选Rules…
http://s15/middle/73c4589ena5f91dd5ab4e&690
http://s12/middle/73c4589ena5f91ded0e0b&690
选中IXL2,IYL2,OXL2,none(表示不被选中任何隶属度函数),and选项,权重Weight均设为1,然后点击Add rule 添加规则,同理添加其他规则。
下图为添加所有role后:
http://s16/middle/73c4589ena5f92063b6df&690
3、关闭规则编辑器
第五步:保存并查看结果
步骤:
1、 保存
http://s3/middle/73c4589ena5f9207bab12&690
2、View->Rules打开Rule Viewer
http://s3/middle/73c4589ena5f920b426d2&690
3、View->Surface打开Surface Viewer
http://s12/middle/73c4589ena5f9206096ab&690
第二部分:将模糊逻辑添加到Simulink中
第一步:创建一个Simulink文件
步骤:
1、打开Simulink
http://s14/middle/73c4589ena5f92109948d&690
2、点击新建按钮建立一个新的.mdl文件
http://s15/middle/73c4589ene7bbb45ede5e&690
第二步:添加模糊逻辑
步骤:
1、在Simulink Library Brower 的搜索框内键入Fuzzy Logic Controller找到Fuzzy Logic Controller,并将其拖拽到新建的mdl文件中
http://s10/middle/73c4589ena5f92146fd29&690
2、双击Fuzzy Logic Controller,打开如下对话框,比在其内部键入Test
http://s4/middle/73c4589ena5f921602a53&690
3、关闭对话框
第三步:添加其他模块
如下图,都是常用模块,请自己添加
http://s11/middle/73c4589ena5f92189783a&690
第四步:保存并运行
步骤:
1、 保存为Test.mdl
2、 初始化模糊逻辑控制器,即在Command Window中键入Test = readfis('Test.fis'),回车
http://s16/middle/73c4589ena5f92106730f&690
1、 运行Test.mdl
这里可以比较一下结果

加载中…