(完整版)matlab模糊控制工具箱的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab模糊控制工具箱的使用
本学期选修了周川老师的智能控制及应用这门课程,大三时候曾上过周老师的英文版的控制工程基础这门课程,比较喜欢周老师上课的风格,智能控制这门课也收获不小,模糊控制是课程中讲到的第一个智能控制算法。
模糊不是真的模糊,模糊是为了精确。模糊控制中涉及到一个隶属度的概念,通常我们认为一个事物属于一个概念与否是确定的,比如数字电路的0与1,但是实际情况或者人们的思维习惯却不是这样的。比如规定18到30岁为青年,那么还差一天到18岁的人算不算青年呢?照规定看不算,但是如果我们加入概率的概念,比如说这个人90%属于青年人,可能更符合人们的思维习惯。
L.A.Zadeh在其《不相容原理》所述:“随着系统的复杂程度不断提高,人们对其精确而有意义地描述的能力不断的降低,以致在达到某一个阈值之后,系统的精确性和复杂性之间呈现出几乎是相互完全排斥的性质”。我们通常所用的控制算法一般是建立在模型比较确定的情况下,而模糊控制不依赖于对象的模型就可以进行控制决策,而且对系统参数变化具有较强的适应性。
对于模糊控制的原理,我不是很清楚,也没有这个心情去搞清楚,感觉知道大概怎么用就可以了。Matlab中集成了模糊控制工具箱,可以使用图像界面进行模糊控制器的设计,极大的简化了设计过程。下面介绍利用模糊工具箱进行控制系统设计的过程。
在matlab的主窗口中输入fuzzy即可调出模糊工具箱界面,退出界面的时候会提示保存,保存格式为fis,如果我们将文件保存为njust.fis,那么下次使用这个文件的时候在主窗口中输入fuzzy njust即可。
模糊控制器的建立过程如下:(1)设定误差E、误差变化率EC和控制量U的论域为,一般为[-6 6]。(2)设定E、EC、U的模糊集。一般可设为{NB、NM、NS、ZO、PS、PM、PB}。(3)设定隶属度函数。有高斯型隶属度函数、三角型隶属度函数等。(4)设定模糊控制规则。常用的模糊控制规则如图1所示,当然可以根据特定的控制对象和要求进行相应的调整。
图1 常用模糊控制规则
图2 添加变量
点击Edit->Add Variable即可进行变量的添加,在右下方可以进行名称的修改,左下方是与或运算方式、去模糊化方式等的选择,一般可以使用默认方式即可。
图3 添加论域与隶属度函数
双击图2中左右两侧的矩形图像即可进行论域与隶属度函数编辑,点击Edit->Add MFs即可进行隶属度函数的添加,右下方可以选择隶属度函数类型,左下方可以修改论域以及显示范围。
图4 添加控制规则
双击图2中中间的矩形图像即可进行模糊控制规则的编辑,根据if e or(and) ec then u的形式进行添加规则,可以修改规则权重。点击下方的Add rule和Delete rule即可进行规则添加和删除。至此完成模糊控制器的搭建。
使用菜单栏中的View->Rules即可观察设计规则,如图5所示。拖动输入变量中间的竖直线,可以看到控制量的变化情况。
图5 观察设计规则
使用菜单栏中的View->Surface即可观察输入变量输出变量的三维曲面,如图6所示。
图6 输入输出曲面
模糊控制系统的框图如图7所示,其中虚线内即为建立好的模糊控制器。图8为在matlab 中建立的某模糊控制系统实例。其中的fuzzy logic controller模块在simulink中的Fuzzy Logic Toolbox内,若是找不到的话可以使用搜索功能即可。若我们保存的模糊控制器文件为njust.fis,那么双击图8中的模糊控制器模块,输入njust即可。一般来说这个模糊控制器模块是两输入一输出的,所在输入前要添加一个向量组合工具mux。
图7 模糊控制系统结构框图
图8 matlab模糊控制系统实例
我们看到图7中有Ke、Kec和Ku三个权系数,查阅文献可知ke和kec对系统的动态性能影响较大,它们的大小意味着对输入误差和误差变化的不同加权程度,ke变大缩短上升时间,但是增大系统超调;kec变大减小系统超调,但是响应速率变慢。输出比例因子ku也影响模糊控制系统的性能,ku过小,系统的动态响应过程变长,ku过大会导致系统震荡。综合调整以上三个因子,获得所需要的控制性能。当然它们有一定的计算方法,没有深入研究过,不过所谓的计算方法好像也是存在问题的。这里特别要注意的是饱和模块的上下限就是我们设定的论域范围。
最后进行模糊控制系统仿真的时候有两点需要注意:一是仿真算法的设置。如果使用默认的算法,会发现速度很慢,几乎没有进度,需要在Simulation->Configuration Parameters中对取消过零点的限制。如图9所示。
图9 仿真算法的修改
另外需要注意的一点是模糊控制器的加载。看到论坛上很多人问为什么会报错,很大程度上原因是因为模糊控制文件fis没有加载到空间中。在主窗口中调出所保存的fis文件,进行File->Export->To Workspace即可。
当然了,也可以使用文件形式进行模糊控制器的设计,这里不讨论了,很多参考书上都有相应的函数介绍或者程序。
2010年8月18日下午njust 电工楼204房间
参考文献
[1] 刘金琨.智能控制[M].北京: 电子工业出版社,2009.
[2] 李国勇.智能控制及其Matlab实现[M].北京: 电子工业出版社,2005.
[3] 张国良,曾静,柯熙政等.模糊控制及其Matlab应用[M].西安: 西安交通大学出版社,2002.