Fuzzy Control

模糊控制系统从不会到不会

⬆️ 这个乐队叫FUZZY CONTROL

前置:你已经学习了智能控制的第三章,但是听不懂😫

银行家问题

还记得反复出现的IF A THEN BIF A and B THEN C。你或许和笔者一样会思考,这东西到底有啥用!

笔者找到了一个很有意思的解释,例如一个银行家想要给别人(张三)投资,那么他会考虑:

  • 如果张三的信用好,那么投资是低风险的
  • 如果张三的信用一般,那么投资是中风险的
  • 如果张三的信用不好,那么投资是高风险的

可以发现这就是银行家的知识。而模糊控制就是利用这种知识,进行系统控制的。

这里我们加入一些术语,我们发现此处有两个语言变量:信用、投资风险,语言值分别为:

  • 信用:好、一般、不好
  • 投资风险:高、中、低

接下来考虑模糊集的引入,如果使用一般逻辑,会导致信用级产生阶跃,显然在阶跃点的逻辑是很诡异的,因此引入了“模糊”的概念。

因此,该系统的模型可以被罗列成这样:具体输入——模糊化——模糊推理——解模糊——具体输出

模糊化

现在我们可以找一堆银行家对模糊的程度进行建模。比如说此处,对于信用度是好:

  • 100%的银行家觉得大于750的信用度是好的
  • 50%的银行家觉得大于700的信用度是好的
  • ……

于是我们得到了一个简单的线性函数,当然实际情况可能更复杂,此处就不复杂化了~

还记得吗?我们称这个函数为隶属函数,而“信用度是好”这件事对应了一个模糊集合$CG$(Credit Good),是由这个隶属函数所定义的。

此处,我们的信用度准确值就是这个模糊集合的论域,为$[0,1000]$,利用隶属函数表示这个模糊集合为:

$$ \mu_{CG}(x) = \begin{cases} 0, &0 \leq x < 650\\ (x-650)/100, & 650 \leq x <750\\ 1, &750 \leq x \leq 1000 \end{cases} $$

其余隶属函数不再罗列。

考虑给定的实际输入为660,根据三个语言值对应模糊集得到的隶属度分别为$0,0.9,0.1$此时可合写为一个模糊向量 $[0,0.9,0.1]$。

注意模糊向量并不是模糊集的向量表示法

解模糊

假设我们的规则是直接对应,得到输出的模糊向量也为$[0,0.9,0.1]$,此时需要对其解模糊。对应首先我们要得到 投资风险这一语言变量所有语言值的隶属函数,如下图所示。

解模糊有两种方法

  • 最大隶属度法:这个很简单,即发现模糊向量最大隶属度为$0.9$,对应语言值为中风险
  • 重心法:有一个很诡异的公式,我们还是看图理解。

首先,我们考虑输入隶属度为$1$的情况。此时如果对应中风险,很容易想到解模糊的值是$0.5$, 因为它是中心对称的,取中点是比较合适的。那么如果是低风险这种梯形隶属函数呢?我们也想取一个中间的东西。

先考虑二维离散情况,给定$x_1,x_2,\cdots,x_n$我们可以得到其中心为$(\sum x_i)/n$。进一步,如果我们把 隶属度看成一个权重乘入,为保证一致性,分母同样做变换,可以得到$(\sum \mu(x_i)x_i)/\sum \mu(x_i)$。

然后我们考虑连续情况,直接进行一个积分号的变:

$$ v_{out} = \frac{\int_\Omega \mu(x)x \mathrm{d}x}{\int_\Omega \mu(x_i)\mathrm{d}x} $$

太美丽了家人们,正好和重心公式对应(?

然后我们考虑输入隶属度为$0.5$的情况。此时继续对应中风险,在风险程度为$0.375,0.625$时隶属度恰为$0.5$ 可以比较简单的求加权平均。但是我们考虑这两个点左右,也有对应的隶属度值在$0.5$附近,根据模糊的想法, 也应当考虑进来。此处就引入一个可用的方法,直接削顶,求底部的重心。最后通过一些神必求交就可以得到 该模糊向量对应的解模糊值。

是不是感觉有些诡异,这种思路和Mamdani推理有相似之处,工程上能用就行~

Mamdani推理

给定 `IF x is A1 THEN y is B1, also IF x is A2 THEN y is B2

Mamdani推理是如何进行的?

(未完待续)

Luminol Chen
Luminol Chen
2024 Undergraduate in Cyberspace Security

My research interests include cryptography and blochchain.