matlab下模糊控制器设计步骤
- 格式:doc
- 大小:26.00 KB
- 文档页数:4
Matlab中的模糊控制系统建模技巧引言:模糊控制系统是一种基于模糊逻辑推理的控制方法,广泛应用于诸多领域。
Matlab作为一个功能强大的数学计算工具,提供了丰富的工具箱和函数库,使模糊控制系统的建模变得更加容易和高效。
本文将从模糊控制系统的基本原理和建模步骤出发,介绍Matlab中常用的模糊控制系统建模技巧,以帮助读者更好地掌握模糊控制系统的建模过程。
一、模糊控制系统的基本原理模糊控制系统的基本原理是模糊逻辑推理。
它通过将输入和输出之间的关系表示为一系列模糊规则,并使用模糊集合和模糊运算进行推理,实现对系统的控制。
模糊逻辑推理的核心是模糊化和解模糊化过程。
具体而言,模糊化将输入和输出映射到相应的模糊集合上,而解模糊化则将经过推理后得到的模糊结果转化为具体的控制信号。
二、模糊控制系统的建模步骤建立一个模糊控制系统主要包括以下步骤:1. 确定控制的目标与输入输出变量:首先需要明确要控制的目标,并确定与该目标相关联的输入和输出变量。
例如,如果要设计一个模糊控制器来控制一个小车的速度,那么速度就是输出变量,而距离和时间等可能影响速度的因素就是输入变量。
2. 设计模糊规则库:模糊规则库是模糊控制系统的核心部分,其中包含了一系列用于推理的模糊规则。
每个模糊规则由一个条件部分和一个结论部分组成,条件部分描述了输入变量的取值范围,结论部分描述了输出变量的取值情况。
设计模糊规则库通常需要以专家经验为基础,并根据具体问题进行调整和优化。
3. 确定模糊集合和隶属函数:模糊集合用于模糊化输入和输出变量。
Matlab提供了一系列内置的模糊集合和隶属函数,如三角形隶属函数和高斯隶属函数等。
根据实际情况,选择合适的模糊集合和隶属函数,并确定其参数。
4. 进行模糊化和解模糊化:使用模糊控制系统前,需要对输入和输出变量进行模糊化和解模糊化处理。
模糊化将输入变量映射到相应的模糊集合上,而解模糊化将经过推理得到的模糊结果转化为具体的输出信号。
模糊控制作业一介绍模糊控制是指基于模糊逻辑描述一个过程的控制算法,是以模糊集合论、模糊语言变量及模糊逻辑推理为基础的,基于被控系统的物理特性,模拟人的思维方式和人的控制经验来实现的一种计算机智能控制。
模糊控制器主要嵌有操作人员的经验和直觉知识,是模糊语言形式的控制方法,不需要预先知道被控对象结构、参数,不需要建立被控对象的精确数学模型,并能克服非线性因素、大惯性因素的影响,对调节对象的参数变化不敏感,对对象时变及纯滞后有一定的适应性,即具有较强的鲁棒性。
模糊控制器的设计参数容易选择调整。
模糊控制系统如图1-1所示图1-1 模糊控制系统框图二本作业介绍1、选定模糊控制器的输入输出变量,并进行量程转换输入语言变量选为实际浓度与给定值之间的偏差(纸浆浓度偏差)e及纸浆浓度偏差变化率ec,输出语言变量选为阀门开度增量u。
首先确定e、ec和u 的基本论域分别为[-1.2%~1。
2%]、[—0。
6%~0.6%]和[-12~12],选定e、u 的模糊集合的论域为[-6,—5,—4,—3,—2,-1,0,1,2,3,4,5,6],ec的模糊集合的论域为[-7,—6,-5,—4,—3,—2,—1,0,1,2,3,4,5,6,7]2、确定模糊控制器的结构根据系统输入变量个数可知,应采用采用双输入单输出模糊控制器。
(如图2所示)模糊控制器主要包含三个功能环节:用于输入信号处理的模糊量化和模糊化环节,模糊控制算法功能单元,以及用于输出解模糊化的模糊判决环节.ed/dt 图2 双输入单输出模糊控制器3、确定各变量的模糊语言取值及相应的隶属函数,即进行模糊化模糊化是将模糊控制器输入量的确定值转换为相应模糊语言变量值的过程,此相应语言变量均由对应的隶属度函数来定义。
对纸浆浓度偏差e 、纸浆浓度偏差变化率ec 、阀门开度的增量u 进行模糊化,分别用模糊语言变量X 、Y 、Z 进行表示,语言值集合均为{负大,负中,负小,零,正小,正中,正大},用英文缩写进行表示分别为:X={NBe,NMe ,NSe,ZOe ,PSe,PMe ,PBe }Y={ NBec ,NMec,NSec ,ZOec ,PSec ,PMec ,PBec }Z={ NBu ,NMu ,NSu ,ZOu ,PSu,PMu ,PBu }模糊化包括两个任务:第一个任务是进行论域变换,过程参数的实际范围称为基本论域,可以通过变换系数(量化因子)实现由基本论域到量化论域的变换;第二个任务是求得输入对应于语言变量的隶属度。
基于MATLAB的模糊PID控制器的设计模糊PID控制器是一种常用的控制算法,可以解决传统PID控制器在非线性系统中效果不佳的问题。
在MATLAB中,可以使用fuzzylogic工具箱来设计模糊PID控制器。
模糊PID控制器的设计过程分为三个步骤:建立模糊系统、设计控制器和性能评估。
接下来,设计模糊PID控制器。
在MATLAB中,可以使用fuzzy工具箱提供的mamdani和sugeno两种模糊控制器类型。
其中,mamdani模糊控制器基于模糊规则的if-then逻辑,而sugeno模糊控制器使用模糊规则来计算模糊输出。
根据系统的具体需求,可以选择合适的模糊控制器类型,并设置相应的参数。
同时,可以使用模糊控制器设计工具来对模糊控制器进行优化和调整。
最后,对设计的模糊PID控制器进行性能评估。
在MATLAB中,可以使用模拟仿真工具对模糊PID控制器进行测试和评估。
具体方法是将模糊PID控制器与待控制的系统进行耦合,观察系统的响应和控制效果,并评估其性能和稳定性。
可以通过调整模糊PID控制器的参数和模糊规则来改善控制效果。
总之,基于MATLAB的模糊PID控制器设计包括建立模糊系统、设计控制器和性能评估三个步骤。
通过合理设置模糊输入、模糊输出和模糊规则,可以有效地解决非线性系统的控制问题。
同时,利用MATLAB提供的模糊控制器设计工具和性能评估工具,可以对模糊PID控制器进行优化和改进,以达到更好的控制效果和稳定性。
下面用一个简单的例子作介绍:(本例不是特别针对实现什么功能,只是为了介绍方便)第一部分创建一个模糊逻辑(.fis文件)第一步:打开模糊推理系统编辑器步骤:在Commond Window 键入fuzzy回车打开如下窗口,既模糊推理系统编辑器第二步:使用模糊推理系统编辑器本例用到两个输入,两个输出,但默认是一个输人,一个输出步骤:1、添加一个输入添加一个输出得如下图2、选择Input、output(选中为红框),在Name框里修改各输入的名称并将And method 改为prod,将Or method 改为probor提示:在命名时’_’在显示时为下标,可从上图看出。
第三步:使用隶属函数编辑器该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
步骤:1、双击任何一个输入量(In_x、In_y)或输出量打开隶属度函数编辑器。
2、在左下处Range和Display Range处添加取值范围,本例中In_x和In_y的取值范围均为[0 10], Out_x和Out_y的取值范围均为[0 1]3、默认每个输入输出参数中都只有3个隶属度函数,本例中每个输入输出参数都需要用到五个,其余几个需要自己添加:选中其中一个输入输出参数点击Edit菜单,选Add MFS…打开下列对话框将MF type设置为trimf(三角形隶属度函数曲线,当然你也需要选择其他类型) 将Number of MFs设置为2点击OK按钮同样给其他三个加入隶属度函数4、选中任何一个隶属度函数(选中为红色),在Name中键入名称,在Type 中选择形状,在Params中键入范围,然后回车如下图:5、关闭隶属函数编辑器第四步:使用规则编辑器通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。
模糊控制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的温度模糊控制系统的设计。
温度模糊控制系统的设计包括四个主要步骤:建立模糊控制器,设计模糊推理规则,模糊化与去模糊化以及系统仿真。
首先,建立模糊控制器。
在MATLAB中,可以使用Fuzzy Logic Toolbox工具箱来创建和管理模糊逻辑系统。
可以使用命令fuzzy,创建一个模糊逻辑系统对象。
在创建模糊控制器对象后,需要定义输入和输出变量。
输入变量可以是温度偏差,输出变量可以是控制信号。
然后,可以使用addInput和addOutput命令来添加输入和输出变量。
接下来,设计模糊推理规则。
在模糊推理中,需要定义一组规则来描述输入变量和输出变量之间的关系。
可以使用addRule命令来添加规则。
规则的数量和形式可以根据实际需求进行调整。
然后,进行模糊化与去模糊化。
模糊化是将模糊输入变量转换为模糊集,而去模糊化是将模糊输出变量转换为具体的控制信号。
可以使用evalfis命令进行模糊化和去模糊化。
模糊化使用模糊逻辑系统对象对输入变量进行处理,而去模糊化使用模糊逻辑系统对象对输出变量进行处理。
最后,进行系统仿真。
可以使用Simulink工具箱来进行系统仿真。
在仿真过程中,将温度控制系统与模糊控制器进行连接,然后通过给定的输入条件观察系统的响应。
可以利用Simulink中的Scope来显示温度的变化,并且可以通过模糊控制器来调整温度。
在设计温度模糊控制系统时,还需要考虑参数调节和性能评估等问题。
可以使用MATLAB中的优化工具箱对模糊控制器的参数进行调节,以获得更好的控制性能。
还可以使用MATLAB中的性能评估工具来评估系统的性能,例如稳定性、精度和鲁棒性等。
综上所述,基于MATLAB的温度模糊控制系统的设计包括建立模糊控制器、设计模糊推理规则、模糊化与去模糊化以及系统仿真等步骤。
Matlab模糊控制器的设计以及simulink下对模糊控制器系统的仿真首先,在Matlab的命令窗口(command window)中输入fuzzy,回车就会出来这样一个窗口:接下来在上述窗口中进行模糊控制器的设计:1.双输入,单输出:点击Edit----Add Variable---input2.为E添加隶属度函数,E的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},E的模糊集合为{NB,NM,NS,NZ,PZ,PS,PM,PB},Edit—Membership Function edit,如下图所示:3.为EB添加隶属度函数,EB的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},EB的模糊集合为{NB,NM,NS,ZE,PS,PM,PB},Edit—Membership Function edit,如下图所示:4.为U添加隶属度函数,U的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},U的模糊集合为{NB,NM,NS,ZE,PS,PM,PB},Edit—Membership Function edit,如下图所示:其中E,EB,U均为模糊量。
5.为模糊控制器设计模糊规则,由于E的语言变量有8个,EB的语言变量有7个,所以模糊控制器的模糊规则总共有8*7=56条,接下来为模糊控制器添加规则:双击untitled,则有下面的表格:制定完成后,会形成模糊规则矩阵,系统会根据模糊输入量E,EB,经过模糊控制规则[56条],进而确定输出量U。
6.对输入量模糊化以及对输出量清晰化,我们采取最小最大重心法。
7.点击export—to file. ***#$.fis文件就是所设计的控制器。
8.下面对我们设计的模糊控制器进行检验,所构建的系统如下:系统分析:模糊控制器:双输入单输出,输入为误差以及误差的变化率的模糊量,输出为控制量的模糊量,模糊控制器中有56条规则。
matlab模糊控制器的设计
设计模糊控制器的步骤如下:
1. 确定系统的输入和输出变量:确定系统要控制的输入和输出变量,以及它们的范围和取值。
2. 设计模糊集:根据系统的输入和输出变量的范围,在输入和输出空间中设计一组模糊集。
可以使用三角形、梯形等形状的模糊集。
3. 确定模糊规则:根据经验或专家知识,确定一组模糊规则。
每个模糊规则对应一个输入模糊集与一个输出模糊集的匹配。
4. 确定模糊推理方法:确定使用哪种模糊推理方法,如Mamdani或者Sugeno等。
5. 设计模糊控制器的模糊化和解模糊化方法:确定如何将输入变量模糊化为模糊集,以及如何将输出变量的模糊集解模糊化为具体的输出值。
6. 确定模糊控制器的参数:根据系统的实际需求和性能要求,调整模糊控制器的模糊规则和参数,以达到最佳控制效果。
7. 实现模糊控制器:使用MATLAB等工具实现设计好的模糊控制器,并进行模拟和实验验证。
以上是一般的模糊控制器设计步骤,具体的设计过程还需要根据具体的系统和控制需求进行调整和优化。
基于MATLAB的模糊PID控制器的设计模糊PID控制器是一种能够根据系统的实际输出和设定值之间的误差来决定系统的控制量的控制器。
它结合了传统的比例、积分和微分控制器的优点,并通过模糊逻辑来优化控制效果。
在MATLAB中设计模糊PID控制器,我们需要先确定控制系统的模型。
假设我们要设计一个温度控制器,温度传感器测得的温度与设定值之间的误差可以作为输入。
根据传感器的精度和系统的响应特性,我们可以确定模糊PID控制器的参数范围和输出范围。
首先,我们需要定义模糊PID控制器的输入和输出的模糊集合。
例如,温度误差可以划分为“负大”、“负中”、“负小”、“零”、“正小”、“正中”和“正大”等模糊集合。
根据经验和系统要求,可以设定每个模糊集合的范围和模糊隶属度函数。
接下来,我们需要确定模糊PID控制器的规则库。
规则库定义了根据输入的模糊集合和模糊规则来决定输出的模糊集合。
例如,如果温度误差为“负大”且误差变化率为“正中”,则输出的控制量可以设定为“增大”。
在MATLAB中,可以使用Fuzzy Logic Toolbox工具箱来设计模糊PID控制器。
首先,需要创建一个fuzzy对象,用于描述模糊逻辑系统。
然后,可以使用addInput、addOutput和addRule等函数来定义模糊逻辑系统的输入、输出和规则。
可以根据系统的要求调整模糊集合的范围和模糊隶属度函数,以及规则库的定义。
在完成模糊逻辑系统的定义后,还需要确定模糊PID控制器的输出转换函数。
输出转换函数将模糊控制量转换为实际控制量。
通常,可以使用一些常用的转换函数,如线性转换、二阶转换等。
最后,可以使用simulate函数或evalfis函数来模拟模糊PID控制器的输出。
simulate函数可以模拟模糊逻辑系统的整个过程,包括输入的模糊化、规则推理和输出的去模糊化。
evalfis函数可以直接计算模糊逻辑系统的输出。
通过以上步骤,我们可以在MATLAB中设计一个基于模糊逻辑的PID 控制器,并进行模拟和优化。
下面将根据模糊控制器设计步骤,一步步利用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条模糊控制规则(一般来说,这些规则都是现成的,很多教科书上都有),如图。
制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应的模糊推理算法完成计算,并决策出模糊输出量。
4.对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,凡模糊化方法很多,我们这里选取重心法。
5.然后Export to disk,即可得到一个.fis文件,这就是你所设计的模糊控制器。
下面我们检验一下,看看我们的控制器到底怎么样。
以一个简单的电机控制为例,我们在Simulink中建立了它的模糊控制系统如下:
在用这个控制器之前,需要用readfis指令将fuzzy1.fis加载到matlab的工作空间,比如我们用这样的指令:myFLC=readfis(‘fuzzy1.fis’);就创建了一个叫myFLC的结构体到工作空间,并在fuzzy logic controller中参数设为:myFLC。
可以看到,在模糊控制器的输入和输出均有一个比例系数,我们叫它量化因子,它反映的是模糊论域范围与实际范围之间的比例关系,例如,模糊控制器输入输出的论域范围均为[-3,3],而实际误差的范围是[-10,10],误差变化率范围是[-100,100],控制量的范围是[-24,24],那么我们就可以算出量化因子分别为0.3,0.03,8。
量化因子的选取对于模糊控制器的控制效果有很大的影响,因此要根据实际情况认真选取哦。
好,现在我们可以设定仿真步长,比如定步长的10ms,就可以运行了。
运行后,产生这样一个错误:
MinMax blocks do not accept 'boolean' signals. The input signal(s) of block 'test_fuzzy/Fuzzy Logic Controller/FIS Wizard/Defuzzification1/Max (COA)' must be one of the MATLAB 'uint8', 'uint16', 'uint32', 'int8', 'int16', 'int32', 'single', or
'double' data types
我想很多朋友做模糊控制的时候都会遇到这个情况。
没关系,这里提供两个解决办法:
1.直接在Defuzzification1这个模块中的那个比较环节后加入数据类型转换模块,将boolean转化为double型,或者双击那个比较模块,选中show additional
parameters,将输出数据类型改为specify via dialog,然后选uint(8)即可;但是在仿真之后,又会发现很多地方都存在这个问题,因此你不得不一个一个去修改,如果你不怕累的话。
2.第二个方法是最简单的,直接在simulation parameters->advanced将boolean logic signals选为off,强烈推荐你用这个。
好了,这些都解决了,我们就可以仿真了,例如给个方波信号,可以得到仿真曲线如下。