导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助有关模糊控制查询表的算法[jcl2436]

 *第44085篇: 求助有关模糊控制查询表的算法

  
楼 主:jcl2436 2006年10月29日13:45
 求助有关模糊控制查询表的算法
各位大虾!
最近我有个案子中要做一个基本的模糊控制器。我看了看书便按照书中的方法在PC上
做了验证,发现得到查询表跟书上给的查询表有很大的出入有±1左右的误差。我查了一个多星期也看不出问题出在哪儿。到书店看书也没有看到一些名堂。案子比较紧,所以就请各位大虾帮帮忙看看。写的比较罗唆,主要是怕该说的地方没有说到,让大家看不明白。见谅!
在此谢谢大家了。
     在此叙述的是二输入一输出的基本的模糊控制器。输入量是E和EC。
§1  模糊控制器的结构设计(算法预处理)
1.1  确定语言变量、语言变量的基本论域
     偏差E的基本论域为         〔-5,+5〕,
     偏差变化率EC的基本论域为  〔-3,+3〕,
     U的基本论域为              〔0,  +4〕。
1.2  选择模糊状态(语言变量E、EC、U的语言值)--描述词汇
     E  = {PB, PM , PS, NS, NM, NB};
     EC = {PB, PS, Z, NS, NB};
     U  = {很大, 大, 中, 小, 零};
1.3  建立语言变量赋值表
                表1 语言变量E赋值表
等级
-5 -4 -3 -2 -1 0 1 2 3 4 5
隶属度           
语言值           
PB 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.8 1.0
PM 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.8 1.0 0.8 0.2
PS 0.0 0.0 0.0 0.0 0.2 0.8 1.0 0.8 0.2 0.0 0.0
NS 0.0 0.0 0.2 0.8 1.0 0.8 0.2 0.0 0.0 0.0 0.0
NM 0.2 0.8 1.0 0.8 0.2 0.0 0.0 0.0 0.0 0.0 0.0
NB 1.0 0.8 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
                表2 语言变量EC赋值表
等级 -3 -2 -1 0 1 2 3
隶属度       
语言值       
PB 0.0 0.0 0.0 0.0 0.0 0.3 1.0
PS 0.0 0.0 0.0 0.0 0.3 1.0 0.3
Z 0.0 0.0 0.3 1.0 0.3 0.0 0.0
NS 0.3 1.0 0.3 0.0 0.0 0.0 0.0
NB 1.0 0.3 0.0 0.0 0.0 0.0 0.0
表3 语言变量U赋值表
等级 0 1 2 3 4
隶属度     
语言值     
很大 0.0 0.0 0.0 0.3 1.0
大 0.0 0.0 0.3 1.0 0.3
中 0.0 0.3 1.0 0.3 0.0
小 0.3 1.0 0.3 0.0 0.0
零 1.0 0.3 0.0 0.0 0.0

1.4  确定模糊控制状态表(提取、制定模糊控制规则)

            表4    模糊控制规则表
E NB NM NS PS PM PB
U      
EC      
NB 零 零 小 中 中 大
NS 零 零 小 中 大 大
Z 零 小 中 大 大 很大
PS 小 小 中 大 大 很大
PB 小 中 中 很大 很大 很大
§2      模糊控制器的算法设计
2.1      模糊算法(离线部分)
         模糊算法由模糊化、合成算法、判决三步组成。
2.1.1    输入模糊化
         查找语言变量E和EC的赋值表,找出测量值e、c的量化值x、y上与最大隶属度对应的语言值所决定的模糊集合A、B。模糊集合A、B便代表确定数e、c的模糊化。
〖例如〗    根据系统偏差测量值e(确定数)计算出x=+3;查找偏差E赋值表,在+3级上的隶属度0.2、1.0、0.2中间求取与最大隶属度1.0对应的语言值PM的模糊集合。PM为:PM = 0/-5 + 0/-4 + 0/-3 + 0/-2 + 0/-1 + 0/0 + 0.2/1 + 0.8/2 + 1.0/3 + 0.8/4 + 0.2/5
     模糊集合PM便是确定数e偏差的模糊化。
2.1.2    模糊算法器(合成算法)
2.1.2.1  模糊控制规则
     根据控制状态表可以采取以下的方法计算得到模糊控制的总模糊关系矩阵:
                  R = R1 ∨ R2 ∨ … Ri…
式中:R为总模糊关系;Ri为每条规则的模糊关系。
      每条规则所代表的模糊关系,可以用下面的方法得到:
      R1 = (NB)e × (NB)ec × (零)u
      R2 = (NB)e × (NM)ec × (零)u
        ……
  将得到的30条规则各自的模糊关系进行合并运算,可以得到总的关系矩阵。
2.1.2.2  模糊算法
根据上述论述计算出模糊关系R后,利用推理合成规则计算
        Uij = (Ei × ECj) ○ R 
考虑E和EC中的所有元素(E为11个,EC为7个)在某所对应的论域上的独立点模糊集Ei和ECj,便可求得输出语言变量U的模糊子集Uij有11×7=77个模糊子集合。
2.1.3     模糊判决
方法:(加权平均法,取隶属度作为权系数)
    
