python实现模糊洗衣机

这篇具有很好参考价值的文章主要介绍了python实现模糊洗衣机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  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:
            break
    print('\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]	

python 模糊控制,python,numpy,开发语言

python 模糊控制,python,numpy,开发语言

python 模糊控制,python,numpy,开发语言

#绘制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

python 模糊控制,python,numpy,开发语言文章来源地址https://www.toymoban.com/news/detail-734149.html

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实现模糊洗衣机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【工控老马】洗衣机PLC程序控制系统设计详解

    摘要 该创新设计主要介绍了全自动洗衣机的工作原理、控制系统的PLC的造型和资源的配置、控制系统程序设计与调试、控制系统PLC程序。根据全自动洗衣机的工作原理,利用可编程控制器PLC实现控制,说明了PLC控制的原理方法,特点及控制洗衣机的特色。通过本系统的设计,

    2024年02月06日
    浏览(71)
  • 基于单片机智能洗衣机设计与实现

      功能介绍 以51单片机作为主控系统; 利用STC89C52单片机进行数据处理;  通过2路继电器分别控制洗衣机进水、出水相关逻辑运算; 采用L298去掉直流电机实现滚筒正反转; 通过单片机进行处理数据,把采集到的数据通过LCD液晶显示; 按键设置模式,定时开启等条件; 三极

    2024年02月15日
    浏览(38)
  • 基于FPGA的洗衣机设计系统

    1.1.1VHDL语言简介 VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计

    2024年04月10日
    浏览(36)
  • FPGA自动洗衣机的设计与验证(Verilog编写)

    目的及要求         1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗 衣45秒,漂洗30 秒,脱水15 秒;         2.用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;         

    2024年02月21日
    浏览(46)
  • 0088-基于单片机的全自动洗衣机仿真设计

    1、采用51/52单片机作为主控芯片; 2、支持四种洗衣(流程)模式:      标准模式:进水-洗涤-排水--进水-漂洗1-排水--进水-漂洗2-排水--脱水;      经济模式:进水-洗涤-排水--进水-漂洗-排水--脱水;      单独洗涤:进水-洗涤-排水;      单独脱水:排水-脱水; 3、支持两

    2024年01月21日
    浏览(50)
  • STM32状态机编程实例——全自动洗衣机(上)

    前面几篇文章,以按键功能,介绍了状态机的原理与按键状态机实例,实现按键单击、双击、长按等状态的检测。 本篇,继续使用状态机编程,来实现一个更有趣的功能——全自动洗衣机。 下面是一个全自动洗衣机的控制面板: 面板上有4个按键: 电源:控制洗衣机通电与

    2024年02月09日
    浏览(42)
  • 仿真设计|基于单片机的全自动洗衣机模拟系统

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 程序(Keil5) 仿真实现(protues8.7) 全部资料 模拟全自动洗衣机工作过程,以电机替代洗衣机电机。 可以显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。显示工作剩余时间(洗衣程序可自定义,时间

    2024年03月13日
    浏览(62)
  • STM32 Proteus仿真全自动洗衣机洗涤脱水-0074

    STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 Proteus 仿真小实验: STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 功能: 硬件组成:STM32F103R6单片机+LCD1602显示器 +L298N驱动电机正反转+蜂鸣器+LED指示灯+多个按键(标准洗,快速洗,单独脱水,水位符合,停止) 1.有3种洗衣模式:标准、

    2024年02月16日
    浏览(40)
  • 【特纳斯电子】基于单片机的智能洗衣机系统设计-实物设计

    资料查找方式: 特纳斯电子(电子校园网):搜索下面编号即可 T6402203M-SW 本设计是基于单片机的智能洗衣机系统设计,主要实现以下功能: 1.大物件洗:主要在单个方向的转动,有更长的时间,一般用在窗帘等大件洗涤物的清洗 2.浸泡洗: 洗涤前,会漫泡一段时间。适合贴身

    2024年03月13日
    浏览(48)
  • 【UML】-- 顺序图练习题含答案(自动售货机、学生选课、提款机、购买地铁票、洗衣机工作)

    根据下面的叙述,绘制一幅关于顾客从自动售货机中购买物品的顺序图。 顾客( User )先向自动售货机的前端( Front )投币; 售货机的识别器( Register )识别钱币; 售货机前端( Front )根据 Register 的识别结果产生商品列表; 顾客选择商品; 前端控制的出货器( Dispense

    2023年04月18日
    浏览(117)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包