完整的模糊推理系统介绍以及matlab中从零实现(下篇)

本文详细介绍如何从零开始在MATLAB中构建模糊推理系统,包括系统输入输出设置、语义变量及隶属度函数定义、推理规则设定等关键步骤,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模糊推理系统从零实现

完整的模糊推理系统介绍以及matlab中从零实现(上篇)中,我们对一个完整的模糊推理系统所涉及到的知识点做了一个细致地展述。
进而,我们可以根据实际需要设计一个属于自己的模糊推理系统。主要涉及到以下几个方面的参数设置。

  1. 系统的输入输出变量
  2. 变量对应的语义变量,即分类
  3. 每个语义变量都需要一个隶属度函数与之对应
  4. 推理规则

本文的模糊推理系统的输入,输出以及相应规则设定如下

  1. 系统输入为两个,分别为商品评价(差、中、好、极好)、用户购买意愿(弱、中、强、很强)。输入范围都是[0 10]
  2. 系统输出为用户行为,购买与否。用[0 1]区间的数值表示。大于0.5则为购买。
  3. 模糊规则考虑为
  • rule1: IF 购买意愿很强 THEN ACtion=买
  • rule2: IF 商品评价极好且购买意愿为不为弱 THEN Action=买
  • rule3: IF 商品评价为差 THEN Action=不买
  • rule4: IF 如果商品评价不为差且购买意愿强 THEN Action=买
    在这里插入图片描述
    最终的目的是建成如上的一个推理系统

基本命令介绍

在调用doc fuzzy得到的文档窗口后,对Fuzzy Inference System Modeling中的functions做一个仔细地阅读,不难发现。
matlab在安装工具箱Fuzzy的基础上,给定了几个模糊推理系统:tipper等
因此,我们可以直接通过tipper=readfis('tipper')调用得到这个完整的系统。还可以通过命令plotfis(tipper)showfis(tipper)对其进行分析。
在这里插入图片描述
我们可以看到它有两个输入和一个输出,并且分别具有不同的语义变量和隶属度函数。通过showrule(tipper)可以看到它设置的规则为

'1. If (service is poor) or (food is rancid) then (tip is cheap) (1) ’
'2. If (service is good) then (tip is average) (1) ’
‘3. If (service is excellent) or (food is delicious) then (tip is generous) (1)’

创建一个新的FIS

事实上,我们可以将工具箱自带的tipper做进一步优化。添加更多的输入,更完整的规则等。而这一点,在我们成功实现一个自己的系统后很容易做到。
我们通过fis=newfis(name)命令生成一个空的fis,并且在初始化的过程中,fis的类型,逻辑运算等都选择为默认值。
newfis的默认参数
可以发现,生成的基本fis中,模糊规则前件的对应min对应max,再将前件的隶属度同后件的隶属度函数比较取较小者。结合不同规则得到的输出隶属度值,取面积最大的情形,最后通过centorid,即面积重心的去模糊方法得到输出的数值。
在这里插入图片描述

在大多数时候,我们是不需要更改这些基础设定的。我们所需要做的就是,添加输入输出,语义变量以及隶属度函数,并且设定好相应的规则即可。如果需要对这些基础设定作出更改。可以通过命令setfig()进行改动。具体的可以参考该命令的帮助文档。

设定输入、输出

  1. 所用到的添加变量函数命令fis=addvar(fis,varType,varName,varBounds),即设定参数的类型:输入or输出,输入的名称和区间。
    因此,我们设定输入输出分别为:
    • fis=addvar(fis,‘input’,‘Attitude’,[0 10])
    • fis=addvar(fis,‘input’,‘Comment’,[0 10])
    • fis=addvar(fis,‘output’,‘Action’,[0 1])
      此时,我们可以看到系统的参数增加了。
      在这里插入图片描述
      与之对应的命令是fis = rmvar(fis,varType,varIndex)用于移除设定好的输入输出变量。
  2. 添加隶属度函数命令
    命令:fis = addmf(fis,varType,varIndex,mfName,mfType,mfParams),形参含义如下表
形参 含义
varType 参数类型,输入或输出
varIndex 参数标号,第几个输入或输出
mfName 隶属度函数名称,即语义变量
mfType 选用哪种隶属度函数
mfParams 隶属度函数生产参数

shopper=addmf(shopper,‘input’,1,‘weak’,‘gaussmf’,[1 0]);
shopper=addmf(shopper,‘input’,1,‘medium’,‘gaussmf’,[1 3.33]);
shopper=addmf(shopper,‘input’,1,‘strong’,‘gaussmf’,[1 6.77]);
shopper=addmf(shopper,‘input’,1,‘very strong’,‘gaussmf’,[1 10]);

对于输入1的四个语义变量设定相应的隶属

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值