通过算例熟悉MATLAB模糊控制工具箱
- 格式:doc
- 大小:164.00 KB
- 文档页数:4
用 Matlab 的 Fuzzy 工具箱实现模糊控制Matlab, Fuzzy, 模糊控制, 工具箱用Matlab 中的Fuzzy 工具箱做一个简单的模糊控制,流程如下:1、创建一个FIS (Fuzzy Inference System ) 对象,a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)一般只用提供第一个参数即可,后面均用默认值。
2、增加模糊语言变量a = addvar(a,'varType','varName',varBounds)模糊变量有两类:input 和output。
在每增加模糊变量,都会按顺序分配一个index,后面要通过该index 来使用该变量。
3、增加模糊语言名称,即模糊集合。
a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。
Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。
参数mfType 即隶属度函数(Membership Functions),它可以是Gaussmf、trimf、trapmf等,也可以是自定义的函数。
每一个语言名称也会有一个index,按加入的先后顺序得到,从 1 开始。
4、增加控制规则,即模糊推理的规则。
a = addrule(a,ruleList)其中ruleList 是一个矩阵,每一行为一条规则,他们之间是ALSO 的关系。
假定该FIS 有N 个输入和M 个输出,则每行有N+M+2 个元素,前N 个数分别表示N 个输入变量的某一个语言名称的index,没有的话用0 表示,后面的M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示AND,2 表示OR。
模糊控制在matlab中的实例模糊控制(模糊逻辑控制)是一种基于模糊数学理论的控制方法,它可以用于控制系统的稳定性、精度和响应速度等方面的优化。
在MATLAB 中,可以使用模糊逻辑工具箱(FLUS)来应用模糊控制。
以下是一个简单的实例,展示了如何使用 MATLAB 中的模糊逻辑工具箱来对温度控制系统进行控制:首先,我们需要创建一个温度控制系统,该系统将使用模糊控制来控制传感器的读数。
假设我们有四个传感器,分别为温度传感器、湿度传感器、压力和传感器,每个传感器读数为实数。
```matlab% 创建模型T = [120 100 80 50]; % 温度控制器输出R1 = [1.2 0.8 0.4 0.2]; % 湿度控制器输出R2 = [0.9 0.1 0.3 0.5]; % 压力控制器输出R3 = [1.4 0.6 0.2 0.1]; % 传感器误差P1 = [125 125 125 125]; % 温度控制器输入P2 = [100 100 90 80]; % 湿度控制器输入P3 = [85 85 80 75]; % 压力控制器输入F1 = [0.3 0.2 0.1 0.1]; % 温度控制器输出F2 = [0.4 0.3 0.2 0.1]; % 湿度控制器输出F3 = [0.5 0.4 0.3 0.1]; % 压力控制器输出y1 = [100 85 75 60]; % 实际温度y2 = [120 95 80 70]; % 实际湿度y3 = [135 110 90 80]; % 实际压力% 创建模糊控制器go1 = @(t,u,v) if t > 100 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y1 else 0;go2 = @(t,u,v) if t < 50 then ((1-v)*F3 + v*R1 +(1+v)*R2)/(1-v)*y2 else 0;go3 = @(t,u,v) if t == 0 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y3 else 0;% 创建模糊控制器的优化器var = [0 0 0 0];go1(0,:,:) = var;matlab.模糊控制.优化器.LevenbergMarquardt(var,go1);% 运行模糊控制器[t,u,v] = ode45(go1,[0 1],[120 100 80 50],y1);% 输出结果disp(["实际温度:" num2str(t)]);disp(["实际湿度:" num2str(u)]);disp(["实际压力:" num2str(v)]);```在这个例子中,我们使用 MATLAB 中的 ode45 工具箱来拟合温度控制器和湿度控制器的输出响应函数。
利用Matlab进行模糊逻辑和模糊控制的基本原理Matlab是一种强大的数学计算软件,广泛应用于各个领域的工程和科学研究。
在现实生活中,我们经常会遇到一些模糊不清、不确定的情况,而模糊逻辑和模糊控制正是用来处理这些模糊问题的有效工具。
本文将介绍利用Matlab进行模糊逻辑和模糊控制的基本原理,并通过一些具体案例来说明其在实际应用中的价值。
首先,我们需要了解模糊逻辑和模糊控制的基本概念和原理。
模糊逻辑是Lotfi Zadeh教授于1965年提出的一种处理模糊信息的形式化逻辑系统。
与传统的布尔逻辑只有两个取值(真和假)不同,模糊逻辑引入了模糊概念,可以处理多个取值范围内的逻辑判断。
其基本原理是将模糊的语言描述转化为数学上的模糊集合,然后通过模糊运算进行推理和决策。
在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊逻辑的建模和模拟。
该工具箱提供了一系列的函数和工具,可以帮助我们创建模糊逻辑系统、定义模糊集合和模糊规则,并进行输入输出的模糊化和去模糊化运算。
一个典型的模糊逻辑系统包括三个主要组成部分:模糊集合、模糊规则和模糊推理。
模糊集合用于描述模糊化的输入和输出变量,可以是三角形、梯形、高斯等形状。
模糊规则定义了模糊逻辑系统的推理过程,通常由一系列的if-then规则组成,如“如果温度较低,则输出加热”,其中“温度较低”和“加热”为模糊集合的标签。
模糊推理根据输入变量的模糊值和模糊规则,计算出输出变量的模糊值。
为了更好地理解模糊逻辑的原理和应用,我们以一个简单的案例来说明。
假设我们需要设计一个自动化灯光控制系统,使得灯光的亮度能够根据环境光线的强弱自动调节。
首先,我们需要收集一些实际的数据来建立模糊逻辑系统。
通过传感器测量到的环境光强度作为输入变量,设定的亮度值作为输出变量。
在Matlab中,可以使用Fuzzy Logic Designer来创建一个模糊逻辑系统。
首先,我们需要定义输入和输出变量,以及它们的模糊集合。
第一章绪论1.1课题的提出和意义随着我国电力事业的发展,电网管理日趋现代化。
负荷预测问题的研究逐渐引起了人们的关注,在电力系统学科中占据了重要的地位,是一个重要的组成部分。
在实际中,制定电力系统规划以及实现电力系统自动化这两项重要的工作,对它们进行应有的负荷预测都是基本要求。
众所周知,电力系统的作用应当是为各类的用户提供可靠而合乎质量要求的电能,使得各种客户的要求得到满足,而所有用户所使用的电能即为负荷。
负荷的大小与特性,对于系统的运行研究以及系统的设计,都是重中之中。
所以,对负荷的变化与特性,有一个事先的估计,是电力系统发展与运行研究的重要内容。
电力系统运行管理现代化中最看重的就是负荷预测,其水平决定了现代化的程度以及技术的高度,能够保证整个系统能够在正确的思维指导下调度和运行。
精准而优良的预测系统不仅在电力系统的安全、可靠、经济运行中起着支柱的作用,在节约能源方面也有着不俗的发挥。
负荷预测会受到很多方面的影响,不单单由以往的数据所决定,还要各方面非电力系统负荷的影响。
那整个系统为什么会要对将来的用电进行预测?因为系统内的可用发电容量,在正常运行的情况下,无论什么时候都要满足客户的需求,即满足所要提供的负荷。
发电容量一旦不够,则必须采取相应的措施来增加其发电容量,比如新增发电机组或从相邻的电网借来所差容量;反之,若发电容量过剩,则也应该采取必要的措施,如有选择性的止某台电机的运行或者向相邻的网络输出多余的电容量。
为了对选择对应的机组,确定所要具备的电源的结构,以及对于燃料的需求等,我们就应该要做到对负荷有一个准确的预测。
负荷曲线的预测可为研究电力系统的峰值、抽水蓄能电站的容量以及发输电设备的协调运行提供数据支持。
电力用户是电力工业的服务对象,电力负荷的不断增长是电力工业发展的根据。
正确地预测电力负荷,既是为了保证无条件供应国民经济各部门及人民生活以充足的电力的需要,也是电力工业自身健康发展的需要。
模糊控制介绍及Matlab模糊控制工具箱使用目录•一、模糊控制的产生•二、模糊逻辑的理论基础•三、模糊控制Matlab工具箱示例•四、模糊控制的基本思想•五、模糊控制器的基本结构•六、模糊控制器的优缺点一、模糊控制的产生在传统控制领域,对于明确系统有强而有力的控制能力,即被控系统的动态信息越详细,越能达到精确控制的目的。
然而,在多变量、非线性的复杂系统中,往往难以完全描述系统的动态信息。
此时,传统的控制理论则显得无能为力,而有经验的专家或工作人员仍能根据长期实践观察和操作经验进行有效控制。
据此引申,是否可将人的操作经验总结为若干条控制规则以避开复杂模型的建立过程?模糊控制最重要的特征是反应人们的经验及推理规则,而这些经验和推理规则是通过自然语言来表达的,如“水温上升过快,则关小燃气阀”。
在控制系统初期,由于对系统缺乏了解,控制效果可能不好,但若干次探索后终能实现预期的控制,这就是经验对模糊控制系统的重要性。
由于模糊控制实质上是用计算机去执行人的控制策略,因而可以避开复杂模型的建立,对人们关于某个控制问题的成功和失败经验加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。
PS:“模糊”是人类感知万物,获取知识,思维推理,决策实施的重要特征。
“模糊”比“清晰”所拥有的信息量更大,更符合客观世界。
二、模糊逻辑的理论基础模糊逻辑是指模仿人脑不确定性的概念判断和推理思维,对于定性的知识和经验,借助隶属度概念、模糊集合,来处理模糊关系。
模糊逻辑实质上是要对模糊性对象进行精确描述和处理。
模糊逻辑的目的是将一个输入空间映射到一个输出空间,主要要靠一系列的if-then规则。
这些规则包含变量和描述这些变量的形容词,被平行评估,因此它们的顺序不重要。
在进行模糊推理之前,先要定义好输入和输出变量以及描述它们的形容词。
模糊推理的流程如下图所示。
模糊推理流程2.1、模糊集合普通情况下,元素a属于集合A(1)或不属于集合A(0),如下图所示,星期一和星期三都是工作日,而苹果和星星则不是。
模糊控制matlab模糊控制是一种基于模糊数学理论的控制方法,它可以有效地处理非线性系统和模糊系统的控制问题。
在模糊控制中,通过将输入、输出和中间变量用模糊集合表示,设计模糊逻辑规则以实现控制目标。
本文将介绍如何用Matlab实现模糊控制,并通过实例讲解其应用和效果。
1. 模糊集合的表示在Matlab中,我们可以使用fuzzy工具箱来构建和操纵模糊系统。
首先,我们需要定义输入和输出的模糊集合。
例如,如果我们要控制一个直线行驶的自动驾驶汽车,可以定义速度和方向作为输入,定义方向盘角度作为输出。
我们可以将速度和方向分别划分为缓慢、中等、快速三个模糊集合,将方向盘角度划分为左转、直行、右转三个模糊集合。
可以使用Matlab的fuzzy工具箱中的fuzzy集合函数实现:slow = fuzzy(fis,'input',[-10 -10 0 20]);gap = fuzzy(fis,'input',[0 20 60 80 100]);fast = fuzzy(fis,'input',[60 80 110 110]);其中,fis为模糊系统对象,输入和输出的模糊集合分别用fuzzy函数定义,分别用输入或输出、模糊集合变量名、模糊集合界限参数表示,如fuzzy(fis,'input',[-10 -10 0 20])表示定义一个输入模糊集合,变量名为slow,其界限参数为[-10 -10 0 20],即表示此模糊集合上下界是[-10,-10]和[0,20]。
2. 设计模糊控制规则在Matlab中,可以使用fuzzy工具箱的ruleviewer函数来设计模糊控制的规则库。
规则库由模糊条件和模糊结论构成,用if-then形式表示。
例如,定义类别均为slow和keep的输入,输出为类别均为left的控制操作的规则如下:rule1 = "if (slow is slow) and (keep is keep) then (left is left);";其中,slow和keep为输入的模糊变量名,left为输出的模糊变量名。
MATLAB技术模糊控制实例一、引言在现代控制领域中,模糊控制是一种应用广泛的方法。
它通过将模糊逻辑和模糊运算引入控制系统中,来处理非线性、不确定性和模糊性问题。
而MATLAB作为一种常用的工具和编程语言,在模糊控制技术的实现中也起到了重要的作用。
二、模糊控制基础2.1 模糊集合和隶属度函数在模糊控制中,模糊集合是指某个具有模糊性质的事物的集合。
而隶属度函数则是用来描述一个元素对某个模糊集合的隶属程度的函数。
MATLAB提供了一系列的函数来实现模糊集合和隶属度函数的定义与计算。
2.2 模糊规则和推理机制模糊规则是模糊控制系统中的核心部分,它是一种以if-then形式表示的规则,用于将输入变量映射到输出变量。
推理机制则是模糊控制系统中用于根据模糊规则进行推理和决策的方法。
在MATLAB中,可以使用模糊推理系统工具箱来实现模糊规则和推理机制。
三、MATLAB模糊控制实例下面以一个简单的温度控制系统为例,介绍如何使用MATLAB进行模糊控制的实现。
3.1 系统建模假设我们要设计一个模糊控制器来控制一个恒温器,使得恒温器能够根据当前环境温度自动调整加热功率。
首先,我们需要进行系统建模,即确定输入变量、输出变量和规则库。
在这个例子中,输入变量为环境温度和加热功率的变化率,输出变量为加热功率的大小。
规则库包括一系列的模糊规则,用于根据当前环境温度和加热功率的变化率来决策加热功率的大小。
3.2 模糊集合和隶属度函数的定义在MATLAB中,可以使用fuzzy集合函数来定义模糊集合和隶属度函数。
例如,我们可以使用triangle函数来定义一个三角形隶属度函数,用于表示环境温度的低、中、高。
3.3 模糊规则和推理机制的设计在MATLAB中,使用fuzzy规则编辑器可以方便地设计模糊规则和推理机制。
首先,我们需要定义输入和输出的模糊集合,然后输入模糊集合和输出模糊集合之间的关系。
接下来,根据规则库的要求,添加相应的模糊规则。
4步教你学会使用matlab模糊控制工具箱Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理与反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。
下面将根据模糊控制器设计步骤,一步步利用Matlab工具箱设计模糊控制器。
首先我们在Matlab的命令窗口〔command window〕中输入fuzzy,回车就会出来这样一个窗口。
下面我们都是在这样一个窗口中进行模糊控制器的设计。
1.确定模糊控制器结构:即根据具体的系统确定输入、输出量。
这里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec,输出为控制量u。
注意这里的变量还都是精确量。
相应的模糊量为E,EC和U,我们可以选择增加输入(Add Variable)来实现双入单出控制结构。
2.输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊集合。
首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZO,PS,PM,PB},并设置输入输出变量的论域,例如我们可以设置误差E〔此时为模糊量〕、误差变化EC、控制量U的论域均为{-3,-2,-1,0,1,2,3};然后我们为模糊语言变量选取相应的隶属度函数。
在模糊控制工具箱中,我们在Member Function Edit中即可完成这些步骤。
首先我们翻开Member Function Edit窗口.然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论域范围为[-3 3],添加隶属函数的个数为7.然后根据设计要求分别对这些隶属函数进行修改,包括对应的语言变量,隶属函数类型。
3.模糊推理决策算法设计:即根据模糊控制规那么进行模糊推理,并决策出模糊输出量。
首先要确定模糊规那么,即专家经验。
对于我们这个二维控制结构以与相应的输入模糊集,我们可以制定49条模糊控制规那么〔一般来说,这些规那么都是现成的,很多教科书上都有〕,如图。
模糊控制在matlab中的实例模糊控制是一种应用广泛的控制方法,它可以处理那些难以精确建立数学模型的系统。
在Matlab中,使用Fuzzy Logic Toolbox工具箱可以方便地实现模糊控制系统。
以下是一个简单的模糊控制器示例,控制一个小车的速度和方向,使得其能够沿着预设的轨迹行驶。
1. 首先,定义输入和输出变量。
这里我们需要控制小车的速度和转向角度。
代码如下:```speed = newfis("speed");speed = addvar(speed,"input","distance",[0 10]);speed = addmf(speed,"input",1,"slow","trimf",[0 0 5]);speed = addmf(speed,"input",1,"fast","trimf",[5 10 10]); speed = addvar(speed,"output","velocity",[-10 10]);speed = addmf(speed,"output",1,"reverse","trimf",[-10-10 -2]);speed = addmf(speed,"output",1,"stop","trimf",[-3 0 3]); speed = addmf(speed,"output",1,"forward","trimf",[2 10 10]);angle = newfis("angle");angle = addvar(angle,"input","position",[-1 1]);angle = addmf(angle,"input",1,"left","trimf",[-1 -1 0]);angle = addmf(angle,"input",1,"right","trimf",[0 1 1]); angle = addvar(angle,"output","steering",[-1 1]);angle = addmf(angle,"output",1,"hard_left","trimf",[-1 -1 -0.5]);angle = addmf(angle,"output",1,"soft_left","trimf",[-1 -0.5 0]);angle = addmf(angle,"output",1,"straight","trimf",[-0.5 0.5 0.5]);angle = addmf(angle,"output",1,"soft_right","trimf",[0 0.5 1]);angle = addmf(angle,"output",1,"hard_right","trimf",[0.5 1 1]);```2. 然后,定义模糊规则。
通过算例熟悉MATLAB模糊控制工具箱
设计一个二维模糊控制器控制一个一阶被控对象
1
()
1
G s
Ts
=
+
,然后改变控制对象参
数的大小,观察模糊控制的鲁棒性。
1、模糊推理的五个步骤
1)输入变量的模糊化
这是模糊推理的第一步,是获取输入变量,并确定它们的隶属函数,从而确定属于每个模糊集合的隶属度。
2) 应用模糊算子
完成了输入模糊化,就知道了对于每个模糊规则,前提中每一个部分被满足的程度。
如果一个给定规则的前提有多个部分,则要应用模糊算子来获得一个数值,这个数值表示前提对于该规则的满足程度。
3) 应用推理方法
推理的类型有mamdani和sugeno 推理。
Mamdani推理法是一种在模糊控制中普遍使用的方法,它本质上仍然是一种合成推理方法,只不过对模糊蕴涵关系取不同的形式而已。
Mamdani型推理,从每个规则的结果中得到的模糊集通过聚类运算后得到结果模糊集,被反模糊化后得到系统输出。
Sugeon型推理:其中每个规则的结果是输入的线性组合,而输出是结果的加权线性组合。
4) 输出的聚类
由于决策是在对模糊推理系统中所有规则进行综合考虑的基础上做出的,因此必须以某种方式将规则结合起来以做出决策。
聚类就是这样一个过程,它将表示每个规则输出的模糊集结合成一个单独的模糊集。
聚类方法有max,probor(概率乘),sum。
其中,sum执行的是各规则输出集的简单相加。
5) 解模糊化
解模糊化过程也叫反模糊化过程,它的输入是一个模糊集,既上一步的聚类输出模糊集,其输出为一个单值。
模糊集的聚类中包含很多输出值,因此必须进行反模糊化,以从集合中解析出一个单输出值。
2、模糊逻辑工具箱的介绍
模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(FIS)编辑器;隶属函数编辑器;模糊规则编辑器;模糊规则观察器;输出曲面观察器。
1)FIS编辑器:
Matlab的FIS界面如图1所示。
FIS处理系统有多少个输入变量,输出变量,名称是什么,模糊算子“与”(min,prod乘积,custom自定义),“或”(max大,probor 概率统计方法,custom),推理方法(min,prod,custom),聚类方法(max,probor,sum,custom),解模糊的方法(centroid质心法,bisector中位线法,middle of maximum,largest of maximum,smallest of maximum)。
图1 模糊推理系统(FIS)界面
2) 隶属函数编辑器:
确定各个变量的论域和显示范围(左下角编辑区内),如图2所示。
定义每个变量的模糊集的名称(如负大、负中、负小、零、正小、正中、正大)和个数(Edit菜单中Add MFs),以及每个模糊变量的隶属函数类型和参数(点击变量的隶属函数曲线后在右下角编辑区内修改)。
隶属函数的类型有:trimf,trapmf,gbellmf,gaussmf,gauss2mf,sigmf,dsigmf,psigmf,pimf,smf,zmf
图2 隶属函数编辑器
3) 模糊规则编辑器:
完成了对变量的命名,隶属函数也有了适当的形状和名字,就可以编辑模糊规则。
选择连接关系(and 或者or),权重,在编辑器左边选择一个输入变量,并选择它的语言值,然后在编辑器右边的输出变量中选择一个输出变量,并选中它的语言值,然后将这种联系添加到模糊规则中。
Options/Format 下可以选择模糊规则不同的格式,默认的是verbose(模糊规则的详细格式),还有symbolic(符号格式),indexed(高度压缩格式)
4) 模糊规则观察器
模糊规则观察器的功能是可以令用户观察模糊推理图,并观察模糊推理系统的行为是否与预期的一样。
可以观察到输入变量(默认色是黄色)和输出变量(默认色是蓝色)如何应用在模糊规则中;反模糊化的数值是多少。
5)输出曲面观测器
模糊规则观察器非常详细的显示了在某一个时刻的计算。
如果看到模糊推理系统的全部输出曲面,即与整个输入区间相对应的输出区间,就要打开输出曲面观测器。
View/view surface…
四、在线推理模糊控制器的设计步骤:
1)确定模糊规则
误差E、误差变化EC及控制量U的模糊集定义如下:
EC和U的模糊集均为:{NB,NM,NS,ZO,PS,PM,PB}
E的模糊集为:{NB,NM,NS,NO,PO,PS,PM,PB}
确定每个模糊集的隶属函数,本实验可以在FIS中选择隶属函数的形状和参数。
确定模糊控制规则:一般如表1所示
2)建立仿真模型
图4 在线推理方式模糊控制仿真模型
在MA TLAB的simulink仿真环境中建立模糊控制系统的方框图。
如图4所示。
其中有信号发生器,比较器,放大器(Gain),零阶保持器,多路混合器(Mux),模糊逻辑控制器(FIS)(在Simulink Library Browser/Fuzzy Logic Toolbox下添加),控制对象,示波器(scope)。
3)模糊逻辑控制系统(FIS)模块参数设置
模糊逻辑控制系统的参数对控制性能影响很大,因此参数设置是实验的重点内容,具体步骤如下:
a. 打开Matlab的FIS编辑器(双击Fuzzy logic toolbox下的FIS Editor Viewer),确定模糊推理输入变量和输出变量的个数、名字。
b. 打开隶属函数编辑器,选定变量的论域和显示范围,选择隶属函数的形状和参数。
c. 打开模糊规则编辑器,编辑模糊规则。
d. 重新回到FIS编辑器界面,选择模糊算子,推理方法,聚类方法,解模糊的方法等(centroid,bisector,middle of maximum,largest of maximum,smallest of maximum)。
e. 用模糊规则观察器或输出曲面观察器,观看模糊推理情况。
f. 将建立的FIS保存到磁盘,文件名后缀为.fis。
g. 进行模糊控制仿真时,首先要将FIS发送到Matlab工作空间(workspace)中,用FIS 窗口下File/Export/to workspace实现,用户建立一个工作空间变量名(例如fuzzycontrol),这个变量将FIS系统作为Matlab的一个结构进行工作。
仿真时,打开fuzzy logic controller ,输入FIS变量名,就可以进行仿真了。
4)调整Ke,Kec ,Ku的值的大小(二阶系统模糊控制参考数据是100, 1, -150),得到系统适合的输出曲线。