模糊控制的MTLAB实现具体过程(强势吐血推荐)

合集下载

模糊控制的MATLAB实现具体过程(强势吐血推荐)..64页PPT

模糊控制的MATLAB实现具体过程(强势吐血推荐)..64页PPT

模糊控制的MATLAB实现具体过程(强
势吐血推荐)..
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭

用 Matlab 的 Fuzzy 工具箱实现模糊控制

用 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中的实例模糊控制(模糊逻辑控制)是一种基于模糊数学理论的控制方法,它可以用于控制系统的稳定性、精度和响应速度等方面的优化。

在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仿真实例

其他例子
模型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实现

模糊控制系统的MATLAB实现

基于MATLAB的模糊控制器设计及仿真专业:控制科学与工程学号:122081100187姓名:许兴培摘要在深入了解系统的基础上针对传统控制精度不高、系统稳定性差的问题进行创新和探索研究详细介绍了模糊控制原理和实现步骤。

并在MATLAB环境下对完成了模糊控制器仿真研究发现模糊控制理论上可以用于工业实际。

模糊控制设计简便响应速度快鲁棒性好具有一定的推广价值。

关键词:模糊控制,系统仿真基于MATLAB的模糊控制器设计及仿真一、模糊系统模糊系统是一种基于知识或基于规则的系统。

它的核心就是由所谓的IF-THEN规则所组成的知识库。

一个模糊的IF-THEN规则就是一个用连续隶属度函数对所描述的某些句子所做的IF-THEN形式的陈述。

构造一个模糊系统的出发点就是要得到一组来自于专家或基于该领域知识的模糊IF-THEN规则,然后将这些规则组合到单一系统中。

不同的模糊系统可采用不用的组合原则。

用隶属度函数表征一个模糊描述后,实质上就将模糊描述的模糊消除了。

模糊控制系统设计的关键在于模糊控制器的设计,主要有三个部分:(1) 输入量的模糊化所谓模糊化(Fuzzification) 就是先将某个输入测量量的测量值作标准化处理,把该输入测量量的变化范围映射到相应论域中,再将论域中的各输入数据以相应的模糊语言值的形式表示,并构成模糊集合。

这样就把输入的测量量转换为用隶属度函数表示的某一模糊语言变量。

(2) 模糊逻辑推理根据事先已定制好的一组模糊条件语句构成模糊规则库,运用模糊数学理论对模糊控制规则进行推理计算,从而根据模糊控制规则对输入的一系列条件进行综合评估,以得到一个定性的用语言表示的量,即模糊输出量。

完成这部分功能的过程就是模糊逻辑推理过程。

(3) 反模糊化过程反模糊化(Defuzzification) 有时又叫模糊判决。

就是将模糊输出量转化为能够直接控制执行部件的精确输出量的过程。

模糊控制器的核心部分又在于模糊推理系统(FIS) 的建立。

matlab下模糊控制器设计步骤

matlab下模糊控制器设计步骤

MATLAB下模糊控制器设计步骤模糊控制器简介模糊控制是指采用专家经验知识来处理模糊、不确定或复杂问题的一种控制方法。

模糊控制器是一个基于模糊逻辑的控制器,能够将输入变量和输出变量之间的映射关系进行模糊化,从而设计出具有模糊推理能力的控制器。

MATLAB下模糊控制器的设计步骤步骤一:确定系统控制目标在设计模糊控制器之前,需要明确系统控制的目标,如控制系统的稳态误差、响应时间、超调量等。

根据控制目标,设计模糊控制器的输入变量和输出变量。

步骤二:确定模糊控制器的输入变量与输出变量输入变量是控制系统的输入参数,包括状态量和操作量。

例如,在温度控制系统中,输入变量可以是温度传感器的输入、加热器控制器的输出等。

输出变量是控制系统的输出结果,影响系统的控制效果。

例如,在温度控制系统中,输出变量可以是加热器的功率、温度的变化率等。

步骤三:构建模糊集合对于每个输入和输出变量,构建一组模糊集合。

