模糊规则激活方法详解(python实例对比)
前文我们已经了解了多种隶属函数,如三角形、梯形、高斯型、S型和Z型,并且讨论了模糊推理的基本过程,包括模糊化、规则评估、聚合和解模糊化。我们还了解了如何生成模糊规则的方法,比如专家经验、聚类分析、决策树、遗传算法和ANFIS。所以现在到了深入探讨模糊推理的具体步骤,特别是规则激活部分的时候。
文章:
1.模糊推理规则生成方法详解:https://lzm07.blog.csdn.net/article/details/146468868
2.图解模糊推理过程(超详细步骤):图解模糊推理过程(超详细步骤)-CSDN博客
3.Pi型隶属函数(Π-shaped Membership Function)的详细介绍及python示例:Pi型隶属函数(Π-shaped Membership Function)的详细介绍及python示例-CSDN博客
4.Z型隶属函数(Z-shaped Membership Function)的详细介绍及python示例:Z型隶属函数(Z-shaped Membership Function)的详细介绍及python示例-CSDN博客
5.S型隶属函数(Sigmoid Membership Function)的详细介绍及python示例:S型隶属函数(Sigmoid Membership Function)的详细介绍及python示例-CSDN博客
更多请看我博客。
规则激活(Rule Activation)指的是根据输入变量的隶属度确定每条规则对输出的影响程度。常见的激活方法包括最小-蕴含法、乘积-蕴含法、有界积法、 drastic积法等。这些方法各有特点,适用于不同的场景。
在模糊推理过程中,规则激活是确定每条模糊规则对最终输出的贡献程度的关键步骤。其核心是通过输入变量的隶属度计算规则的激活强度(Firing Strength),并将该强度作用于输出隶属函数。以下对常见的激活方法及其详细说明:
一、最小-蕴含法(Min-Implication,Mamdani方法)
1.原理:
激活强度:取所有前件条件隶属度的最小值。
输出隶属度:将激活强度作为截断阈值,对输出隶属函数进行裁剪(即取隶属度与激活强度的最小值)。


2.数学表达式:

3.示例:
(1)规则:“如果温度高(μT=0.8)且湿度高(μH=0.6),则阀门全开”。
(2)激活强度:min(0.8,0.6)=0.6。
(3)输出隶属度:将“全开”隶属函数在高度0.6处截断。

4.特点:
(1)优点:计算简单,直观易实现。
(2)缺点:可能丢失部分信息,输出隶属函数被过度裁剪。
(3)适用场景:实时控制系统(如空调、洗衣机)。
总结:最小-蕴含法(Mamdani方法)是取前件隶属度的最小值作为规则的激活强度,然后用这个值去裁剪后件的隶属函数。这种方法计算简单,但可能导致输出信息损失。乘积法则将前件隶属度相乘,保持更多的信息,但计算量稍大。
二、乘积-蕴含法(Product-Implication,Takagi-Sugeno方法)
1.原理:
激活强度:取所有前件条件隶属度的乘积。
输出隶属度:将激活强度与输出隶属函数相乘。
2.数学表达式:

3.示例:
(1)规则:“如果温度高(μT =0.8)且湿度高(μH =0.6),则阀门开度Y=0.8×0.6×100%=48%”。
(2)激活强度:0.8×0.6=0.48。
(3)输出隶属度:将“全开”隶属函数按比例0.48缩放。
4.特点:
(1)优点:保留更多信息,输出更平滑。
(2)缺点:计算复杂度略高。
(3)适用场景:高精度控制(如机器人轨迹跟踪)。
三、Larsen乘积法(Larsen Product)
1.原理:与乘积-蕴含法类似,但输出隶属函数的缩放方式不同。
2.数学表达式:

3.特点:
(1)优点:输出隶属度形状保留更完整。
(2)缺点:需归一化处理。
(3)适用场景:需保持输出曲线形状的系统(如语音识别)。
四、有界积法(Bounded Product)
1.原理:激活强度与前件隶属度的有界积(
)。
2.数学表达式:

3.特点:
(1)优点:抑制低激活强度的规则。
(2)缺点:可能过度抑制弱规则。
(3)适用场景:需严格过滤弱响应的系统(如安全关键控制)。
五、Drastic积法(Drastic Product)
1.原理:极端情况下的激活强度计算,仅当所有前件隶属度为1时激活。
2.数学表达式:

