这篇是以前写的。

参考论文为黄明明2019年发表在《河南工程学院:自然科学版》。

摘要:为提高家居生活品质和安全,设计了一种基于模糊推理的智能家居安防系统,有效实现了家居生活的防火、防盗和远程监控和报警功能。所设计的系统通过传感器对温度湿度信号,烟雾信号,震动信号及室外是否有人非法入侵等环境信息进行检测。


本设计的模糊推理系统有2个输入量,分别是室内环境温度和室内烟雾浓度。

将环境变量信号输入模糊推理机之前,先要将其模糊化,即将输入变量由数字转变为语言值。

将模糊变量输入推理机,根据设定的模糊规则进行模糊推理。

接下来进行反模糊化,即将语言值转变为对应的数值,该数值反映了火灾发生的概率。

以下是用python代码实现这一系统仿真。matlab对此过程操作较为简单。

安装skfuzzy,我使用的是anaconda3.8。

网站为Pre-built installation — skfuzzy v0.2 docs

conda install scitik-fuzzy
import numpy as npimport skfuzzy as fuzz
import matplotlib.pyplot as plt
from skfuzzy import control as ctrl
import math
# 温度范围为[0,50]
# 烟雾浓度范围为[0,1500]
# 火灾险情范围[0,100]
x_tem = np.arange(0, 51, 1)
x_smog= np.arange(0, 1501, 1)
x_lever= np.arange(0, 101, 1)
# 定义模糊控制变量
temperature= ctrl.Antecedent(x_tem, 'temperature')
smog = ctrl.Antecedent(x_smog, 'smog')
lever= ctrl.Consequent(x_lever, 'lever')
# 生成模糊隶属函数
temperature['ZO'] = fuzz.trimf(x_tem, [0, 0, 15])#定义温度的三角隶属度函数横坐标
temperature['PS'] = fuzz.trimf(x_tem, [0, 15, 30])
temperature['PM'] = fuzz.trimf(x_tem, [15, 30, 50])
temperature['PB'] = fuzz.trimf(x_tem, [30, 50, 50])
#temperature.view()
smog['ZO'] = fuzz.trimf(x_smog, [0, 0, 500])#定义烟雾浓度的三角隶属度函数横坐标
smog['PS'] = fuzz.trimf(x_smog, [0, 500, 1000])
smog['PM'] = fuzz.trimf(x_smog, [500, 1000, 1500])
smog['PB'] = fuzz.trimf(x_smog, [1000, 1500, 1500])
#smog.view()
lever['ZO'] = fuzz.trimf(x_lever, [0, 0, 40]) #定义火灾等级的三角隶属度函数横坐标
lever['PS'] = fuzz.trimf(x_lever, [0, 40, 60])
lever['PM'] = fuzz.trimf(x_lever, [40, 60, 100])
lever['PB'] = fuzz.trimf(x_lever, [60, 100, 100])
lever.defuzzify_method='centroid'
#可视化这些输入输出和隶属函数
#temperature.automf(4)
# smog.automf(4)#四种程度
# temperature.view()
#smog.view()
#plt.show()
#规则
rule1=ctrl.Rule(antecedent=((temperature['ZO'] & smog['ZO'])|(temperature['PS'] & smog['ZO'])|(temperature['ZO'] & smog['PS'])),consequent=lever['ZO'],label='无')
rule2=ctrl.Rule(antecedent=((temperature['ZO'] & smog['PM'])|(temperature['PS'] & smog['PS'])|(temperature['PS'] & smog['PM'])|(temperature['PM'] & smog['ZO'])|(temperature['PM'] & smog['PS'])),consequent=lever['PS'],label='小')
rule3=ctrl.Rule(antecedent=(temperature['PM'] & smog['PM']),consequent=lever['PM'],label='中')
rule4=ctrl.Rule(antecedent=(temperature['PB']|smog['PB']),consequent=lever['PB'],label='大')# 系统与运行环境初始化
levering_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4])
levering= ctrl.ControlSystemSimulation(levering_ctrl)
# 测试输出
#levering.input['temperature'] = 25
#levering.input['smog'] = 500
#levering.compute()
#print (levering.output['lever'])
#lever.view(sim=levering)
#plt.show()
# 仿真结果3D图输出,使用下列代码时请注释掉上面的测试输出
upsampled1 = np.linspace(0, 51, 51)#这里的范围不能错
upsampled2 = np.linspace(0, 1500, 1500)
x, y= np.meshgrid(upsampled1, upsampled2)#生成网格点坐标矩阵
z = np.zeros_like(x)
##tipping.input['angle'] = 0
##tipping.input['distance'] = 0
##tipping.compute()
##print (tipping.output['out'])
#out.view(sim=tipping)
pp=[]
for i in range(0,1500):for j in range(0,51):levering.input['temperature']=x[i,j]levering.input['smog'] = y[i,j]levering.compute()z[i, j] = levering.output['lever']
# pp.append(z[i,j])
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 10)) #定义画布大小
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='viridis',linewidth=0.4, antialiased=True)
#cset = ax.contourf(x, y, z, zdir='z', offset=-2.5, cmap='viridis', alpha=0.5)
#cset = ax.contourf(x, y, z, zdir='x', offset=3, cmap='viridis', alpha=0.5)
#cset = ax.contourf(x, y, z, zdir='y', offset=3, cmap='viridis', alpha=0.5)
ax.view_init(30, 200)#设置观察角度plt.show()

本文用的matlab版本为R2018a