模糊集合是一种模糊变量值的表示方法,能够准确地描述模糊情况下的变量。

例如,对于温度控制系统中的温度传感器输入变量,可以构建模糊集合:{冷、凉、温、热、很热}。

每个模糊集合由若干个模糊语言变量组成,以便对该变量进行模糊控制。

步骤四:确定模糊规则库模糊规则库是模糊控制器的核心,描述输入变量与输出变量之间的映射关系。

模糊规则库是根据专家经验知识或试验数据得出的,其形式一般为:如果输入变量A是模糊集合X,且输入变量B是模糊集合Y,那么输出变量C是模糊集合Z。

例如,对于温度控制系统,一个模糊规则库可以是:如果输入变量为“温”且输出变量为“较强”则输出结果为“右转”。

步骤五:进行模糊推理模糊推理是利用模糊控制器的输入变量、模糊规则库和模糊推理算法来确定输出变量的过程。

在MATLAB中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊推理。

步骤六:模糊控制器的评估在完成模糊推理后,需要对模糊控制器进行评估,以确定其控制效果。

模糊控制在MATLAB中的实现共47页

模糊控制在MATLAB中的实现共47页

16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
金时代是在我们的前面,而不在 我们的 后面。

7、心急吃不了热汤圆。

8、你可以很有个性,但某些时候请收 敛。

9、只为成功找方法,不为失败找借口 (蹩脚 的工人 总是说 工具不 好)。

10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
END

MATLAB技术模糊控制实例

MATLAB技术模糊控制实例

MATLAB技术模糊控制实例一、引言在现代控制领域中,模糊控制是一种应用广泛的方法。

它通过将模糊逻辑和模糊运算引入控制系统中,来处理非线性、不确定性和模糊性问题。

而MATLAB作为一种常用的工具和编程语言,在模糊控制技术的实现中也起到了重要的作用。

二、模糊控制基础2.1 模糊集合和隶属度函数在模糊控制中,模糊集合是指某个具有模糊性质的事物的集合。

而隶属度函数则是用来描述一个元素对某个模糊集合的隶属程度的函数。

MATLAB提供了一系列的函数来实现模糊集合和隶属度函数的定义与计算。

2.2 模糊规则和推理机制模糊规则是模糊控制系统中的核心部分,它是一种以if-then形式表示的规则,用于将输入变量映射到输出变量。

推理机制则是模糊控制系统中用于根据模糊规则进行推理和决策的方法。

在MATLAB中,可以使用模糊推理系统工具箱来实现模糊规则和推理机制。

三、MATLAB模糊控制实例下面以一个简单的温度控制系统为例,介绍如何使用MATLAB进行模糊控制的实现。

3.1 系统建模假设我们要设计一个模糊控制器来控制一个恒温器,使得恒温器能够根据当前环境温度自动调整加热功率。

首先,我们需要进行系统建模,即确定输入变量、输出变量和规则库。

在这个例子中,输入变量为环境温度和加热功率的变化率,输出变量为加热功率的大小。

规则库包括一系列的模糊规则,用于根据当前环境温度和加热功率的变化率来决策加热功率的大小。

3.2 模糊集合和隶属度函数的定义在MATLAB中,可以使用fuzzy集合函数来定义模糊集合和隶属度函数。

例如,我们可以使用triangle函数来定义一个三角形隶属度函数,用于表示环境温度的低、中、高。

3.3 模糊规则和推理机制的设计在MATLAB中,使用fuzzy规则编辑器可以方便地设计模糊规则和推理机制。

首先,我们需要定义输入和输出的模糊集合,然后输入模糊集合和输出模糊集合之间的关系。

接下来,根据规则库的要求,添加相应的模糊规则。

模糊控制在matlab中的实例

模糊控制在matlab中的实例

模糊控制在matlab中的实例以下是一个简单的模糊控制器在 MATLAB 中的实例:假设你有一个被控对象,它的输出值 y 取决于输入值 u。

你想要设计一个模糊控制器来控制该对象。

首先,你需要定义模糊控制器的输入和输出变量以及它们的隶属度函数。

