一、问题描述
根据饭店的服务质量与饭菜质量来控制给小费的金额。
1.1控制输入
给定一个0~10的数表示饭店的服务质量(这里10表示非常好)
另一个0~10的数表示饭店的食品质量。
1.2控制规则(小费规则)
3条规则:
如果服务差或食品差,那么小费低;
如果服务好,那么小费中等;
如果服务极好或食品极好,那么小费高。
1.3控制输出(小费金额)
我们假设中等小费为15元,小费高为25元,小费低为5元。
二、建立编辑模糊控制器
2.1启动
在命令行中输入:fuzzy或者从app界面启动。

打开的画面如下:

2.2控制器整体编辑
修改input1为service,并修改Range为[0 10],因为服务最高为10分。
在file菜单中,选择添加变量,添加另一个输入为food,范围设置为[0 10]。
输出变量名改为tip,范围设置为[0 30],即我们根据服务与食物付出的金额为0-30元。
2.3编辑隶属函数及等级分类
双击输入或输出变量,即可进入隶属度编辑界面。
需要添加隶属度函数,可在Edit相应子菜单中操作。

首先编辑service,分为poor、good、excellent三类,隶属度函数选择gaussmf,为高斯型隶属函数。编辑完画面如下。

同理,编辑food,food只有在特别难吃与特别好吃时,才影响小费金额。隶属度选择三角形隶属函数(trimf),即评分在0-1分时,为特别难吃,评分在9-10分时为特别好吃,编辑完画面如下。

编辑小费tip,小费分为少cheap,正常average,慷慨generous三类,中等小费为15元,小费高为25元,小费低为5元。采用三角形隶属函数(trimf),编辑完画面如下。
2.4编辑模糊规则
双击控制器方框,框中的mamdani是控制器的类型,其一大特点是模糊推理的结果也是模糊的,然后通过去模糊化获得控制量的输出值。
Mamdani 推理法是模糊控制中最常用的推理方法之一,特别适用于模糊控制器设计。它基于模糊逻辑,通过模糊化、模糊规则和去模糊化的过程进行推理和决策。
选择输入输出的等级,并根据与、或、非的逻辑运算,进行规则编辑。
将如果服务差或食品差,那么小费低;如果服务好,那么小费中等;如果服务极好或食品极好,那么小费高这三条文字规则,编辑如下。
至此,控制器编辑完成,整体保存为tipper.fis。
三、查看控制器
3.1查看规则
通过主界面view菜单,可查看规则,如下图所示。可对两个输入进行调节,即可自动计算出小费的金额。
3.2曲面查看器
查看输入输出的关系曲面,并可进行调节。
四、实际仿真
4.1添加控制器
新建simulink仿真,添加模糊控制器。
双击fuzzy logic controller,可以看到其属性,已经自动与tipper.fis关联。
4.2添加信号输入与示波器
由于控制器有两个输入,但模块连接线只有一条,需要用mux混合一下。仿真整体如下所示。
4.3设置仿真
service前10s的值为0,后10s的值为5。
food前10s的值为0,后10s的值为9。
4.3仿真结果
通过仿真曲线可以看出,前10s,service与food均为0,输出6.08的小费。
后10s,service为5,food为9,输出19.14的小费。
与规则查看器中的输出结果一致。
service=0,food=0;tip=6.08
service=5,food=9;tip=19.1
本文结束,希望对你有所帮助。