【人工智能II】洗衣机控制的模糊推理模型
参考学习博客:模糊推理模型----模糊控制洗衣机(人工智能课后作业)
python代码:
'''
洗涤时间范围【0,60】,污浊度以及油渍的范围【0,100】
输入:污浊度 Stain(SD、MD。LD) 油脂度 Oil(N、M、L)
输出:洗涤时间 time(VS、S、M、L、VL)
'''OIL = 100.0
Stain = 100.0'''
创建结构体elem
'''
class Myclass(object):class Struct(object):def __init__(self, oil, stain, result):self.oil = oilself.stain = stainself.result = resultdef makestruct(self, oil, stain, result):return self.Struct(oil, stain, result)'''
计算污浊度:1 表示 SD,2 表示 MD,3 表示 LD
'''
def ruleMD(stain):if stain < 0 or stain > 100.0:return 0.0else:if stain >= 0 and stain <= 50.0:return stain / 50.0else:return (100.0 - stain) / 50.0def ruleSD(stain):# SD的部分结果,当输入参数在0和50之间时使用result = (50.0 - stain) / 50.0returnMDresult = ruleMD(stain)# 与MD的值进行比较,相同则返回SD;否则,就取大值if result < returnMDresult:return 2.0else:return 1.0def ruleLD(stain):# LD的部分结果,当输入参数在0和50之间使用returnMDresult = ruleMD(stain)result = (stain - 50.0) / 50.0# 结果与MD的结果进行对比,得出最准确的值if returnMDresult > result:return 2.0else:return 3.0'''
计算油脂度:1 表示 N,2 表示 M,3 表示 L
'''
def ruleM(oil):if oil < 0 or oil > 100.0:return 0else:if oil >=0 and oil <=50.0:return oil / 50.0else:return (100.0 - oil) / 50.0def ruleN(oil):if oil < 0 or oil > 100.0:return 0else:# N的部分结果,当输入参数在0和50之间使用result = (50.0 - oil) / 50.0returnMresult = ruleM(oil)# 与M相比,相同则返回N;否则就返回值大的一个if result < returnMresult:return 2.0else:return 1.0def ruleL(oil):returnMresult = ruleM(oil)result = (oil - 50.0) / 50.0if result < returnMresult:return 2.0else:return 3.0'''
总函数计算,计算洗涤时长并输出:
VS: SD N
S: MD N
M: SD M MD M LD N
L: SD L MD L LD M
VL: LD L
'''
def f(oil, stain):if oil < 0 or oil > OIL or stain < 0 or stain > Stain:return 0else:# 根据参数大小,计算结果if oil >=0 and oil <= 50:resultG = ruleN(oil)else:resultG = ruleL(oil)if stain >= 0 and stain <= 50:resultD = ruleSD(stain)else:resultD = ruleLD(stain)# 最后结果# VSif resultD == 1.0 and resultG == 1.0:return 1# Selif resultG == 1.0 and resultD == 2.0:return 2# Melif (resultD == 1.0 and resultG == 2.0) or (resultD == 2.0 and resultG == 2.0) or (resultD == 3.0 and resultG == 1.0):return 3# Lelif (resultD == 1.0 and resultG == 3.0) or (resultD == 2.0 and resultG == 3.0) or (resultD == 3.0 and resultG == 2.0):return 4# VLelif resultG == 3.0 and resultD == 3.0:return 5'''
主函数
'''
if __name__ == '__main__':print("油脂度")oilreal = float(input())print(("污浊度"))stainreal = float(input())myclass = Myclass()elem = myclass.makestruct(oilreal, stainreal, 0)elem.result = f(elem.oil, elem.stain)#print("污浊度:" + elem.stain + "油脂度:" + elem.oil)if elem.result == 1:print("VS")elif elem.result == 2:print("S")elif elem.result == 3:print("M")elif elem.result == 4:print("L")elif elem.result == 5:print("VL")
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
