当前位置:  开发笔记 > 编程语言 > 正文

什么是模糊逻辑?

如何解决《什么是模糊逻辑?》经验,为你挑选了4个好方法。

我正在学校使用几种AI算法,我发现人们使用模糊逻辑来解释他们可以用几种情况解决的任何情况.当我回到书本时,我刚刚读到关于如何取而代之的状态从On到Off它是一条对角线,有些东西可以在两种状态但在不同的"级别".

我已经阅读了维基百科条目和一些教程,甚至编写了"使用模糊逻辑"(边缘检测器和单轮自控机器人)的东西,但我仍然觉得从理论到代码非常混乱.对于你来说,在不太复杂的定义中,什么是模糊逻辑?



1> chaos..:

模糊逻辑是一种逻辑,其中状态成员资格基本上是一个范围为0..1而不是int 0或1的浮点数.你从中得到的里程数是,例如,你在控制系统中所做的改变有些自然比天真二进制逻辑更精细.

一个示例可能是基于活动TCP连接限制系统活动的逻辑.假设您将计算机上的"有点太多"TCP连接定义为1000,并且将"很多"定义为2000.在任何给定时间,您的系统从0开始具有"太多TCP连接"状态(<= 1000)到1(> = 2000),您可以将其用作应用您可用的任何限制机制的系数.这比原始的二进制逻辑更加宽容和响应系统行为,它只知道如何确定"太多",完全限制或"不太多",而根本没有节流.



2> Steven Evers..:

我想添加答案(已经修改过),可视化模糊逻辑的一种好方法如下:

传统上,使用二进制逻辑,您将拥有其隶属函数为真或假的图,而在模糊逻辑系统中,隶属函数则不是.

1|
 |   /\
 |  /  \
 | /    \
0|/      \
 ------------
   a  b c   d

假设功能是"喜欢花生"的一秒钟

a. kinda likes peanuts
b. really likes peanuts
c. kinda likes peanuts
d. doesn't like peanuts

函数本身不一定是三角形而通常不是(使用ascii art更简单).

一个模糊系统可能会有很多这样的,有些甚至是重叠的(甚至是对立的),如下所示:

1|   A    B
 |   /\  /\      A = Likes Peanuts
 |  /  \/  \     B = Doesn't Like Peanuts
 | /   /\   \
0|/   /  \   \
 ------------
  a  b  c d

所以现在c是"善良的花生,有点不喜欢花生",d是"真的不喜欢花生"

您可以根据该信息进行相应的编程.

希望这有助于视觉学习者.



3> hevi..:

模糊逻辑的最佳定义由其发明者Lotfi Zadeh给出:

"模糊逻辑意味着以类似于人类解决问题的方式向计算机表示问题,以及模糊逻辑的本质是一切都是程度问题."

通过一个简单的篮球比赛例子,可以很容易地解释用类似于人类解决方式的计算机解决问题的意义; 如果一名球员想要首先防守另一名球员,他应该考虑他的身高以及他的比赛技巧.如果他想要防守的球员很高并且相对于他打得非常慢,那么他将利用他的直觉决定是否应该保护那个球员,因为他有不确定性.在这个例子中,重要的一点是属性是相对于玩家的,并且竞争对手的身高和游戏技巧有一定程度.模糊逻辑为这种不确定的情况提供了确定性的方法.

处理模糊逻辑有一些步骤(图-1).这些步骤是; 首先是模糊化,其中清晰的输入被转换为模糊输入,其次这些输入用模糊规则处理以创建模糊输出,最后去模糊化,这导致结果的程度,如在模糊逻辑中,可以有不同程度的不止一个结果.

image004

图1 - 模糊过程步骤(David M. Bourg P.192)

为了举例说明模糊处理步骤,可以使用先前的篮球比赛情况.正如在例子中提到的那样,对手球员身高1.87米,相对于我们的球员来说相当高,并且可以运球速度为3米/秒,这相对于我们的球员而言是慢的.除了这些数据之外,还需要一些规则来考虑哪些被称为模糊规则,如:

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

图2 - 多高

image007

图3-有多快

根据规则和输入数据,输出将由模糊系统创建,如; 守卫的程度是0.7,有时守卫的程度是0.4而从不守卫是0.2.

image009

图4-输出模糊集

在最后一步,defuzzication,用于创建一个清晰的输出,这是一个数字,可以决定我们在比赛期间应该用来保护球员的能量.质心是创建输出的常用方法.在此阶段,计算平均点的权重完全取决于实施.在这种应用中,它被认为是高重量的防护或不防护,但有时防护的重量轻. (David M. Bourg,2004)

image012

图5-模糊输出(David M. Bourg P.204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ? -3.5

结果,模糊逻辑在不确定性下使用来做出决定并找出决策程度.模糊逻辑的问题是随着输入数量的增加,规则数量呈指数增长.

有关更多信息及其在游戏中的可能应用,我写了一篇文章来检查这一点



4> Alan..:

为了建立混乱的答案,形式逻辑只不过是一个将句子映射到估值的归纳定义集合.至少,这就是模型理论家对逻辑的看法.在句子布尔逻辑的情况下:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

模糊逻辑变化将被归纳定义:

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

请注意,底层逻辑的唯一区别是允许将句子评估为具有0.5的"真值".模糊逻辑模型的一个重要问题是真值满足的阈值.这是要问:对于估值v(A),对于什么值D,情况v(A)> D意味着满足A.

如果你真的想要发现更多关于模糊逻辑等非经典逻辑的话,我会建议非经典逻辑的介绍:从何而来可能性和悖论

把我的编码器帽放回去,我会在现实世界编程中使用模糊逻辑,因为模糊逻辑倾向于不可判断.也许它的复杂性太大,收益微薄.例如,超值逻辑可以很好地帮助程序模型模糊.或者也许概率足够好.简而言之,我需要确信域模型与模糊逻辑相吻合.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有