通过算例熟悉MATLAB模糊控制工具箱
用 Matlab 的 Fuzzy 工具箱实现模糊控制
用 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中的实例模糊控制(模糊逻辑控制)是一种基于模糊数学理论的控制方法,它可以用于控制系统的稳定性、精度和响应速度等方面的优化。
在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是一种强大的数学计算软件,广泛应用于各个领域的工程和科学研究。
在现实生活中,我们经常会遇到一些模糊不清、不确定的情况,而模糊逻辑和模糊控制正是用来处理这些模糊问题的有效工具。
本文将介绍利用Matlab进行模糊逻辑和模糊控制的基本原理,并通过一些具体案例来说明其在实际应用中的价值。
首先,我们需要了解模糊逻辑和模糊控制的基本概念和原理。
模糊逻辑是Lotfi Zadeh教授于1965年提出的一种处理模糊信息的形式化逻辑系统。
与传统的布尔逻辑只有两个取值(真和假)不同,模糊逻辑引入了模糊概念,可以处理多个取值范围内的逻辑判断。
其基本原理是将模糊的语言描述转化为数学上的模糊集合,然后通过模糊运算进行推理和决策。
在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊逻辑的建模和模拟。
该工具箱提供了一系列的函数和工具,可以帮助我们创建模糊逻辑系统、定义模糊集合和模糊规则,并进行输入输出的模糊化和去模糊化运算。
一个典型的模糊逻辑系统包括三个主要组成部分:模糊集合、模糊规则和模糊推理。
模糊集合用于描述模糊化的输入和输出变量,可以是三角形、梯形、高斯等形状。
模糊规则定义了模糊逻辑系统的推理过程,通常由一系列的if-then规则组成,如“如果温度较低,则输出加热”,其中“温度较低”和“加热”为模糊集合的标签。
模糊推理根据输入变量的模糊值和模糊规则,计算出输出变量的模糊值。
为了更好地理解模糊逻辑的原理和应用,我们以一个简单的案例来说明。
假设我们需要设计一个自动化灯光控制系统,使得灯光的亮度能够根据环境光线的强弱自动调节。
首先,我们需要收集一些实际的数据来建立模糊逻辑系统。
通过传感器测量到的环境光强度作为输入变量,设定的亮度值作为输出变量。
在Matlab中,可以使用Fuzzy Logic Designer来创建一个模糊逻辑系统。
首先,我们需要定义输入和输出变量,以及它们的模糊集合。
模糊控制的Matlab仿真实例
其他例子
模型Shower.mdl―淋浴温度调节模糊控制系统仿真; 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿
真; 模型 slcpp1.mdl—定长、变长二倒摆模糊控制系
统仿真; 模型slbb.mdl―球棒模糊控制系统仿真; 模型sltbu.mdl―卡车智能模糊控制倒车系统仿真; 模型sltank2.mdl ― 用子系统封装的水箱控制仿
为简单起见,我们直接利用系统里已经编辑好的 模糊推理系统,在它的基础上进行修改。这里我 们采用与tank . fis中输入输出变量模糊集合完 全相同的集合隶属度函数定义,只是对模糊规则 进行一些改动,来学习模糊工具箱与仿真工具的 结合运用。对于这个问题,根据经验和直觉很显 然可以得到如下的模糊度示 波器
冷水阀子系统
这个仿真模型的输出是用示波器来表示的,如 图所示。通过示波器上的图形我们可以清楚地 看到温度和水流量跟踪目标要求的性能。
水温示波器
水流示波器
水温偏差区间模糊划分及隶属度函数
水流量偏差区间模糊划分及隶属度函数
输出对冷水阀控制策略的模糊化分及隶属度函数
选Edit菜单,选择Rules, 弹出一新界面Rule Editor. 在底部的选择框内,选择相应的 IF…AND…THEN 规则,点击Add rule 键,上部 框内将显示相应的规则。本例中用9条左右的规 则,依次加入。如下图所示:
模糊逻辑工具箱仿真结果
模糊规则浏览器用于显示各条模糊控制规则对 应的输入量和输出量的隶属度函数。通过指定 输入量,可以直接的显示所采用的控制规则, 以及通过模糊推理得到相应输出量的全过程, 以便对模糊规则进行修改和优化。
这样的结果与实际情况还是有些不符。通常顾客都是给15%的 小费,只有服务特别好或特别不好的时候才有改变,也就是说, 希望在图形中间部分的响应平坦些,而在两端(服务好或坏) 有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用 下面 MATLAB 语句绘出的下图的情况。
matlab模糊控制工具箱
第一章绪论1.1课题的提出和意义随着我国电力事业的发展,电网管理日趋现代化。
负荷预测问题的研究逐渐引起了人们的关注,在电力系统学科中占据了重要的地位,是一个重要的组成部分。
在实际中,制定电力系统规划以及实现电力系统自动化这两项重要的工作,对它们进行应有的负荷预测都是基本要求。
众所周知,电力系统的作用应当是为各类的用户提供可靠而合乎质量要求的电能,使得各种客户的要求得到满足,而所有用户所使用的电能即为负荷。
负荷的大小与特性,对于系统的运行研究以及系统的设计,都是重中之中。
所以,对负荷的变化与特性,有一个事先的估计,是电力系统发展与运行研究的重要内容。
电力系统运行管理现代化中最看重的就是负荷预测,其水平决定了现代化的程度以及技术的高度,能够保证整个系统能够在正确的思维指导下调度和运行。
精准而优良的预测系统不仅在电力系统的安全、可靠、经济运行中起着支柱的作用,在节约能源方面也有着不俗的发挥。
负荷预测会受到很多方面的影响,不单单由以往的数据所决定,还要各方面非电力系统负荷的影响。
那整个系统为什么会要对将来的用电进行预测?因为系统内的可用发电容量,在正常运行的情况下,无论什么时候都要满足客户的需求,即满足所要提供的负荷。
发电容量一旦不够,则必须采取相应的措施来增加其发电容量,比如新增发电机组或从相邻的电网借来所差容量;反之,若发电容量过剩,则也应该采取必要的措施,如有选择性的止某台电机的运行或者向相邻的网络输出多余的电容量。
为了对选择对应的机组,确定所要具备的电源的结构,以及对于燃料的需求等,我们就应该要做到对负荷有一个准确的预测。
负荷曲线的预测可为研究电力系统的峰值、抽水蓄能电站的容量以及发输电设备的协调运行提供数据支持。
电力用户是电力工业的服务对象,电力负荷的不断增长是电力工业发展的根据。
正确地预测电力负荷,既是为了保证无条件供应国民经济各部门及人民生活以充足的电力的需要,也是电力工业自身健康发展的需要。
模糊控制介绍及Matlab模糊控制工具箱使用
模糊控制介绍及Matlab模糊控制工具箱使用目录•一、模糊控制的产生•二、模糊逻辑的理论基础•三、模糊控制Matlab工具箱示例•四、模糊控制的基本思想•五、模糊控制器的基本结构•六、模糊控制器的优缺点一、模糊控制的产生在传统控制领域,对于明确系统有强而有力的控制能力,即被控系统的动态信息越详细,越能达到精确控制的目的。
然而,在多变量、非线性的复杂系统中,往往难以完全描述系统的动态信息。
此时,传统的控制理论则显得无能为力,而有经验的专家或工作人员仍能根据长期实践观察和操作经验进行有效控制。
据此引申,是否可将人的操作经验总结为若干条控制规则以避开复杂模型的建立过程?模糊控制最重要的特征是反应人们的经验及推理规则,而这些经验和推理规则是通过自然语言来表达的,如“水温上升过快,则关小燃气阀”。
在控制系统初期,由于对系统缺乏了解,控制效果可能不好,但若干次探索后终能实现预期的控制,这就是经验对模糊控制系统的重要性。
由于模糊控制实质上是用计算机去执行人的控制策略,因而可以避开复杂模型的建立,对人们关于某个控制问题的成功和失败经验加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。
PS:“模糊”是人类感知万物,获取知识,思维推理,决策实施的重要特征。
“模糊”比“清晰”所拥有的信息量更大,更符合客观世界。
二、模糊逻辑的理论基础模糊逻辑是指模仿人脑不确定性的概念判断和推理思维,对于定性的知识和经验,借助隶属度概念、模糊集合,来处理模糊关系。
模糊逻辑实质上是要对模糊性对象进行精确描述和处理。
模糊逻辑的目的是将一个输入空间映射到一个输出空间,主要要靠一系列的if-then规则。
这些规则包含变量和描述这些变量的形容词,被平行评估,因此它们的顺序不重要。
在进行模糊推理之前,先要定义好输入和输出变量以及描述它们的形容词。
模糊推理的流程如下图所示。
模糊推理流程2.1、模糊集合普通情况下,元素a属于集合A(1)或不属于集合A(0),如下图所示,星期一和星期三都是工作日,而苹果和星星则不是。
模糊控制matlab
模糊控制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技术模糊控制实例一、引言在现代控制领域中,模糊控制是一种应用广泛的方法。
它通过将模糊逻辑和模糊运算引入控制系统中,来处理非线性、不确定性和模糊性问题。
而MATLAB作为一种常用的工具和编程语言,在模糊控制技术的实现中也起到了重要的作用。
二、模糊控制基础2.1 模糊集合和隶属度函数在模糊控制中,模糊集合是指某个具有模糊性质的事物的集合。
而隶属度函数则是用来描述一个元素对某个模糊集合的隶属程度的函数。
MATLAB提供了一系列的函数来实现模糊集合和隶属度函数的定义与计算。
2.2 模糊规则和推理机制模糊规则是模糊控制系统中的核心部分,它是一种以if-then形式表示的规则,用于将输入变量映射到输出变量。
推理机制则是模糊控制系统中用于根据模糊规则进行推理和决策的方法。
在MATLAB中,可以使用模糊推理系统工具箱来实现模糊规则和推理机制。
三、MATLAB模糊控制实例下面以一个简单的温度控制系统为例,介绍如何使用MATLAB进行模糊控制的实现。
3.1 系统建模假设我们要设计一个模糊控制器来控制一个恒温器,使得恒温器能够根据当前环境温度自动调整加热功率。
首先,我们需要进行系统建模,即确定输入变量、输出变量和规则库。
在这个例子中,输入变量为环境温度和加热功率的变化率,输出变量为加热功率的大小。
规则库包括一系列的模糊规则,用于根据当前环境温度和加热功率的变化率来决策加热功率的大小。
3.2 模糊集合和隶属度函数的定义在MATLAB中,可以使用fuzzy集合函数来定义模糊集合和隶属度函数。
例如,我们可以使用triangle函数来定义一个三角形隶属度函数,用于表示环境温度的低、中、高。
3.3 模糊规则和推理机制的设计在MATLAB中,使用fuzzy规则编辑器可以方便地设计模糊规则和推理机制。
首先,我们需要定义输入和输出的模糊集合,然后输入模糊集合和输出模糊集合之间的关系。
接下来,根据规则库的要求,添加相应的模糊规则。
4步教你学会使用matlab模糊控制工具箱
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中的实例模糊控制是一种应用广泛的控制方法,它可以处理那些难以精确建立数学模型的系统。
在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中的实例
模糊控制在matlab中的实例模糊控制是一种基于经验知识的控制方法,与传统的精确控制方法不同,它允许对系统的行为进行模糊描述,并通过一套模糊规则来对系统进行控制。
在实际应用中,模糊控制常常用于处理非线性、复杂和不确定的系统,例如温度控制、汽车制动系统等。
在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。
如何在MATLAB中进行模糊控制
如何在MATLAB中进行模糊控制模糊控制是一种基于模糊逻辑理论的控制方法,它通过建立模糊规则、模糊集合和模糊推理等步骤,实现对复杂系统的控制。
在MATLAB中,我们可以利用模糊控制工具箱进行模糊控制设计和仿真。
本文将从模糊控制的基本原理、MATLAB中的模糊控制工具箱的使用以及实例应用等方面进行讨论。
一、模糊控制基本原理模糊控制的基本原理是将人类的经验和模糊逻辑理论应用于系统控制中。
它不需要准确的数学模型,而是通过模糊集合、模糊规则和模糊推理等方法来描述和制定控制策略。
下面我们将简要介绍一下模糊控制中的基本概念。
1. 模糊集合模糊集合是一种可以容纳不确定性的集合。
与传统集合论不同,模糊集合中的元素可以部分地、模糊地属于该集合。
在模糊控制中,我们通常使用隶属度函数来描述元素对模糊集合的隶属程度。
2. 模糊规则模糊规则是一种将输入和输出间的关系表示为一组语义规则的方法。
它基于专家的经验和知识,将输入变量的模糊集合与输出变量的模糊集合之间建立映射关系。
模糊规则通常采用IF-THEN的形式表示,例如:“IF 温度冷 AND 湿度高 THEN 空调制冷”。
3. 模糊推理模糊推理是基于模糊规则进行推理和决策的过程。
它通过对模糊集合的隶属度进行运算,计算出输出变量的模糊集合。
常用的推理方法有模糊关联、模糊交集和模糊合取等。
二、MATLAB中的模糊控制工具箱MATLAB提供了一套完整的模糊控制工具箱,包括模糊集合的创建、模糊规则的定义、模糊推理和模糊控制系统的仿真等功能。
下面我们将逐步介绍这些功能的使用方法。
1. 模糊集合的创建在MATLAB中,我们可以使用fuzzymf函数来创建模糊集合的隶属度函数。
该函数可以根据用户指定的类型和参数生成不同形状的隶属度函数。
常用的隶属度函数有三角型函数、梯形函数和高斯型函数等。
2. 模糊规则的定义在MATLAB中,我们可以使用addrule函数来定义模糊规则。
该函数将用户指定的输入变量、模糊集合和输出变量、模糊集合之间的关系转化为模糊规则,并添加到模糊推理系统中。
模糊控制实验大纲
实验一熟悉模糊工具箱一、目的和要求1.目的(1)通过本次实验,进一步了解模糊控制的基本原理、模糊模型的建立和模糊控制器的设计过程。
(2)掌握MATLAB模糊逻辑工具箱的图形用户界面设计模糊控制器的过程。
2.要求(1)充分理解实验内容,并独立完成实验报告。
(2)实验报告要求:实验题目、实验具体内容、结果分析、收获或不足。
二、实验内容1、利用matlab中的模糊逻辑工具箱提供的图形用户界面(GUI)工具设计一个两输入、一输出的模糊控制器,控制器的要求如下:(1)设模糊控制器的输入变量为:误差E和误差变化EC,输出量为U。
(2)隶属度函数:◆隶属度函数均为三角函数◆E、EC和U的模糊语言变量集均为{NB,NM,NS,ZO,PS,PM,PB}◆E和EC论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}◆U的论域为{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}(3)控制规则表如下:表1 模糊控制表三.实验步骤模糊逻辑工具箱提供的图形用户界面(GUI)工具有五个:模糊推理系统(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)。
Matlab的FIS界面如图3所示。
图3 模糊推理系统(FIS)界面2.隶属函数编辑器:确定各个变量的论域和显示范围(左下角编辑区内),如图4所示。
模糊控制在matlab中的实例
模糊控制在matlab中的实例以下是一个模糊控制在MATLAB中的简单实例:假设我们要设计一个模糊控制器来控制一个水箱中水位的高低。
我们可以先建立一个模糊推理系统,其中包含输入和输出变量以及规则。
1. 输入变量:水箱中的水位(假设范围为0到100)。
2. 输出变量:水泵的流量(假设范围为0到10)。
我们需要定义一组模糊规则,例如:如果水箱中的水位为低,则水泵的流量为低。
如果水箱中的水位为中等,则水泵的流量为中等。
如果水箱中的水位为高,则水泵的流量为高。
将这些规则转换成模糊集合,如下所示:输入变量:- 低:[0, 30]- 中等:[20, 50]- 高:[40, 100]输出变量:- 低:[0, 3]- 中等:[2, 6]- 高:[4, 10]接下来,我们可以使用MATLAB的Fuzzy Logic Toolbox来建立模糊推理系统。
以下是一个简单的MATLAB脚本:```% 定义输入变量water_level = fisvar("input", "Water Level", [0 100]); water_level.addmf("input", "low", "trapmf", [0 0 30 40]); water_level.addmf("input", "medium", "trimf", [20 50 80]);water_level.addmf("input", "high", "trapmf", [60 70 100 100]);% 定义输出变量pump_flow = fisvar("output", "Pump Flow", [0 10]);pump_flow.addmf("output", "low", "trapmf", [0 0 3 4]); pump_flow.addmf("output", "medium", "trimf", [2 6 8]); pump_flow.addmf("output", "high", "trapmf", [7 8 10 10]); % 建立模糊推理系统rule1 = "If Water Level is low then Pump Flow is low"; rule2 = "If Water Level is medium then Pump Flow is medium"; rule3 = "If Water Level is high then Pump Flow is high"; rules = char(rule1, rule2, rule3);fis = newfis("Water Tank Fuzzy Controller");fis = addvar(fis, water_level);fis = addvar(fis, pump_flow);fis = addrule(fis, rules);% 模糊控制器输入water_level_value = 70;% 运行模糊推理系统pump_flow_value = evalfis([water_level_value], fis);disp(["Water level: " num2str(water_level_value) "%"]); disp(["Pump flow: " num2str(pump_flow_value)]);```在这个简单的例子中,我们使用了Fuzzy Logic Toolbox来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。
如何进行模糊控制的Matlab实现
如何进行模糊控制的Matlab实现模糊控制是一种基于模糊逻辑的控制方法,它能够在复杂的环境下进行精确的控制。
在现实世界中,很多问题存在不确定性和模糊性,传统的控制方法很难解决这些问题。
而模糊控制通过建立模糊规则来模拟人的思维过程,能够灵活地应对这些问题。
Matlab是一种功能强大的科学计算软件,它提供了丰富的工具箱和函数,可以帮助我们快速实现模糊控制算法。
本文将介绍如何使用Matlab进行模糊控制的实现,并结合一个实际案例进行说明。
首先,我们需要了解模糊控制的基本原理。
模糊控制是基于模糊逻辑进行推理和决策的一种方法。
它将输入和输出的模糊集合表示为隶属度函数,并通过模糊规则对模糊输入进行推理,得到模糊输出。
最后,将模糊输出通过去模糊化方法转换为具体的控制量。
在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
首先,需要定义输入和输出的模糊集合。
可以使用trimf函数来定义三角形隶属度函数,也可以使用gaussmf函数来定义高斯隶属度函数。
然后,需要定义模糊规则。
可以使用fuzarith函数来定义规则的操作,如AND、OR、NOT等。
最后,使用evalfis 函数对输入进行推理,得到模糊输出。
接下来,我们以温度控制为例,介绍如何使用Matlab进行模糊控制的实现。
假设我们要设计一个模糊控制器来控制一个房间的温度,使其尽可能接近一个设定的目标温度。
首先,定义输入的模糊集合和隶属度函数。
假设输入是当前的温度,模糊集合包括"冷"、"舒适"和"热"三个隶属度函数。
可以使用trimf函数来定义这些隶属度函数。
然后,定义输出的模糊集合和隶属度函数。
假设输出是空调的功率,模糊集合包括"低"、"中"和"高"三个隶属度函数。
同样,可以使用trimf函数来定义这些隶属度函数。
模糊控制的Matlab仿真实例
THANK YOU
中心平均值去模糊化
去模糊化过程
04
Matlab仿真实例
输入输出变量定义
根据被控对象的特性,定义模糊控制系统的输入输出变量,如温度、湿度、压力等。
模糊化函数设计
为每个输入输出变量设计对应的模糊化函数,将实际值映射到模糊集合上。
模糊规则制定
根据专家知识和实际经验,制定模糊控制规则,如“如果温度过高,则调整冷却阀”。
输入输出关系
基于模糊逻辑运算和模糊集合的性质,建立输入和输出之间的映射关系。
推理规则
基于专家知识和经验,制定一系列的推理规则,用于指导模糊推理过程。
推理方法
常用的模糊推理方法包括最大值推理、最小值推理和中心平均值推理等。
模糊推理系统
02
Matlab模糊逻辑工具箱简介
模糊逻辑工具箱的功能
为了将模糊输出转换为实际输出,工具箱提供了多种去模糊化方法,如最大值去模糊化、最小值去模糊化和中心平均值去模糊化等。
性能指标选择
根据所选性能指标,采用合适的方法对模糊控制系统的性能进行评估,如极差分析法、方差分析法等。
性能评估方法
将模糊控制系统的性能与其他控制方法进行比较,如PID控制、神经网络控制等,以验证其优越性。
性能比较
01
02
03
模糊控制系统的性能评估
05
结论与展望
模糊控制对模型误差和参数变化具有较强的鲁棒性,能够适应不确定性和非线性系统。
输出模糊化
将模糊集合的输出映射到实际输出量上,同样采用隶属函数进行模糊化处理。
模糊化过程
模糊控制的MATLAB实现具体过程(强势吐血推荐)
例:fismat=readfis(‘tipper’); //tipper.fis已经存在
③函数getfis
功能:取得模糊推理系统的部分或全部属性。 格式:getfis(a) //显示系统所有属性 //显示系统某一属性
getfis(a,’fisprop’)
getfis(a,’vartype’,varindex,’varprop’)
1 2,2(1):1
6、计算模糊推理输出结果函数evalfis 格式:y=evalfis(U,FIS)
说明:参数U是输入数据,FIS是模糊推理矩阵。 U的每一行是一个特定的输入向量,Y的每一行是 一个特定的输出向量。
如果输入U是M*N矩阵,则系统是N输入的, 返回的Y是M*L矩阵,L是系统的输出的数目。
功能:绘制语言变量所有语言值的隶属度函数曲线。
格式:plotmf(fismat,varType,varIndex) 说明:参数fismat指明模糊推理系统的对应矩阵变量 名称;varType指明变量类型(’input’或’output’); varIndex指明输入或输出语言变量的编号。 例: plotmf(a,’input’,2)
例:a=newfis(‘tipper’);
a=addvar(a,’input’,’service’,[0 10]); a=addmf(a,’input’,1,’poor’,’guassmf’,[1.5 0]); a=addmf(a,’input’,1,’good’,’guassmf’,[1.5 5]); a=addmf(a,’input’,1,’excellent’,’guassmf’,[1.5 10]);
在rulelist的每一行中,前m个数字表示各输入语言 变量的语言值(隶属度函数的编号),随后的n个数字表 示输出语言变量的语言值,第n+m+1个数字是该规则的 权重,权重的值在0到1之间,一般设定为1;第n+m+2 个数字为0或1两者之一,为1表示模糊规则各输入语言 变量之间是and关系,为0则表示是or关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过算例熟悉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),得到系统适合的输出曲线。