模糊规则激活方法详解(python实例对比)

news2025/3/28 9:43:27

        前文我们已经了解了多种隶属函数,如三角形、梯形、高斯型、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 np

import 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模型多用加权平均法,适合实时精确控制。

实际系统中可通过实验对比不同方法的效果,选择最优策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端考核 JavaScript知识点详解

一、JavaScript 基础语法 1.1 变量声明 关键字作用域提升重复声明暂时性死区var函数级✅✅❌let块级❌❌✅const块级❌❌✅ 1.1.1变量提升的例子 在 JavaScript 中&#xff0c;var 声明的变量会存在变量提升的现象&#xff0c;而 let 和 const 则不会。变量提升是指变量的声…

Spring Boot3 配置文件

统一配置文件管理 SpringBoot工程下&#xff0c;进行统一的配置管理&#xff0c;你想设置的任何参数&#xff08;端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件&#xff08;application.properties或application.yml&#xff09;中&#xff0…

消防设施操作员考试:巧用时间高效备考攻略

合理规划时间是备考消防设施操作员考试的关键&#xff0c;能让学习事半功倍。​ 一、制定详细时间表​ 根据备考时间和考试内容&#xff0c;制定每日、每周的学习计划。将学习时间合理分配给理论知识学习、技能实操练习和模拟考试。例如&#xff0c;每天安排 3 - 4 小时学习理…

深度学习技术与应用的未来展望:从基础理论到实际实现

深度学习作为人工智能领域的核心技术之一&#xff0c;近年来引起了极大的关注。它不仅在学术界带来了革命性的进展&#xff0c;也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理&#xff0c;再到强化学习和生成对抗网络&#xff08;GAN&#xff09;&#xff0c;深度…

FastStoneCapture下载安装教程(附安装包)专业截图工具

文章目录 前言FastStoneCapture下载FastStoneCapture安装步骤FastStoneCapture使用步骤 前言 在日常工作与学习里&#xff0c;高效截图工具至关重要。本教程将为你呈现FastStoneCapture下载安装教程&#xff0c;助你轻松拥有。 FastStoneCapture下载 FastStone Capture 是一款…

26考研——图_图的遍历(6)

408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索&#xff08;BFS&#xff09;概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …

C++类与对象的第一个简单的实战练习-3.24笔记

在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程&#xff08;118集全&#xff09;讲的真的很不错 实战一&#xff1a; 情况一&#xff1a;将所有代码写到一个文件main.cpp中 #include<iostream> //不知道包含strcpy的头文件名称是什么,问ai可知 #include<…

4.1 C#获取目录的3个方法的区别

C#中常用有如下3个获取目录的方式如下 1.Directory.GetCurrentDirectory():获取当前工作目录&#xff0c;工作目录可能被用户或其他代码修改。尽量少用。&#xff08;似乎只要在运行中使用另存为或者打开某个文件夹&#xff0c;当前工作目录就修改&#xff09; 2.Application…

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 查看当前用户…

1、SpringBoot集成MyBatis

&#xff08;1&#xff09;创建SpringBoot项目 &#xff08;2&#xff09;集成MyBatis 导入坐标 <!-- 连接数据库&#xff0c;版本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&#xff08;Set User ID&#xff09;4.2 SGID&#x…

阿里开源的免费数据集成工具——DataX

企业里真实的数据流转是什么样子的呢&#xff1f; 左侧描述了一个企业真实的样子&#xff0c;我们总是需要把数据从一个地方搬到另一个地方&#xff0c;最后就是搬来搬去搬成了一张张解不开的网。 右侧则表达了使用DataX为中心实现数据的同步。 什么是DataX DataX是一个异构…

【前端】使用 HTML、CSS 和 JavaScript 创建一个数字时钟和搜索功能的网页

文章目录 ⭐前言⭐一、项目结构⭐二、HTML 结构⭐三、CSS 样式⭐四、JavaScript 功能⭐五、运行效果⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数…

地理信息可视化技术大全【WebGIS 教程一】

前言&#xff1a; 在当今数据驱动的时代&#xff0c;地理信息技术&#xff08;GIS&#xff09;和空间数据可视化已成为科学研究、商业决策和智慧城市建设的重要工具。随着Web技术的快速发展&#xff0c;基于浏览器端的地图渲染和地理信息处理能力显著增强&#xff0c;各类开源与…

SLAM十四讲【四】相机与图像

SLAM十四讲【四】相机与图像 SLAM十四讲【一】基本概念 SLAM十四讲【二】三维空间刚体运动 SLAM十四讲【三】李群与李代数 SLAM十四讲【四】相机与图像 SLAM十四讲【五】线性优化 SLAM十四讲【六】视觉里程计 SLAM十四讲【七】回环检测 SLAM十四讲【八】建图 文章目录 SLAM十四…

类和对象-运算符重载-C++

1.加号运算符重载 1.成员函数重载调用 函数的定义部分&#xff08;这里的person是返回值类型&#xff0c;不是说构造函数&#xff09; 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、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政耕地占用税 4、范围&#xff1a;31省 5、指标说明&#xff1a;耕地占用税是地方财政的一种税收&…

从零到一开发一款 DeepSeek 聊天机器人

AI聊天机器人 目标设计方案系统架构技术选型功能模块 实现代码环境配置安装依赖 核心代码API 请求函数主循环函数 功能扩展1. 情感分析2. 多语言支持3. 上下文记忆4. 用户身份识别 总结附录 目标 开发一个智能聊天机器人&#xff0c;旨在为用户提供自然、流畅的对话体验。通过…

S32K144外设实验(五):FTM周期中断

文章目录 1. 概述1.1 时钟系统1.2 实验目的 2. 代码的配置 1. 概述 1.1 时钟系统 FTM的CPU接口时钟为SYS_CLK&#xff0c;在RUN模式下最高80MHz。模块的时钟结构如下图所示。 从上图中可以看出&#xff0c;FTM模块的功能时钟为SYS_CLK&#xff0c;计数器的时钟源可以来源于三…

Android 静态壁纸设置实现方案

提示&#xff1a;Android 平台&#xff0c;静态壁纸实现方案 文章目录 需求&#xff1a;Android 实现壁纸 设置场景 参考资料实现方案直接调用系统 API,WallpaperManager 来实现 wallpaperManager.setResource系统源码分析系统app WallpaperPickerWallpaperPickerActivity ->…