1. 使用python设计并实现一个洗衣机模糊推理系统实验。

已知人的操作经验是:

污泥越多,油脂越多,洗涤时间越长

污泥适中,油脂适中,洗涤时间适中

污泥越少,油脂越少,洗涤时间越短

洗衣机的模糊控制规则如表1所示:

表1 洗衣机的模糊控制规则表

污泥油脂 NG(无油脂) MG(中等油脂) LG(油脂多)
SD(污泥少) VS M L
MD(中等污泥) S M L
LD(污泥多) M L VL

其中SD(污泥少)、MD(污泥中)、LD(污泥多)、NG油脂少、MG油脂中、LG油脂多、VS洗涤时间很短、S洗涤时间短、M洗涤时间中等、L洗涤时间长、VL洗涤时间很长。

(1)假设污泥、油脂、洗涤时间的论域分别为[0,100] [0,100] [0,120],设计相应的模糊推理系统,给出输入、输出语言变量的隶属函数图,模糊控制规则表和推论结果立体图。

(2)假定当前传感器测得的信息为污泥=60,油脂=70,采用模糊决策,给出模糊推理结果,并观察模糊推理的动态仿真环境,给出其动态仿真环境图。

import numpy as np
import skfuzzy as fuzz
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from skfuzzy import control as ctrl#定义输入输出的取值范围
#  污泥和油脂范围为[0,100]
#  洗涤时间范围为[0,120]
x_stain = np.arange(0, 101, 1)
x_oil = np.arange(0, 101, 1)
x_time = np.arange(0, 121, 1)
# 定义模糊控制变量
stain = ctrl.Antecedent(x_stain, 'stain')
oil = ctrl.Antecedent(x_oil, 'oil')
time = ctrl.Consequent(x_time, 'time')
# 生成模糊隶属函数
#函数中的三元变量,第一个代表折线的起点,第二是最大值,第三是终点
stain['SD'] = fuzz.trimf(x_stain, [0, 0, 50])  #定义污渍的三角隶属度函数横坐标
stain['MD'] = fuzz.trimf(x_stain, [0, 50, 100])
stain['LD'] = fuzz.trimf(x_stain, [50, 100, 100])
oil['NG'] = fuzz.trimf(x_oil, [0, 0, 50]) #定义油污的三角隶属度函数横坐标
oil['MG'] = fuzz.trimf(x_oil, [0, 50, 100])
oil['LG'] = fuzz.trimf(x_oil, [50, 100, 100])
time['VS'] = fuzz.trimf(x_time, [0, 0, 20]) #定义洗涤时间的三角隶属度函数横坐标
time['S'] = fuzz.trimf(x_time, [0, 20, 50])
time['M'] = fuzz.trimf(x_time, [20, 50, 80])
time['L'] = fuzz.trimf(x_time, [50, 80, 120])
time['VL'] = fuzz.trimf(x_time, [80, 120, 120])#采用解模糊方法——质心解模糊方式
time.defuzzify_method='centroid'#规则
rule1=ctrl.Rule(antecedent=((stain['SD'] & oil['NG'])),consequent=time['VS'],label='time=VS')
rule2=ctrl.Rule(antecedent=((stain['SD'] & oil['MG'])|(stain['MD'] & oil['MG'])|(stain['LD'] & oil['NG'])),consequent=time['M'],label='time=M')
rule3=ctrl.Rule(antecedent=((stain['SD'] & oil['LG'])|(stain['MD'] & oil['LG'])|(stain['LD'] & oil['MG'])),consequent=time['L'],label='time=L')
rule4=ctrl.Rule(antecedent=((stain['MD'] & oil['NG'])),consequent=time['S'],label='time=S')
rule5=ctrl.Rule(antecedent=((stain['LD'] & oil['LG'])),consequent=time['VL'],label='time=VL')# 系统和运行环境初始化
rule=[rule1, rule2, rule3,rule4,rule5]
time_ctrl = ctrl.ControlSystem(rule)
wash_time = ctrl.ControlSystemSimulation(time_ctrl)
#规则中带一些奇怪的规则,处理后输出
for i in range(len(rule)):print("rule",i,end=":")for item in str(rule[i]):if(item!='\n'):print(item,end="")else:breakprint('\t')
#画图
stain.view()
oil.view()
time.view()
#time.view()
plt.show()
rule 0:IF stain[SD] AND oil[NG] THEN time[VS]
rule 1:IF ((stain[SD] AND oil[MG]) OR (stain[MD] AND oil[MG])) OR (stain[LD] AND oil[NG]) THEN time[M]
rule 2:IF ((stain[SD] AND oil[LG]) OR (stain[MD] AND oil[LG])) OR (stain[LD] AND oil[MG]) THEN time[L]
rule 3:IF stain[MD] AND oil[NG] THEN time[S]
rule 4:IF stain[LD] AND oil[LG] THEN time[VL]

