什么是模糊逻辑?

我在学校使用了几个AIalgorithm,我发现人们使用Fuzzy Logic这个词来解释他们可以解决的情况。 当我回到书籍上时,我只是读了一下,而不是一个从“开”到“关”的状态,这是一条对angular线,在两个状态中,可以是不同的“等级”。

我已阅读维基百科条目和几个教程,甚至编程的东西,“使用模糊逻辑”(边缘检测器和单轮自控机器人),我仍然发现从理论到代码非常混乱。对你来说,在较不复杂的定义中,什么是模糊逻辑?

模糊逻辑是逻辑,状态成员本质上是一个范围为0..1的浮点数,而不是一个0或1的整数。你得到的里程数是,例如,你在控制系统在天真的二进制逻辑中得到的结果自然会更加精细。

一个例子可能是根据活动的TCP连接限制系统活动的逻辑。 假设你的计算机上的TCP连接数量是1000,而“2000多”就是2000.在任何时候,你的系统的TCP连接状态都是从0(<= 1000)到1(> = 2000),你可以用它作为一个系数来应用你可用的任何节stream机制。 这比原来的二进制逻辑更能原谅和响应系统行为,只知道如何确定“太多”,完全调节油门,或者“不要太多”,而不是油门。

我想补充一些答案(已经被修改),模糊逻辑的可视化方法如下:

传统上,用二进制逻辑,你将得到一个graphics,其隶属函数是真或假,而在模糊逻辑系统中,隶属函数不是。

 1 |
  |  / \
  |  / \
  |  / \
 0 | / \
  ------------
    A B C D

假设第二个function是“喜欢花生”

一个。 还挺喜欢花生
湾 真的很喜欢花生
 C。 还挺喜欢花生
 d。 不喜欢花生

函数本身不一定是三angular形的,通常也不是(用ascii艺术更容易)。

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

 1 |  AB
  |  / \ / \ A =喜欢花生
  |  / \ / \ B =不喜欢花生
  |  / / \ \
 0 | / / \ \
  ------------
   A B C D

所以现在c是“好吃花生,有点不喜欢花生”,d是“真的不喜欢花生”

你可以根据这个信息进行相应的编程。

希望这对于那里的视觉学习者有帮助。

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

“以类似于人类解决问题的方式来expression问题的模糊逻辑手段和模糊逻辑的本质在于,一切都是程度问题。

用类似于人类解决问题的方式解决电脑问题的意思,可以用一个篮球比赛的简单例子来解释, 如果一个球员首先想要保护另一个球员,他应该考虑他有多高以及他的球技。 简单地说,如果他想要防守的球员身高很高,并且相对于他来说打得非常慢,那么他会用自己的本能来决定是否应该防守那个球员,因为他有一个不确定的因素。 在这个例子中,重要的一点是属性是相对于玩家而言的,并且对于对手玩家的高度和玩耍技巧是有一定程度的。 模糊逻辑为这种不确定的情况提供了一个确定的方法。

处理模糊逻辑有一些步骤(图-1)。 这些步骤是; 首先将模糊input转换为模糊input,然后用模糊规则处理这些input以产生模糊输出,最后使模糊逻辑产生结果程度的模糊化,则可以有不止一个不同程度的结果。

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有多快

根据规则和input数据,输出将由模糊系统创build,如: 防守的程度是0.7,有时防守的程度是0.4,没有防守的是0.2。

image009

图4-输出模糊集