例如
   Uij =  0.0/0 + 0.3/1 + 1.0/2 + 0.3/3+0.0/4
     = (0.0×0+0.3×1+1.0×2+0.3×3+0.0×4)/ (0.0+0.3+1.0+0.3+0.0)
= 2
即得到如表5所示的控制表,将表中的数据存放到过程控制计算机的内存中,便可在线使用。(矩阵即为模糊控制器的查询表。)
                   表5模糊控制器的查询表
EC -3 -2 -1 0 1 2 3
U       
E       
-5 0 0 0 0 1 1 1
-4 0 1 1 0 1 1 2
-3 0 1 1 1 1 2 2
-2 1 1 1 1 2 2 2
-1 1 1 1 1 2 2 2
0 2 1 2 2 3 3 3
1 2 2 2 3 3 3 4
2 2 3 2 3 3 3 4
3 2 3 3 3 3 4 4
4 3 3 4 4 4 4 4
5 3 4 4 4 4 4 4

2.2     实时控制查表算法(在线部分)

=======================================
以上是书本上的结论。为了弄明白这些结论。我就写了一段程序,在PC上来验证这一推导过程。结果得到的查询表跟表5出入比较大。几个基本函数分别实现
R = R1 ∧ R2;R = R1∨ R2; R = R1 × R2; R = R1 ○ R2。
这几个函数我都仔细验证过没有什么问题。跟书本上其他例子运算结果一致。
   我的运算过程如下:
(1)    输入模糊化。我按照上述2.1.1小节中的方法将输入的精确量模糊化。比如语言变量E的精确量-5,-4,-3,-2,-1,0,1,2,3,4,5通过查找表1分别得到相应的模糊量为NB, NB, NM, NM, NS, NS, PS, PS, PM, PM, PB.
(2)    求出总的模糊规则R
    R1 = (NB)e × (NB)ec × (零)u
    R2 = (NB)e × (NM)ec × (零)u
     ……
       R = R1 ∨ R2 ∨ … Ri…
   这一步我反复验证了,也用手工推算了一遍。应该没有什么问题。
(3) 求Uij
           Uij = (Ei × ECj) ○ R
   这一步我也验证了,函数的结果和手工推算的一致。
(4) 模糊判决
使用加权平均法
然而,结果运算出来跟表5(书本)出入比较大。我也用书本上其它的例子试了得到的查询表与书本上的查询表出入还是比较大。
除了(2),(3)步外,对于(1),(4)我还有怀疑,但是不知道对不对。
按照(1)中的方法。比如将精确量-4模糊化时,查表1得到隶属度为0.8,0.8。分别对应
NB={1.0/-5 + 0.8/-4 + 0.2/-3 + 0/-2   + 0/-1  + 0/0 + 0/1 + 0/2 + 0/3 + 0/4 + 0/5}
NM={0.2/-5 + 0.8/-4 + 1.0/-3 + 0.8/-2 +0.2/-1 + 0/0 + 0/1 + 0/1 +0/2 + 0/3 + 0/4 + 0/5}
假如现在EC精确量为-3对应NB={1.0/-3 + 0.3/-2 + 0/-1 + 0/0 + 0/1 + 0/2 + 0/3}
这时U-4-3 有两种运算法则: U = (NB × NB) ○ R或U = (NB × NM) ○ R。最终U应该
不同。经过模糊判决就有可能不同。(这样的方法有没有问题?)
    书上有个例子E,和EC的语言赋值表有两项为下表方式:
                       表6
E -6 -5 -4 -3 -2 -1 -0 +0 1 2 3 4 5 6
NM 0.2 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
NB 1.0 0.8 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
                       表7
EC -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
NM 0.2 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
NB 1.0 0.8 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

最后书上查询表中U(-6,-6)为-7;U(-6,-5)为-6。
然而,按照上述方法EC精确量为-6或-5其模糊化的结果都应该是NB。
这样U(-6,-6) = (NB × NB) ○ R;  U(-6,-5) = (NB × NB) ○ R
但是它们的结果为什么不同呢?是不是在U(-6,-5)还应该还包含(NM × NB) ○ R的结果?因为
EC精确量-5对NM的隶属度为0.7。我看了一些其它介绍模糊控制的书对精确量模糊化说得不多,所以找不到其他办法。

此外,关于(4)其中U(-4,-2) = {1.0/0 + 0.3/1 + 0.3/2 +0.2/3 + 0/4}
根据加权平均法可得精确量
Z = (1.0*0 + 0.3*1 + 0.3*2 + 0.2*3)/(1.0+0.3+0.3+0.2) = 0.8 ≈ 1
而U(5,3) = {0/0 + 0/1 + 0.3/2 +0.3/3 + 1.0/4}
Z = (0.3*2 + 0.3*3 + 1.0*4)/(0.3+0.3+1.0) = 3.43 ≈ 3
就是用面积法求出来也是3。
而书中查询表即上表5为4。而此时U(5,3)在4上隶属度为1,按说4更合理一点。
我不知道问题出在哪里,算出来得结果是3。我计算结果表项中没有4,这肯定不正确。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:多路采集设备方案,请大家讨论指教:)

[下一篇主题]:振荡器的频率和通信速率是什么关系