MATLAB模糊逻辑工具箱函数
- 格式:ppt
- 大小:555.50 KB
- 文档页数:1
方式二:用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现(陈教师整理)一、模糊逻辑推理系统的整体特点模糊操纵由于不依托对象的数学模型而受到普遍的重视,运算机仿真是研究模糊操纵系统的重要手腕之一。
由Math Works公司推出的Matlab软件,为操纵系统的运算机仿真提供了强有力的工具,专门是在以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊操纵系统提供了专门大的方便。
由于如此的模块都是由相关领域的闻名学者开发的,因此其可信度都是很高的,仿真结果是靠得住的。
在Simulink环境下对PID操纵系统进行建模是超级方便的,而模糊操纵系统与PID操纵系统的结构大体相同,仅仅是操纵器不同。
因此,对模糊操纵系统的建模关键是对模糊操纵器的建模。
Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊操纵器编辑环境。
二、Matlab模糊逻辑工具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些大体信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方式等。
其中模糊推理系统能够采纳Mandani或Sugeuo两种类型,解模糊方式有最大隶属度法、重心法、加权平均等。
打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如以下图所示。
因为咱们用的是两个输入,因此在Edit菜单中,选Add variable… ->input,加入新的输入input,如以下图所示。
选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用tmp-input, 磁能输入用 mag-input,等。
2.隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行概念。
4 MATLAB模糊工具箱介绍Fuzzy Logic工具箱功能非常强大,利用它人们可以方便地建立模糊逻辑推理系统,并对其进行测试。
这里我们主要介绍它提供的5个图形化的系统设计工具。
4.1模糊推理系统编辑器启动模糊推理系统编辑器(FISE, Fuzzy Inference System Editer)的方法有两种,在MATLAB的命令窗口中输入“fuzzy”命令或者依次点击MATLAB软件左下角的“Start”,“Toolboxes”,“Fuzzy Logic”也可打开FISE,然后双击FIS Editor Viewer项。
FISE的图形界面如下图14示。
图1FISE图形界面4.2隶属函数编辑器在MATLAB的命令界面输入“mfedit”命令或者在模糊推理系统编辑器的“File” “Edit/Membership Functions”或者双击图14中红色矩形,都可打开隶属函数编辑器。
通过该编辑器可以设定和变更输入/输出语言变量的各自的语言值的隶属函数的类型及参数。
如下图15所示。
图2隶属函数编辑器界面4.3模糊规则编辑器在MATLAB的命令界面中输入“ruleedit”命令或者利用模糊推理系统编辑器的“File” “Edit/Rules”或双击图2里红色框旁的黑色的矩形框,都可以打开模糊规则编辑器。
通过该编辑器可以添加、修改和删除必要的模糊规则,其空白界面如下图3所示。
图3模糊规则编辑器界面4.4模糊规则观察器在MATLAB的命令界面输入“ruleview”命令,或者在前面介绍的三种编辑器中的任一个中选择相应的“View/Rules”,均可打开模糊规则观察器。
在模糊规则观察器中,以图形形式描述了模糊推理系统的推理过程,如下图4所示。
图4模糊规则浏览器界面4.5模糊推理输入输出变量特性观察器在MATLAB的命令窗口中输入“surfview”命令,或者在各个编辑器窗口选择相应菜单“View/Surface”,都可打开模糊推理输入输出曲面浏览器。
⽅法⼆⽤MATLAB的模糊逻辑⼯具箱(Fuzzytoolbox)实现.⽅法⼆:⽤MATLAB的模糊逻辑⼯具箱(Fuzzy toolbox)实现(陈⽼师整理)⼀、模糊逻辑推理系统的总体特征模糊控制由于不依赖对象的数学模型⽽受到⼴泛的重视,计算机仿真是研究模糊控制系统的重要⼿段之⼀。
由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有⼒的⼯具,特别是在Matlab4.2以后的版本中推出的模糊⼯具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很⼤的⽅便。
由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很⾼的,仿真结果是可靠的。
在Simulink环境下对PID控制系统进⾏建模是⾮常⽅便的,⽽模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。
所以,对模糊控制系统的建模关键是对模糊控制器的建模。
Matlab软件提供了⼀个模糊推理系统(FIS)编辑器,只要在Matlab命令窗⼝键⼊Fuzzy就可进⼊模糊控制器编辑环境。
⼆、Matlab模糊逻辑⼯具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器⽤于设计和显⽰模糊推理系统的⼀些基本信息,如推理系统的名称,输⼊、输出变量的个数与名称,模糊推理系统的类型、解模糊⽅法等。
其中模糊推理系统可以采⽤Mandani或Sugeuo两种类型,解模糊⽅法有最⼤⾪属度法、重⼼法、加权平均等。
打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键⼊:fuzzy 命令,弹出模糊推理系统编辑器界⾯,如下图所⽰。
因为我们⽤的是两个输⼊,所以在Edit菜单中,选Add variable… ->input,加⼊新的输⼊input,如下图所⽰。
选择input(选中为红框),在界⾯右边⽂字输⼊处键⼊相应的输⼊名称,例如,温度输⼊⽤tmp-input, 磁能输⼊⽤ mag-input,等。
方法二:用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现(陈老师整理)一、模糊逻辑推理系统的总体特征模糊控制由于不依赖对象的数学模型而受到广泛的重视,计算机仿真是研究模糊控制系统的重要手段之一。
由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有力的工具,特别是在Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。
由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很高的,仿真结果是可靠的。
在Simulink环境下对PID控制系统进行建模是非常方便的,而模糊控制系统与PID控制系统的结构基本相同,仅仅是控制器不同。
所以,对模糊控制系统的建模关键是对模糊控制器的建模。
Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入Fuzzy就可进入模糊控制器编辑环境。
二、Matlab模糊逻辑工具箱仿真1.模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。
其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。
打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:fuzzy 命令,弹出模糊推理系统编辑器界面,如下图所示。
因为我们用的是两个输入,所以在Edit菜单中,选Add variable… ->input,加入新的输入input,如下图所示。
选择input(选中为红框),在界面右边文字输入处键入相应的输入名称,例如,温度输入用tmp-input, 磁能输入用 mag-input,等。
2.隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
num=20;den=[8 6 1];[a1,b1,c1,d]=tf2ss(num,den); T=0.01;h=T;N=500;R=1.5*ones(1,N);%pide=0;de=0;ie=0;kp=4;ki=0.5;kd=1.5;x=[0;0];for k=1:Nu1=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u1;k1=a1*(x+h*k0/2)+b1*u1;k2=a1*(x+h*k1/2)+b1*u1;k3=a1*(x+h*k2)+b1*u1;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u1;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy2(1,k)=y;enda=newfis('simple1');a=addvar(a,'input','e',[-5 5]);a=addmf(a,'input',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',1,'PB','trapmf',[4,5,5,5]);a=addvar(a,'input','de',[-5 5]);a=addmf(a,'input',2,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'input',2,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'input',2,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'input',2,'ZE','trimf',[-1,0,1]);a=addmf(a,'input',2,'PS','trapmf',[0,1,2,3]);a=addmf(a,'input',2,'PM','trapmf',[2,3,4,5]);a=addmf(a,'input',2,'PB','trapmf',[4,5,5,5]);a=addvar(a,'output','kp',[-5 5]);a=addmf(a,'output',1,'NB','trapmf',[-5,-5,-5,-4]);a=addmf(a,'output',1,'NM','trapmf',[-5,-4,-3,-2]);a=addmf(a,'output',1,'NS','trapmf',[-3,-2,-1,0]);a=addmf(a,'output',1,'ZE','trimf',[-1,0,1]);a=addmf(a,'output',1,'PS','trapmf',[0,1,2,3]);a=addmf(a,'output',1,'PM','trapmf',[2,3,4,5]);a=addmf(a,'output',1,'PB','trapmf',[4,5,5,5]);rulelist1=[1 1 7 1 1;1 2 7 1 1;1 3 6 1 1;1 4 6 1 1;1 5 5 1 1;1 6 4 1 1;1 7 4 1 1;2 1 7 1 1;2 2 7 1 1;23 6 1 1;245 1 1;2 5 5 1 1;26 4 1 1;2 73 1 1;3 1 6 1 1;3 2 6 1 1;3 3 6 1 1;345 1 1;3 5 4 1 1;36 3 1 1;3 7 3 1 1;4 1 6 1 1;4 2 6 1 1;4 35 1 1;4 4 4 1 1;4 5 3 1 1;46 2 1 1;4 7 2 1 1;5 1 5 1 1;5 2 5 1 1;5 3 4 1 1;5 4 3 1 1;5 5 3 1 1;56 2 1 1;5 7 2 1 1;6 1 5 1 1;6 2 4 1 1;6 3 3 1 1;6 4 2 1 1;6 5 2 1 1;6 6 2 1 1;6 7 1 1 1;7 1 4 1 1;7 2 4 1 1;7 3 2 1 1;7 4 2 1 1;7 5 2 1 1;7 6 1 1 1;7 7 1 1 1]; a=addrule(a,rulelist1);b=newfis('simple2');b=addvar(b,'input','e',[-5 5]);b=addmf(b,'input',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',1,'PB','trapmf',[4,5,5,5]);b=addvar(b,'input','de',[-5 5]);b=addmf(b,'input',2,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'input',2,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'input',2,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'input',2,'ZE','trimf',[-1,0,1]);b=addmf(b,'input',2,'PS','trapmf',[0,1,2,3]);b=addmf(b,'input',2,'PM','trapmf',[2,3,4,5]);b=addmf(b,'input',2,'PB','trapmf',[4,5,5,5]);b=addvar(b,'output','ki',[-5 5]);b=addmf(b,'output',1,'NB','trapmf',[-5,-5,-5,-4]);b=addmf(b,'output',1,'NM','trapmf',[-5,-4,-3,-2]);b=addmf(b,'output',1,'NS','trapmf',[-3,-2,-1,0]);b=addmf(b,'output',1,'ZE','trimf',[-1,0,1]);b=addmf(b,'output',1,'PS','trapmf',[0,1,2,3]);b=addmf(b,'output',1,'PM','trapmf',[2,3,4,5]);b=addmf(b,'output',1,'PB','trapmf',[4,5,5,5]);rulelist2=[1 1 1 1 1;1 2 1 1 1;1 3 2 1 1;1 4 2 1 1;1 5 3 1 1;1 6 4 1 1;1 7 4 1 1;2 1 1 1 1;2 2 1 1 1;23 2 1 1;24 3 1 1;25 3 1 1;26 4 1 1;2 7 4 1 1;3 1 1 1 1;3 2 2 1 1;3 3 3 1 1;34 3 1 1;35 4 1 1;36 5 1 1;3 7 5 1 1;4 1 2 1 1;4 2 2 1 1;4 3 3 1 1;4 4 4 1 1;45 5 1 1;46 6 1 1;4 7 6 1 1;5 1 2 1 1;5 2 3 1 1;5 3 4 1 1;5 4 5 1 1;5 5 5 1 1;56 6 1 1;5 7 7 1 1;6 1 4 1 1;6 2 4 1 1;6 3 5 1 1;6 4 5 1 1;6 5 6 1 1;6 67 1 1;6 7 7 1 1;7 1 4 1 1;7 2 4 1 1;7 3 5 1 1;7 4 6 1 1;7 5 6 1 1;7 6 7 1 1;7 7 7 1 1]; b=addrule(b,rulelist2);c=newfis('simple3');c=addvar(c,'input','e',[-5 5]);c=addmf(c,'input',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',1,'PB','trapmf',[4,5,5,5]);c=addvar(c,'input','de',[-5 5]);c=addmf(c,'input',2,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'input',2,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'input',2,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'input',2,'ZE','trimf',[-1,0,1]);c=addmf(c,'input',2,'PS','trapmf',[0,1,2,3]);c=addmf(c,'input',2,'PM','trapmf',[2,3,4,5]);c=addmf(c,'input',2,'PB','trapmf',[4,5,5,5]);c=addvar(c,'output','kd',[-5 5]);c=addmf(c,'output',1,'NB','trapmf',[-5,-5,-5,-4]);c=addmf(c,'output',1,'NM','trapmf',[-5,-4,-3,-2]);c=addmf(c,'output',1,'NS','trapmf',[-3,-2,-1,0]);c=addmf(c,'output',1,'ZE','trimf',[-1,0,1]);c=addmf(c,'output',1,'PS','trapmf',[0,1,2,3]);c=addmf(c,'output',1,'PM','trapmf',[2,3,4,5]);c=addmf(c,'output',1,'PB','trapmf',[4,5,5,5]);rulelist3=[1 1 1 1 1;1 2 1 1 1;1 3 1 1 1;1 4 1 1 1;1 5 1 1 1;1 6 1 1 1;1 7 1 1 1;2 1 2 1 1;2 2 2 1 1;23 2 1 1;24 2 1 1;25 2 1 1;26 2 1 1;2 7 2 1 1;3 1 3 1 1;3 2 3 1 1;3 3 3 1 1;34 3 1 1;35 3 1 1;36 3 1 1;3 7 3 1 1;4 1 4 1 1;4 2 3 1 1;4 3 3 1 1;4 4 3 1 1;45 3 1 1;46 3 1 1;4 7 4 1 1;5 1 4 1 1;5 2 4 1 1;5 3 4 1 1;5 4 4 1 1;5 5 4 1 1;56 4 1 1;5 7 4 1 1;6 1 5 1 1;6 2 5 1 1;6 3 5 1 1;6 4 5 1 1;6 5 5 1 1;6 6 5 1 1;6 7 4 1 1;7 1 6 1 1;7 2 6 1 1;7 3 6 1 1;7 4 6 1 1;7 5 6 1 1;7 6 6 1 1;7 7 6 1 1]; c=addrule(c,rulelist3);figure(2);gensurf(c)e=0;de=0;ie=0;x=[0;0];ke=30;kd=20;kup=5;kui=0.3;kud=0.7;for k=1:Ne1=ke*e;de1=kd*de;if e1>=5e1=5;elseif e1<=-5e1=-5;endif de1>=5de1=5;elseif de1<=-5de1=-5;endin=[e1 de1];u1=evalfis(in,a);u2=evalfis(in,b);u3=evalfis(in,c);kp=u1/10+kup;ki=u2/10+kui;kd=u3/10+kud;u=-(kp*e+ki*ie+kd*de);k0=a1*x+b1*u;k1=a1*(x+h*k0/2)+b1*u;k2=a1*(x+h*k1/2)+b1*u;k3=a1*(x+h*k2)+b1*u;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u;yy(1,k)=y;e1=e;e=y-R(1,k);de=(e-e1)/T;ie=ie+T*e;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy(1,:),'r',kk,yy2(1,:),'g'); gtext('FSA-PID');gtext('PID');num=20;den=[1.6,4.4,1];[a1,b,c,d]=tf2ss(num,den);x=[0;0];T=0.01;h=T;N=1000;%PID CONTROLe=0;de=0;ie=0;kp=5;ki=1.3;kd=0.1;for k=1:Nuu(1,k)=-(kp*e+ki*de+kd*ie); u=uu(1,k);k0=a1*x+b*u;k1=a1*(x+h*k0/2)+b*u;k2=a1*(x+h*k1/2)+b*u;k3=a1*(x+h*k2)+b*u;x=x+(k0+2*k1+2*k2+k3)*h/6;y=c*x+d*u;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;ie=e*T+ie;yy1(1,k)=y;enda=newfis('simple');a=addvar(a,'input','e',[-6 6]);a=addmf(a,'input',1,'NB','trapmf',[-6,-6,-5,-3]); a=addmf(a,'input',1,'NS','trapmf',[-5,-3,-2,0]);a=addmf(a,'input',1,'ZR','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trapmf',[0,2,3,5]);a=addmf(a,'input',1,'PB','trapmf',[3,5,6,6]);a=addvar(a,'input','de',[-6 6]);a=addmf(a,'input',2,'NB','trapmf',[-6,-6,-5,-3]); a=addmf(a,'input',2,'NS','trapmf',[-5,-3,-2,0]);a=addmf(a,'input',2,'ZR','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trapmf',[0,2,3,5]);a=addmf(a,'input',2,'PB','trapmf',[3,5,6,6]);a=addvar(a,'output','u',[-3 3]);a=addmf(a,'output',1,'NB','trapmf',[-3,-3,-2,-1]); a=addmf(a,'output',1,'NS','trimf',[-2,-1,0]);a=addmf(a,'output',1,'ZR','trimf',[-1,0,1]);a=addmf(a,'output',1,'PS','trimf',[0,1,2]);a=addmf(a,'output',1,'PB','trapmf',[1,2,3,3]);rr=[5 5 4 4 3;5 4 4 3 3;4 4 3 3 2;4 3 3 2 2;3 3 2 2 1]; r1=zeros(prod(size(rr)),3);k=1;for i=1:size(rr,1)for j=1:size(rr,2)r1(k,:)=[i,j,rr(i,j)];k=k+1;endend[r,s]=size(r1);r2=ones(r,2);rulelist=[r1,r2];a=addrule(a,rulelist);e=0;de=0;ke=40;kd=1.5;ku=1;for k=1:Ne1=ke*e;de1=kd*de;if e1>=6e1=6;elseif e1<=-6e1=-6;endif de1>=6de1=6;elseif de1<=-6de1=-6;endin=[e1 de1];uu(1,k)=ku*evalfis(in,a); u=uu(1,k);k0=a1*x+b*u;k1=a1*(x+h*k0/2)+b*u;k2=a1*(x+h*k1/2)+b*u;k3=a1*(x+h*k2)+b*u;x=x+(k0+2*k1+2*k2+k3)*h/6; y=c*x+d*u;t(1,k)=k*T;if k<=300R(1,k)=t(1,k)/3;elseif k<=700R(1,k)=1.0;elseif k<=1000R(1,k)=(10-t(1,k))/3;ende1=e;e=y-R(1,k);de=(e-e1)/T;yy(1,k)=y;endkk=[1:N]*T;figure(1);plot(kk,R,'k',kk,yy,'k',kk,yy1,'r'); gtext('FUZZY');gtext('n');gtext('PID');。
模糊控制介绍及Matlab模糊控制工具箱使用目录•一、模糊控制的产生•二、模糊逻辑的理论基础•三、模糊控制Matlab工具箱示例•四、模糊控制的基本思想•五、模糊控制器的基本结构•六、模糊控制器的优缺点一、模糊控制的产生在传统控制领域,对于明确系统有强而有力的控制能力,即被控系统的动态信息越详细,越能达到精确控制的目的。
然而,在多变量、非线性的复杂系统中,往往难以完全描述系统的动态信息。
此时,传统的控制理论则显得无能为力,而有经验的专家或工作人员仍能根据长期实践观察和操作经验进行有效控制。
据此引申,是否可将人的操作经验总结为若干条控制规则以避开复杂模型的建立过程?模糊控制最重要的特征是反应人们的经验及推理规则,而这些经验和推理规则是通过自然语言来表达的,如“水温上升过快,则关小燃气阀”。
在控制系统初期,由于对系统缺乏了解,控制效果可能不好,但若干次探索后终能实现预期的控制,这就是经验对模糊控制系统的重要性。
由于模糊控制实质上是用计算机去执行人的控制策略,因而可以避开复杂模型的建立,对人们关于某个控制问题的成功和失败经验加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。
PS:“模糊”是人类感知万物,获取知识,思维推理,决策实施的重要特征。
“模糊”比“清晰”所拥有的信息量更大,更符合客观世界。
二、模糊逻辑的理论基础模糊逻辑是指模仿人脑不确定性的概念判断和推理思维,对于定性的知识和经验,借助隶属度概念、模糊集合,来处理模糊关系。
模糊逻辑实质上是要对模糊性对象进行精确描述和处理。
模糊逻辑的目的是将一个输入空间映射到一个输出空间,主要要靠一系列的if-then规则。
这些规则包含变量和描述这些变量的形容词,被平行评估,因此它们的顺序不重要。
在进行模糊推理之前,先要定义好输入和输出变量以及描述它们的形容词。
模糊推理的流程如下图所示。
模糊推理流程2.1、模糊集合普通情况下,元素a属于集合A(1)或不属于集合A(0),如下图所示,星期一和星期三都是工作日,而苹果和星星则不是。
MATLAB模糊逻辑工具箱函数说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。
1.GUI工具Anfisedit 打开ANFIS编辑器GUIFuzzy 调用基本FIS编辑器Mfedit 隶属度函数编辑器Ruleedit 规则编辑器和语法解析器Ruleview 规则观察器和模糊推理方框图Surfview 输出曲面观察器2.隶属度函数dsigmf 两个sigmoid型隶属度函数之差组成的隶属度函数gauss2mf 建立两边型高斯隶属度函数gaussmf 建立高斯曲线隶属度函数gbellmf 建立一般钟型隶属度函数pimf 建立Π型隶属度函数psigmf 通过两个sigmoid型隶属度函数的乘积构造隶属度函数smf 建立S-型隶属度函数sigmf 建立Sigmoid型隶属度函数trapmf 建立梯形隶属度函数trimf 建立三角形隶属度函数zmf 建立Z-型隶属度函数3.FIS数据结构管理addmf 向模糊推理系统(FIS)的语言变量添加隶属度函数addrule 向模糊推理系统(FIS)的语言变量添加规则addvar 向模糊推理系统(FIS)添加语言变量defuzz 对隶属度函数进行反模糊化evalfis 完成模糊推理计算evalmf 通过隶属度函数计算gensurf 生成一个FIS输出曲面getfis 得到模糊系统的属性mf2mf 在两个隶属度函数之间转换参数newfis 创建新的FISparsrule 解析模糊规则plotfis 绘制一个FISplotmf 绘制给定语言变量的所有隶属度函数的曲线readfis 从磁盘装入一个FISrmmf 从FIS中删除某一语言变量的某一隶属度函数rmvar 从FIS中删除某一语言变量setfis 设置模糊系统的属性showfis 以分行的形式显示FIS结构的所有属性showrule 显示FIS的规则writefis 保存FIS到磁盘上4.先进技术anfis Sugeno型模糊推理系统(FIS)的训练程序(只适用于MEX)fcm 模糊C均值聚类genfis1 不使用数据聚类方法从数据生成FIS结构genfis2 使用减法聚类方法从数据生成FIS结构subclust 用减法聚类方法寻找聚类中心5.Simulink仿真块fuzblock Simulink模糊逻辑控制器库sffis 用于Simulink的模糊推理S-函数6.演示defuzzdm 反模糊化方法fcmdemo FCM聚类显示(二维)fuzdemos 列出所有模糊逻辑工具箱的演示程序gasdemo 使用子聚类节省燃料的ANFIS演示juggler 带规则观察器的弹球游戏器invkine 单机械臂倒立摆运动irisfcm FCM聚类显示(四维)noisedm 自适应消除噪声slbb 球和棒控制(Simulink)slcp 倒立摆控制(Simulink)sltank 水位控制(Simulink)sltankrule 带规则观察器的水位控制(Simulink)sltbu 卡车入库(只有Simulink方式)。
Matlab中的模糊逻辑控制方法引言模糊逻辑控制(FLC)是一种常用的控制方法,在很多实际应用中得到了广泛的应用。
Matlab作为一种功能强大的数学计算和工程仿真软件,提供了丰富的工具和函数来支持模糊逻辑控制的设计和实现。
本文将介绍Matlab中的模糊逻辑控制方法及其应用。
一、模糊逻辑控制的基本概念模糊逻辑控制是一种基于模糊逻辑原理的控制方法,它可以处理不确定性信息和模糊概念,适用于那些难以建立精确数学模型的控制系统。
模糊逻辑控制系统由四个基本部分组成:模糊化、推理、解模糊和规则库。
1.1 模糊化模糊化是将输入量从实际值转化为模糊集合的过程。
在Matlab中,可以使用fuzzifier函数将实际输入映射到模糊集合上。
模糊集合可以通过一些参数来描述,如三角形型、梯形型、高斯型等。
1.2 推理推理是根据模糊集合的规则进行推导,得到系统的输出。
在Matlab中,可以使用inference函数进行推理。
推理的方法有三种:基于规则的推理、基于模糊集合的推理和基于模型的推理。
根据应用的需求和系统的复杂程度,可以选择不同的推理方法。
1.3 解模糊解模糊是将模糊输出转化为实际值的过程。
在Matlab中,可以使用defuzzifier 函数进行解模糊。
常用的解模糊方法有:最大值法、平均值法、面积法等。
1.4 规则库规则库是模糊逻辑控制系统的核心,它包含了一系列的模糊规则,用来描述输入和输出之间的关系。
在Matlab中,可以使用fuzzy规则对象来定义规则库。
规则库的设计是模糊逻辑控制系统设计中的关键一步,直接影响系统的性能和稳定性。
二、Matlab中的模糊逻辑控制工具箱Matlab提供了专门的工具箱,用于支持模糊逻辑控制系统的设计和实现。
这个工具箱包含了一些常用的函数和工具,能够帮助用户更加方便快捷地进行模糊逻辑控制系统的设计和仿真。
2.1 模糊逻辑控制系统设计工具Matlab的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。
基本FIS编辑器函数fuzzy格式 fuzzy %弹出未定义的基本FIS编辑器fuzzy(fismat) %使用fuzzy('tipper'),弹出下图FIS编辑器。
编辑器是任意模糊推理系统的高层显示,它允许你调用各种其它的编辑器来对其操作。
此界面允许你方便地访问所有其它的编辑器,并以最灵活的方式与模糊系统进行交互。
方框图:窗口上方的方框图显示了输入、输出和它们中间的模糊规则处理器。
单击任意一个变量框,使选中的方框成为当前变量,此时它变成红色高亮方框。
双击任意一个变量,弹出隶属度函数编辑器,双击模糊规则编辑器,弹出规则编辑器。
菜单项:FIS编辑器的菜单棒允许你打开相应的工具,打开并保存系统。
·File菜单包括:New mamdani FIS … 打开新mamdani型系统;New Sugeno FIS …打开新Sugeno型系统;Open from disk …从磁盘上打开指定的.fis文件系统;Save to disk 保存当前系统到磁盘上的一个.fis文件上;Save to disk as … 重命名方式保存当前系统到磁盘上;Open from workspace … 从工作空间中指定的FIS结构变量装入一个系统;Save to workspace …保存系统到工作空间中当前命名的FIS结构变量中;Save to workspace as …保存系统到工作空间中指定的FIS结构变量中;Close windows 关闭GUI;·Edit菜单包括:Add input 增加另一个输入到当前系统中;Add output 增加另一个输出到当前系统中;Remove variable 删除一个所选的变量;Undo 恢复当前最近的改变;Edit MFs …调用隶属度函数编辑器;Edit rules …调用规则编辑器;Edit anfis …只对单输出Sugeno型系统调用编辑器;View rules …调用规则观察器;View surface … 调用曲面观察器。