作业一:模糊控制作业(40分):
以双输入—单输出系统为例,1、画出模糊控制程序流程图;2、计算出模糊控制器的查询表,写出必要的计算步骤。假设控制器输入为误差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所示。注意:u的去模糊化要采用与你的学号ID的奇偶性对应的方法,设ID=奇数者用最大隶属度法,ID=偶数者用重心法。
表1 语言变量E、EC和U的赋值表
NB NM NS Z PS PM PB -6 1 0 0 0 0 0 0 -5 0.5 0.5 0 0 0 0 0 -4 0 1 0 0 0 0 0 -3 0 0.5 0.5 0 0 0 0 -2 0 0 1 0 0 0 0 -1 0 0 0.5 0.5 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0.5 0.5 0 0 2 0 0 0 0 1 0 0 3 0 0 0 0 0.5 0.5 0 4 0 0 0 0 0 1 0 5 0 0 0 0 0 0.5 0.5 6 0 0 0 0 0 0 1
表2模糊控制规则表
U NB E NB NM NS Z PS PM PB
10月24-27日交纸质版到新主楼A405
EC NM NB NB NM NM NS Z Z NS NB NB NM NS Z PM PM Z NB NB NM Z PM PB PB PS NM NM Z PS PM PB PB PM Z Z PS PM PM PB PB PB Z Z PS PM PM PB PB
NB NB NM NM NS Z Z 一、控制算法流程图
(1)模糊控制算法
一般双输入—单输出模糊控制器的控制规则可写成条件语句:
? and ?E=B??A?? then U=C??,i=1,if E2,?,n;j?1,2,?,n;ijij式子中,
?、B??、CAijij
为定义在误差、误差变化率和控制量论域X、Y、Z上的模糊集合。上述
条件可以用一个模糊关系R 描述,即
?R??R?的隶属度函数为
?(A?iij??)?C??Bjij
T1?(x,y,z)?Ri?n,j?mi?1,j?1??(x)?B?(y)?C?(z),x?X,y?Y,z?ZAijij
当误差及误差变化分别取模糊集A、B 时,控制器输出的变化量U 根据模糊推理合成规则可得
T2??B?(A?)?U=?R
????的隶属度函数为 U????U(z)=?A(x)?B(y)?R(x,y,z)x?Xy?Y
(2)模糊算法选择
模糊推理用Mamdani推理方法,输出信息的模糊判别用重心法。
模糊控制查询表的实现,先根据模糊条件推理得出模糊条件所决定的模糊关系Ri ,模糊推理
T??B??(A?)R?iR?C?iiii关系为: 。将所有的模糊关系利用“或”放入关系组合在一起,即
1???R????RR??R1?2?n?R?ii?1n ,R 整个系统的控制规则的模糊关系。再对误差和误差变化
?率论域内的每个变量,查出其属于的隶属度最大的模糊集A、B,根据新的模糊集A、B,求出控制
????T2???器的输出变化量U,即U=(A?B)?R。最后根据重心法去模糊化,求得模糊判决结果。
流程图如图1.1所示。
图1.1 模糊控制查询表流程图
二、模糊控制查询表
U -6 E -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -6 -5 -5 -4 -3 -2 -2 -2 -2 -1 -1 0 -5 -6 -6 -5 -5 -4 -3 -2 -2 -2 -2 -1 -1 0 -4 -6 -6 -5 -5 -4 -2 0 0 -2 -2 1 1 2 -3 -6 -6 -5 -5 -4 -2 0 0 -2 -2 1 1 2 -2 -6 -6 -5 -5 -3 0 0 0 0 0 2 2 3 -1 -6 -6 -5 -5 -3 0 0 0 0 0 2 2 3 EC 0 -5 -5 -3 -3 -2 0 2 2 4 4 3 3 5 1 -5 -5 -3 -3 -2 0 2 2 4 4 3 3 5 2 -3 -3 -2 -2 0 0 3 3 4 4 5 5 6 3 -3 -3 -2 -2 0 0 3 3 4 4 5 5 6 4 -2 -2 -1 -1 0 2 4 4 4 4 5 5 6 5 -2 -2 -1 -1 0 2 4 4 4 4 5 5 6 6 0 0 1 1 2 3 4 4 4 4 5 5 6 三、程序
NB=-3;NM=-2;NS=-1;Z=0;PS=1;PM=2;PB=3; divideNum=7;
E=[1 0.5 0 0 0 0 0 0 0 0 0 0 0;%误差赋值表 0 0.5 1 0.5 0 0 0 0 0 0 0 0 0; 0 0 0 0.5 1 0.5 0 0 0 0 0 0 0; 0 0 0 0 0 0.5 1 0.5 0 0 0 0 0; 0 0 0 0 0 0 0 0.5 1 0.5 0 0 0;