本帖最后由 UPC_AE86 于 2017-12-16 22:58 编辑
学了很久了模糊控制,谈一下我的理解。我用“聊”是希望路过的不管是大神还是小白都可以畅所欲言一下,我所说的不足或不对之处也希望大神们能指点一二。
稍微看过模糊控制的同学们应该都知道模糊控制分为三个阶段,即精确量的模糊化、根据语言规则进行模糊推理得到模糊控制表、进行模糊推理得到模糊推理输出并反模糊化得到精确的控制输出量。
以一维模糊规则为例。
首先,精确量的模糊化,就是要把精确量(包括输入量和输出量)划分为语言档级(正大,正中,正小,正零,负零,负小,负中,负大)。进一步说,就是先把精确量的基本论域转化到模糊论域,以偏差为例,假如说偏差的基本论域(即偏差实际的取值范围)为[-40, 40],模糊论域一般取语言档级的二倍以上,但又不易过大,可取[-7, 7]。一般模糊理论书里都是使用公式对两个论域中的数进行映射,然后取整,这种方法我在这里不赘述。说一下我的思路:根据经验进行映射,例如,模糊论域的7可以对应基本论域的[15, 40],6可以对应[12,14]。之后,要设定隶属度,即设定模糊论域中的数隶属于语言档级的大小。比如,可以设定7对正大的隶属度为1,6对正大的隶属度为0.5。
第二步,根据语言规则,设计模糊控制表。个人感觉这一步很重要,尤其是在二维模糊规则的情况下,比如——若偏差为正大,偏差变化量为正大,则把模糊输出量设定为负大。这一步若设定不好则车无法正常行驶。一维模糊规则的话就简单很多,比如偏差为正零或负零,则输出为零;偏差为正大,则输出为负零。(ps:模糊控制大概相当于手动档????就像是看到车偏左太多了就把方向盘向右打死,差不多在赛道中间就不打方向盘?当然在这一步也可以设定车偏左了也不打方向盘……对……吧……)
最后就是把模糊推理输出值进行反模糊化得到精确的控制输出量。可采用重心法对输出量清晰化,此外,若在第一步采用隶属度模糊化方法,则此步应该要用两个语言值与模糊控制表X乘,然后根据精确输入量在模糊论域上的隶属度进行加权平均。
以上,可能说的不够清晰,对新手来说不大好理解,也可能有错误和纰漏之处,望大佬们指点
|