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

目录

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

[二、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 模糊控制器核心

相关推荐
普马萨特27 分钟前
移动网络信号指标与单位整理(2G/3G/4G/5G Android vs IoT)
android·网络·物联网
星图易码1 小时前
星图云开发者平台功能详解 | IoT物联网平台:工业设备全链路智能管控中枢
分布式·物联网·低代码·低代码平台
huge_shao1 小时前
5、FUXA ODBC 配置与实战
物联网·可视化·scada·hmi·组态软件·fuxa
欢乐熊嵌入式编程1 小时前
IoT 场景中的 DHCP、ARP、ICMP 到底在干嘛?
物联网·wifi·dhcp·iot wifi
MDIOT旗舰1 小时前
ZL401核心板:一站式物联网数据采集的理想之选
物联网·无线通信·数据采集·智能硬件·工业物联网·4g通信·cat1模块
DS小龙哥1 小时前
基于STM32设计的智能鞋柜【华为云IOT】
stm32·物联网·华为云
WangUnionpub1 小时前
2026 国自然基金申请全周期时间线
大数据·人工智能·物联网·机器学习·计算机视觉
DBA小马哥2 小时前
时序数据库在物联网中的应用
数据库·物联网·时序数据库
乾元2 小时前
IoT 大量接入场景下的网络切片与安全隔离——AI 驱动的策略生成、验证与落地工程
运维·网络·人工智能·物联网·网络协议·安全
珠海西格电力10 小时前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源