主要内容

模糊与Nonfuzzy逻辑

基本小费问题

为了说明模糊逻辑的价值,研究线性和模糊方法以下问题:

适量的提示你的服务员是什么?

首先,解决这一问题的传统(nonfuzzy)方法,编写MATLAB®命令,拼出线性和分段线性关系。然后,看相同的系统使用模糊逻辑。

基本小费问题。给定一个数字从0到10代表在餐馆的服务质量(10很好),提示是什么?

这个问题是基于小费,因为它通常是在美国。平均小费吃饭在美国是15%,但实际的金额可以取决于所提供的服务的质量。

Nonfuzzy方法

从最简单的关系。假设小费总是等于总费用的15%。

服务= 0:.5:10;提示= 0.15 * 1(大小(服务));情节(服务,小费)包含(“服务”)ylabel (“小费”)ylim ([0.05 - 0.25])

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

这种关系并不占的质量服务,所以您必须添加一个项的方程。由于服务是额定范围从0到10),你的增加线性从5%如果服务不好25%如果服务很好。现在看起来像的关系如下图:

提示=(.20/10)*服务+ 0.05;情节(服务,小费)包含(“服务”)ylabel (“小费”)ylim ([0.05 - 0.25])

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

这个公式做你想要做什么,直截了当。然而,您可能想要小费,以反映食品的质量。这个扩展问题的定义如下。

扩展问题。给两组数字从0到10(10是优秀的),分别代表的质量服务和食物的质量在餐馆,提示是什么?

看到这个公式是如何影响现在您已经添加另一个变量。

