Matlab 的 Fuzzy 工具箱实现模糊控制
基于MATLAB的洗衣机模糊控制设计
基于MATLAB的洗衣机模糊控制设计
MATLAB是一种功能强大的数学软件,可以用于模糊控制设计。在本
文中,我们将介绍如何使用MATLAB来设计一个基于模糊控制的洗衣机控
制系统。
首先,我们需要定义洗衣机模糊控制系统的输入和输出变量。在一个
简单的洗衣机系统中,输入变量可以是衣物的脏度和水位,而输出变量可
以是洗衣机的清洗时间和水温。
接下来,我们需要建立一个模糊控制器模型。模糊控制器是一个基于
模糊逻辑的控制器,能够处理模糊输入和输出变量。在MATLAB中,我们
可以使用Fuzzy Logic Toolbox来建立一个模糊控制器模型。
我们首先需要定义模糊输入变量的隶属函数。在这个例子中,我们可
以定义脏度变量的隶属函数为"低","中"和"高",水位变量的隶属函数为"低","中"和"高"。然后,我们需要定义模糊输出变量的隶属函数。在这
个例子中,我们可以定义清洗时间变量的隶属函数为"短","适中"和"长",水温变量的隶属函数为"低","中"和"高"。
接下来,我们需要定义输入和输出变量之间的模糊规则。在这个例子中,我们可以定义以下规则:
规则1:如果脏度是低和水位是低,那么清洗时间是短和水温是低。
规则2:如果脏度是低和水位是中,那么清洗时间是适中和水温是中。
规则3:如果脏度是低和水位是高,那么清洗时间是长和水温是中。
规则4:如果脏度是中和水位是低,那么清洗时间是适中和水温是中。
规则5:如果脏度是中和水位是中,那么清洗时间是适中和水温是中。
规则6:如果脏度是中和水位是高,那么清洗时间是长和水温是高。
规则7:如果脏度是高和水位是低,那么清洗时间是长和水温是中。
模糊控制的Matlab仿真实例
隶属度函数编辑器(Mfedit)
该编辑器提供一个友好的人机图形交互环境,用 来设计和修改模糊推理系中各语言变量对应的隶 属度函数的相关参数,如隶属度函数的形状、范 围、论域大小等,系统提供的隶属度函数有三角、 梯形、高斯形、钟形等,也可用户自行定义。
双击所选input,弹出一新界面,在左下Range处 和Display Range处,填入取只范围,例如 0至9 (代表0至90)。
所有规则填入后,选菜单View, 选择Rules,弹 出一新界面Rule Viewer,如下图所示。
上图表示当温度为45度、磁能为45瓦时,输出 干度为约70个单位。左右拉动界面中的两支红 线,拉到欲选的近似值,右边图顶显示相应的 干度结果。
上图中选菜单View, 选择Surface,弹出一新界 面Surface Viewer,弹出该课题结果的三维图。 如下图所示。
在右边文字文字输入Name处,填写隶属函数的名 称,例如lt或LT(代表低温)。
在Type处选择trimf(意为:三角形隶属函数曲线, triangle member function),当然也可选其它形 状。
在Params(参数)处,选择三角形涵盖的区间,填写三个 值,分别为三角形底边的左端点、中点和右端点在横坐标 上的值。这些值由设计者确定。
其他例子
模型Shower.mdl―淋浴温度调节模糊控制系统仿真; 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿
matlab模糊滑模控制算法
MATLAB是一种被广泛应用的技术计算软件,它提供了许多用于工程
和科学计算的功能和工具。模糊控制是一种基于模糊集合理论的控制
方法,它可以处理非线性系统和模糊信息,因此在工程控制领域得到
了广泛的应用。滑模控制是一种鲁棒控制方法,它能够有效地应对系
统参数的不确定性和外部干扰,因此在控制系统中具有重要的地位。
在很多实际的工程控制问题中,系统的动态模型可能非常复杂,无法
用传统的线性方程描述,而且系统的动态特性可能会受到各种不确定
因素的影响。在这种情况下,传统的控制方法可能无法很好地处理这
些复杂的系统。而模糊滑模控制算法就是为了解决这些问题而提出的。下面将介绍MATLAB中模糊滑模控制算法的基本原理和实现方法。
一、模糊控制
1.1 模糊集合
模糊控制是一种基于模糊集合理论的控制方法。在传统的控制理论中,系统的输入和输出都是确定的实数值,而在模糊控制中,输入和输出
都可以是模糊的概念,比如"很小"、"中等"、"很大"等。这样就可以更好地描述一些非精确的系统和模糊的信息。
1.2 模糊控制原理
模糊控制的基本原理是通过模糊化和解模糊化的过程,将模糊的输入
转换成模糊的输出。在模糊控制中,通常需要设计一个模糊推理系统,它包括模糊化接口、模糊规则库、模糊推理引擎和解模糊化接口。通
过模糊化接口将输入转换成模糊的概念,然后通过模糊规则库和模糊
推理引擎得到模糊的输出,最后再通过解模糊化接口将模糊的输出转
换成确定的实数值。
1.3 模糊控制在MATLAB中的实现
在MATLAB中,可以使用模糊逻辑工具箱(Fuzzy Logic Toolbox)来
4步教你学会使用matlab模糊控制工具箱
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.
Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)
引用如何在MATLAB下把模糊推理系统转化为查询表(原创)
Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅
引用
foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)
李会先
摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效
果与模糊推理模块在线推理控制是一致的。
关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试
Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is very
模糊控制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的控制操作的规则如下:
模糊控制的Matlab仿真(相关函数及工具箱详解)
用类似的方法设置输出output的参数。比如:共有9个规 则,所以相应地有9个输出隶属函数。默认3个隶属函数, 剩下6个由设计者加入。点击Edit菜单,选 Add Custom MS…->继续填入相应参数即可。
模糊推理规则编辑器Ruleedit
通过隶属度函数编辑器来设计和修改 “IF...THEN”形式的模糊控制规则。由该编辑 器进行模糊控制规则的设计非常方便,它将输入 量各语言变量自动匹配,而设计者只要通过交互 式的图形环境选择相应的输出语言变量,这大大 简化了规则的设计和修改。另外,还可为每条规 则选择权重,以便进行模糊规则的优化。
在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。
这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。
隶属度函数编辑器(Mfedit)
该编辑器提供一个友好的人机图形交互环境,用 来设计和修改模糊推理系中各语言变量对应的隶 属度函数的相关参数,如隶属度函数的形状、范 围、论域大小等,系统提供的隶属度函数有三角、 梯形、高斯形、钟形等,也可用户自行定义。
使用MATLAB进行模糊控制设计
使用MATLAB进行模糊控制设计导言:
模糊控制是一种基于模糊逻辑的自适应控制方法,它使用模糊规则来处理难以
准确建模的系统。MATLAB作为一款功能强大的数学计算软件,在模糊控制设计
中发挥着重要的作用。本文将介绍使用MATLAB进行模糊控制设计的基本原理、
步骤以及一些实际的应用案例。
一、模糊控制基本原理
1.1 模糊逻辑
模糊逻辑是基于模糊集的一种数学逻辑推理方法。与传统的布尔逻辑不同,模
糊逻辑考虑了中间状态的存在,可以用模糊集的隶属度来描述事物之间的模糊关系。模糊逻辑的基本运算包括模糊与、模糊或、模糊非等。
1.2 模糊控制器的基本结构
模糊控制系统由模糊化、模糊推理和去模糊化三个主要部分组成。模糊化将输
入转换为模糊集,模糊推理基于预定义的模糊规则进行逻辑推理,得到输出的模糊集,然后通过去模糊化将模糊结果转换为实际的控制信号。
二、使用MATLAB进行模糊控制设计的步骤
2.1 建立模糊逻辑系统
在MATLAB中,可以使用fuzzy工具箱来建立模糊逻辑系统。首先,需要定
义输入和输出的模糊集,可以选择三角形、梯形或高斯函数等形状。然后,定义模糊规则,设置每个输入和输出之间的关系。最后,确定输入和输出的范围,以便后续模糊控制器的设计和仿真。
2.2 设计模糊控制器
在MATLAB中,可以使用fuzzy工具箱中的fuzzy控制器对象来设计模糊控制器。首先,需要将前一步中建立的模糊逻辑系统与fuzzy控制器对象相关联。然后,设置输入的变化范围和输出的变化范围。接下来,可以选择使用模糊控制器设计方法来优化模糊规则和模糊集的参数。最后,可以进行控制系统的仿真和性能评估。
模糊控制在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]);
模糊控制的matlab实现课件
gaussmf函数的参数以向量[sig,c]形式给出。 例: x = 0:0.1:10; y = gaussmf(x,[2 5]); plot(x,y); text(0.2,0.88,’gaussmf’); text(0.2,0.78,’P = [2 5]’);
第4章
模糊控制的matlab实现
本实验以Mtlab6.5为开发环境,基于模糊逻辑工具 箱(Fuzzy Logic Toolbox) 通过简单直观的例子,对模 糊控制系统进行分析与研究。
1
4.1 认识实验
1. GUI(图形用户界面) 工具箱函数 1. anfisedit
功能:打开ANFIS编辑器的GUI 格式: anfisedit(‘a’)
40
41
4.2.2 利用Matlab命令行建立FIS 1. 建立新的FIS 设所建的FIS结构为wlcontrol,则命令行为:
42
2. 添加输入输出变量 本例的模糊推理系统有2个输入变量e和ec,1个
输出变量u,根据它们的论域要求,用add函数添加三 个变量。
43
3. 添加隶属函数
44
45
编辑过程: 修改各变量的论域范围 编辑各个输入或输出变量的隶属度函数及各隶属度函 数对应的Name、Type、Params。
模糊控制在MATLAB中的实现
模糊控制在MATLAB中的实现
模糊控制是一种基于模糊逻辑的控制方法,可以处理输入模糊或模糊
输出的问题。在MATLAB中,模糊控制可以通过Fuzzy Logic Toolbox实现。
Fuzzy Logic Toolbox提供了一套用于设计、模拟和分析模糊逻辑系
统的工具。它允许用户定义模糊集、模糊规则和模糊推理过程,从而实现
模糊控制。
在实现模糊控制之前,首先需要确定输入和输出的模糊集以及它们之
间的关系。可以通过定义模糊集合的成员函数来描述输入和输出的模糊集。常见的成员函数有三角形、梯形、高斯等。
例如,对于一个温度控制系统,可以定义三个模糊集:"冷","舒适"和"热"用于描述温度的状态。每个模糊集可以具有不同的成员函数。
接下来,需要定义模糊规则,规则用于描述输入和输出之间的关系。
例如,当温度"冷"时,可以设定输出为"加热",当温度"舒适"时,输出为"保持",当温度"热"时,输出为"冷却"。
在MATLAB中,可以使用Fuzzy Logic Toolbox的命令createFIS来
创建一个模糊逻辑系统(FIS),并使用addInput和addOutput命令来定义
输入和输出的模糊集。
例如,以下代码片段演示了如何创建一个简单的模糊逻辑系统:
```MATLAB
fis = createFIS('fuzzy_system');
fis = addInput(fis, [0 100], 'Temperature');
fis = addOutput(fis, [0 10], 'Control');
fis = addMF(fis, 'input', 1, 'cold', 'trimf', [-10 0 10]);
matlab的fuzzy工具箱实现模糊控制
Matlab 的 Fuzzy 工具箱实现模糊控制(rulelist的确定)
用 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)
基于MATLAB的模糊PID控制器的设计
基于MATLAB的模糊PID控制器的设计
模糊PID控制器是一种能够根据系统的实际输出和设定值之间的误差
来决定系统的控制量的控制器。它结合了传统的比例、积分和微分控制器
的优点,并通过模糊逻辑来优化控制效果。
在MATLAB中设计模糊PID控制器,我们需要先确定控制系统的模型。假设我们要设计一个温度控制器,温度传感器测得的温度与设定值之间的
误差可以作为输入。根据传感器的精度和系统的响应特性,我们可以确定
模糊PID控制器的参数范围和输出范围。
首先,我们需要定义模糊PID控制器的输入和输出的模糊集合。例如,温度误差可以划分为“负大”、“负中”、“负小”、“零”、“正小”、“正中”和“正大”等模糊集合。根据经验和系统要求,可以设定每个模
糊集合的范围和模糊隶属度函数。
接下来,我们需要确定模糊PID控制器的规则库。规则库定义了根据
输入的模糊集合和模糊规则来决定输出的模糊集合。例如,如果温度误差
为“负大”且误差变化率为“正中”,则输出的控制量可以设定为“增大”。
在MATLAB中,可以使用Fuzzy Logic Toolbox工具箱来设计模糊
PID控制器。首先,需要创建一个fuzzy对象,用于描述模糊逻辑系统。
然后,可以使用addInput、addOutput和addRule等函数来定义模糊逻辑
系统的输入、输出和规则。可以根据系统的要求调整模糊集合的范围和模
糊隶属度函数,以及规则库的定义。
在完成模糊逻辑系统的定义后,还需要确定模糊PID控制器的输出转换函数。输出转换函数将模糊控制量转换为实际控制量。通常,可以使用一些常用的转换函数,如线性转换、二阶转换等。
模糊控制在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提供了一套完整的模糊控制工具箱,包括模糊集合的创建、模糊规则的定义、模糊推理和模糊控制系统的仿真等功能。下面我们将逐步介绍这些功能的使用方法。
如何进行模糊控制的Matlab实现
如何进行模糊控制的Matlab实现
模糊控制是一种基于模糊逻辑的控制方法,它能够在复杂的环境下进行精确的控制。在现实世界中,很多问题存在不确定性和模糊性,传统的控制方法很难解决这些问题。而模糊控制通过建立模糊规则来模拟人的思维过程,能够灵活地应对这些问题。
Matlab是一种功能强大的科学计算软件,它提供了丰富的工具箱和函数,可以帮助我们快速实现模糊控制算法。本文将介绍如何使用Matlab进行模糊控制的实现,并结合一个实际案例进行说明。
首先,我们需要了解模糊控制的基本原理。模糊控制是基于模糊逻辑进行推理和决策的一种方法。它将输入和输出的模糊集合表示为隶属度函数,并通过模糊规则对模糊输入进行推理,得到模糊输出。最后,将模糊输出通过去模糊化方法转换为具体的控制量。
在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来实现模糊控制。首先,需要定义输入和输出的模糊集合。可以使用trimf函数来定义三角形隶属度函数,也可以使用gaussmf函数来定义高斯隶属度函数。然后,需要定义模糊规则。可以使用fuzarith函数来定义规则的操作,如AND、OR、NOT等。最后,使用evalfis 函数对输入进行推理,得到模糊输出。
接下来,我们以温度控制为例,介绍如何使用Matlab进行模糊控制的实现。假设我们要设计一个模糊控制器来控制一个房间的温度,使其尽可能接近一个设定的目标温度。首先,定义输入的模糊集合和隶属度函数。假设输入是当前的温度,模糊集合包括"冷"、"舒适"和"热"三个隶属度函数。可以使用trimf函数来定义这些隶属度函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab的 Fuzzy 工具箱实现模糊控制(rulelist的确定)
用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。
例如,当“输入1” 为“名称1” 和“输入2” 为“名称3” 时,输出为“ 输出1” 的“状态2”,则写为:
[1 3 2 1 1]
5、给定输入,得到输出,即进行模糊推理。
output = evalfis(input,fismat)
其中fismat为前面建立的那个 FIS 对象。
一个完整的例子如下:
clear all;
a = newfis('myfis');
a = addvar(a,'input','E',[0 7]);
a = addmf(a,'input',1,'small','trimf',[0 1 4.333]);
a = addmf(a,'input',1,'big','trimf',[1.6667 6 7]);
a = addvar(a,'output','U',[0 7]);
a = addmf(a,'output',1,'small','trimf',[0 1 4.333]);
a = addmf(a,'output',1,'big','trimf',[1.6667 6 7]); rulelist = [1 1 1 1;
2 2 1 1];
a = addrule(a,rulelist);
u = evalfis(4,a)
其结果为:
u = 4.221