#绘制3D图
upsampled=np.linspace(0,101,21)#步距参数
x,y=np.meshgrid(upsampled,upsampled)
z=np.zeros_like(x)
pp=[]
for i in range(0,21):for j in range(0,21):wash_time.input['stain']=x[i,j]wash_time.input['oil']=y[i,j]wash_time.compute()z[i,j]=wash_time.output['time']pp.append(z[i,j])
print('max:',max(pp))
print('min:',min(pp))
max: 106.66666666666666
min: 6.666666666666667

from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure(figsize=(8,8))#画布大小
ax=fig.add_subplot(111,projection='3d')
surf=ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap='viridis',linewidth=0.1,antialiased=True)
ax.view_init(30,250)#观察角度
plt.title('3D results')
ax.set_xlabel('stain')
ax.set_ylabel('oil')
ax.set_zlabel('time')
plt.show()
#输入输出
p=60#污渍的值
q=70#油污的值
wash_time.input['stain'] = int(p)
wash_time.input['oil'] = int(q)
wash_time.compute()
print ("洗涤时间为:",wash_time.output['time'])
洗涤时间为: 67.21682847896444

python实现模糊洗衣机相关推荐

  1. python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例

    本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...

  2. Python字符串模糊匹配库FuzzyWuzzy

    Python字符串模糊匹配库FuzzyWuzzy 在计算机科学中,字符串模糊匹配(fuzzy string matching)是一种近似地(而不是精确地)查找与模式匹配的字符串的技术.换句话说,字符串 ...

  3. 聚类算法及python实现——模糊C均值(FCM)

    聚类算法及python实现--模糊C均值(FCM) 模糊C和K均值的区别 K均值:硬聚类,隶属度只有0和1,基于"类内误差平方和最小化"原则 模糊C:模糊聚类,隶属度取值为[0,1 ...

  4. Matlab语言实现模糊洗衣机控制器的设计

    目录 1 引入 2 模糊洗衣机内部结构 3 模糊控制洗衣机的实现方法 4 实验过程 4.1 定义模糊控制器结构 4.2 定义输入.输出模糊集 4.3 定义隶属函数 4.4 建立模糊控制规则 4.5 模 ...

  5. Python图片模糊过滤器:让模糊变清晰!

    Python图片模糊过滤器:让模糊变清晰! 在图像处理中,模糊图片是一种常见的问题.当我们需要从模糊的图片中提取信息时,模糊会严重影响精度.但是,你不必亲自动手去修复模糊的图片.使用Python的Pi ...

  6. blender python运动模糊 ob对象尺寸

    目录 blender python 获取对象尺寸 blender python 隐藏对象 blender python运动模糊例子 blender python 获取对象尺寸 import bpy# ...

  7. python正则表达式模糊匹配_用python正则表达式编译模糊正则表达式

    当我发现python regex模块可以进行模糊匹配时,我感到非常高兴,因为它似乎是解决我许多问题的简单方法. 但是现在我遇到了一个问题,我没有从文档中找到任何答案. 如何使用新的模糊性值功能将字符串 ...

  8. python数据库模糊查询_python中数据库like模糊查询方式

    python中数据库like模糊查询方式 在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%. 将在Python中执行的sql语句改为: sql = "SELECT * F ...

  9. python数据库模糊查询_原创:Python编写通讯录,支持模糊查询,利用数据库存储...

    1.要求 数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询. 2.实现功能 可通过输入指令进行操作. (1)首先输入"add& ...

最新文章

  1. 【观点】程序员应知——循序渐进
  2. Oracle数据字典
  3. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★
  4. 带你了解无线网络渗透测试——无线网络嗅探工具Kismet
  5. 通过WM_COPYDATA消息完成进程间通信
  6. 如何在ASP.NET Core程序启动时运行异步任务(2)
  7. [FFmpeg] nvidia 加速 ffmpeg
  8. 一个小白对卷积神经网络的理解
  9. java 线程协作 wait(等待)与 notiy(通知)
  10. SQL Server 机考,用T-SQL编写 简单实例
  11. opencv函数速查笔记
  12. 190125每日一句
  13. mysql银行储蓄额度格式_mysql创建表用于银行储蓄系统
  14. win10修改保存的git用户名和密码
  15. [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
  16. Redis docker安装及redis.conf配置文件解析
  17. 【hadoop生态之Hbase】HBASE简介【笔记+代码】
  18. 国际商务英语学习[十七]
  19. 微信公众号用户与网站用户的绑定方案
  20. 导入jar到Maven本地仓库

热门文章

  1. 小蜜蜂轻易破解数学大难题“旅行商问题”
  2. Lpad与Rpad的用法
  3. python列表数字比大小教案_幼儿园大班数学教案:数字比大小
  4. js(es7-es10)特性
  5. 实验五 网络编程与安全 20162304 张浩林
  6. 北风:史上最全wordpress建站攻略,无代码基础也能轻松搞定
  7. 微信模板推送-详情页跳转
  8. Unity实现IOC容器
  9. Form notifyIcon 系统托盘图标闪动 气泡提示 弹窗
  10. DirectSound播放实时音频