产生式系统(动物识别系统)

一、相关知识

  • 把一组产生式放在一起,让它们互相配合、协同作用,一个产生式生成的结果可以供另一个产生式作为已知事实使用,以求得问题的解,这样的系统成为产生是系统。

产生式系统的例子:动物识别系统

  • 本系统为识别虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁等七种动物的产生式系统。
  • 根据这些动物识别的专家知识,建立如下规则库:
    r1:IF 该动物有毛发 THEN 该动物是哺乳动物
    r2:IF 该动物有奶 THEN 该动物是哺乳动物
    r3:IF 该动物有羽毛 THEN 该动物是鸟
    r4:IF 该动物会飞 AND 会下蛋 THEN 该动物是鸟
    r5:IF 该动物吃肉 THEN 该动物是肉食动物
    r6:IF 该动物有犬齿 AND 有爪 AND 眼盯前方 THEN 该动物是食肉动物
    r7:IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物
    r8:IF 该动物是哺乳动物 AND 是咀嚼反刍动物 THEN 该动物是有蹄类动物
    r9:IF 该动物是哺乳动物 AND 是食肉动物 AND 是黄褐色 AND 身上有暗斑点 THEN 该动物是金钱豹
    r10:IF 该动物是哺乳动物 AND 是肉食动物 AND 是黄褐色 AND 身上有黑色条纹 THEN 该动物是虎
    r11:IF 该动物是蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是长颈鹿
    r12:IF 该动物是蹄类动物 AND 身上有黑色条纹 THEN 该动物是斑马
    r13:IF 该动物是鸟 AND 有长脖子 AND 有长腿 AND 不会飞 AND 有黑白二色 THEN 该动物是鸵鸟
    r14:IF 该动物是鸟 AND 会游泳 AND 不会飞 AND 有黑白二色 THEN 该动物是企鹅
    r15:IF 该动物是鸟 AND 善飞 THEN 该动物是信天翁

二、实验目的

  1. 根据已知规则建立规则库
  2. 根据输入的规则进行推理
  3. 得到最终结果

三、实验要求

  1. 有推理过程

  2. 对结果进行打印

  3. 若得到最终结果,即虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁等输出,需输出此判断结果。

  4. 例如:
    1
    10
    14
    0
    前提条件为:
    有毛发 有蹄 身上有黑色条纹

    推理过程如下:
    有毛发->是哺乳动物
    是哺乳动物,有蹄->是蹄类动物
    是蹄类动物,身上有黑色条纹->斑马
    所识别的动物为斑马

四、源代码