3.特点:
(1)优点:严格匹配规则条件。
(2)缺点:灵活性差,极少实际应用。
六、加权平均法(Weighted Average,用于Takagi-Sugeno模型)
1.原理:每条规则的激活强度作为权重,对输出值加权平均。
2.数学表达式:

3.示例:
规则1:激活强度0.6 → 输出80%。
规则2:激活强度0.4 → 输出50%。
最终输出:Y=(0.6×80+0.4×50)/(0.6+0.4)=68%。
4.特点:
(1)优点:输出为精确值,无需解模糊化。
(2)缺点:仅适用于Takagi-Sugeno模型。
(3)适用场景:实时性要求高的系统(如汽车ABS控制)。
七、方法对比与选择建议
| 方法 | 计算复杂度 | 输出平滑性 | 信息保留 | 适用场景 |
| 最小-蕴含法 | 低 | 差 | 低 | 简单实时控制(Mamdani) |
| 乘积-蕴含法 | 中 | 高 | 高 | 高精度控制(Takagi-Sugeno) |
| Larsen乘积法 | 中 | 高 | 高 | 需保持输出形状 |
| 有界积法 | 低 | 中 | 中 | 安全关键系统 |
| 加权平均法 | 低 | - | - | 实时输出(TS模型) |
八、Python代码示例,对比规则激活
以下是一个Python示例代码,展示如何实现这些激活方法,并用图形展示不同方法的效果,可以帮助大家更直观地理解。对比原始输出隶属函数(“全开”)、最小-蕴含法结果(隶属度在0.6处截断)和乘积-蕴含法结果(隶属度按0.6比例缩放)的代码如下:
import numpy as npimport matplotlib.pyplot as plt# 定义输入范围x = np.linspace(0, 10, 100)# 后件隶属函数(全开阀门)def consequent_mf(x):return np.where(x <= 5, 0,np.where(x <= 10, (x - 5)/5, 0))# 激活方法实现def min_implication(strength, mf):return np.minimum(strength, mf)def product_implication(strength, mf):return strength * mf# 前件激活强度firing_strength = 0.6 # 假设规则激活强度为0.6# 计算输出隶属度mf = consequent_mf(x)output_min = min_implication(firing_strength, mf)output_product = product_implication(firing_strength, mf)# 可视化plt.figure(figsize=(10, 4))plt.plot(x, mf, 'k--', label='Original MF')plt.plot(x, output_min, 'r', lw=2, label='Min-Implication')plt.plot(x, output_product, 'b', lw=2, label='Product-Implication')plt.title('Rule Activation Methods Comparison')plt.xlabel('Valve Opening (%)')plt.ylabel('Membership Degree')plt.legend()plt.grid(True)plt.show()
输出说明
(1)黑色虚线:原始输出隶属函数(“全开”)。
(2)红色曲线:最小-蕴含法结果(隶属度在0.6处截断)。
(3)蓝色曲线:乘积-蕴含法结果(隶属度按0.6比例缩放)。

