关于fuzzy Controller的用法Word下载.docx

上传人:b****4 文档编号:7892780 上传时间:2023-05-09 格式:DOCX 页数:12 大小:161.82KB
下载 相关 举报
关于fuzzy Controller的用法Word下载.docx_第1页
第1页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第2页
第2页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第3页
第3页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第4页
第4页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第5页
第5页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第6页
第6页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第7页
第7页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第8页
第8页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第9页
第9页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第10页
第10页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第11页
第11页 / 共12页
关于fuzzy Controller的用法Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

关于fuzzy Controller的用法Word下载.docx

《关于fuzzy Controller的用法Word下载.docx》由会员分享,可在线阅读,更多相关《关于fuzzy Controller的用法Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

关于fuzzy Controller的用法Word下载.docx

当然添加隶属度函数的时候,可以先确定形状,选用什么类型的函数,然后是用几个,完了先粗略的添加进来。

之后可以在上图位置2对应要修改的隶属函数,选中以后,移动各个小方块,再细改。

注意位置2右上角的,那个是函数曲线显示的点数,显示的越多,越精细,但是可能就越耗cpu。

我见过的一般都用三角,计算简单。

顶多最左边用z型函数,最右边用s函数。

中间用一个高斯。

输入输出隶属度函数确定后,完了就是编辑模糊规则

位置1为添加好的规则。

位置2为输入组合逻辑,mf1,mf2对应各个输入的模糊语言变量,具体看实际是定的名字。

如NB,NM。

可以对某个模糊语言变量执行not逻辑。

输入组合的时候可以选择and或者是or。

权重一般都是1。

位置3的地方是对应的左边的2的每个阻隔逻辑,输出要输出的那个模糊语言变量。

最红点addrule就可以在位置1看到相应的新添加的模糊规则。

完了点最上边模糊工具箱的file---export---toworkspace导入模糊推力器到工作空间

File—export—tofile是到出到文件。

最好导出到文件,这样下次还可以用,文件名就是你在simulink调用模糊逻辑块是要写的名字,加后缀,然后用单引号括起来。

到此,一个完整的模糊推理机(模糊控制器)就完成了。

下边是我用到的2输入3输出,输入、输出每个都有7个模糊语言变量,共有7*7共49条rules,下边是抓图。

下边是生成的fis文件。

在这个里边修改也可以达到同样的效果。

在fis文件当中,不能有注释什么的。

[System]这个是关键字

Name='

fuzzypid'

模糊推理机名字,这个最好和文件名字统一

Type='

mamdani'

类型,不用变

Version=2.0版本

NumInputs=2输入变量个数,按实际的来

NumOutputs=3输出变来那个个数,按实际的来

NumRules=49rules个数

AndMethod='

min'

不用变

OrMethod='

max'

ImpMethod='

AggMethod='

DefuzzMethod='

centroid'

不用变,解模糊方法

[Input1]不能变,第一个输入变量

e'

输入变量的名字

Range=[-33]论域范围

NumMFs=7模糊语言个数

MF1='

NB'

:

'

zmf'

[-31]第一个模糊语言变来那个对应的隶属度函数,改后边的就成,分别是模糊语言变量名,隶属函数形状,关键点。

下同,输入变量,输出变量

MF2='

NM'

trimf'

[-3-20]

MF3='

NS'

[-3-11]

MF4='

Z'

[-202]

MF5='

PS'

[-113]

MF6='

PM'

[023]

MF7='

PB'

smf'

[-13]

[Input2]第二个输入

ec'

Range=[-33]

NumMFs=7

[-31]

[Output1]第一个输出

kp'

Range=[-0.30.3]

[-0.3-0.1]

[-0.3-0.20]

[-0.3-0.10.1]

[-0.200.2]

[-0.10.10.3]

[00.20.3]

[0.10.3]

[Output2]

ki'

Range=[-0.060.06]

[-0.06-0.06-0.02]

[-0.06-0.040]

[-0.06-0.020.02]

[-0.0400.04]

[-0.020.020.06]

[00.040.06]

[0.020.060.06]

[Output3]

kd'

[Rules]这个是模糊推理规则分别是输入,输出,

(1):

1这两个不用变。

比如用的是NB,NM,NS,Z,PS,PM,PB的话,NB就是1,依次类推7*7=49条模糊规则,主要是要遍历两个输入,每个输入有7个,就是49条了…..

11,715

(1):

1

12,713

(1):

13,621

(1):

14,621

(1):

15,531

(1):

16,442

(1):

17,445

(1):

21,715

(1):

22,713

(1):

23,621

(1):

24,532

(1):

25,532

(1):

26,443

(1):

27,344

(1):

31,614

(1):

32,623

(1):

33,623

(1):

34,532

(1):

35,443

(1):

36,353

(1):

37,354

(1):

41,624

(1):

42,623

(1):

43,533

(1):

44,443

(1):

45,353

(1):

46,263

(1):

47,264

(1):

51,524

(1):

52,534

(1):

53,444

(1):

54,354

(1):

55,354

(1):

56,264

(1):

57,274

(1):

61,547

(1):

62,445

(1):

63,355

(1):

64,255

(1):

65,265

(1):

66,275

(1):

67,177

(1):

71,447

(1):

72,447

(1):

73,256

(1):

74,266

(1):

75,265

(1):

76,175

(1):

77,177

(1):

用m文件进行模糊仿真的话,你那个pid书里边就有程序,大概过程是:

a=newfis('

);

添加模糊推理器a

a=addvar(a,'

input'

'

[-3,3]);

给推力器a添加变量,input或output,变量名字,范围,下边这句是添加membershipfunction。

a=addmf(a,'

1,'

[-3,1]);

哪个模糊推理器,变量类型IN/OUT,顺序(在rule中用到),语言变量,函数类型,关键点。

输入输出都一样。

添加完输入输出变量得隶属度函数,下边就是添加模糊规则。

rulelist=[1171511;

1271311;

…….

7717711];

a=addrule(a,rulelist);

先输入模糊规则,然后调用addrule把模糊规则添加到指定的模糊推理器a。

a=setfis(a,'

defuzzmethod'

解模糊方法

writefis(a,'

保存模糊推理器a,到文件fuzypid后缀为.FIS

a=readfis('

可用可不用。

如果有现成的,上边的可以不用,直接用readfis就可以把保存的fis文件送给a

k_pid=evalfis([e_1,ec_1],a);

这句是在仿真时候,进行模糊推理,送一组输入,经模糊推理后,得到一组输出。

模糊控制器的设计我认为最麻烦的是:

输入输出的匹配问题,隶属函数的划分,关键点的处理,还有模糊规则,没有可参照的程序,是个很麻烦的工作,得反复看曲线,然后修改,最终才可能得到有效的曲线。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2