# 通过传入的列表寻找结果
def find_data(process_data_list):# 依次进行循环查找并对过程排序for epoch, data_process in enumerate(data_process_list):# 用于判断此过程是否成立num = 0for i in process_data_list:if i in data_process:num += 1# 过程成立则数值相同,可以进入下一步if num == len(data_process):# 此过程中结果是否为最终结果,不是将此过程结果加入到过程中if data_result_list[epoch] not in result_list:# 弹出过程和此过程结果,因为此过程已经进行过,此结果存入需要查找的过程中result = data_result_list.pop(epoch)process = data_process_list.pop(epoch)# 判断结果是否已经存在过程中,存在则重新寻找,不存在则加入过程,并将其存入最终结果if result not in process_data_list:dict_input[','.join(process)] = resultend_result = find_data(process_data_list + [result])if end_result == 1:return 1else:return 0# 存在则直接寻找else:end_result = find_data(process_data_list)if end_result == 1:return 1else:return 0# 找到最终结果,取出结果后返回else:process = data_process_list.pop(epoch)dict_input[','.join(process)] = data_result_list[epoch]return 1if __name__ == '__main__':# 用于储存中间过程data_process_list = []# 用于存储过程对应的结果data_result_list = []# 存储用于查询的数据list_data = []# 用于存储输出结果dict_input = {}# 规则库txt = '''有毛发,是哺乳动物
有奶,是哺乳动物
有羽毛,是鸟
会飞,会下蛋,是鸟
吃肉,是肉食动物
有犬齿,有爪,眼盯前方,是食肉动物
是哺乳动物,有蹄,是蹄类动物
是哺乳动物,是咀嚼反刍动物,是蹄类动物
是哺乳动物,是食肉动物,是黄褐色,身上有暗斑点,金钱豹
是哺乳动物,是肉食动物,是黄褐色,身上有黑色条纹,虎
是蹄类动物,有长脖子,有长腿,身上有暗斑点,长颈鹿
是蹄类动物,身上有黑色条纹,斑马
是鸟,有长脖子,有长腿,不会飞,有黑白二色,鸵鸟
是鸟,会游泳,不会飞,有黑白二色,企鹅
是鸟,善飞,信天翁'''# 将数据预处理datas = txt.split('\n')for data in datas:data = data.split(',')data_process_list.append(data[:-1])data_result_list.append(data[-1].replace('\n', ''))# 最终结果列表result_list = ['信天翁', '鸵鸟', '斑马', '长颈鹿', '虎', '金钱豹', '企鹅']# 数据库对应的过程database = {'1': '有毛发', '2': '有奶', '3': '有羽毛', '4': '会飞', '5': '会下蛋', '6': '吃肉', '7': '有犬齿','8': '有爪', '9': '眼盯前方', '10': '有蹄', '11': '是咀嚼反刍动物', '12': '是黄褐色', '13': '身上有暗斑点', '14': '身上有黑色条纹','15': '有长脖子', '16': '有长腿', '17': '不会飞', '18': '会游泳', '19': '有黑白二色', '20': '善飞', '21': '是哺乳动物','22': '是鸟', '23': '是食肉动物', '24': '是蹄类动物', '25': '金钱豹', '26': '虎', '27': '长颈鹿', '28': '斑马','29': '鸵鸟', '30': '企鹅', '31': '信天翁'}# 循环进行输入,直到碰见0后退出while 1:term = input("")if term == '0':breakif database[term] not in list_data:list_data.append(database[term])# 打印前提条件print('前提条件为:')print(' '.join(list_data) + '\n')# 进行递归查找,直到找到最终结果,返回1则找到最终结果end_result=find_data(list_data)if end_result == 1:print('推理过程如下:')# 将结果进行打印for i in dict_input.keys():print(f"{i}->{dict_input[i]}")# 得到最终结果即输出所识别动物if dict_input[i] in result_list:print(f'所识别的动物为{dict_input[i]}')else:# 将结果进行打印for i in dict_input.keys():print(f"{i}->{dict_input[i]}")

五、实验结果

实验二、人工智能:产生式系统(动物识别系统)相关推荐

  1. c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告

    简单动物识别系统的知识表示实验报告 一. 实验目的: 1. 2. 理解和掌握产生式知识表示方法. 能够用选定的编程语言实现产生式系统的规则库. 二. 实验内容和要求: 1.以动物识别系统的产生式规则为 ...

  2. 人工智能实验-动物识别系统

    ** 实验一:产生式系统实验 ** 一.实验目的: 熟悉一阶谓词逻辑和产生式表示法,掌握产生式系统的运行机制,以及基于规则推理的基本方法. 二.实验内容: 设计并编程实现一个小型产生式系统(如分类.诊 ...

  3. 【AI】基于产生式规则的动物识别系统

    产生式系统 --动物识别系统 一.实验目的 二.实验原理 三.算法设计 四.系统代码设计 一.实验目的 [实验内容] 开发一个可以识别虎.金钱豹.斑马.长颈鹿.企鹅.鸵鸟.信天翁等7种动物的产生式系统 ...

  4. 动物识别系统代码python_动物识别 python 人工智能实验

    构建动物识别系统 系统分为两部分,第一部分是初始化综合数据库,分为两类,一类是间接数据库,即不指向最终动物的信息.另一类是直接数据库,即指向最终动物的信息.使用的是二维列表加上一个一维列表存储key与 ...

  5. 人工智能实验:动物识别系统(C++代码实现)

    问题描述 建立一个动物识别系统的规则库,编写程序用以识别虎.豹.斑马.长颈鹿.企鹅.鸵鸟.信天翁等7种动物. 为了识别这些动物,可以根据动物识别的特征,建立包含下述规则库: R1:if 动物有毛发 t ...

  6. AI实验-七种动物识别系统

    AI-动物识别 优惠券 m.fenfaw.net 一.实验目的 1. 理解产生式系统的结构原理与实际应用.  2. 掌握产生式规则表示及规则库组建的实现方法.  3. 熟悉和掌握产生式系统的运行机制, ...

  7. 动物识别系统c语言编程,人工智能期末论文-简单动物识别系统的知识表示.doc

    简单动物识别系统的知识表示 摘要:动物识别系统是人工智能领域中基础也是非常具有代表性的一个智能系统智能系统最基本的组成部分即知识系统成为了研究热点.本文首先介绍知识系统的基本及作用,以动物识别系统的式 ...

  8. 人工智能-动物识别系统

    在本系统当中,知识库中的知识用产生式规则来表示,共有如下15条规则. R1 IF该动物有奶THEN该动物是哺乳动物 R2 IF该动物有毛发THEN该动物是哺乳动物 R3 IF该动物有羽毛THEN该动物 ...

  9. 基于产生式表示的动物识别系统

      实验目的 理解和掌握产生式知识表示方法及产生式系统的基本过程,能够利用编程技术建立一个基于产生式知识表示的简单的智能系统. 例    建立一个动物识别系统的规则库,用以识别虎.豹.斑马.长颈鹿.企 ...

  10. 人工智能导论-动物识别专家系统

    动物识别专家系统实验 这个人工智能导论实验可算是折磨了我许久,关键是我一直想不明白该如何推理. 在某天的晚上,我去对象那里上晚自习,突然灵感大开.由于电脑没有电了,我就手绘了一个系统结构图,并且想到了 ...

最新文章

  1. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
  2. mysql DbProviderFactories.GetFactory失败,解决方法
  3. C++STL的string容器
  4. [html] 你认为一个好的布局应该是什么样的?有哪些需要注意的地方?
  5. 从C# String类理解Unicode(UTF8/UTF16)
  6. 建行计算机招聘考试考什么,银行招聘考试考什么
  7. oracle 查询当年数据_查询ORACLE数据库TOP SQL使用情况
  8. go语言--正则表达式过滤数据--通过文件获取数据
  9. 在centos安装oracle客户端,centos下安装oracle客户端
  10. 基于WIKI中文语料·Word2Vec模型训练·Python
  11. WCG2008科隆总决赛 公开票选你想要的游戏
  12. C语言中文件指针,文件位置指针,详细解析
  13. 9.2 正方形 2711
  14. 小书童开源免费的二维码批量生成工具
  15. 2021年12月电子学会图形化四级编程题解析含答案:棕熊大战
  16. Java 继承思想 及其在 Minecraft mod中相关应用
  17. 回望2022,依然值得仰望星空
  18. 霜语服务器优势服,暴风城都被毛了!魔兽世界“毛人风”所在霜语服务器联盟已经凉凉...
  19. 秋天,小溪潺潺,古老的树上黄叶灿灿,阳光像一个魔法师,在树叶间流动,远山,云天,充满秋阳的光线。以此景观做一首诗...
  20. win7如何更改计算机管理员用户名和密码,win7系统下修改administrator管理员账户密码的设置方法?...

热门文章

  1. matlab K近邻均值平滑滤波,K近邻均值滤波
  2. STC 32位8051单片机开发实例教程 二 I/O工作模式及其配置
  3. Vue中select默认选中下拉选项第一条(举例iview AutoComplete组件)
  4. C++与QT学习路线
  5. 超图(idesktop iserver10) 处理osgb倾斜摄影和tif并 发布 加载 ---2---连续更新
  6. Hadoop之纠删码
  7. 数分下(第2讲):二阶线性微分方程的解法
  8. 四大名著地图上线,邀您一起来体验!
  9. Akash,全球首个去中心化云计算
  10. 遥感图像计算机自动分类原理,遥感原理与应用_第5章_2遥感影像解译-遥感影像计算机自动分类讲义.ppt...