示例中,我们定义了两个输入变量 x1 和 x2 以及一个输出变量y,每个变量都由三个隶属度函数组成。

```matlab% 定义输入和输出变量及其隶属度函数x1 = fuzzyvar("input", [-5 5], "bellmf", [1 2 3]);x2 = fuzzyvar("input", [-5 5], "trimf", [-4 0 4]);y = fuzzyvar("output", [-10 10], "trimf", [-8 0 8]);```接下来,我们需要定义规则库。

规则库是一系列模糊规则的集合,每条规则由前提和结论组成。

在这个示例中,我们定义了九条规则,将输入变量 x1 和 x2 映射到输出变量 y。

```matlab% 定义规则库ruleList = ["If (x1 is 1) and (x2 is 1) then (y is -7)";"If (x1 is 1) and (x2 is 2) then (y is -9)";"If (x1 is 1) and (x2 is 3) then (y is -9)";"If (x1 is 2) and (x2 is 1) then (y is -5)";"If (x1 is 2) and (x2 is 2) then (y is -7)";"If (x1 is 2) and (x2 is 3) then (y is -8)";"If (x1 is 3) and (x2 is 1) then (y is -3)";"If (x1 is 3) and (x2 is 2) then (y is -5)";"If (x1 is 3) and (x2 is 3) then (y is -6)";];```现在我们可以创建模糊控制器,并将输入变量和输出变量与规则库相结合。

模糊控制的matlab实现

模糊控制的matlab实现

6. surfview
功能:输出曲面观测器 格式: surfview (‘a’)
surfview (a) 说明:利用surfview (‘a’)可打开输出曲面观测器,从 中可查看保存在文件a.fis中的单输入或双输入FIS结 构的输出曲面。
4.1.2 隶属度函数
1. Gaussmf
功能:高斯(Gaussian)型隶属度函数 格式:y=gaussmf(x,[sig c]) 说明:对称的高斯型函数取决于2个参数σ(sig)和c:
0
x
a
f
x,
a
,b,c
b c
a x
c b
例:
0
xa
a x b
b
x
c
x c
x = 0:0.1:10;
y = trimf(x,[3 6 8]);
plot(x,y);
text(0.2,0.88,’trimf’);
text(0.2,0.78,’P = [3 6 8]’);
参数a和c确定三角 形的“脚”,而 参数b确定三角形 的“峰”
2. addrule 功能:在FIS中添加规则 格式:a=addrule(a,ruleList) 例:ruleList=[1 1 1 1 1 ;1 2 2 1 1];
a=addrule(a,ruleList);
3. addvar 功能:在FIS中添加变量 格式:a=addvar(a,’varType’,varBounds) 例:a=newfis(‘Simple’);
x c 2
f
x, ,c
e
2 2
gaussmf函数的参数以向量[sig,c]形式给出。
例:
x = 0:0.1:10;

使用MATLAB进行模糊控制设计

使用MATLAB进行模糊控制设计

使用MATLAB进行模糊控制设计导言:模糊控制是一种基于模糊逻辑的自适应控制方法,它使用模糊规则来处理难以准确建模的系统。

MATLAB作为一款功能强大的数学计算软件,在模糊控制设计中发挥着重要的作用。

本文将介绍使用MATLAB进行模糊控制设计的基本原理、步骤以及一些实际的应用案例。

一、模糊控制基本原理1.1 模糊逻辑模糊逻辑是基于模糊集的一种数学逻辑推理方法。

与传统的布尔逻辑不同,模糊逻辑考虑了中间状态的存在,可以用模糊集的隶属度来描述事物之间的模糊关系。

模糊逻辑的基本运算包括模糊与、模糊或、模糊非等。

1.2 模糊控制器的基本结构模糊控制系统由模糊化、模糊推理和去模糊化三个主要部分组成。

模糊化将输入转换为模糊集,模糊推理基于预定义的模糊规则进行逻辑推理,得到输出的模糊集,然后通过去模糊化将模糊结果转换为实际的控制信号。

