python实现模糊洗衣机

  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:
            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]	

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#绘制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
  • 11
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
随着家电的智能化趋势,现在的洗衣机已经不再是用简单的机械控制,而是通过计算机实现程序控制智能调节。其中Python语言作为一种高级语言,可以编写程序简单、灵活方便,广泛应用于各类智能家居设备的控制中。 模糊控制是洗衣机控制中的一种控制方式,其思想是通过建立输入量与输出量的模糊关系,利用模糊逻辑来实现控制器的智能调节。实现模糊控制洗衣机代码,程序主要分五个部分:输入变量的定义、模糊控制规则的设定、输出变量的定义、模糊综合与清洗时间的计算和输出量的调整。 首先,输入变量包括洗衣量和衣物类型,可以通过计算机的传感器获取相应的参数,定义其模糊集合,包括大容量、中容量、小容量、毛衣、裤子、衬衫等类型。其次,模糊控制规则的设定是实现模糊控制的关键,根据部分经验和理论知识,定义一系列模糊控制规则,根据输入变量值的不同分别进行调节。输出变量可以是洗衣时间或清洗强度等,再定义其模糊集合后可以通过综合输出量的方式计算得到一个最终的输出变量。 最后,根据输出变量的取值来调整洗涤过程,如调整水位、洗涤时间、筒速等,保证洗衣效果的最佳。实现模糊控制洗衣机代码不仅可以提高洗涤效果,还可以达到节能、环保的目的。虽然Python作为一种高级语言,可以方便开发者编写程序,但实际应用中依然需要深入的理论知识和经验积累,以便准确、高效地实现模糊控制的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值