大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。下面将根据模糊控制器设计步骤,一步步利用Matlab工具箱设计模糊控制器。
1、模糊控制工具箱使用
首先我们在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文件,这就是你所设计的模糊控制器。
6)simulink中使用fis文件,首先加入fuzzy模块,然后写入模糊文件,注意应用格式加单引号: ‘fuzzpid.fis’
2、模糊控制pid实例
模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。
KP的模糊规则控制表
∆kp |
EC |
|||||||
NB |
NM |
MS |
ZO |
PS |
PM |
PB |
||
E |
NB |
PB |
PB |
PM |
PM |
PS |
ZO |
ZO |
NM |
PB |
PB |
PM |
PS |
PS |
ZO |
NS |
|
NS |
PM |
PM |
PM |
PS |
ZO |
NS |
NS |
|
ZO |
PM |
PM |
PS |
ZO |
NS |
NM |
NM |
|
PS |
PS |
PS |
ZO |
NS |
NS |
NM |
NM |
|
PM |
PS |
ZO |
NS |
NM |
NM |
NM |
NB |
|
PS |
ZO |
ZO |
NM |
NM |
NM |
NB |
NB |
KI的模糊规则控制表
∆ki |
EC |
|||||||
NB |
NM |
NS |
ZO |
PS |
PM |
PB |
||
E |
NB |
NB |
NB |
NM |
NM |
NS |
ZO |
ZO |
NM |
NB |
NB |
NM |
NS |
NS |
ZO |
ZO |
|
NS |
NB |
NM |
NS |
NS |
ZO |
PS |
PS |
|
ZO |
NM |
NM |
NS |
ZO |
PS |
PM |
PM |
|
PS |
NM |
NS |
ZO |
PS |
PS |
PM |
PB |
|
PM |
ZO |
ZO |
PS |
PS |
PM |
PB |
PB |
|
PB |
ZO |
ZO |
PS |
PM |
PM |
PB |
PB |
KD的模糊规则控制表
∆kd |
EC |
|||||||
NB |
NM |
NS |
ZO |
PS |
PM |
PB |
||
E |
NB |
PS |
NS |
NB |
NB |
NB |
NM |
PS |
NM |
PS |
NS |
NB |
NM |
NM |
NS |
ZO |
|
NS |
ZO |
NS |
NM |
NM |
NS |
NS |
ZO |
|
ZO |
ZO |
NS |
NS |
NS |
NS |
NS |
ZO |
|
PS |
ZO |
ZO |
ZO |
ZO |
ZO |
ZO |
ZO |
|
PM |
PB |
NS |
PS |
PS |
PS |
PS |
PB |
|
PB |
PB |
PM |
PM |
PM |
PS |
PS |
PB |
模糊推理系统结构图
输入变量的隶属取三角形函数,如下:
误差变量E的隶属函数
误差变化变量EC的隶属函数
输出变量的隶属同样取三角形函数,如下:
输出变量KP的隶属函数
输出变量KD的隶属函数
输出变量KI的隶属函数
确定了输入和输出隶属函数后,在模糊规则编辑器中,输入表格中的模糊推理规则,共49条,如下图
模糊推理编辑器
此时得到的三参数的变化如下图
模糊推理KP变化图
模糊推理KI变化图
模糊推理KD变化图
运行仿真得到结果
PS:有定制开发需求,可以QQ联系:1762016542
提供matlab simulink 培训 1v1教学 或者思路沟通 答疑等咨询服务,尤其擅长汽车控制、信号处理、数学建模、电机领域
欢迎关注公众号:算法工程师的学习日志
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179116.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...