还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
调用fuzzy工具箱,生成的是一个.fis的文件,文件名就是你在工具箱里边定义的名字,如图中的4位置通过调用file—import—fromfile可以导入使用文本编辑其编辑好的fis文件,进行修改可以把编辑好的模糊推理器导出到文件中File—export如图中1位置,当选中一个模块的时候,相应的模块边框会变色双击就可以对他进行编辑,输入的模糊话,输出(图总位置3)的去模糊双击图中2位置的模块添加相应的模糊推理规则,对应生成的fis文件当中的[rules]下边的东东图中位置5和位置6对应的地方的内容基本不用变,目前模糊推理一般都用的这种方法图中位置7的位置是选中上边的模块的时候,相应的信息,可以修改名字,但不能编辑其他的内容这个图是模糊推理输入输出成员函数(membershipfunction)的编辑其,选中位置1的其中一个,就可以编辑对应的隶属度函数AddMFS是成组添加隶属度函数这种方式添加的时候,隶属度函数的类型是一样的,比如都用三角函数,或都用高斯函数用三角的多Addcustommf这个是单独添加一个隶属度函数其中涉及到得几个变量是模糊语言变量名称如图总共的mf1,mf2,对应实际用的NB__之类的还有就是隶属度函数类型再一个就是隶属函数对应的几个端点高斯和三角都有三个,s型函数和z型函数有两个当然添加隶属度函数的时候,可以先确定形状,选用什么类型的函数,然后是用几个,完了先粗略的添加进来之后可以在上图位置2对应要修改的隶属函数,选中以后,__各个小方块,再细改注意位置2右上角的,那个是函数曲线显示的点数,显示的越多,越精细,但是可能就越耗cpu我见过的一般都用三角,计算简单顶多最左边用z型函数,最右边用s函数中间用一个高斯输入输出隶属度函数确定后,完了就是编辑模糊规则位置1为添加好的规则位置2为输入组合逻辑,mf1,mf2对应各个输入的模糊语言变量,具体看实际是定的名字如NB__可以对某个模糊语言变量执行not逻辑输入组合的时候可以选择and或者是or权重一般都是1位置3的地方是对应的左边的2的每个阻隔逻辑,输出要输出的那个模糊语言变量最红点addrule就可以在位置1看到相应的新添加的模糊规则完了点最上边模糊工具箱的file---export---toworkspa__导入模糊推力器到工作空间File—export—tofile是到出到文件最好导出到文件,这样下次还可以用,文件名就是你在simulink调用模糊逻辑块是要写的名字,加后缀,然后用单引号括起来到此,一个完整的模糊推理机(模糊控制器)就完成了下边是我用到的2输入3输出,输入、输出每个都有7个模糊语言变量,共有7*7共49条rules,下边是抓图下边是生成的fis文件在这个里边修改也可以达到同样的效果在fis文件当中,不能有注释什么的[System]这个是关键字Name=fuzzypid模糊推理机名字,这个最好和文件名字统一Type=__mdani类型,不用变Version=
2.0版本NumInputs=2输入变量个数,按实际的来NumOutputs=3输出变来那个个数,按实际的来NumRules=49rules个数AndMethod=min不用变OrMethod=__x不用变ImpMethod=min不用变AggMethod=__x不用变DefuzzMethod=__ntroid不用变,解模糊方法[Input1]不能变,第一个输入变量Name=e输入变量的名字Range=[-33]论域范围NumMFs=7模糊语言个数MF1=NB:zmf[-31]第一个模糊语言变来那个对应的隶属度函数,改后边的就成,分别是模糊语言变量名,隶属函数形状,关键点下同,输入变量,输出变量MF2=__:trimf[-3-20]MF3=NS:trimf[-3-11]MF4=Z:trimf[-202]MF5=PS:trimf[-113]MF6=PM:trimf
[023]MF7=PB:__f[-13][Input2]第二个输入Name=ecRange=[-33]NumMFs=7MF1=NB:zmf[-31]MF2=__:trimf[-3-20]MF3=NS:trimf[-3-11]MF4=Z:trimf[-202]MF5=PS:trimf[-113]MF6=PM:trimf
[023]MF7=PB:__f[-13][Output1]第一个输出Name=kpRange=[-
0.
30.3]NumMFs=7MF1=NB:zmf[-
0.3-
0.1]MF2=__:trimf[-
0.3-
0.20]MF3=NS:trimf[-
0.3-
0.
10.1]MF4=Z:trimf[-
0.
200.2]MF5=PS:trimf[-
0.
10.
10.3]MF6=PM:trimf[
00.
20.3]MF7=PB:__f[
0.
10.3][Output2]Name=kiRange=[-
0.
060.06]NumMFs=7MF1=NB:trimf[-
0.06-
0.06-
0.02]MF2=__:trimf[-
0.06-
0.040]MF3=NS:trimf[-
0.06-
0.
020.02]MF4=Z:trimf[-
0.
0400.04]MF5=PS:trimf[-
0.
020.
020.06]MF6=PM:trimf[
00.
040.06]MF7=PB:trimf[
0.
020.
060.06][Output3]Name=kdRange=[-33]NumMFs=7MF1=NB:zmf[-31]MF2=__:trimf[-3-20]MF3=NS:trimf[-3-11]MF4=Z:trimf[-202]MF5=PS:trimf[-113]MF6=PM:trimf
[023]MF7=PB:__f[-13][Rules]这个是模糊推理规则分别是输入,输出,1:1这两个不用变比如用的是NB__NSZPSPMPB的话,NB就是1,依次类推7*7=49条模糊规则,主要是要遍历两个输入,每个输入有7个,就是49条了…..117151:1127131:1136211:1146211:1155311:1164421:1174451:1217151:1227131:1236211:1245321:1255321:1264431:1273441:1316141:1326231:1336231:1345321:1354431:1363531:1373541:1416241:1426231:1435331:1444431:1453531:1462631:1472641:1515241:1525341:1534441:1543541:1553541:1562641:1572741:1615471:1624451:1633551:1642551:1652651:1662751:1671771:1714471:1724471:1732561:1742661:1752651:1761751:1771771:1用m文件进行模糊仿真的话,你那个pid书里边就有程序,大概过程是a=newfisfuzzypid;添加模糊推理器aa=addvarainpute[-33];给推力器a添加变量,input或output,变量名字,范围,下边这句是添加membershipfunctiona=addmfainput1NBzmf[-31];哪个模糊推理器,变量类型IN/OUT,顺序(在rule中用到),语言变量,函数类型,关键点输入输出都一样添加完输入输出变量得隶属度函数,下边就是添加模糊规则rulelist=[1171511;1271311;…….7717711];a=addrulearulelist;先输入模糊规则,然后调用addrule把模糊规则添加到指定的模糊推理器aa=setfisadefuzzmethod__ntroid;解模糊方法writefisafuzzypid;保存模糊推理器a,到文件fuzypid后缀为.FISa=readfisfuzzypid;可用可不用如果有现成的,上边的可以不用,直接用readfis就可以把保存的fis文件送给ak_pid=evalfis[e_1ec_1]a;这句是在仿真时候,进行模糊推理,送一组输入,经模糊推理后,得到一组输出模糊控制器的设计我认为最麻烦的是输入输出的匹配问题,隶属函数的划分,关键点的处理,还有模糊规则,没有可参照的程序,是个很麻烦的工作,得反复看曲线,然后修改,最终才可能得到有效的曲线__TLAB模糊工具箱使用指南IMUST2011-4-20WO4WUHUITING本文简单介绍了__tlab模糊工具箱的使用,如何添加输入和输出变量,以及其论域和隶属度函数的编辑,模糊规则的建立5。