二、使用MATLAB进行模糊控制设计的步骤2.1 建立模糊逻辑系统在MATLAB中,可以使用fuzzy工具箱来建立模糊逻辑系统。

首先,需要定义输入和输出的模糊集,可以选择三角形、梯形或高斯函数等形状。

然后,定义模糊规则,设置每个输入和输出之间的关系。

最后,确定输入和输出的范围,以便后续模糊控制器的设计和仿真。

2.2 设计模糊控制器在MATLAB中,可以使用fuzzy工具箱中的fuzzy控制器对象来设计模糊控制器。

首先,需要将前一步中建立的模糊逻辑系统与fuzzy控制器对象相关联。

然后,设置输入的变化范围和输出的变化范围。

接下来,可以选择使用模糊控制器设计方法来优化模糊规则和模糊集的参数。

最后,可以进行控制系统的仿真和性能评估。

2.3 优化模糊控制器优化模糊控制器是为了使模糊控制系统能够更好地适应实际环境变化和控制要求。

在MATLAB中,可以使用模糊控制器的仿真结果进行性能评估和参数调整。

可以通过修改模糊规则、模糊集的参数或输入输出的变化范围等方式来优化模糊控制器。

三、模糊控制设计的实际应用案例3.1 模糊温度控制模糊温度控制是一个常见的实际应用案例。

Matlab技术模糊控制方法

Matlab技术模糊控制方法

Matlab技术模糊控制方法随着科技的不断进步,控制系统在各个领域中起着至关重要的作用。

为了适应不同的应用场景,不同的控制方法也应运而生。

其中,模糊控制方法因其对系统非线性特性的适应性和可解释性而备受关注。

本文将详细介绍Matlab技术中的模糊控制方法,包括模糊集合的表示与运算、模糊推理规则的建立、模糊控制器的设计与优化。

第一部分:模糊集合与模糊运算在模糊控制中,首先需要将系统的输入和输出用模糊集合的形式表示。

模糊集合是用隶属度函数来描述的,隶属度函数表示了某个元素属于该模糊集的程度。

Matlab中提供了一些方便的工具和函数来实现模糊集合的表示和计算。

首先,我们需要定义模糊集合的隶属度函数。

常见的隶属度函数有三角形隶属度函数、梯形隶属度函数、高斯隶属度函数等。

可以使用Matlab中的fuzzify函数来定义这些函数,并通过plot函数来可视化。

接下来,我们可以使用Matlab中的模糊运算函数来进行模糊集合的运算,例如交集运算和并集运算。

这些函数包括min、max、prod等函数。

通过这些函数,我们可以方便地实现模糊集合的合并和比较。

第二部分:模糊推理规则的建立模糊推理规则是模糊控制中的核心部分,它将模糊集合的输入映射为输出。

在Matlab中,我们可以使用fuzzy规则编辑器来定义和管理模糊推理规则。

首先,我们需要确定输入和输出的模糊集合。

在fuzzy规则编辑器中,我们可以指定输入和输出变量,并为其分配模糊集合。

接着,我们可以添加模糊规则,每个模糊规则包括条件和结论两个部分。

条件部分是输入变量的模糊集合的组合,结论部分是输出变量的模糊集合。

在添加模糊规则之后,我们可以使用fuzzify函数将输入变量模糊化,并使用inference函数进行推理。

推理结果将以模糊集合的形式表示。

第三部分:模糊控制器的设计与优化在模糊控制中,模糊控制器是通过将输入模糊集合映射为输出模糊集合来实现控制目标的。

在Matlab中,我们可以使用fuzzy控制器编辑器来设计和优化模糊控制器。

最新第4章模糊控制的matlab实现教学讲义PPT

