模糊逻辑工具箱在Simulink中的使用
- 格式:doc
- 大小:782.50 KB
- 文档页数:15
基于simulink的模糊PID控制例⼦1模糊PID⽤命令Fuzzy打开模糊控制⼯具箱。
Anfisedit打开⾃适应神经模糊控制器,它⽤给定的输⼊输出数据建个⼀个模糊推理系统,并⽤⼀个反向传播或者与最⼩⼆乘法结合的来完成⾪属函数的调节。
Surfview(newfis)可以打开表⾯视图窗⼝8.1 模糊PID 串联型新建⼀个simulink模型同时拖⼊⼀个fuzzy logic controller 模块,双击输⼊已经保存的fis模糊控制器的名字。
由于这个控制模块只有⼀个输⼊端⼝,需要⽤到mux模块。
模糊结合PID,当输出误差较⼤时,⽤模糊校正,当较⼩时,⽤PID校正。
8.2 模糊⾃适应PID(1)PID 参数模糊⾃整定的原则PID 调节器的控制规律为: u( k) = Kp e( k) + Ki Σe( i) + Kd ec( k)其中: Kp 为⽐例系数; Ki 为积分系数; Kd为微分系数; e( k) 、ec( k) 分别为偏差和偏差变化率.模糊⾃整定PID 参数的⽬的是使参数Kp 、Ki 、Kd随着e 和ec 的变化⽽⾃⾏调整,故应⾸先建⽴它们间的关系. 根据实际经验,参数Kp 、Ki 、Kd在不同的e 和ec下的⾃调整要满⾜如下调整原则:(1) 当e 较⼤时,为加快系统的响应速度,防⽌因开始时e 的瞬间变⼤可能会引起的微分溢出,应取较⼤的Kp 和较⼩的Kd ,同时由于积分作⽤太强会使系统超调加⼤,因⽽要对积分作⽤加以限制,通常取较⼩的Ki值;(2) 当 e 中等⼤⼩时,为减⼩系统的超调量, 保证⼀定的响应速度, Kp 应适当减⼩;同时Kd 和Ki的取值⼤⼩要适中;(3) 当e 较⼩时,为了减⼩稳态误差, Kp 与Ki 应取得⼤些,为了避免输出响应在设定值附近振荡,同时考虑系统的抗⼲扰性能,Kd 值的选择根据|ec|值较⼤时,Kd 取较⼩值,通常Kd 为中等⼤⼩。
同时按照需要,将输⼊语⾔变量E 和EC 分为7 个模糊⼦集,分别⽤语⾔值正⼤( PB) 、正中( PM) 、正⼩( PS) 、零(Z) 、负⼩(NS) 、负中(NM) 、负⼤(NB) 来表⽰,它们的⾪属函数为⾼斯型(gaussmf) ,输出语⾔变量Kp′、Ki′、Kd′⽤语⾔值⼩正⼤( PB) 、正中( PM) 、正⼩( PS) 、零(Z) 、负⼩(NS) 、负中(NM) 、负⼤(NB) 来表⽰⾪属函数为三⾓型(t rimf) ,⽅法⼆:图-1模糊⾃适应simulink模型根据各模糊⼦集的⾪属度赋值表和各参数模糊控制模型,应⽤模糊合成推理设计分数阶PID参数的模糊矩阵表,算出参数代⼊下式计算:Kp=Kp0+(E,EC)p;Ki=Ki0+(E,EC)I;Kd=Kd0+(E,EC)d式中:Kp0、Ki0、Kd0为PID参数的初始设计值,由传统的PID控制器的参数整定⽅法设计。
模糊逻辑工具箱在Simulink中的使用最近在写小论文,用到了Matlab中的模糊逻辑工具箱和虚拟现实工具箱,发现网上的资料很少,特别是没有讲到在Simulink中怎么使用这两个工具箱,这里简单介绍一下怎样在simulink中加入模糊逻辑。
我用的Matlab 7.0。
模糊逻辑的理论知识就不介绍了,要想知道的话…去查书吧,多得很。
下面用一个简单的例子作介绍:(本例不是特别针对实现什么功能,只是为了介绍方便)第一部分创建一个模糊逻辑(.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中键入范围,然后回车如下图:本例中:In_x,In_y隶属度函数相同,如下打开下了对话框2、添加规则选中IXL2,IYL2,OXL2,none(表示不被选中任何隶属度函数),and选项,权重Weight均设为1,然后点击Add rule 添加规则,同理添加其他规则。
模糊控制simulink实例一、模糊控制概述模糊控制是一种基于人工智能的控制方法,它模拟人类的思维方式进行控制决策。
模糊控制的核心思想是将模糊语言和模糊推理应用于控制系统中,通过建立模糊规则和模糊集合来实现对系统的控制。
模糊控制具有适应性强、处理非线性和复杂系统能力强等优点,在工业控制领域得到了广泛应用。
二、Simulink简介Simulink是MathWorks公司开发的一款基于MATLAB的通用仿真平台。
Simulink提供了一个直观的图形化界面,可以用于设计、模拟和实现各种系统模型。
Simulink 支持多领域的仿真,包括控制系统、信号处理、通信系统等,同时也提供了丰富的库函数和工具箱,方便用户进行系统建模与仿真。
三、模糊控制在Simulink中的应用模糊控制在Simulink中的应用可以通过Fuzzy Logic Toolbox来实现,该工具箱提供了一系列用于模糊控制设计和仿真的函数和模块。
下面介绍一个简单的模糊控制实例来说明模糊控制在Simulink中的应用。
3.1 系统建模首先,我们需要确定模糊控制系统的输入、输出和控制规则。
假设我们要设计一个小型的温度控制系统,系统的输入是环境温度(T),输出是加热器的电压(V)。
根据经验,我们可以定义几个模糊集合来描述温度和电压的状态,例如”冷”、“适中”和”热”。
然后,我们可以根据这些模糊集合定义一些模糊规则,例如”当温度冷时,增加电压”等。
3.2 模糊控制器设计在Simulink中,我们可以使用Fuzzy Logic Controller模块来设计模糊控制器。
该模块提供了一种快速且简单的方法来创建模糊控制器。
首先,我们需要定义输入和输出的模糊集合,以及模糊规则。
然后,我们可以将这些参数传递给Fuzzy Logic Controller模块,并设置输入输出的信号传递方式。
3.3 系统仿真在完成模糊控制器的设计后,我们可以进行系统的仿真。
在Simulink中,我们可以通过连接输入信号和模拟环境来模拟系统的行为。
下面用一个简单的例子作介绍:(本例不是特别针对实现什么功能,只是为了介绍方便)第一部分创建一个模糊逻辑(.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”形式的模糊控制规则。
模糊控制simulink实例模糊控制是一种基于人类智能的控制方法,其能够克服传统控制方法中的困难和不足,使得控制系统能够更加稳定和灵活地进行控制。
在模糊控制中,模糊规则和模糊推理是非常关键的,而Simulink正是一款非常适合模拟和控制系统的MATLAB工具箱。
现在,我们就来看一个基于Simulink的模糊控制实例。
假设我们有一个小车可以沿着一条直线上下运动,并且需要通过模糊控制来控制小车的运动。
我们将小车的速度和位置分别作为系统的输入和输出,其中小车的速度可以在0-10m/s之间变化,而小车的位置则可以在0-50m之间变化。
需要注意的是,在这个系统中,小车的速度和位置都是模糊的,我们需要通过模糊规则和推理来确定小车应该如何移动。
首先,我们需要确定一组模糊规则来描述小车的运动。
这里我们设定了三个模糊规则,分别是:1. 如果小车位置很靠近上限,那么小车速度应该减缓。
2. 如果小车位置中间,那么小车速度应该保持不变。
3. 如果小车位置很靠近下限,那么小车速度应该加速。
然后,我们需要建立一组模糊推理机制来根据当前状态来确定小车的下一个状态。
这里我们选择了三个模糊推理机制:模糊最小性、模糊加法和模糊乘法。
其中,模糊最小性是用来确定模糊集合之间的交集,模糊加法是用来确定两个模糊集合之间的并集,而模糊乘法则是用来确定两个模糊集合之间的乘积。
最后,我们需要使用Simulink建立一个模糊控制系统,并将上述规则和推理机制应用到这个系统中。
在Simulink中,我们可以使用Fuzzy Logic Controller来实现这个过程。
首先,我们需要将输入和输出变量添加到Fuzzy Logic Controller中。
然后,我们需要为每个变量设置一个模糊集合,以便能够将当前状态转换为模糊状态。
接下来,我们需要将模糊规则添加到Fuzzy Logic Controller中,并为每个规则设置一些权重,以便能够决定规则的优先级。
1模糊PID用命令Fuzzy打开模糊控制工具箱。
Anfisedit打开自适应神经模糊控制器,它用给定的输入输出数据建个一个模糊推理系统,并用一个反向传播或者与最小二乘法结合的来完成隶属函数的调节。
Surfview(newfis)可以打开表面视图窗口8.1 模糊PID 串联型新建一个simulink模型同时拖入一个fuzzy logic controller 模块,双击输入已经保存的fis模糊控制器的名字。
由于这个控制模块只有一个输入端口,需要用到mux模块。
模糊结合PID,当输出误差较大时,用模糊校正,当较小时,用PID校正。
8.2 模糊自适应PID(1)PID 参数模糊自整定的原则PID 调节器的控制规律为: u( k) = Kp e( k) + Ki Σe( i) + Kd ec( k)其中: Kp 为比例系数; Ki 为积分系数; Kd为微分系数; e( k) 、ec( k) 分别为偏差和偏差变化率.模糊自整定PID 参数的目的是使参数Kp 、Ki 、Kd随着e 和ec 的变化而自行调整,故应首先建立它们间的关系. 根据实际经验,参数Kp 、Ki 、Kd在不同的e 和ec 下的自调整要满足如下调整原则:(1) 当e 较大时,为加快系统的响应速度,防止因开始时e 的瞬间变大可能会引起的微分溢出,应取较大的Kp 和较小的Kd ,同时由于积分作用太强会使系统超调加大,因而要对积分作用加以限制,通常取较小的Ki值;(2) 当 e 中等大小时,为减小系统的超调量, 保证一定的响应速度, Kp 应适当减小;同时Kd 和Ki的取值大小要适中;(3) 当e 较小时,为了减小稳态误差, Kp 与Ki 应取得大些,为了避免输出响应在设定值附近振荡,同时考虑系统的抗干扰性能,Kd 值的选择根据|ec|值较大时,Kd 取较小值,通常Kd 为中等大小。
同时按照需要,将输入语言变量E 和EC 分为7 个模糊子集,分别用语言值正大( PB) 、正中( PM) 、正小( PS) 、零(Z) 、负小(NS) 、负中(NM) 、负大(NB) 来表示,它们的隶属函数为高斯型(gaussmf) ,输出语言变量Kp′、Ki′、Kd′用语言值小正大( PB) 、正中( PM) 、正小( PS) 、零(Z) 、负小(NS) 、负中(NM) 、负大(NB) 来表示隶属函数为三角型(t rimf) ,方法二:图-1模糊自适应simulink模型根据各模糊子集的隶属度赋值表和各参数模糊控制模型,应用模糊合成推理设计分数阶PID参数的模糊矩阵表,算出参数代入下式计算:Kp=Kp0+(E,EC)p;Ki=Ki0+(E,EC)I;Kd=Kd0+(E,EC)d式中:Kp0、Ki0、Kd0为PID参数的初始设计值,由传统的PID控制器的参数整定方法设计。
模糊逻辑工具箱在Simulink中的使用
最近在写小论文,用到了Matlab中的模糊逻辑工具箱和虚拟现实工具箱,发现网上的资料很少,特别是没有讲到在Simulink中怎么使用这两个工具箱,这里简单介绍一下怎样在simulink中加入模糊逻辑。
我用的Matlab 7.0。
模糊逻辑的理论知识就不介绍了,要想知道的话…去查书吧,多得很。
下面用一个简单的例子作介绍:
(本例不是特别针对实现什么功能,只是为了介绍方便)
第一部分创建一个模糊逻辑(.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中键入范围,然后回车如下图:
本例中:In_x,In_y隶属度函数相同,如下
Name Type Params
IXL2\IYL2zmf[1 1.5]
IXL1\IYL1trimf[1 2.5 4]
IXZ\IYZ trimf[3 5 7]
IXR1\IYR1trimf[6 7.5 9]
IXR2\IYR2smf[8.5 9]
Out_x,Out_y隶属度函数相同,如下:
Name Type Params
OXL2\OYL2zmf[0.1 0.15]
OXL1\OYL2trimf[0.1 0.25 0.4]
OXZ\OYZ trimf[0.3 0.5 0.7]
OXR1\OYR1trimf[0.6 0.75 0.9]
OXR2\OYR2smf[0.85 0.9]
5、关闭隶属函数编辑器
第四步:使用规则编辑器
通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。
由该编辑器进行模糊控制规则的设计非常方便,它将输入量各语言变量自动匹配,而设计者只要通过交互式的图形环境选择相应的输出语言变量,这大大简化了规则的设计和修改。
另外,还可为每条规则选择权重,以便进行模糊规则的优化。
步骤:
1、打开规则编辑器
点击Edit菜单,选Rules…
打开下了对话框
2、添加规则
选中IXL2,IYL2,OXL2,none(表示不被选中任何隶属度函数),and选项,权重Weight均设为1,然后点击Add rule 添加规则,同理添加其他规则。
下图为添加所有role后:
3、关闭规则编辑器
第五步:保存并查看结果步骤:
1、保存
保存为Test.fis
2、View->Rules打开Rule Viewer
3、View->Surface打开Surface Viewer
第二部分:将模糊逻辑添加到Simulink中第一步:创建一个Simulink文件
步骤:
1、打开Simulink
2、点击新建按钮建立一个新的.mdl文件
第二步:添加模糊逻辑
步骤:
1、在Simulink Library Brower 的搜索框内键入Fuzzy Logic Controller找到Fuzzy Logic Controller,并将其拖拽到新建的mdl文件中
2、双击Fuzzy Logic Controller,打开如下对话框,并在其内部键入Test
3、关闭对话框
第三步:添加其他模块
如下图,都是常用模块,请自己添加
第四步:保存并运行
步骤:
1、保存为Test.mdl
2、初始化模糊逻辑控制器,即在Command Window中键入Test = readfis('Test.fis'),回车
1、运行Test.mdl
这里可以比较一下结果。