实时采样得到的数据经过模糊化处理后输入机器,通过查询模糊规则表便可得到应有的输出模糊量,从而避免了近似推理过程。实际应用中,特别是在控制系统较为简单而采用单片机控制时,常常采用这种查表法。
模糊控制表的计算有多种方式,手工编程计算会很繁琐。MATLAB中提供了evalfis函数进行模糊推理计算,也可以用SystemTest自动生成模糊控制表。注意MATLAB 2016a以后不再包含这个功能,可以用Unit Test Framework或Simulink Test代替。
以双输入—单输出系统为例,计算模糊控制器的查询表。假设控制器输入为误差e和误差变化率ec,输出为控制量u,其基本论域分别为[emin,emax],[ecmin,ecmax],[umin,umax],对应的语言变量E、EC和U的论域为{-6,-5,…,-1,0,1,…,5,6},E、EC和U都选7个语言值{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数采用三角函数。其分布可用表1表示,控制规则如表2所示。
表1 语言变量E、EC和U的赋值表
表2 模糊控制规则表
1. 在MATLAB中输入fuzzy打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,然后将模糊推理系统保存为test.fis。
解模糊用(最大隶属度) 最大值法(lom)。如果在模糊集合的论域上&#