最新第4章模糊控制的matlab实现教学讲义PPT
第4章模糊控制的matlab实现
4.1 认识实验
4.1.1 GUI(图形用户界面) 工具箱函数
1. anfisedit
功能:打开ANFIS编辑器的GUI 格式: anfisedit(‘a’)
anfisedit(a) anfisedit 说明:利用anfisedit函数打开ANFIS编辑器的GUI, 从中可装入数据集合并训练ANFIS。 利用anfisedit(‘a’)可从磁盘中装入名为a.fis的FIS 文件,并打开ANFIS编辑器。利用anfisedit(a)可按同 样的方式打开FIS结构变量a。
4.1.4 Simulink仿真模块
1. fuzblock 功能:模糊逻辑控制器仿真模块 格式: fuzblock 说明:此命令将打开Simulink系统的模糊逻辑模块库, 里面含有有关模糊逻辑器件的演示框图。
2. sffis 功能:Simulink中的模糊推理S函数 格式: output=sffis(t,x,u,flag,fismat) 说明:用此函数可得到一个由Simulink使用的MEX文件
4.2 水箱水位控制实验
水箱水位模糊推理系统(FIS)的建立
模糊推理系统的任务
对测量数据进行模糊化 建立模糊控制规则表 进行输出信息的模糊判决
4. ruleedit
功能: ruleedit (‘a’) ruleedit (a)
说明:利用ruleedit (‘a’)可打开规则编辑器,从中可 以查看或修改文件a.fis所对应的FIS结构中的规则。
ruleedit (a)格式可用来打开在工作空间中已存在 的名为a的FIS结构所对应的规则编辑器。
2. addrule 功能:在FIS中添加规则 格式:a=addrule(a,ruleList) 例:ruleList=[1 1 1 1 1 ;1 2 2 1 1];

如何在MATLAB中进行模糊控制

如何在MATLAB中进行模糊控制

如何在MATLAB中进行模糊控制模糊控制是一种基于模糊逻辑理论的控制方法,它通过建立模糊规则、模糊集合和模糊推理等步骤,实现对复杂系统的控制。

在MATLAB中,我们可以利用模糊控制工具箱进行模糊控制设计和仿真。

本文将从模糊控制的基本原理、MATLAB中的模糊控制工具箱的使用以及实例应用等方面进行讨论。

一、模糊控制基本原理模糊控制的基本原理是将人类的经验和模糊逻辑理论应用于系统控制中。

它不需要准确的数学模型,而是通过模糊集合、模糊规则和模糊推理等方法来描述和制定控制策略。

下面我们将简要介绍一下模糊控制中的基本概念。

1. 模糊集合模糊集合是一种可以容纳不确定性的集合。

与传统集合论不同,模糊集合中的元素可以部分地、模糊地属于该集合。

在模糊控制中,我们通常使用隶属度函数来描述元素对模糊集合的隶属程度。

2. 模糊规则模糊规则是一种将输入和输出间的关系表示为一组语义规则的方法。

它基于专家的经验和知识,将输入变量的模糊集合与输出变量的模糊集合之间建立映射关系。

模糊规则通常采用IF-THEN的形式表示,例如:“IF 温度冷 AND 湿度高 THEN 空调制冷”。

3. 模糊推理模糊推理是基于模糊规则进行推理和决策的过程。

它通过对模糊集合的隶属度进行运算,计算出输出变量的模糊集合。

常用的推理方法有模糊关联、模糊交集和模糊合取等。

二、MATLAB中的模糊控制工具箱MATLAB提供了一套完整的模糊控制工具箱,包括模糊集合的创建、模糊规则的定义、模糊推理和模糊控制系统的仿真等功能。

下面我们将逐步介绍这些功能的使用方法。

1. 模糊集合的创建在MATLAB中,我们可以使用fuzzymf函数来创建模糊集合的隶属度函数。

该函数可以根据用户指定的类型和参数生成不同形状的隶属度函数。

常用的隶属度函数有三角型函数、梯形函数和高斯型函数等。

2. 模糊规则的定义在MATLAB中,我们可以使用addrule函数来定义模糊规则。

该函数将用户指定的输入变量、模糊集合和输出变量、模糊集合之间的关系转化为模糊规则,并添加到模糊推理系统中。

模糊控制在matlab中的实例

模糊控制在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来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