在最后一步,去模糊化 ,正在使用创造一个清晰的输出,这是一个数字,可能决定我们应该用来保护玩家在游戏过程中的能量。 质量中心是创build输出的常用方法。 在这个阶段,计算平均点的权重完全取决于实施。 在这个应用程序,它被认为是给予高度警惕或不守护,但低重量给予有时防范。 (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 

因此,模糊逻辑是在不确定的情况下使用,做出决策并找出决策的程度。 模糊逻辑的问题是随着input数量的增加,规则数量呈指数增长。

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

为了摆脱混沌的回答,forms逻辑不过是一个归纳定义的集合,将句子映射到估价。 至less,这就是模型理论家对逻辑的看法。 在句子布尔逻辑的情况下:

  (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的情况。

如果你真的想更多地了解像模糊逻辑那样的非经典逻辑,那么我会推荐“ 非经典逻辑导论”:从“如果到”或者“ 可能性和悖论”

把我的编码器放回去,我会在现实世界编程中使用模糊逻辑,因为模糊逻辑的倾向是不可判定的。 也许这太复杂了,没有什么好处。 例如,一个超级评估逻辑可以很好地帮助程序模型模糊。 或者,也许可能性会很好。 总之,我需要确信领域模型与模糊逻辑相吻合。

也许一个例子清除了什么好处可能是:

假设你想制作一个恒温器,你想要它是24度。


这是你如何使用布尔逻辑来实现它:

  • 规则1:当温度低于21度时,以全功率升温。
  • 规则2:当温度高于27度时,以全功率冷却。

这样一个系统只有一次是24度,效率很低。


现在,使用模糊逻辑,就像这样:

  • 规则1:对于每个比24度更冷的程度,将加热器调高一个档位(24处为0)。
  • 规则2:对于温度高于24度的每个程度,打开较冷的一个档位(24处为0)。

这个系统总是在24度左右的地方,只有一次,只会一次又一次地进行微调。 它也将更加节能。

那么你可以阅读“创始人之一”的Bart Kosko的着作。 1994年的“ 模糊思维:模糊逻辑的新科学 ”是可读的(通过亚马逊可以很便宜地获得)。 显然,他从2006年开始有一本新书“ 噪音 ”,这本书也相当平易近人。

基本上,虽然(在我的解释中 – 没有阅读过几年的第一本书),模糊逻辑是关于如何处理这个世界,有些东西可能是10%的酷,50%的热,10%的热,可以根据不同州的情况做出决定(不,完全不是意外的是,这些百分比加起来不到100%,尽pipe如果需要的话,我会接受更正)。

一个很好的解释,在模糊逻辑洗衣机的帮助下。

我知道你的意思是很难从概念到代码。 我正在编写一个评分系统,用于查看Linux系统上sysinfo和/ proc的值,并提供0到10之间的数字,10是最差的。 一个简单的例子:

你有3个负载平均值(1,5,15分钟),至less有三种可能的状态,好,坏,坏。 扩大这一点,你可以有六个可能的状态每个平均,加上“即将”,我刚刚提到的三个。 然而,所有18种可能性的结果只能从得分中扣除1分。 重复这一点,交换消耗,实际的虚拟机分配(提交)的内存和其他东西..你有一大碗有条件的意大利面条:)

它既是一门艺术,也是一种定义,你如何实现决策过程总是比范式本身更有趣。而在一个布尔世界里,它是相当切割和干燥的。

如果load1 <2扣除1,对我来说很容易,但是不是很准确。

如果你可以教一个程序去做一些你想做的事情,并且保持代码的可读性,那么你已经实现了一个模糊逻辑的好例子。

模糊逻辑是一种解决问题的方法,适用于从简单的小型embedded式微控制器到大型networking化多通道PC或基于工作站的数据采集和控制系统。 它可以用硬件,软件或两者结合来实现。 模糊逻辑提供了一种基于模糊,模糊,不精确,噪声或缺lessinput信息的简单方法。 模糊逻辑控制问题的方法模仿一个​​人如何做出决定,只能快得多。

模糊逻辑已被certificate在专家系统和其他人工智能应用中特别有用。 它也用于一些拼写检查程序来build议可能的单词列表来代替拼写错误的单词。

要了解更多信息,请查看: http : //en.wikipedia.org/wiki/Fuzzy_logic 。

以下是一些经验答案。

一个简单的(可能是简单的答案)就是“模糊逻辑”是任何返回除直接真/假或1/0之外的值的逻辑。这里有很多变化,并且它们往往是高度特定领域的。

例如,在我以前的生活中,我search引擎使用“内容相似性search”,而不是那么常见的“布尔search”。 我们的相似性系统使用表示查询和文档的加权属性向量的余弦系数,并产生范围为0..1的值。 用户将提供“相关性反馈”,该相关性反馈用于将查询向量向理想文档的方向移动。 这与在某些AI系统中进行的训练有些相关,在这些AI系统中,对于试运行的结果,逻辑得到“奖励”或“惩罚”。

目前,Netflix正在竞争中寻找更好的公司推荐algorithm。 请参阅http://www.netflixprize.com/ 。 有效地,所有的algorithm都可以被表征为“模糊逻辑”

模糊逻辑是基于人类思维方式的计算algorithm。 当有大量的inputvariables时,它是特别有用的。 给出一个用于两个variablesinput的在线模糊逻辑计算器:

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php