头歌平台-人工智能导论实验(不确定性推理)

 

 

 

 

 

 

 

模糊推理及其应用 


def ruleMD(stain):
    if stain < 0 or stain > 100:
        return 0.0
    else:  # 当传入的参数在0-100之间时,该处有两种情况
        # 计算MD的结果,并且和同参数下的SD结果相比较,得出一个结果
        if stain >= 0 and stain <= 50:
            return stain / 50.0
        else:
            # 同上的操作,得出结果和同参数下的LD相比较
            return (100 - stain) / 50.0


def ruleSD(stain):
    # SD部分的rule
    # 当输入的参数0 <= x <= 50, 执行该方法
    result = (50 - stain) / 50.0
    returnMDresult = ruleMD(stain)
    # 传参数到MD中,计算,并比较
    # 1、相同,则返回结果为SD,2、SD的结果大,则返回SD,3、MD的结果大,则返回MD的返回值
    if result < returnMDresult:
        return 2.0
    else:
        return 1.0


def ruleLD(stain):
    # LD部分的rule
    # 当输入的参数在50 - 100之间时,执行
    result = (stain - 50) / 50
    returnMDresult = ruleMD(stain)
    # 同时将参数传入给MD,同时比较MD方法传回来的参数和该方法求出的值相比较,求出最后的最适合的预测值
    # ********** Begin **********#
    if result < returnMDresult:
        return 2.0
    else:
        return 3.0
    # ********** End **********#


def ruleMG(oil):
    # 当传入的参数在0 - 100之间时,该处有两种情况
    if oil < 0 or oil > 100:
        return 0  # 当在论域之外时,直接返回无结果
    else:
        if oil >= 0 and oil <= 50:
            return oil / 50.0  # 计算MD的结果,并且和同参数下的SD结果相比较,得出一个结果
        else:
            return (100 - oil) / 50  # 同上的操作,得出结果和同参数下的LD相比较


def ruleSG(oil):
    if oil < 0 or oil > 50:
        return 0.0
    else:
        # SG部分的rule
        # 当输入的参数0<=x<=50,执行该方法
        result = (50 - oil) / 50.0
        returnMGresult = ruleMG(oil)
        # 传参数到MD中,计算,并比较
        # 1、相同,则返回结果为SD,2、SD的结果大,则返回SD,3、MD的结果大,则返回MD的返回值
        if result < returnMGresult:
            return 2.0
        else:
            return 1.0


def ruleLG(oil):
    # LD部分的rula
    # 当输入的参数在50 - 100之间时,执行
    # 同时将参数传入给MG,同时比较MG方法传回来的参数和该方法求出的值相比较,求出最后的最适合的预测值
    returnMGresult = ruleMG(oil)
    result = (oil - 50) / 50.0
    # 比较后,得到预测值
    if result < returnMGresult:
        return 2.0
    else:
        return 3.0


# F函数,总的函数,从该函数中分流到rule的三个函数中
def Function(oil, stain):
    # VS: SD, SG
    # S: MD, SG
    # M: SD, MG     MD, MG     LD, SG
    # L: SD, LG     MD,LG     LD,MG
    # XL: LD, LG
    # 根据规则输出最后的洗涤时间
    # 需要客户的正确输入
    # ********** Begin **********#
    if stain >= 0 and stain <= 50:
        result_D = ruleSD(stain)
    else:
        result_D = ruleLD(stain)

    if oil >= 0 and oil <= 50:
        result_G = ruleSG(oil)
    else:
        result_G = ruleLG(oil)
        # ********** End **********#
        # 比较最后的结果,返回结果控制规则表,例如VS在表格中的坐标是(1,1),S的坐标是(2,1)
    if result_D == 1.0 and result_G == 1.0:
        return 1  # return VS
    elif result_G == 1.0 and result_D == 2.0:
        return 2  # return S
    elif (result_D == 1.0 and result_G == 2.0) or (result_G == 2.0 and result_D == 2.0) or (
            result_G == 1.0 and result_D == 3.0):
        return 3  # reutrn M
    elif (result_D == 1.0 and result_G == 3.0) or (result_D == 2.0 and result_G == 3.0) or (
            result_D == 3.0 and result_G == 2.0):
        return 4  # return L
    elif result_G == 3.0 and result_D == 3.0:
        return 5  # return VL

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
产生式推理系统是一种基于人工智能的方法,通过使用产生式规则来进行推理和决策。它可以在特定的领域内模拟人类的推理过程,帮助解决复杂的问题。 使用Python进行开发,我们可以利用Python的强大的数据处理和算法库来实现产生式推理系统。通过使用MySQL作为数据库,我们可以存储和检索大量的数据,提高系统的效率和灵活性。 在开发过程中,我们可以使用Tkinter作为Python的图形用户界面库,使系统具有更好的交互性和可视化效果。通过Tkinter,我们可以设计用户界面,与用户进行交互并展示系统的推理结果。 产生式推理系统的主要工作流程如下: 1. 设计和编写产生式规则:根据具体的问题领域,我们需要定义一系列的产生式规则,规定问题的条件和推理的过程。 2. 数据管理:通过MySQL数据库来管理相关的数据,包括事实、规则和推理结果。 3. 用户交互:使用Tkinter编写用户界面,与用户进行交互,输入问题条件,执行推理操作。 4. 推理过程:根据用户输入的问题条件,系统会根据产生式规则进行推理,逐步得出推理结果。 5. 结果展示:将推理结果以可视化的方式展示给用户,提供准确的信息和解决方案。 通过产生式推理系统,我们可以快速有效地解决特定领域的问题,提供准确的推理结果和解决方案。它可以应用于各个领域,如医疗诊断、智能推荐系统等,帮助人们更好地理解和解决现实生活中的复杂问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值