人工智能作业——python实现洗衣机模糊推理系统实验

  • 实验环境
  • 实验要求
  • 代码
  • 实验结果

书中实验要求用Matlab实现,但是Matlab包太大了,且还需要重新学习Matlab的使用。发现python也可以实现,故使用python完成。

实验环境

python3.6
开发环境Pycharm
需要安装的包:scikit-fuzzy,numpy
cmd命令:pip install scikit-fuzzypip install numpy

实验要求

污泥{SD(污泥少), MD(中等污泥), LD(污泥多)}
油脂{NG(无油脂), MG(中等油脂), LG(油脂多)}
洗涤时间{VS(很短), S(短), M(中等), L(长), VL(很长)}输入是污泥和油脂,论域:[0, 100]
输出是洗衣机的洗涤时间,论域:[0, 120]

代码

import numpy as np
import skfuzzy as fuzz
import matplotlib.pyplot as plt
from skfuzzy import control as ctrl#  污泥和油脂范围为[0,100]
#  洗涤时间范围为[0,120]
x_stain = np.arange(0, 110, 10)
x_oil = np.arange(0, 110, 10)
x_time = np.arange(0, 130, 10)
# 定义模糊控制变量
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')
#输入输出
print("\n请输入污渍和油污的值")
p=input("污渍的值:")
q=input("油污的值:")
wash_time.input['stain'] = int(p)
wash_time.input['oil'] = int(q)
wash_time.compute()
print ("洗涤时间为:",wash_time.output['time'])#画图
stain.view()
oil.view()
time.view()
#time.view()
plt.show()

实验结果




参考:
链接: https://blog.csdn.net/dcyywin8/article/details/103460871.
官方库的介绍: https://pythonhosted.org/scikit-fuzzy/auto_examples/index.html.

人工智能作业——python实现洗衣机模糊推理系统实验相关推荐

  1. 人工智能基础 | Python实现 洗衣机模糊推理系统

    运行环境 Pycharm + Anaconda3 已知一组污泥和油脂两个参数的模糊集合,以及对应的洗涤时间推理的结果. 现再给出一组污泥和油脂的模糊集合,进行模糊推理,推出洗涤时间的模糊集合. 最后进 ...

  2. 人工智能洗衣机模糊推理系统实验(课本实验)

    一.实验目的 理解模糊逻辑推理的原理及特点,熟练应用模糊推理 二.实验内容 用python设计洗衣机洗涤时间的模糊控制 三.实验要求 已知人的操作经验是 污泥越多,油脂越多,洗涤时间越长 污泥适中,油 ...

  3. 汽车模糊推理系统实验

    本实验代码可以通过面包多购买或者关注公众号免费获取.扫码关注回复"模糊汽车"即可获取全部内容! 一.实验目的 理解模糊逻辑推理的原理及特点,熟练应用模糊推理,了解可能性理论. 模糊 ...

  4. python第六周实验_机器学习 | 吴恩达机器学习第六周编程作业(Python版)

    实验指导书    下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...

  5. 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...

    原标题:[报名]人工智能语言Python启蒙课程(五六年级) 7月,图书馆为中低年级的小朋友准备了两期8节课的少儿编程启蒙课程.8月,我们将为小学高年级的学生朋友献上一期人工智能语言Python启蒙公 ...

  6. python智能机器人原理_人工智能和Python是什么关系?详细分析!

    提及到人工智能很多人都会想到Python语言,对于很多人来说Python和人工智能几乎为等号模式,那么Python和人工智能属于什么关系呢?为大家简单的介绍一下. Python是一种计算机程序设计语言 ...

  7. 机器学习 | 吴恩达机器学习第六周编程作业(Python版)

    实验指导书    下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...

  8. 人工智能-作业1:PyTorch实现反向传播

    人工智能-作业1:PyTorch实现反向传播 人工智能-作业1:PyTorch实现反向传播 环境配置: 计算过程 反向传播 PyTorch Autograd自动求导 人工智能-作业1:PyTorch实 ...

  9. 基于自适应神经模糊推理系统的乳腺癌分类

    前言 第三弹分享,本实验设计了一种自适应神经模糊推理系统,用于乳腺癌分类问题. 引言 乳腺癌是女性死亡率第二高的癌症.尽早发现是战胜这种疾病的关键.可以使用一种叫做细针穿刺的技术在早期检测体内的癌细胞 ...

最新文章

  1. tkinter实现弹出输入对话框并获取输入对话框中的值
  2. 在ElasticSearch之下(图解搜索的故事)
  3. mysql 查询后怎么定位列_MySQL如何定位并优化慢查询sql
  4. postgresql数据表增删改:使用pgadmin和SQL的方式实现
  5. python 程序运行插件_如何使Python插件在Pluma中运行?
  6. Android AIDL使用介绍(3) 浅说AIDL背后的Binder
  7. linux下执行scrapy的爬虫定时任务
  8. 【ORACLE 高可用】作业 :配置ORACLE GoldenGate 2
  9. 极点五笔状态栏的隐藏和显示的快捷键
  10. linux-3-which-whoaii-chmod数字法与符号法
  11. 飞龙的程序员书单 – 数据结构、算法
  12. [转] DevExpress GridView 排序状态下新增行不参与排序
  13. cdrx4自动排版步骤_教你用CorelDRAW X4轻松排出干净整齐段落
  14. 计算机上的360云盘派啥用,如何使用360云盘
  15. qq不能远程桌面连接到服务器,win10系统qq无法远程协助的解决办法
  16. 使用OpenVINO实现飞桨版PGNet推理程序
  17. RPM软件包和YUM软件仓库的实例
  18. 两个向量相乘的数值表示和几何表示
  19. Development Build:
  20. CSS简单实现圣杯布局和双飞翼布局

热门文章

  1. ggplot2入门与进阶(上)
  2. 一边学计算机一边上班累的说说,上班累了的心情说说_上班的心情说说精选
  3. Flutter 网络请求 Dio 拦截器详解
  4. CodeIgniter表单验证:从头到尾
  5. Java常见面试题 Java面试必看 (一)
  6. 22届电工类应届毕业生想找工作?赶快点进来看吧!
  7. Mysql之统计函数
  8. DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
  9. Internet of things:是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置
  10. VUE扫码枪中文输入法兼容自动回车事件(上)