首先我们在matlab的命令窗口输入fuzzy,回车。

可在此添加输入或输出,双击图像可设置对应的隶属度函数

选择view rules,得到图5,选择view,surface,得到图6

根据程序运行时间来看,matlab是优于python的。python最后呈现3D图像是执行了For循环,

1500*50=75000次,我的电脑运行需要十分钟,但是matlab瞬间就运行结束。

最近发现使用python自带的一些库运行后得到的结果并不是很精准。

我使用自己写的详细代码和调用库得到的结果有些不一样。

python基于模糊推理的智能家居安防系统设计相关推荐

  1. 基于CAN总线的家居安防系统设计

    现在,人们对工作和生活环境不仅要求舒适健康.可靠便利,而且更加看重安全性,并利用安防系统来提高家庭抵御各种意外情况的能力.现在的安防系统可借助计算机技术.IC卡技术.通信技术等来实现-- 1引言 现在 ...

  2. 智能家居安防系统设计--期末作业

    1.系统技术简介 1.1 zigbee网络 无线传感器网络是集信息采集.信息传输.信息处理于一体的综合智能信息系统,具有低成本.低功耗.低数据速率.自组织网络等特点.而Zigbee技术是为低速率传感器 ...

  3. 基于51单片机的智能家居安防系统(程序+仿真+PCB)

    @TOC 一.基于51单片机的智能家居安防系统 1.主要功能 通过人体红外检测模块.光敏传感器.蜂鸣器.继电器模块模拟智能家居安防功能. 2.实验结果 3.实验仿真 4.程序源码 /********* ...

  4. 单片机反相器_基于AT89S52单片机的新型智能家居安防系统

    现在,人们对工作和生活环境不仅要求舒适健康.可靠便利,而且更加看重安全性,并利用安防系统来提高家庭抵御各种意外情况的能力.现在的安防系统可借助计算机技术.IC 卡技术.通信技术等来实现,CAN总线应用 ...

  5. 浅谈智能家居安防监控的重要性

    2019独角兽企业重金招聘Python工程师标准>>> 智能家居监控安防有多重要?有些人将之比作保险,认为出事了有用,没出事则无用武之地,而这种想法也常会形成一个错误的逻辑:家里一般 ...

  6. 万物互联时代,智能家居安防的核心是什么?

    21世纪是信息的时代,网络.微电子.光电.通信等高新技术飞速发展,安防系统也随着信息技术及整个信息产业的发展浪潮,由原来的模拟产品逐步过渡到数字化.网络化.智能化监控产品.与此同时,人民生活水平的提高 ...

  7. ZigBee智能家居安防硬件设计

    0 引 言 在信息产业快速发展的今天,嵌入式设备已经深入到了人类生活的各个方面,智能设备更是成为了人们日常生活中不可或缺的一部分.随着能源的日渐消耗,环保节能刻不容缓. 因此,在现在和未来的家居生活环 ...

  8. 打造智能家居安防系统 七个选购常识你需懂

    公安部统计,每年因入室盗窃造成的家庭损失高达11300亿元,特别是随着拆围墙.建开放型社区政策执行之后,社区盗窃偷盗机率将会暴增,城市家庭安防的需求会更加旺盛.近年来,住宅智能家居安防系统,已成为开发 ...

  9. c语言智能家居安防系统,智能家居之安防智能控制系统

    家是我们的避风港湾,家里藏着的都是我们生命里所有最宝贵的东西.所以家应该是温馨的,温暖的更应该是安全的.最近新出了一部电影<找到你>讲述的是姚晨主演的主角孩子在家里失踪的故事.孩子在家里失 ...

最新文章

  1. PHP7.0 Window10 Redis安装教程
  2. linux音频时钟bclk,linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系
  3. TCP socket和web socket的区别
  4. FZU 1914 Funny Positive Sequence
  5. java 推送消息页面_Notification API,为你的网页添加桌面通知推送
  6. 苹果app商品定价_App Store 即将进行价格调整
  7. MySQL 过滤重复数据
  8. 那一天我们许下约定(组合数学,DP)
  9. 0004-程序流程2之ui-router大意
  10. sql添加约束相关示例
  11. [转载]MyISAM InnoDB 区别
  12. Mac版微信支持朋友圈了!微信内测版体验感
  13. Mybatis——动态SQL实现数据的增删改查
  14. 【转】如何理解NPV与IRR的区别??
  15. 微信小程序demo(新闻类)
  16. mysql 测试数据生成器_8个免费的测试数据/样本数据生成器
  17. iphone8强制重启进入恢复模式进入DFU模式[2021-11-05]
  18. 万历名士袁宏道的自在人生——独抒性灵,不拘格套
  19. 软件工程保研浙江大学、南京大学、同济大学、中山大学经验分享
  20. PHPCMS推荐位图片频道首页焦点图

热门文章

  1. EBS:AP_CHECKRUN_CONC_PROCESSES_ALL
  2. 计算机领域经典故事,[转载]计算机的工作原理(1):一个经典的故事
  3. 基于Springboot+mysql的闲置二手交易网站系统设计
  4. 五子棋Pro-最好玩的五子棋游戏
  5. winform窗体的键盘基本控制
  6. 连接器缓解安装困难,节省LED照明设计的空间
  7. python文件有几种类型、分别是什么_4. 内置类型
  8. RFID射频技术基本原理与射频技术中的基本单位
  9. 解忧杂货店 --- 东野圭吾
  10. 窄带物联网技术(NB-IoT)在智慧消防建设方面的应用