首页IT科技人工智能中的生物识别技术(实验二、人工智能:产生式系统(动物识别系统))

人工智能中的生物识别技术(实验二、人工智能:产生式系统(动物识别系统))

时间2025-05-18 13:26:19分类IT科技浏览3863
导读:产生式系统(动物识别系统) 一、相关知识 把一组产生式放在一起,让它们互相配合、协同作用,一个产生式生成的结果可以供另一个产生式作为已知事实使用,以求得问题的解,这样的系统成为产生是系统。...

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

一、相关知识

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

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

本系统为识别虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁等七种动物的产生式系统。 根据这些动物识别的专家知识,建立如下规则库:

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

10

14

0

前提条件为:

有毛发 有蹄 身上有黑色条纹

推理过程如下:

有毛发->是哺乳动物

是哺乳动物,有蹄->是蹄类动物

是蹄类动物,身上有黑色条纹->斑马

所识别的动物为斑马

四、源代码

# 通过传入的列表寻找结果 def find_data(process_data_list): # 依次进行循环查找并对过程排序 for epoch, data_process in enumerate(data_process_list): # 用于判断此过程是否成立 num = 0 for 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)] = result end_result = find_data(process_data_list + [result]) if end_result == 1: return 1 else: return 0 # 存在则直接寻找 else: end_result = find_data(process_data_list) if end_result == 1: return 1 else: return 0 # 找到最终结果,取出结果后返回 else: process = data_process_list.pop(epoch) dict_input[.join(process)] = data_result_list[epoch] return 1 if __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: break if 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]}")

五、实验结果

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
SEO优化方法(如何做好SEO优化)