python实现模糊洗衣机

news/2025/2/20 14:15:00/
  1. 使用python设计并实现一个洗衣机模糊推理系统实验。

已知人的操作经验是:

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

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

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

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

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

污泥油脂NG(无油脂)MG(中等油脂)LG(油脂多)
SD(污泥少)VSML
MD(中等污泥)SML
LD(污泥多)MLVL

其中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

http://www.ppmy.cn/news/127168.html

相关文章

模糊控制洗衣机MATLAB模型,基于matlab的洗衣机模糊控制仿真

基于matlab的洗衣机模糊控制仿真 基于 Matlab 的洗衣机模糊控制仿真模糊洗衣机是一个多输入多输出的控制系统。在实际中,模糊推理的前件和后件之间的关系对于不同的因素有所不同。例如,肮脏程度和水温可以确定洗涤投放的衣量和洗涤时间,而布…

小天鹅全自动洗衣机的PLC控制

目录 绪论 1 1.可编程序控制技术 2 1.1 PLC的定义及特点 2 1.2 PLC的应用和发展前景 2 1.3 PLC的基本组成及工作原理 3 1.4 PLC的编程语言 5 2. PLC控制系统设计与应用 6 2.1 PLC控制系统设计的基本原则 6 2.2 PLC控制系统设计的基本内容 6 2.3 PLC控制系统设计的一般步骤 7 3.…

全自动洗衣机单片机c语言程序,单片机在全自动洗衣机中的应用实例

全自动洗衣机由洗衣系统和控制电路组成。其控制电路分为机械和电脑型,电脑型控制电路是以单片机作为控制电路的核心。图1给出单片机Z86C09组成的全自动洗衣机的控制电路。 Ⅰ.自动洗衣机的洗衣程序 洗衣机面板上有4个按钮K1、K2、K5和K6。K1用于水流选择,分两档:普通水流和柔…

模糊控制洗衣机c语言程序,以洗衣机模糊控制为例的教学案例设计方法

刘金琨 [摘要]为了突出智能控制教学发展需要,在教学方面需要加大对相关课程案例建设的研究。教师可以以洗衣机模糊控制为例,介绍模糊逻辑控制系统的设计步骤,并通过Matlab仿真分析来加以讲解,深化学生对模糊逻辑控制的理解,提升智能控制课程教学案例建设水平,使学生具备一…

单片机c语言程序开发洗衣机,基于51单片机的洗衣机程序

题目:设置过程,有一个水位选择按键,选择6个水位之一,相应的有六个水位检测点,仿真时用六个开关表示。有一个程序选择按键,选择8个程序之一。一个启动/停止键,按照所选程序自动洗衣。(2)洗衣过程,模拟完成其中两个自动洗衣程序——标准洗和轻柔洗的执行过程。打开进水电…

计算机维修看图,看图学会洗衣机故障分析与维修

二、波轮全自动洗衣机分析与检修 (一)波轮全自动洗衣机的构成 典型的波轮全自动洗衣机由盛水筒、洗衣筒(脱水筒)、波轮、吊杆、水位开关、注水(进水)电磁阀、排水电磁阀(排水泵)、电动机、减速离合器、箱体、箱盖及控制系统等组成,如图13所示。 (二)基本工作原理 波轮全…

洗衣机c语言单片机控制程序,单片机控制洗衣机C程序设计

#include #define waterin P1_6 #define waterout P1_5 #define swim P1_7 bit flag; char Count,t,waterinflag,wateroutflag,swimflag; // 用于中断程序的计数 unsigned char second; void Timeinit(void) {//秒表初始化 Count=0; t=0; second=0; flag=0; // 开定时器1,…

java模拟洗衣机程序,JAVA洗衣机仿真程序实验报告及代码

. 一.实验题目:用java编写洗衣机仿真程序 二.实验目的: 1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程. 2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件 模型等有一定的了…