实验5:简单恐龙识别系统的产生式推理
实验目的
理解和掌握产生式系统的推理方法,能够编程实现推理机
实验内容
完成实验2的题目中对恐龙类别的推理
实验2:编程实现简单恐龙识别系统的知识表示
参考代码:
'''
简单恐龙识别系统的产生式推理
'''
# python 使用类创建结构体
class MyRules(object):class Struct(object):def __init__(self, count, pre, back,mark):self.count = countself.pre = preself.back = backself.mark=markdef make_rule(self, count, pre, back,mark):return self.Struct(count, pre, back,mark)
myrule = MyRules()#规则库
rules=[myrule.make_rule(3,'晚三叠纪到早侏罗纪&杂食-素食&中等体型','原蜥脚类',0),myrule.make_rule(3,'原蜥脚类&巨型&第一种','板龙',0),myrule.make_rule(2,'原蜥脚类&侏罗纪早期','安琪龙',0),myrule.make_rule(3,'晚三叠世至白垩纪&大型&素食','蜥脚形类',0),myrule.make_rule(4,'头小&脖子长&尾巴长&牙齿成小匙状','蜥脚形类',0),myrule.make_rule(1,'蜥脚形类','蜥脚类',0),myrule.make_rule(1,'原蜥脚类','蜥脚类',0),myrule.make_rule(4,'蜥脚类&产于我国四川、甘肃&晚侏罗纪&由19节颈椎组成的脖子长度约等于体长的一半','马门溪龙',0),myrule.make_rule(2,'蜥脚类&体形最大的陆地动物','易碎双腔龙',0),myrule.make_rule(6,'晚三叠世至白垩纪&肉食性&两足行走&趾端长有锐利的爪子&头部很发达&最聪明','兽脚类',0),myrule.make_rule(1,'嘴里长着匕首或小刀一样的利齿','兽脚类',0),myrule.make_rule(2,'兽脚类&著名代表','暴龙',0),myrule.make_rule(2,'鸟臀类&化石最多的一个类群','鸟脚类',0),myrule.make_rule(1,'化石最多的一个类群','鸟脚类',0),myrule.make_rule(5,'两足行走&下颌骨有单独的前齿骨&牙齿仅生长在颊部&上颌牙齿齿冠向内弯曲&下颌牙齿齿冠向外弯曲','鸟脚类',0),myrule.make_rule(5,'四足行走&下颌骨有单独的前齿骨&牙齿仅生长在颊部&上颌牙齿齿冠向内弯曲&下颌牙齿齿冠向外弯曲','鸟脚类',0),myrule.make_rule(2,'晚三叠纪至白垩纪&全部素食','鸟脚类',0),myrule.make_rule(3,'四足行走&背部具有直立的骨板&尾部有骨质刺棒两对或多对','剑龙类',0),myrule.make_rule(3,'侏罗纪到早白垩纪&全部素食&最先灭亡的一个大类','剑龙类',0),myrule.make_rule(2,'剑龙类&居住在平原上','剑龙',0),myrule.make_rule(2,'剑龙类&被发现于坦桑尼亚','肯氏龙',0),myrule.make_rule(4,'体形低矮粗壮&全身披有骨质甲板&素食&白垩纪早期','甲龙类',0),myrule.make_rule(2,'四足行走&素食','角龙类',0),myrule.make_rule(3,'头骨后部扩大成颈盾&白垩纪晚期&祖先是鹦鹉嘴龙','角龙类',0),myrule.make_rule(6,'头骨肿厚&颥孔封闭&骨盘中耻骨被坐骨排挤&不参与组成腰带&生活在白垩纪&全部素食','肿头龙类',0),
]
cat=24#规则库长度
length=0#事实库长度
f=[]#事实库def check():#查看规则库print('规则库如下:')j=1for i in rules:print(j,'.由',i.pre,'可得',i.back)j=j+1def bianli():#遍历规则,查看每条规则的pre是否都在事实库中,若在,则把规则的back加入事实库中,length+1global lengthfor i in rules:if i.mark == 0: # 未使用preList=i.pre.split('&')a=0for j in preList:#对pre的每一条,遍历f,如果在f中找到,a+1for k in f:if j==k:a=a+1if a==i.count:#规则加入 #如果pre都能找到,则把back加入事实库中,length+1print('加入:',i.back)f.append(i.back)i.mark=1length=length+1def identify():#识别恐龙global lengthnum = length
###########开始#############bianli()###########结束#############for i in f:flag=0if i=='板龙':flag=1print(i)breakelif i=='安琪龙':flag=1print(i)breakelif i=='马门溪龙':flag=1print(i)breakelif i=='易碎双腔龙':flag = 1print(i)breakelif i=='暴龙':flag = 1print(i)breakelif i=='剑龙':flag = 1print(i)breakelif i=='肯氏龙':flag = 1print(i)breakif flag==0:print('没有找到该恐龙')import sys
'''
识别恐龙输入:事实条数 事实(事实之间用&隔开) 例如输入:4 晚三叠纪到早侏罗纪&杂食-素食&中等体型&侏罗纪早期
'''
#输入的运行参数第1、2位为识别恐龙输入
codeIn=sys.stdin.read()
codeInList=codeIn.split()check()length = int(codeInList[0]) # 事实长度
f = codeInList[1].split('&') # 事实库
print('查询:',f)
print('查询结果:')
identify()
系列文章:
实验1:猴子摘香蕉问题的Python编程实现
实验2:编程实现简单恐龙识别系统的知识表示
实验3:搜索算法求解8数码问题
实验4:字句集消解实验
实验5:简单恐龙识别系统的产生式推理
实验6:蚁群算法在TSP问题中的实现
实验7:粒子群优化算法实验
实验8:遗传算法在TSP问题中的实现
实验9:BP神经网络实验
实验5:简单恐龙识别系统的产生式推理相关推荐
- c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告
简单动物识别系统的知识表示实验报告 一. 实验目的: 1. 2. 理解和掌握产生式知识表示方法. 能够用选定的编程语言实现产生式系统的规则库. 二. 实验内容和要求: 1.以动物识别系统的产生式规则为 ...
- 编程实现恐龙识别系统编程表示
要求: 1.以恐龙识别系统产生式规则为例: 2.用python语言建造规则库和综合数据库,并能对它们进行增加,删除和修改操作. 这是一个Python小实验题目,侵删 部分实现比较笨重,如有更好的方法, ...
- 动物识别系统c语言编程,人工智能期末论文-简单动物识别系统的知识表示.doc
简单动物识别系统的知识表示 摘要:动物识别系统是人工智能领域中基础也是非常具有代表性的一个智能系统智能系统最基本的组成部分即知识系统成为了研究热点.本文首先介绍知识系统的基本及作用,以动物识别系统的式 ...
- AI实验-七种动物识别系统
AI-动物识别 优惠券 m.fenfaw.net 一.实验目的 1. 理解产生式系统的结构原理与实际应用. 2. 掌握产生式规则表示及规则库组建的实现方法. 3. 熟悉和掌握产生式系统的运行机制, ...
- 从零使用OpenCV快速实现简单车牌识别系统
这篇文章献给所有第一次听说车牌识别ANPR但需要短时间实现的苦逼同学们. 最近的小学期实训做的是一个车牌识别系统,说实话真不知道学校怎么想的,虽然说图像处理也算的上是数字媒体很重要的一块分支了,但咱这 ...
- 基于OpenCV的简单人脸识别系统
目录 1. 调用库函数 2. 调用摄像头并设置窗口 3. 设置图片正负样本数据集的路径 4. 调用人脸检测器 5. 正负样本载入 6.提取人脸区域 7. 建立LBPH人脸识别模型 8. 实时检测 9. ...
- 产生式推理的简单识别系统
文章目录 前言 一.完成功能 二.设计方案 三.算法原理 四.代码下载地址 前言 大学课程<人工智能>的实验–简单识别系统的产生式推理的代码开源及讲解,如果要识别动物,则增加动物的规则即可 ...
- 动物识别系统 python实现+UI
完整代码在最下方 实验目的 利用动物识别系统来验证基于符号的推理,通过实验理解简单的专家系统所包含的模块:人机结构,知识获取机构,知识库及管理系系统,推理机,解释机构,数据库及管理系统". ...
- 【人工智能】人脸识别系统【实验报告与全部代码】(QDU)
写在前面,防止有傻乎乎的同学直接全文复制出现问题. 说实话,实现的比较水,就是调用了 dlib 库的函数实现的人脸检测和人脸识别: 唯一的难点,也确实比较难,就是实现双线程控制,详见报告: ResNe ...
最新文章
- numpy、matplot、sklearn的安装与使用
- 深入理解向上转型与向下转型
- python PyQt5 QSlider类(滑块)
- 化解三大错误晚餐方式。
- 华为最新开源框架mindspore学习
- pkuseg:一个多领域中文分词工具包
- micropython和python区别-MicroPython与Python速度对比
- openresty入门 方法及指令
- 统一资源定位符(URL)介绍
- 【区块链】——区块链与5G技术的结合
- win10输入法不能切换_Win10升级后中英文输入法无法切换?一个简单设置,10秒轻松搞定...
- strlen函数原理
- 孩子不上学在家玩游戏打骂父母
- Python抓取基金公开信息,从此选基金不再盲目
- 手机加速度传感器在Android横竖屏切换中的应用
- 干货分享 | 天啊撸,有效防止黑客入侵网站的方法居然如此简单
- 励志名言---002
- PHP语法基础1.2
- #2022年合肥市经开区第7届信息学竞赛小学组试题题解#
- Directx 计算着色器(compute shader)