②函数showrule
格式:showrule(fis)
showrule(fis,indexlist)
showrule(fis,indexlist,format)
说明:fis为模糊推理系统矩阵变量的名称;indexlist为 规则编号,可以以向量形式指定显示多条规则; format为显示方式,有三种显示方式,即语句方式 (verbose),符号方式(symbolic)和索引方式 (indexed)。
例:getfis(a,’input’,1,’name’) 输出结果:service
④ 函数showfis 功能:以分行的形式显示模糊推理系统矩阵的所有属性。
格式:showfis(fismat) ⑤ 函数writefis 功能:将以矩阵形式保存在内存中的模糊推理系统的数 据写入磁盘文件中。 格式:writefis(fismat,filename)
③函数getfis 功能:取得模糊推理系统的部分或全部属性。 格式:getfis(a) //显示系统所有属性
getfis(a,’fisprop’) //显示系统某一属性 getfis(a,’vartype’,varindex,’varprop’) 例:a=readfis(‘tipper’); getfis(a) 输出结果:Name=tipper
说明:参数列表中,a为模糊推理系统对应的矩阵变量名, varType用于指定语言变量的类型为字符型(如‘input’ 或‘output’); varName用于指定语言变量的名; varBounds用于指定语言变量的论域范围。
注意:对于添加到同一个模糊推理系统的语言变量,按 先后顺序自动编号,编号从1开始,逐渐递增。对于分属 于输入与输出的不同语言变量则独立地分别编号。
例:a=newfis(‘tipper’); //创建并返回一个新的FIS系统
a=addvar(a,’input’,’service’,[0 10]);
getfis(a,’input’,1) //取得FIS的部分或全部属性
②函数addmf
功能:向模糊推理系统的语言变量添加隶属度函数。
格式:a=addmf(a, varType, varIndex,mfName,mfType, mfParams)
Type=mamdani NumInputs=2 ………
例:getfis(a,’input’,1) 注:属性为‘input’或‘output’时,后面的第三个参数 指定某一个输入或输出语言变量。
输出结果:Name=service NumMFs=3 MFLabels=poor good excellent Range=[0 10]
例:showrule(a,1:2,’indexed’) 输出结果:1 1,1(1):1
1 2,2(1):1
6、计算模糊推理输出结果函数evalfis
格式:y=evalfis(U,FIS) 说明:参数U是输入数据,FIS是模糊推理矩阵。 U的每一行是一个特定的输入向量,Y的每一行是 一个特定的输出向量。
MATLAB模糊逻辑工具箱 建立模糊逻辑推理系统 命令行函数(以 .m文件存放) 工具 图形交互工具(GUI-Graphical User Interface) (图形用户界面) 接口仿真逻辑模块(Simulink环境) 图形交互工具箱提供的图形化工具有五类:
模糊推理系统编辑器Fuzzy 隶属度函数编辑器Mfedit (Membership function) 模糊规则编辑器Ruleedit
访问方法
①GUI工具 ②函数
③结构名.成员名
2、存储( .fis文件)
访问
readfis-读 writefis-写
命令函数 1、隶属度函数 ①函数trimf(表示triangular membership function) 功能:建立三角形隶属度函数。 格式:y=trimf(x,[a b c]) 其中:参数x指定变量论域范围,参数a,b和c指定三角形 函数的形状,该函数在b点处取最大值1,a,c点为0。 例:建立三角形隶属度函数并绘制曲线。
例:a=readfis(‘tipper’); a2=setfis(a,’DefuzzMethod’,’mom’);
Defuzzification:
centroid(重心法:系统默认) lom(最大隶属度函数中的取最大值法)
bisector(面积平分法)
som(最大隶属度函数中的取最小值法)
mom(平均最大隶属度法)
如果输入U是M*N矩阵,则系统是N输入的, 返回的Y是M*L矩阵,L是系统的输出的数目。
例:fis=readfis(‘tipper’); out=evalfis([2 1; 4 9],fis)
输出结果:out=7.0169 19.6810
MATLAB模糊控制系统设计实例1
一、设计目的:了解用MATLAB模糊工具箱的图形界面可视化 工具实现模糊控制系统的方法。
说明:隶属度函数只能为模糊推理系统中已经存在的某 一语言变量的语言值添加隶属度函数。参数列表中,a为 模糊推理系统对应的矩阵变量名, varType指定语言变量 类型的字符串(如‘input’或‘output’); varIndex指定 语言变量编号的数字;mfName指定隶属度函数名称; mfType指定隶属度函数类型; mfParams指定隶属度函数 的参数。
centroid(重心法)
lom(最大隶属度函数中的取最大值法)
bisector(面积平分法) som(最大隶属度函数中的取最小值法)
mom(平均最大隶属度法)
⑵ 在命令窗口键 入mfedit可激活隶 属度函数编辑器
MATLAB的FIS结构和存储
1、FIS(模糊推理系统)结构
模糊推理系统是以一种FIS的结构来表示和存储的
例: x=0:0.1:10; y=trapmf(x, [1 5 7 8]); plot(x,y) xlable(‘trapmf,P=[1 5 7 8隶属度函数。
格式:y=gaussmf(x,[sig c])
其中:参数x指定变量论域范围,参数c决定了函数的中心 点,sig决定了函数曲线的宽度σ 。
2. 蕴涵计算(Implication) min prod (乘积法)
3. 输出的合成计算Aggregation(模糊规则综合采用的方法)
Aggregation
max sum(求和法)
prober (概率法)
prober(a,b)=a+b-ab
4. 逆模糊化计算(Defuzzification)
例:writefis(a,’my_file’) type my_file.fis
⑥ 函数setfis
功能:设置、改变模糊推理系统的属性。
格式:FIS2=setfis(fis1,’fispropname’,newPropValue)
说明:参数fis1指明模糊推理系统的名称;fispropname 指明模糊推理系统的全局属性; newPropValue指明此 属性的新值。
5、模糊规则建立
①函数addrule
功能:向模糊推理系统添加模糊规则。
格式:a=addrule(a,rulelist)
说明:参数a为模糊推理系统对应的矩阵变量名称,rulelist 以向量的形式给出需要添加的模糊规则。如果模糊推理系 统有m个输入语言变量和n个输出语言变量,则向量rulelist 的列数必须为m+n+2,而行数等于需要添加的规则数目。
二、系统设计要求: 1、输入变量:偏差e、偏差变化率de;输出变量:u 相应隶属度函数为:
模糊规则观察器Ruleview 模糊推理输入输出曲面视图Surfview (Surface)
⑴ 模糊推理系统编辑器Fuzzy 处理最顶层构建问题,例如输入输出变量的数目、变量名等
激活(进入)方法:命令窗口(command window)执行 Fuzzy命令。
激活模糊推理系统系统编辑器 :
基本属性
例: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]); plot(a,’input’,1)
例: x=0:0.1:10; y=smf(x, [2 8]); plot(x,y) xlable(‘smf,P=[2 8]’)
2、模糊逻辑系统输入输出变量及隶属度函数的添加 ①函数addvar 功能:向模糊推理系统中添加语言变量。 格式:a=addvar(a, varType, varName, varBounds)
注意:对于每个语言变量的隶属度函数按该函数被添加的顺 序编号,编号从1开始,依次递增。
3、FIS系统相关操作 ① 函数newfis 功能:创建并返回一个新的模糊推理系统。 格式:a=newfis(‘fisName’) ②函数readfis 功能:从磁盘中读出并返回模糊推理系统结构变量。 格式:Fismat=readfis(‘filename’) 说明:打开一个由filename指定的数据文件(.fis),并将 其加载到当前的工作空间(Workspace)中的变量Fismat中。 例:fismat=readfis(‘tipper’); //tipper.fis已经存在
高斯函数的表达式为:
1 ( xc )2
ye 2
例: x=0:0.1:10; y=gaussmf(x, [2 5]); plot(x,y) xlable(‘gaussmf,P=[2 5]’)
④函数zmf
功能:建立Z型隶属度函数。
格式:y=zmf(x,[a b])
相关文档
最新文档