总结
选择激活方法需平衡计算效率、输出平滑性和信息保留需求。
Mamdani模型常用最小或乘积法,适合需模糊输出的场景。
Takagi-Sugeno模型多用加权平均法,适合实时精确控制。
实际系统中可通过实验对比不同方法的效果,选择最优策略。
相关文章:
模糊规则激活方法详解(python实例对比)
前文我们已经了解了多种隶属函数,如三角形、梯形、高斯型、S型和Z型,并且讨论了模糊推理的基本过程,包括模糊化、规则评估、聚合和解模糊化。我们还了解了如何生成模糊规则的方法,比如专家经验、聚类分析、决策树、遗传算法和ANFI…...
value-key 的作用
在 el-autocomplete 组件中,value-key 是一个非常重要的属性,它用于指定选项对象中作为值的字段名。当选项列表是一个包含多个属性的对象数组时,value-key 能帮助组件明确哪个属性是实际要使用的值。比如,选项列表为 [{id: 01, na…...
venv 和 conda 哪个更适合管理python虚拟环境
在 Python 开发中,管理虚拟环境是避免依赖冲突和提高项目可复现性的关键。venv(Python 内置)和 conda(第三方工具)各有优劣,选择取决于你的具体需求。以下是详细对比和推荐场景: 1. venv&#x…...
论文阅读:2023 arxiv Provable Robust Watermarking for AI-Generated Text
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Provable Robust Watermarking for AI-Generated Text https://arxiv.org/pdf/2306.17439 https://github.com/XuandongZhao/Unigram-Watermark https://www.doubao.com/chat/211092…...
kube-vip实践
kube-vip 是一款专为 Kubernetes 设计的轻量级高可用(HA)和负载均衡工具,通过虚拟 IP(VIP)机制实现控制平面和服务的高可用性。以下从核心原理、部署实践到高级配置进行全面解析。 一、核心原理与模式 kube-vip 通过…...
python 中match...case 和 C switch case区别
文章目录 语法结构匹配模式的灵活性穿透特性缺省情况处理 在 Python 3.10 及以后的版本中引入了 match...case 语句,它和其他编程语言里的 switch...case 语句有相似之处,但也存在不少区别, 语法结构 match...case(Python&…...
Web前端考核 JavaScript知识点详解
一、JavaScript 基础语法 1.1 变量声明 关键字作用域提升重复声明暂时性死区var函数级✅✅❌let块级❌❌✅const块级❌❌✅ 1.1.1变量提升的例子 在 JavaScript 中,var 声明的变量会存在变量提升的现象,而 let 和 const 则不会。变量提升是指变量的声…...
Spring Boot3 配置文件
统一配置文件管理 SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties或application.yml)中࿰…...
消防设施操作员考试:巧用时间高效备考攻略
合理规划时间是备考消防设施操作员考试的关键,能让学习事半功倍。 一、制定详细时间表 根据备考时间和考试内容,制定每日、每周的学习计划。将学习时间合理分配给理论知识学习、技能实操练习和模拟考试。例如,每天安排 3 - 4 小时学习理…...
机器学习之KMeans算法
文章目录 引言1. KMeans算法简介2. KMeans算法的数学原理3. KMeans算法的步骤3.1 初始化簇中心3.2 分配数据点3.3 更新簇中心3.4 停止条件 4. KMeans算法的优缺点4.1 优点4.2 缺点 5. KMeans算法的应用场景5.1 图像分割5.2 市场细分5.3 文档聚类5.4 异常检测 6. Python实现KMea…...
深度学习技术与应用的未来展望:从基础理论到实际实现
深度学习作为人工智能领域的核心技术之一,近年来引起了极大的关注。它不仅在学术界带来了革命性的进展,也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理,再到强化学习和生成对抗网络(GAN),深度…...
FastStoneCapture下载安装教程(附安装包)专业截图工具
文章目录 前言FastStoneCapture下载FastStoneCapture安装步骤FastStoneCapture使用步骤 前言 在日常工作与学习里,高效截图工具至关重要。本教程将为你呈现FastStoneCapture下载安装教程,助你轻松拥有。 FastStoneCapture下载 FastStone Capture 是一款…...
基于AWS Endpoint Security的合规性保障
设计AWS云架构方案实现基于AWS Endpoint Security(EPS)的合规性保障,使用EPS持续收集终端设备的安全状态数据(如补丁版本、密码策略),并通过CloudWatch生成合规性报告。企业可利用这些数据满足GDPR、HIPAA等法规对终端设备的安全审…...
26考研——图_图的遍历(6)
408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索(BFS)概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …...
C++类与对象的第一个简单的实战练习-3.24笔记
在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程(118集全)讲的真的很不错 实战一: 情况一:将所有代码写到一个文件main.cpp中 #include<iostream> //不知道包含strcpy的头文件名称是什么,问ai可知 #include<…...
4.1 C#获取目录的3个方法的区别
C#中常用有如下3个获取目录的方式如下 1.Directory.GetCurrentDirectory():获取当前工作目录,工作目录可能被用户或其他代码修改。尽量少用。(似乎只要在运行中使用另存为或者打开某个文件夹,当前工作目录就修改) 2.Application…...
架构设计之自定义延迟双删缓存注解(上)
架构设计之自定义延迟双删缓存注解(上) 小薛博客官方架构设计之自定义延迟双删缓存注解(上)地址 1、业务场景问题 在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后&#…...
oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)
目录 1. Oracle数据库启动 2. Oracle数据库关闭 3. sqlplus登录Oracle数据库 3.1 使用sqlplus登录Oracle数据库 3.2 使用sqlplus登录Oracle数据库 3.3 远程登录 3.4 解锁用户 3.5 修改用户密码 3.6 查看当前语言环境 4. sqlplus基本操作 4.1 显示当前用户 4.2 查看当前用户…...
深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念
首先详细介绍一下 RS485 和 Modbus 这两个在工业自动化和数据通讯领域中非常重要的概念。 RS485 1. 定义与特点 RS485 标准:RS485 是一种串行通信标准,也称为TIA-485标准,主要用于数据传输。它规定了物理层的电气特性,与数据格式…...
软考系统架构师论文模版及实例
记住总体原则: 摘要——300字 项目背景与职责——300字左右 选取的架构特点——200字左右 架构在项目中的具体应用过程——1500字左右(从每种架构中至少总结三个方面进行描述,例如三个特点在项目中的体现,三个步骤在项目中的应用等࿰…...
1、SpringBoot集成MyBatis
(1)创建SpringBoot项目 (2)集成MyBatis 导入坐标 <!-- 连接数据库,版本5 --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><versi…...
网络编程的概念&作用
网络编程是什么? 想象一下,你和朋友在不同的房间里,你们想互相传递纸条聊天。网络编程就像是编写一套规则,让计算机能够通过网络(比如互联网)互相传递信息。这些信息可以是文字、图片、视频,甚…...
Linux实操篇-权限管理
目录 传送门前言一、权限管理概念二、权限管理实战1. Linux文件权限模型1.1 文件的三种基本权限1.2 权限的三类主体 2. 查看文件权限3. 修改文件权限3.1 使用符号方式修改权限3.2 使用数字方式修改权限 4. 特殊权限4.1 SUID(Set User ID)4.2 SGID&#x…...
阿里开源的免费数据集成工具——DataX
企业里真实的数据流转是什么样子的呢? 左侧描述了一个企业真实的样子,我们总是需要把数据从一个地方搬到另一个地方,最后就是搬来搬去搬成了一张张解不开的网。 右侧则表达了使用DataX为中心实现数据的同步。 什么是DataX DataX是一个异构…...
【前端】使用 HTML、CSS 和 JavaScript 创建一个数字时钟和搜索功能的网页
文章目录 ⭐前言⭐一、项目结构⭐二、HTML 结构⭐三、CSS 样式⭐四、JavaScript 功能⭐五、运行效果⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈(,NET/Java/Python/C)、数…...
地理信息可视化技术大全【WebGIS 教程一】
前言: 在当今数据驱动的时代,地理信息技术(GIS)和空间数据可视化已成为科学研究、商业决策和智慧城市建设的重要工具。随着Web技术的快速发展,基于浏览器端的地图渲染和地理信息处理能力显著增强,各类开源与…...
SLAM十四讲【四】相机与图像
SLAM十四讲【四】相机与图像 SLAM十四讲【一】基本概念 SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【三】李群与李代数 SLAM十四讲【四】相机与图像 SLAM十四讲【五】线性优化 SLAM十四讲【六】视觉里程计 SLAM十四讲【七】回环检测 SLAM十四讲【八】建图 文章目录 SLAM十四…...
深入理解Java享元模式及其线程安全实践
引言 在软件系统中,当需要处理海量细粒度对象时,直接创建大量实例可能会导致内存消耗激增和性能下降。享元模式(Flyweight Pattern)通过共享对象内部状态,成为解决这类问题的经典方案。然而在多线程环境下,…...
类和对象-运算符重载-C++
1.加号运算符重载 1.成员函数重载调用 函数的定义部分(这里的person是返回值类型,不是说构造函数) class person { public:person operator(person& p){person temp;temp.a this->a p.a;temp.b this->b p.b;return temp;}in…...
2000-2019年各省地方财政耕地占用税数据
2000-2019年各省地方财政耕地占用税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政耕地占用税 4、范围:31省 5、指标说明:耕地占用税是地方财政的一种税收&…...
