第5章MATLAB模糊逻辑工具箱
方法二用MATLAB的模糊逻辑工具箱(Fuzzytoolbox)实现.
⽅法⼆⽤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模糊逻辑工具箱函数
二、利用模糊逻辑工具箱建立模糊推理系统
基于高木——关野(Takagi——Sugeno)模 型的模糊逻辑系统 高木 —— 关野模糊逻辑系统是一类较为特 殊的模糊逻辑系统,其模糊规则不同于一般的 模糊规则形式。 在高木 —— 关野模糊逻辑系统中,采用如 下形式的模糊规则: IF x1 is A1 and x2 is A2 and…and xn is An THEN y c x 其 中 Ai(i=1,2,…,n) 是 输 入 模 糊 语 言 值 , ci(i=1,2,…,n)是真值参数。
2
一、 MATLAB模糊逻辑工具箱简介
针对模糊逻辑尤其是模糊控制的迅速推广应 用,MathWorks公司在其MATLAB版中添加 了Fuzzy Logic工具箱。该工具箱由长期从事 模糊逻辑和模糊控制研究与开发工作的有关 专家和技术人员编制。MATLAB Fuzzy Logic工具箱以其功能强大和方便易用的特点 得到了用户的广泛欢迎。模糊逻辑的创始人 Zadeh教授称赞该工具箱“在各方面都给人 以深刻的印象,使模糊逻辑成为智能系统的 概念与设计的有效工具。”
3
一、 MATLAB模糊逻辑工具箱简介
在模糊逻辑工具箱中包含五个图形化的系 统设计工具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建 立模糊逻辑系统的整体框架,包括输入与输 出数目、去模糊化方法等; • 隶属度函数编辑器,用于通过可视化手 段建立语言变量的隶属度函数; • 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
建立一般的钟型隶属度函数 建立型隶属度函数 建立sigmiod型的隶属度函数
trapmf( )
trimf( ) zmf( ) mf2mf( )
如何利用Matlab进行模糊逻辑控制
如何利用Matlab进行模糊逻辑控制Matlab是一种流行的数学软件,广泛应用于科学和工程领域。
其中一个强大的功能是模糊逻辑控制,它可以帮助人们解决模糊问题。
本文将介绍如何利用Matlab进行模糊逻辑控制,以及其在实际应用中的价值和局限性。
1. 什么是模糊逻辑控制?模糊逻辑控制是一种基于模糊推理的控制方法。
与传统的二值逻辑不同,模糊逻辑可以处理模糊的、不确定的信息。
它将模糊集合和模糊规则引入到控制系统中,使得系统能够根据输入数据和模糊规则进行推理,并输出相应的控制信号。
2. Matlab中的模糊逻辑工具箱Matlab提供了强大的模糊逻辑工具箱,可以用于模糊逻辑控制系统的设计和仿真。
该工具箱包含了模糊集合的定义、模糊规则的建立、模糊控制器的设计等功能。
用户可以通过简单的命令和图形界面进行操作,快速构建模糊逻辑控制系统。
3. 模糊集合的定义模糊集合是模糊逻辑的基础,它用来描述对于一个特定的输入值,它属于某个特定集合的程度。
在Matlab中,我们可以使用模糊集合来定义输入和输出的隶属度函数。
例如,对于一个温度控制系统,我们可以定义一个“冷”的模糊集合和一个“热”的模糊集合,它们分别代表了输入量的不同程度。
4. 模糊规则的建立在模糊逻辑控制系统中,模糊规则用于描述输入和输出之间的关系。
在Matlab 中,我们可以使用模糊规则来定义输入值和输出值之间的映射关系。
例如,对于一个简单的车速控制系统,我们可以定义一个模糊规则,如“如果车速较慢,则增加油门”的规则。
通过组合多个模糊规则,可以构建一个复杂的控制策略。
5. 模糊控制器的设计在Matlab中,我们可以使用模糊控制器对象来设计和实现模糊逻辑控制系统。
模糊控制器对象包含了输入集合、输出集合、模糊规则库等属性,以及推理和解糊过程的方法。
用户可以根据系统需求和实际问题,选择合适的模糊集合、模糊规则和解糊方法,设计出一个有效的模糊控制器。
6. 模糊逻辑控制的应用模糊逻辑控制在实际应用中具有广泛的应用价值。
方法二用MATLAB的模糊逻辑工具箱(Fuzzy toolbox)实现.
方法二:用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)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
matlab模糊控制工具箱
第一章绪论1.1课题的提出和意义随着我国电力事业的发展,电网管理日趋现代化。
负荷预测问题的研究逐渐引起了人们的关注,在电力系统学科中占据了重要的地位,是一个重要的组成部分。
在实际中,制定电力系统规划以及实现电力系统自动化这两项重要的工作,对它们进行应有的负荷预测都是基本要求。
众所周知,电力系统的作用应当是为各类的用户提供可靠而合乎质量要求的电能,使得各种客户的要求得到满足,而所有用户所使用的电能即为负荷。
负荷的大小与特性,对于系统的运行研究以及系统的设计,都是重中之中。
所以,对负荷的变化与特性,有一个事先的估计,是电力系统发展与运行研究的重要内容。
电力系统运行管理现代化中最看重的就是负荷预测,其水平决定了现代化的程度以及技术的高度,能够保证整个系统能够在正确的思维指导下调度和运行。
精准而优良的预测系统不仅在电力系统的安全、可靠、经济运行中起着支柱的作用,在节约能源方面也有着不俗的发挥。
负荷预测会受到很多方面的影响,不单单由以往的数据所决定,还要各方面非电力系统负荷的影响。
那整个系统为什么会要对将来的用电进行预测?因为系统内的可用发电容量,在正常运行的情况下,无论什么时候都要满足客户的需求,即满足所要提供的负荷。
发电容量一旦不够,则必须采取相应的措施来增加其发电容量,比如新增发电机组或从相邻的电网借来所差容量;反之,若发电容量过剩,则也应该采取必要的措施,如有选择性的止某台电机的运行或者向相邻的网络输出多余的电容量。
为了对选择对应的机组,确定所要具备的电源的结构,以及对于燃料的需求等,我们就应该要做到对负荷有一个准确的预测。
负荷曲线的预测可为研究电力系统的峰值、抽水蓄能电站的容量以及发输电设备的协调运行提供数据支持。
电力用户是电力工业的服务对象,电力负荷的不断增长是电力工业发展的根据。
正确地预测电力负荷,既是为了保证无条件供应国民经济各部门及人民生活以充足的电力的需要,也是电力工业自身健康发展的需要。
matlab 模糊工具箱操作
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中的模糊逻辑控制方法引言模糊逻辑控制(FLC)是一种常用的控制方法,在很多实际应用中得到了广泛的应用。
Matlab作为一种功能强大的数学计算和工程仿真软件,提供了丰富的工具和函数来支持模糊逻辑控制的设计和实现。
本文将介绍Matlab中的模糊逻辑控制方法及其应用。
一、模糊逻辑控制的基本概念模糊逻辑控制是一种基于模糊逻辑原理的控制方法,它可以处理不确定性信息和模糊概念,适用于那些难以建立精确数学模型的控制系统。
模糊逻辑控制系统由四个基本部分组成:模糊化、推理、解模糊和规则库。
1.1 模糊化模糊化是将输入量从实际值转化为模糊集合的过程。
在Matlab中,可以使用fuzzifier函数将实际输入映射到模糊集合上。
模糊集合可以通过一些参数来描述,如三角形型、梯形型、高斯型等。
1.2 推理推理是根据模糊集合的规则进行推导,得到系统的输出。
在Matlab中,可以使用inference函数进行推理。
推理的方法有三种:基于规则的推理、基于模糊集合的推理和基于模型的推理。
根据应用的需求和系统的复杂程度,可以选择不同的推理方法。
1.3 解模糊解模糊是将模糊输出转化为实际值的过程。
在Matlab中,可以使用defuzzifier 函数进行解模糊。
常用的解模糊方法有:最大值法、平均值法、面积法等。
1.4 规则库规则库是模糊逻辑控制系统的核心,它包含了一系列的模糊规则,用来描述输入和输出之间的关系。
在Matlab中,可以使用fuzzy规则对象来定义规则库。
规则库的设计是模糊逻辑控制系统设计中的关键一步,直接影响系统的性能和稳定性。
二、Matlab中的模糊逻辑控制工具箱Matlab提供了专门的工具箱,用于支持模糊逻辑控制系统的设计和实现。
这个工具箱包含了一些常用的函数和工具,能够帮助用户更加方便快捷地进行模糊逻辑控制系统的设计和仿真。
2.1 模糊逻辑控制系统设计工具Matlab的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。
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 … 调用曲面观察器。
Matlab模糊控制器设计与实践
Matlab模糊控制器设计与实践近年来,模糊控制器在自动控制领域得到了广泛应用。
他们的灵活性和适应性使其成为解决复杂系统控制问题的有力工具。
在这篇文章中,我们将探讨使用Matlab进行模糊控制器设计和实践的方法。
1. 模糊控制简介模糊控制是一种基于模糊逻辑原理的控制方法,它与传统的精确控制不同,能够处理不确定性和模糊性问题。
模糊控制器的设计需要确定输入和输出的模糊化、模糊规则的建立以及解模糊等步骤。
2. Matlab模糊逻辑工具箱(Fuzzy Logic Toolbox)Matlab提供了强大的模糊逻辑工具箱,可以方便地进行模糊控制器的设计和实践。
首先,我们需要定义输入变量和输出变量,以及它们的模糊集和隶属度函数。
然后,根据系统的控制目标和规则,建立模糊规则库。
最后,通过解模糊方法得到控制输出。
3. 模糊控制器设计的步骤设计一个模糊控制器的一般步骤如下:(1)问题定义:明确控制目标和系统特性;(2)建立输入输出变量及其模糊集:根据系统的特性设定输入和输出变量,并确定它们的模糊集和隶属度函数;(3)建立模糊规则库:根据专家经验或系统知识,建立模糊规则库,并定义规则的权重;(4)系统模拟和性能评价:利用模糊控制器进行系统模拟,并通过性能评价指标进行控制效果的评估;(5)模糊控制器参数调优:根据评价指标结果,对模糊控制器的参数进行调优;(6)系统实时控制:将调优后的模糊控制器应用到实际系统中进行实时控制。
4. 模糊控制器的应用案例模糊控制器适用于各种不确定性和非线性系统的控制,例如机械系统、电力系统、交通系统等。
以电磁悬浮系统为例,该系统由电磁悬浮力和磁场力共同作用控制。
利用Matlab的模糊逻辑工具箱,我们可以根据系统特性建立模糊控制器并进行仿真。
通过调整模糊规则库和解模糊方法,可以实现对电磁悬浮系统的稳定控制。
5. 模糊控制器设计的优势和不足与传统控制方法相比,模糊控制器具有以下优势:(1)非线性系统的建模能力:模糊控制器能够处理非线性系统,适应性强;(2)抗干扰能力强:模糊控制器对参数扰动和外部干扰具有一定的抗干扰能力;(3)灵活性和可解释性:模糊控制器的工作过程可以解释和理解,更好地符合实际。
Matlab模糊工具箱的使用
模糊控制由于不依赖对象的数学模型而受到广泛的重视,计算机仿真是研究模糊控制系统的重要手段之一。
由Math Works公司推出的Matlab软件,为控制系统的计算机仿真提供了强有力的工具,特别是在Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox),为仿真模糊控制系统提供了很大的方便。
由于这样的模块都是由相关领域的著名学者开发的,所以其可信度都是很高的,仿真结果是可靠的。
在Simulink环境下对控制系统进行建模是非常方便的,而模糊控制系统与常见控制系统的结构基本相同,仅仅是控制器不同。
所以,对模糊控制系统的建模关键是对模糊控制器的建模。
Matlab软件提供了一个模糊推理系统(FIS)编辑器,只要在Matlab命令窗口键入fuzzy命令就可进入模糊控制器编辑环境。
一、模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。
其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。
打开模糊推理系统编辑器,在MATLAB的命令窗(command window)内键入:“fuzzy”命令,弹出模糊推理系统编辑器界面,如下图所示。
首先确定输入、输出变量的个数,在Edit菜单中,选Add variableÆinput,加入新的输入input;选Add variableÆoutput,加入新的输出output。
修改名称二、隶属度函数编辑器(Mfedit)该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
双击任一个输入或输出模块,进入成员函数编辑界面。
计算智能与智能系统课程实验1:利用MATLAB模糊逻辑工具箱建立模糊推理系统
实验内容:1.完成上述思考题。
2.分别用两种推理方式(Mamdani方法与Sugeno方法)对课本4.6小节中的三个规则、两输入一输出的例子建立模糊推理系统。
3.需给出以上相关的结果图,并在每幅图的下方,需对该图进行必要的文字解释。
4.用统一封面(见群共享)。
1.思考题(1)改变各模糊子集的隶属函数,比较结果。
i)当模糊子集的隶属函数都为高斯函数时,结果如下图所示:可见,若输入e=0,de=0,输出u为5.83e-017;ii)当模糊子集的隶属函数都为高斯函数时,结果如下图所示:可见,若输入e=0,de=0,输出u为0.00905;(2)对给定的输入e=0.2度, de=-0.05瓦, 运行程序算出控制量u的结果页。
(3)若阀门F1只能进水,阀门F2只能出水,两个阀门开度都可变化,模糊控制器应怎样设计?e与de的设置值同实验指导书,对于流入与流出阀门的控制变量,都定义5个模糊子集,NL、NM、O、PM和PL,其隶属函数都是选trimf,增加的流出阀门命名为u2,流入阀门命名为u1,设定与u1一样,范围为(-1,1),其5个隶属函数也都为trimf,如下图所示。
制定一些规则:(1)如果液位偏差为零(e=O),则阀门开度为u1=O,u2=0(2)如果液位偏差为正大(e=PL),则阀门开度为u1=PL,u2=0(3)如果液位偏差为正大(e=PL),则阀门开度为u1=0,u2=NL(4)如果液位偏差为正大(e=PL),则阀门开度为u1=PL,u2=NL(5)如果液位偏差为负大(e=NL),则阀门开度为u1=NL,u2=0(6)如果液位偏差为负大(e=NL),则阀门开度为u1=0,u2=PL(7)如果液位偏差为负大(e=NL),则阀门开度为u1=NL,u2=PL(8)如果液位偏差为零(e=O) ,且偏差率正大(de=PL),则阀门开度为u1=NM,u2=0(9)如果液位偏差为零(e=O) ,且偏差率正大(de=PL),则阀门开度为u1=0,u2=PM (10)如果液位偏差为零(e=O) ,且偏差率正大(de=PL),则阀门开度为u1=NM,u2=PM (11)如果液位偏差为零(e=O) ,且偏差率负大(de=NL),则阀门开度为u1=PM,u2=0 (12)如果液位偏差为零(e=O) ,且偏差率负大(de=NL),则阀门开度为u1=0,u2=NM (13)如果液位偏差为零(e=O) ,且偏差率负大(de=NL),则阀门开度为u1=PM,u2=NM 如下图所示:当e=0,de=0时,u1=6.05e-17,u2=6.05e-17,如下图所示:当e=0.3,de=0.04时,即水位偏低,有往上趋势时,结果为u1=0.00395,u2=-0.00395,如下图说是,即流入阀门稍微调大,流出阀门稍微调小,因此所指定的规则是合理的。
Matlab中的模糊逻辑控制技术介绍
Matlab中的模糊逻辑控制技术介绍引言在科技不断进步的今天,计算机和软件工具已经成为了各个领域中不可或缺的一部分。
对于工程领域而言,控制技术一直是研究的热点之一。
而模糊逻辑控制技术作为一种重要的控制方法,被广泛应用在各个领域,其中包括机器学习、人工智能、自动化等等。
本文将介绍在Matlab中如何使用模糊逻辑控制技术进行控制,同时结合实例来说明其应用的具体步骤和流程。
一、模糊逻辑控制的基本原理模糊逻辑控制是一种模拟人的思维方式,将人类对实际世界的认知抽象为一定的规则,然后通过使用模糊推理来实现控制。
模糊逻辑控制的基本原理是将模糊数学理论应用于控制系统中,通过建立模糊规则数据库和模糊推理机制,实现对系统输入和输出之间的模糊关系的表达和推理。
二、Matlab中的模糊逻辑控制工具箱Matlab是一款非常流行的科学计算软件,其提供了丰富的工具箱,用于实现各种控制算法。
其中,模糊逻辑工具箱(Fuzzy Logic Toolbox)是实现模糊逻辑控制的强大工具之一。
该工具箱提供了用于设计、模拟和分析模糊控制系统的函数和界面,使得使用模糊逻辑控制技术变得更加简单和方便。
三、模糊逻辑控制的设计步骤1. 确定模糊逻辑控制系统的输入和输出在设计模糊逻辑控制系统之前,首先需要明确该系统的输入和输出。
输入通常是一些描述系统状态的变量,如温度、湿度等,输出通常是一些控制变量,如马达转速、电压等。
明确输入和输出有助于建立系统的数学模型,并为后续的划分模糊集合提供参考。
2. 确定模糊集合及其隶属度函数在模糊逻辑控制中,对于每一个输入和输出变量都需要划分出若干个模糊集合,并为每个模糊集合定义一个隶属度函数。
隶属度函数描述了某一个值在某个模糊集合中的隶属程度。
Matlab提供了一些函数,如trimf、trapmf等,用于定义不同形状的隶属度函数。
3. 构建模糊规则库模糊规则库是模糊逻辑控制系统的核心,它由一系列的模糊规则组成。
每条模糊规则由若干个前提条件和一个结论组成,描述了输入和输出之间的关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y ci xi i 1
其中Ai(i=1,2,…,n)是输入模糊语言值,ci(i=1,2,…,n)
是真值参数。
9
可以看出,高木-关野模糊逻辑系统的输出量 是精确值。这类模糊逻辑系统的优点是输出量可用 输入值的线性组合来表示,因而能够利用参数估计 方法来确定系统的参数ci(i=1,2,…,n);同时,可以应 用线性控制系统的分析方法来近似分析和设计模糊 逻辑系统。其缺点是规则的输出部分不具有模糊语 言值的形式,因此不能充分利用专家的控制知识, 模糊逻辑的各种不同原则在这种模糊逻辑系统中应 用的自由度也受到限制。
8
图5-1 基于标准模型的模糊逻辑系统原理图
2 基于高木——关野(Takagi——Sugeno)模型的
模糊逻辑系统
高木——关野模糊逻辑系统是一类较为特殊的模
糊逻辑系统,其模糊规则不同于一般的模糊规则形式。
在高木——关野模糊逻辑系统中,采用如下形式
的模糊规则:
n
IF x1 is A1 and x2 is A2 and…and xn is An THEN
2
5.1 MATLAB模糊逻辑工具箱简介
5.1.1 模糊逻辑工具箱的功能特点 1.易于使用 模糊逻辑工具箱提供了建立和测试模糊逻辑系 统的一整套功能函数,包括定义语言变量及其隶 属度函数、输入模糊推理规则、整个模糊推理系 统的管理以及交互式地观察模糊推形化的系统设计界面 在模糊逻辑工具箱中包含五个图形化的系统设计工
第5章 MATLAB模糊逻辑 工具箱
❖ 5.1 MATLAB模糊逻辑工具箱简介 ❖ 5.2 利用模糊逻辑工具箱建立模糊推理系统 ❖ 5.3 MATLAB模糊逻辑工具箱的图形用户界面 ❖ 5.4 基于Simulink的模糊逻辑的系统模块 ❖ 5.5 模糊推理系统在控制系统中的应用
1
针对模糊逻辑尤其是模糊控制的迅速推广应用, MathWorks公司在其MATLAB版中添加了Fuzzy Logic 工具箱。该工具箱由长期从事模糊逻辑和模糊控制研 究与开发工作的有关专家和技术人员编制。 MATLAB Fuzzy Logic工具箱以其功能强大和方便易 用的特点得到了用户的广泛欢迎。模糊逻辑的创始人 Zadeh教授称赞该工具箱“在各方面都给人以深刻的 印象,使模糊逻辑成为智能系统的概念与设计的有效 工具。”
6
5.1.2 模糊推理系统的基本类型 在模糊系统中,模糊模型的表示主要有两类:一类
是模糊规则的后件是输出量的某一模糊集合,如NB, PB等,这是最常用到的情况,因而称它为模糊系统的 标准模型表示;另一类是模糊规则的后件是输入语言 变量的函数,典型的情况是输入变量的线性组合。由 于该方法是日本学者高木(Takagi)和关野(Sugeno) 首 先 提 出 来 的 , 因 此 通 常 称 它 为 模 糊 系 统 的 TakagiSugeno(高木-关野)模型,或简称为Sugeno模型。
7
1 基于标准模型的模糊逻辑系统 在标准型模糊逻辑系统中,模糊规则的前件和后件
均为模糊语言值,即具有如下形式: IF x1 is A1 and x2 is A2 and…and xn is An THEN y is B
其中Ai(i=1,2,…,n)是输入模糊语言值,B是输出模糊语言值。
基于标准模型的模糊逻辑系统的框图如图5-1。图 中的模糊规则库由若干“IF——THEN”规则构成。模 糊推理机在模糊推理系统中起着核心作用,它将输入 模糊集合按照模糊规则映射成输出模糊集合。它提供 了一种量化专家语言信息和在模糊逻辑原则下系统地 利用这类语言信息的一般化模式。
(1)输入与输出语言变量,包括语言值及其隶属度 函数;
(2)模糊规则; (3)输入量的模糊化方法和输出变量的去模糊化方 法; (4)模糊推理算法。
12
针对模糊逻辑系统的以上主要构成,在MATLAB 模糊逻辑工具箱中构造一个模糊推理系统有如下步骤:
(1)模糊推理系统对应的数据文件,其后缀为.fis ,用于对该模糊系统进行存储、修改和管理;
(2)确定输入、输出语言变量及其语言值; (3)确定各语言值的隶属度函数,包括隶属度函数 的类型与参数; (4)确定模糊规则; (5)确定各种模糊运算方法,包括模糊推理方法、 模糊化方法、去模糊化方法等。
13
5.2 利用模糊逻辑工具箱建立模糊推理系统
5.2.1 模糊推理系统的建立、修改与存储管理 前面讨论了模糊推理系统的主要构成部分,即
5
4. 集成的仿真和代码生成功能 模糊逻辑工具箱不但能够实现Simulink的无缝连接, 而且通过 Real-Time Workshop能够生成ANSI C源代 码,从而易于实现模糊系统的实时应用。 5. 独立运行的模糊推理机 在用户完成模糊逻辑系统的设计后,可以将设计结 果以ASCII码文件保存;利用模糊逻辑工具箱提供的模 糊推理机,可以实现模糊逻辑系统的独立运行或者作 为其他应用的一部分运行。
10
5.1.3 模糊逻辑系统的构成 前面讨论了模糊逻辑系统的基本类型,标准型
模糊逻辑系统应用最为广泛。在MATLAB模糊逻辑 工具箱中主要针对这一类型的模糊逻辑系统提供了 分析和设计手段,但同时对高木一关野模糊逻辑系 统也提供了一些相关函数。下面将以标准型模糊逻 辑系统作为主要讨论对象。
11
构造一个模糊逻辑系统,首先必须明确其主要组成 部分。一个典型的模糊逻辑系统主要由如下几个部分 组成:
具,这五个设计工具是: • 模糊推理系统编辑器,该编辑器用于建立模糊逻辑
系统的整体框架,包括输入与输出数目、去模糊化方 法等;
• 隶属度函数编辑器,用于通过可视化手段建立语言 变量的隶属度函数;
• 模糊推理规则编辑器; • 系统输入输出特性曲面测览器; • 模糊推理过程浏览器。
4
3. 支持模糊逻辑中的高级技术 • 自 适 应 神 经 模 糊 推 理 系 统 ( ANFIS , Adaptive Neural Fuzzy Inference System); • 用于模式识别的模糊聚类技术; • 模糊推理方法的选择,用户可在广泛采用的 Mamdani型推理方法和 Sugeno型推理方法两者之间选 择。