注意,笔者水平有限,有错请指出。
模糊逻辑是一个名叫卢菲特. 泽德(Lotfi Zadeh)的人在20世纪60年代中期发明的,它能让电脑以一种类似人的方法去推理语言术语和规则。计算机能够通过模糊集合把一个输入的精确值(或普通值)模糊化,然后使用模糊规则得出模糊输出,最后去模糊得到精确的输出值。这就是众所周知的基于规则的模糊推理,如下图:
这个概念很常见,比如一个普通集合
模糊集合是从普通集合扩展得到的,普通集合的隶属度是
看见上图的三角形了吗,它们是隶属函数的图像。模糊集合就是通过一个隶属函数来定义的,这些函数可以是任意形状,通常是三角形或者梯形的。构造这些隶属函数有一些规则,下面再模糊规则处描述。
模糊集合和普通集合一样有集合运算。主要是如下几个:
(1)交集
假设有2个隶属函数
(2)并集
它们的并集是它们之中最大的那个:
(3)补集
限制词是一元的运算符,可以用来修饰模糊集合的含义。两个常用的限制词是“非常地”和“相当地”。对一个模糊集合 A 来说,用“非常地”作修饰:
一个模糊语言变量是由一个或者多个模糊集合的合成,它定量地表示一种概念或一个域。例如模糊语言变量IQ的成员是模糊集合“笨拙”、“平均”和“聪明”,用集合符号可以写成:
模糊规则主要是由一种前因与后果的形式构成的:IF 前提 THEN 后果。
我们使用一个武器选择的例子来说明。假设使用火箭筒的期望值取决于2个因素:目标的距离和弹药的数量。那么前提是目标的距离和弹药的数量,后果是使用火箭筒的期望值。
首先,我们要设计模糊语言变量,也即隶属函数。设计模糊语言变量的时候,需要遵守几个重要的准则:
好了,开始设计模糊语言变量。目标的距离由3个集合组成:Target_close、Target_Medium 和 Target_Far,这三个术语足以让专家确定使用武器的规则。当想到'close'的时候,你基本会选择近战,其他术语类似。这样就能得到目标距离这一模糊语言变量的隶属度函数:
弹药的数量(状态)也是由3个集合组成:Ammo_Low、Ammo_Okay和Ammo_Loads,按照常识和经验设计出隶属度函数:
但是别忘记了期望值的模糊语言变量:
然后就是设计规则,因为火箭筒是中等距离武器,如果近距离发射会伤害到自己;如果太远,那么敌人可以躲避开。根据相关的经验,这里创建9条规则来确定使用火箭筒的期望值:
注意这里的“与”,对应的是前面集合运算的交集,也即取最小的隶属度。模糊规则的提出是基于经验的,不同的人提出的规则可能不一样,反映了不同的见解。
模糊推理就是使用上述提到的隶属函数和规则进行计算。首先一定会有前提输入,这里输入是目标的距离和弹药的数量。假设目标的距离是200,弹药的数量是8。
下面是模糊推理的步骤:
使用火箭筒例子来说明。
规则1
目标的距离是200,弹药的数量是8,那么对应 Target_Far 和 Ammo_Loads 的隶属度分别是 0.33 和 0.00 ,所以取最小的是0.00,如下图:
规则2
对应 Target_Far 和 Ammo_Okay 的隶属度分别是 0.33 和 0.78 ,所以取最小的是0.33,如下图:
其他规则同理可以计算出来,注意每个规则计算出来的是结论的置信度。可以根据这些结论构造一个模糊联想矩阵:
从这个矩阵可以看到 undesirable 有2个值,这些叫做多重置信度。有很多处理多重置信度的方法,常用的两种方法是有界限的和(和被限制到1)以及最大值。我们这里使用取最大值的方法,所以可以得到 0.33。因此,当目标的距离是200,弹药的数量为8时,所有规则综合后的推理结果是:
结论 | 置信度 |
---|---|
不期望 | 0.33 |
期望 | 0.2 |
非常期望 | 0.67 |
接着可以把推理结果表现在模糊语言变量上:
然后把上述推理结果合成一个单一的模糊形:
去模糊化是模糊化的逆过程,是把一个模糊集合转换成一个精确值的过程。有很多方法可以完成这个过程,这里只介绍一种,那就是中心法,这种方法很准确,其他方法请看参考的书籍。它得工作就是确定输出集合整体的中心。一个模糊形的中心是可以被计算出来的,通过把这个模糊形分为S.P采样点,计算每个采样点对总体隶属度的贡献之和,再除以采样的隶属度之和。公式如下:
以火箭筒使用问题为例,取10个采样点,对每个采样点计算每个成员集合的隶属度。
然后计算分子:
模糊逻辑是一种重要的决策方法。
联系客服