Python小实验2—产生式系统实验

1、实验内容

设已知初始事实存放在综合数据库中:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄·推理机构的工作过程:
( 1)从规则库中取出r,检查其前提是否可与综合数据库中的已知事实匹配。匹配失败则r不能被用于推理。然后取r,进行同样的工作。匹配成功则r,被执行·综合数据库:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物
(2)分别用r,r4,rs,r,综合数据库中的已知事实进行匹配,均不成功。r,匹配成功,执行r,。
综合数据库:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物,有蹄类动物
( 3) r.匹配成功,并推出“该动物是长颈鹿”。
在这里插入图片描述
在这里插入图片描述

2、实验目的

1.建立规则库;
2.实现推理,打印推理过程,可文字或画图;
例如:
输入:该动物身上有:暗斑点,长脖子,长腿,奶,蹄输出:前提条件为:
有斑点长脖长腿蹄类产奶
推理过程如下:
产奶->哺乳类
有斑点,有黑色条纹,长脖,蹄类->长颈鹿
所识别的动物为长颈鹿

3、实验思路

1.实验先创建了一个特征数组characteristic ,将特征放进特征数组,方便后面提取特征时对比。
2.定义了一个bf算法BF(s, t)对比特征,可以从一句话里面提取有用的特征。
3.定义了一个描述数组describe 用来存放第二步提取的特征。
4.定义了一个特征搜索函数search(describe),里面包含推理的过程,如果满足某一条条件,就会打印出来。而且在推理过程里面有总结某一个新的特征,也会加到描述数组里面去。
5.最后定义了一个输出结果函数result(describe) 判断最终结果有没有要查找的七种动物,如果有就输出动物名字,没有就输出无法判断是什么动物。

4、源代码


# 特征数组
characteristic = ["毛发","奶","羽毛","会飞","吃肉","犬齿","有爪","眼盯前方","有蹄",
                  "反刍动物","哺乳动物","鸟","善飞","信天翁","食肉动物","黄褐色","暗斑点",
                  "黑色条纹","长腿","长脖子","有蹄类动物","虎","金钱豹","长颈鹿","斑马",
                  "不会飞","黑白二色","会游泳","鸵鸟","企鹅","下蛋"]

# 描述数组
describe = []

def BF(s, t):
    i = 0
    j = 0
    k = 0
    flag = -1
    while (i < len(s) and j < len(t)):

        # 匹配成功
        if (i - k == j) and (j == len(t) - 1) and (s[i] == t[j]):
            flag 
### 关于产生式系统Python实验报告与思考 #### 1. 实验目的 通过构建基于规则的专家系统来模拟决策过程,加深对人工智能领域中产生式系统的理解和应用。利用Python实现一个简单的动物分类器,能够根据给定特征推断出特定种类。 #### 2. 系统结构概述 产生式系统由三部分组成:规则库、综合数据库(工作记忆)、推理机。规则通常表示成IF-THEN的形式;而综合数据库存储当前状态下的所有可用信息;推理机负责控制整个演绎流程并决定何时触发哪条规则[^3]。 #### 3. Python代码示例 下面是一个简化版的产生式系统实现: ```python class Fact: def __init__(self, attributes): self.attributes = set(attributes) def match_rule(facts, rule_conditions): return all(condition in facts for condition in rule_conditions) rules = [ {"conditions": ["has_fur"], "conclusion": "mammal"}, {"conditions": ["eats_meat", "mammal"], "conclusion": "carnivore"}, {"conditions": ["yellowish_brown", "spotted", "carnivore"], "conclusion": "leopard"} ] facts = Fact(["yellowish_brown", "spotted", "eats_meat", "has_fur"]) for rule in rules: if match_rule(facts.attributes, rule["conditions"]): print(f"Rule matched! Adding '{rule['conclusion']}' to the fact base.") facts.attributes.add(rule["conclusion"]) if "leopard" in facts.attributes: print("The animal is identified as a leopard!") ``` 此程序展示了如何定义事实类`Fact`用于保存属性列表,并编写辅助函数`match_rule()`来进行模式匹配操作。随后创建了几条简单规则存入数组`rules[]`内,在循环遍历过程中逐一检验每项条件是否满足现有数据集的要求,一旦符合条件则更新相应的结论至实例变量之中直至得出最终判断结果——金钱豹。 #### 4. 结果分析 上述例子成功演示了一个小型的知识工程案例研究,证明了即使是非常基础版本的人工智能算法也能够在解决实际问题上发挥重要作用。更重要的是,它帮助参与者巩固了对于Python编程技巧以及SQL查询语句的理解,特别是在处理逻辑运算符方面获得了宝贵经验[^1]。 #### 5. 可能存在的挑战与发展方向 尽管本实验已经达到了预期效果,但在真实世界的应用场景下可能会面临更多复杂性和不确定性因素的影响。因此未来可以考虑引入机器学习模型或者神经网络架构进一步提升预测精度;另外还可以尝试优化性能指标比如减少内存占用率提高运行效率等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我没得冰阔落.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值