食物= 0:.5:10;[F、S] = meshgrid(食品、服务);提示= (0.20/20)。* (S + F) + 0.05;冲浪(年代,F,小费)包含(“服务”)ylabel (“食物”)zlabel (“小费”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

在这种情况下,结果看起来令人满意,但当你仔细看看,他们似乎不正确。假设您希望服务比食品质量是一个更重要的因素。指定服务占整体的80%小费年级和其他食品占20%。

servRatio = 0.8;提示= servRatio * (0.20/10 * S + 0.05) +(1-servRatio) * (0.20/10 * F + 0.05);冲浪(年代,F,小费)包含(“服务”)ylabel (“食物”)zlabel (“小费”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

响应也仍然以某种方式统一线性的。假设您想要更多的平坦响应在中间,也就是说,你想要给15%的小费,但是还想指定一个变体如果服务特别好或坏。这个因素,反过来,意味着以前的线性映射不再适用。你仍然可以使用线性分段线性结构的计算。现在,返回到一维问题的考虑。您可以创建一个简单的条件分配使用逻辑索引。

提示= 0(大小(服务));提示(服务< 3)=(0.10 / 3)*服务(服务< 3)+ 0.05;提示(> = 3 &服务< 7)= 0.15;提示(服务> < = 10)= = 7 &服务(0.10 / 3)*(服务(服务> = 7 & < = 10)7)+ 0.15;情节(服务,小费)包含(“服务”)ylabel (“小费”)ylim ([0.05 - 0.25])

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

假设您扩展这种方法两个维度,你又占食品质量。

servRatio = 0.8;提示= 0(大小(S));提示(S < 3) = ((0.10 / 3) * S (S < 3) + 0.05) * servRatio +(1-servRatio) * (0.20/10 * F (S < 3) + 0.05);提示(> = 3 &年代< 7)= (0.15)* servRatio +(1-servRatio) * (0.20/10 * F(> = 3 &年代< 7)+ 0.05);提示(> = 7 &年代< = 10)= ((0.10 / 3)* (S(> = 7 &年代< = 10)7)+ 0.15)* servRatio +(1-servRatio) * (0.20/10 * F(> = 7 &年代< = 10)+ 0.05);冲浪(年代,F,小费)包含(“服务”)ylabel (“食物”)zlabel (“小费”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

情节看起来不错,但功能非常复杂。甚至不明显的算法是如何工作的人没有看到原始的设计过程。

模糊逻辑方法

一般来说,你想抓住这个问题的本质,抛开所有的因素可能是任意的。如果你列出真正重要的在这个问题上,你可以得到以下规则描述。

小费问题规则——服务因素

  • 如果服务很差,那么便宜

  • 如果服务是好的,那么建议是平均水平

  • 如果服务是优秀的,那么建议是慷慨的

这里介绍的顺序规则是任意的。它并不重要规则。包括食品质量的影响,添加以下两条规则。

小费问题规则——食物因素

  • 如果食物变质,那么便宜

  • 如果食物是美味的,那么建议是慷慨的

你可以把两个不同的三个规则列表的规则为一个列表。

小费问题规则(包括服务和食品的因素

  • 如果服务很差或食物变质,然后提示是便宜的

  • 如果服务是好的,那么建议是平均水平

  • 如果服务是优秀的或食物是美味的,则慷慨的小费

这三个规则的核心解决方案,它们对应于模糊逻辑系统的规则。当你给数学意义的语言变量(例如平均技巧,)你有一个完整的模糊推理系统。模糊逻辑的方法还必须考虑:

  • 规则是如何结合?

  • 我怎么定义数学平均技巧是什么?

问题解决方案

下面的图代表了模糊逻辑系统,解决了小费问题。

gensurf (readfis (“蒂珀”))

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

这个情节是生成的三个规则,占服务和食品两方面的因素。

观察考虑一些对到目前为止的示例。你发现了一个分段线性关系,解决了这个问题。它工作,但是它是有问题的获得,当你写代码,这是不容易解释。相反,模糊逻辑系统是基于一些常识语句。同时,你能够将两个规则添加到列表的形状影响整体输出,而不需要撤销已经做了什么。

此外,通过使用模糊逻辑规则,维护结构的算法将沿着线条。平均的概念可以改变一天比一天,城市,国家。然而,潜在的逻辑是相同的:如果服务很好,提示应该是平均水平。

调整的方法你可以快速调整方法,只需将模糊集定义平均无需重写模糊逻辑规则。

你可以将分段线性函数的列表,但有一个更大的可能性艰难的调整。

在接下来的例子中,分段线性小费的问题是重写更通用。它执行相同的功能,只是现在常数可以很容易地改变。

lowTip = 0.05;averTip = 0.15;highTip = 0.25;tipRange = highTip-lowTip;badService = 0;okayService = 3;优= 7;greatService = 10;serviceRange = greatService-badService;badFood = 0; greatFood = 10; foodRange = greatFood-badFood;%如果服务很差或食物变质,技巧是便宜如果服务< okayService提示= (((averTip-lowTip) / (okayService-badService))* * servRatio +服务+ lowTip)(1-servRatio) * (tipRange / foodRange *食品+ lowTip);%如果服务很好,技巧是平均水平elseif服务<优服务技巧= averTip * servRatio + (1-servRatio) *(tipRange / foodRange *食物+ lowTip);%如果服务是优秀的或食物是美味的,技巧是慷慨的其他的= (((highTip-averTip) /(greatService-goodService)) *(service-goodService) + averTip) * servRatio +(1-servRatio) * (tipRange / foodRange *食品+ lowTip);结束

与所有的代码一样,更多的一般性介绍,精确算法变得越少。您可以通过添加更多的评论,提高清晰度或者重写算法的方式稍微不证自明的。但是,分段线性方法不是最佳的方式来解决这个问题。

如果你删除从算法除了三个评论,你仍然是完全模糊逻辑规则之前写下来。

  • 如果服务很差或食物变质,技巧是便宜

  • 如果服务很好,技巧是平均水平

  • 如果服务是优秀的或食物是美味的,技巧是慷慨的

模糊逻辑清楚你使用的语言,也有意义的电脑,这就是为什么它是一个成功的技术弥合人与机器之间的差距。

通过使尽可能简单的方程(线性)你让事情简单的机器,但是更加复杂。然而,不再是电脑的限制——这是你心智模型的电脑在做什么。模糊逻辑让机器工作与你的喜好而不是相反。

相关的话题