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

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


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

实验环境

python3.6
开发环境Pycharm
需要安装的包:scikit-fuzzy,numpy
cmd命令:pip install scikit-fuzzy
	     pip 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:
            break
    print('\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语言来设计洗衣机模糊推理系统。通过使用模糊逻辑和模糊规则来模拟洗衣机的洗涤过程。我们可以定义一组输入变量,如衣物污渍程、洗涤剂用量、洗涤时间等,并将其转化为模糊集合。然后,通过设定一组模糊规则,根据输入变量的模糊值来决定洗衣机的运行状态。 下一步,我们可以使用Python模糊推理引擎来进行推理。可以使用模糊控制器来处理输入变量和模糊规则,并根据一定的推理方法计算出洗衣机的输出变量,如洗涤时间、洗涤剂用量等。模糊控制器可以使用Python中的模糊推理库来实现,如scikit-fuzzy等。 最后,我们可以设计一个实验来验证洗衣机模糊推理系统的性能。可以收集一些洗衣机洗涤过程的数据,包括衣物污渍程、洗涤剂用量、洗涤时间和洗净程等。然后,将这些数据输入到洗衣机模糊推理系统中,并与实际洗涤结果进行对比分析。通过比较模糊推理系统的输出结果和实际结果,可以评估系统的推理准确性和洗涤效果。 总之,使用Python设计并实现一个洗衣机模糊推理系统实验可以帮助我们更好地理解洗衣机的工作原理和性能,同时提供了一种精确控制洗涤过程的方法。通过实验验证,我们可以评估模糊推理系统的准确性和可行性,为洗涤过程的自动控制提供参考。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值