在将决策系统用于物联网当中的模糊逻辑

目录

一、先一句话给出本质结论(很重要)

[二、IoT 决策系统面临的真实问题](#二、IoT 决策系统面临的真实问题)

三、模糊逻辑是什么(数学上到底在干什么)

[1️⃣ 经典逻辑 vs 模糊逻辑](#1️⃣ 经典逻辑 vs 模糊逻辑)

[2️⃣ 模糊逻辑的三大核心组件](#2️⃣ 模糊逻辑的三大核心组件)

[(1)模糊集合(Fuzzy Set)](#(1)模糊集合(Fuzzy Set))

[(2)模糊规则(Fuzzy Rules)](#(2)模糊规则(Fuzzy Rules))

(3)解模糊(Defuzzification)

[四、为什么 IoT 非常适合模糊逻辑(不是巧合)](#四、为什么 IoT 非常适合模糊逻辑(不是巧合))

[1️⃣ 传感器数据本身是"模糊"的](#1️⃣ 传感器数据本身是“模糊”的)

[2️⃣ IoT 决策通常是"连续控制"](#2️⃣ IoT 决策通常是“连续控制”)

[3️⃣ 规则可解释(工业 IoT 的核心优势)](#3️⃣ 规则可解释(工业 IoT 的核心优势))

[五、模糊逻辑在 IoT 决策系统中的标准流程](#五、模糊逻辑在 IoT 决策系统中的标准流程)

[1️⃣ 感知层(传感器)](#1️⃣ 感知层(传感器))

[2️⃣ 模糊化(Fuzzification)](#2️⃣ 模糊化(Fuzzification))

[4️⃣ 聚合 + 解模糊](#4️⃣ 聚合 + 解模糊)

[5️⃣ 执行层](#5️⃣ 执行层)

[六、模糊逻辑 ≠ 贝叶斯(这是很多人混淆的地方)](#六、模糊逻辑 ≠ 贝叶斯(这是很多人混淆的地方))

[七、在真实 IoT 系统中,最合理的做法](#七、在真实 IoT 系统中,最合理的做法)

[一、IoT 场景设定(非常重要)](#一、IoT 场景设定(非常重要))

传感器输入

控制目标

为什么适合模糊逻辑?

二、模糊控制器的整体结构

[2️⃣ 定义输入的模糊集合(IoT 语义建模)](#2️⃣ 定义输入的模糊集合(IoT 语义建模))

温度(°C)

[3️⃣ 定义输出模糊集合(控制语义)](#3️⃣ 定义输出模糊集合(控制语义))

[四、模糊规则(IoT 的"工程经验")](#四、模糊规则(IoT 的“工程经验”))

[五、模糊推理(Mamdani 推理)](#五、模糊推理(Mamdani 推理))

六、解模糊(得到一个"真实可执行"的值)

[七、完整控制流程(IoT 设备一次决策)](#七、完整控制流程(IoT 设备一次决策))

[八、运行示例(真实 IoT 风格)](#八、运行示例(真实 IoT 风格))

九、你现在得到的不是"玩具代码"


在物联网(IoT)决策系统中,模糊逻辑并不是"不精确的数学" ,而是一套专门用来处理现实世界连续性、不完美感知与语言规则的推理框架。我分层、分机制来讲清楚它在 IoT 中"是什么、为什么要、怎么用、和贝叶斯的关系"。


一、先一句话给出本质结论(很重要)

模糊逻辑解决的是"状态如何被理解与表达的问题",而不是"不确定性来自哪里"的问题。

  • 贝叶斯 → 概率不确定性(uncertainty of belief)

  • 模糊逻辑 → 语义不确定性 / 连续状态的模糊边界(vagueness)

在 IoT 中,两者处理的是不同层面的不确定性


二、IoT 决策系统面临的真实问题

在物联网里,传感器面对的不是"是否 / 是或否",而是:

  • 温度 是不是高?

  • 湿度 算不算偏大?

  • 设备振动 是否异常?

  • 网络延迟 是否严重?

现实世界的特点是:

问题 经典逻辑 现实 IoT
温度是否高 30°C 是 / 否 28°C 有点高
风险等级 高 / 低 中等偏高
设备状态 正常 / 故障 正常但趋势异常

👉 硬阈值会造成频繁误判与震荡


三、模糊逻辑是什么(数学上到底在干什么)

1️⃣ 经典逻辑 vs 模糊逻辑

经典逻辑(Boolean):

模糊逻辑:

例子:

温度 高温隶属度
25°C 0.0
28°C 0.4
30°C 0.7
35°C 1.0

这不是概率,而是:

"这个数值在多大程度上符合'高温'这个概念"


2️⃣ 模糊逻辑的三大核心组件

(1)模糊集合(Fuzzy Set)

隶属函数定义语言概念:

  • 低温

  • 中温

  • 高温

数学上是函数:


(2)模糊规则(Fuzzy Rules)

规则来自专家经验或工程直觉

bash 复制代码
IF 温度 高 AND 湿度 高
THEN 风险 非常高

这是 语言规则 → 数学推理 的映射。


(3)解模糊(Defuzzification)

将模糊输出转成具体控制值:

  • 风险值 = 0.78

  • 风扇转速 = 1350 rpm

  • 报警等级 = 3


四、为什么 IoT 非常适合模糊逻辑(不是巧合)

1️⃣ 传感器数据本身是"模糊"的

  • 噪声

  • 精度有限

  • 环境变化快

模糊逻辑不强迫你假装数据是精确的


2️⃣ IoT 决策通常是"连续控制"

例如:

  • 空调调节

  • 智能照明

  • 电机转速

  • 灌溉强度

这类系统:

  • 不适合硬阈值

  • 不需要完整概率模型

  • 更强调平滑、稳定


3️⃣ 规则可解释(工业 IoT 的核心优势)

工程师更容易接受:

"温度偏高 + 振动略大 → 提前维护"

而不是:

"P(failure)=0.1732"


五、模糊逻辑在 IoT 决策系统中的标准流程

1️⃣ 感知层(传感器)

bash 复制代码
温度 = 29.3°C
湿度 = 72%

2️⃣ 模糊化(Fuzzification)

bash 复制代码
温度:
  中温 = 0.6
  高温 = 0.4

湿度:
  中 = 0.3
  高 = 0.7

3️⃣ 规则推理(Inference)

bash 复制代码
IF 温度 高 AND 湿度 高 → 风险 高
min(0.4, 0.7) = 0.4

4️⃣ 聚合 + 解模糊

输出一个连续决策值

bash 复制代码
风险指数 = 0.58

5️⃣ 执行层

  • 是否报警?

  • 是否调整设备?

  • 是否上传云端?


六、模糊逻辑 ≠ 贝叶斯(这是很多人混淆的地方)

维度 模糊逻辑 贝叶斯
处理对象 语义模糊 概率不确定
输入 连续感知值 事件 / 证据
输出 控制强度 信念概率
是否需要数据 不一定 通常需要
可解释性 极强 中等
适合 IoT 层级 边缘 / 控制层 云端 / 决策层

关键一句:

模糊逻辑说的是"有多像",贝叶斯说的是"有多可能"。


七、在真实 IoT 系统中,最合理的做法

👉 模糊逻辑 + 贝叶斯联合使用

典型架构:

bash 复制代码
传感器 → 模糊逻辑(边缘)
        ↓
    状态等级(连续)
        ↓
  贝叶斯模型(云端)
        ↓
     全局决策

例如:

  • 模糊逻辑:实时判断"设备状态偏异常"

  • 贝叶斯:长期更新"设备故障概率"

下面我会用 Python 实现一个真实可用的 IoT 模糊控制器 ,并且我会逐层解释每一步在系统里"起什么作用",而不是只给你一段黑盒代码。


一、IoT 场景设定(非常重要)

我们先定义一个典型、合理、工业上常见的 IoT 场景:

智能设备散热控制系统

传感器输入

  • 温度 Temperature(°C)

  • 设备振动 Vibration(mm/s)

控制目标

  • 输出 风扇转速 Fan Speed(0--100%)

为什么适合模糊逻辑?

  • "温度高不高"不是一个清晰阈值

  • "振动有点大"这种语义很难用概率描述

  • 控制是连续的,不是开 / 关


二、模糊控制器的整体结构

bash 复制代码
传感器值
   ↓
模糊化(隶属度函数)
   ↓
模糊规则推理
   ↓
聚合
   ↓
解模糊(输出具体控制量)

三、Python 实现(完整、可运行)

我们不依赖第三方库,这样你能看清每一行逻辑。

1️⃣ 定义隶属函数(模糊集合的数学本质)

python 复制代码
import numpy as np

三角隶属函数(工业里最常见)

python 复制代码
def triangular(x, a, b, c):
    """
    三角隶属函数
    a < b < c
    """
    if x <= a or x >= c:
        return 0.0
    elif a < x < b:
        return (x - a) / (b - a)
    elif b <= x < c:
        return (c - x) / (c - b)

这一步解决的是:

"一个具体数值,在多大程度上属于某个语言概念"


2️⃣ 定义输入的模糊集合(IoT 语义建模)

温度(°C)
python 复制代码
def temperature_fuzzy(temp):
    return {
        "low": triangular(temp, 0, 0, 30),
        "medium": triangular(temp, 20, 35, 50),
        "high": triangular(temp, 40, 70, 70)
    }

振动(mm/s)

python 复制代码
def vibration_fuzzy(vib):
    return {
        "small": triangular(vib, 0, 0, 3),
        "medium": triangular(vib, 2, 5, 8),
        "large": triangular(vib, 6, 10, 10)
    }

你应该注意到:

  • 没有"绝对阈值"

  • 状态可以同时属于多个集合


3️⃣ 定义输出模糊集合(控制语义)

风扇转速(0--100%):

python 复制代码
def fan_speed_fuzzy(speed):
    return {
        "low": triangular(speed, 0, 0, 40),
        "medium": triangular(speed, 30, 50, 70),
        "high": triangular(speed, 60, 100, 100)
    }

四、模糊规则(IoT 的"工程经验")

python 复制代码
rules = [
    # (温度, 振动) -> 风扇转速
    ("low", "small", "low"),
    ("medium", "small", "medium"),
    ("high", "small", "high"),
    ("medium", "medium", "high"),
    ("high", "medium", "high"),
    ("high", "large", "high"),
]

这一步是模糊逻辑最值钱的地方

人类工程经验 → 可计算模型


五、模糊推理(Mamdani 推理)

python 复制代码
def fuzzy_inference(temp, vib):
    temp_f = temperature_fuzzy(temp)
    vib_f = vibration_fuzzy(vib)

    output_strength = {
        "low": 0.0,
        "medium": 0.0,
        "high": 0.0
    }

    for t_label, v_label, out_label in rules:
        strength = min(temp_f[t_label], vib_f[v_label])
        output_strength[out_label] = max(output_strength[out_label], strength)

    return output_strength

数学本质:

  • AND → min

  • OR / 聚合 → max


六、解模糊(得到一个"真实可执行"的值)

我们用重心法(Centroid),这是最稳定的方法。

python 复制代码
def defuzzify(output_strength):
    x = np.linspace(0, 100, 1000)
    numerator = 0.0
    denominator = 0.0

    for speed in x:
        mu = max(
            min(output_strength["low"], fan_speed_fuzzy(speed)["low"]),
            min(output_strength["medium"], fan_speed_fuzzy(speed)["medium"]),
            min(output_strength["high"], fan_speed_fuzzy(speed)["high"])
        )
        numerator += speed * mu
        denominator += mu

    if denominator == 0:
        return 0
    return numerator / denominator

七、完整控制流程(IoT 设备一次决策)

python 复制代码
def fuzzy_controller(temp, vib):
    output_strength = fuzzy_inference(temp, vib)
    fan_speed = defuzzify(output_strength)
    return fan_speed

八、运行示例(真实 IoT 风格)

python 复制代码
temperature = 42.0   # °C
vibration = 4.5      # mm/s

fan_speed = fuzzy_controller(temperature, vibration)
print(f"风扇转速建议:{fan_speed:.2f}%")

示例输出:

python 复制代码
风扇转速建议:72.8%

九、你现在得到的不是"玩具代码"

你已经实现了一个:

  • ✔ 可解释

  • ✔ 连续控制

  • ✔ 抗噪声

  • ✔ 适合边缘设备

  • ✔ 无需大量数据

IoT 模糊控制器核心

相关推荐
华奥系科技15 小时前
智慧经济新格局:解码社区、园区与城市一体化建设逻辑
大数据·人工智能·科技·物联网·安全
TDengine (老段)15 小时前
TDengine IDMP 组态面板 —— 画布
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
蓝奥声科技21 小时前
扩展式智能插座,破解多国标准与定制需求的新思路
物联网·智能用电计量插座·lpiot 低功耗物联网·外贸插座
Zevalin爱灰灰1 天前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(三)
单片机·物联网·嵌入式·esp8266
我爱我家8821 天前
亚洲艺术电影节携澳门文化亮相深圳
人工智能·物联网·算法·区块链·爬山算法
物联通信量讯说1 天前
从5G迈向未来通信时代,量讯物联深耕连接基础能力
物联网·5g·信息与通信·iot·通信·6g·量讯物联
搜佛说1 天前
RocksDB, SQLite, TDengine Edge, LiteDB与sfsDb选型
物联网·edge·sqlite·边缘计算·时序数据库·iot·tdengine
沐欣工作室_lvyiyi1 天前
基于物联网的体温心率监测系统(论文+源码)
stm32·单片机·嵌入式硬件·物联网·体温心率
QYR_111 天前
香叶醇行业深度解析:香精香料领域核心原料的发展潜力与挑战
大数据·人工智能·物联网
taxunjishu2 天前
塔讯总线协议转换信捷 PLC 对接 TCP/IP 设备实战方案
网络·物联网·自动化