人工智能实验报告二 班级:X X X X 姓名:X X X X 学号:X X X X X 一. 实验目的 1. 理解并掌握基于规则系统的表示与推理。 2. 学会编写小型的产生式系统,理解正向推理和反向推理的过3. 程以及两者的差别。 4. 学会设计简单的人机交互界面。 二. 实验预习内容及实验环境: 1. 了解动物识别系统问题; 2. 产生式系统的组成部分,正向推理,逆向推理的算法和产生式系统的类型。 三、实验内容和步骤: 1. 内容:结合第五章内容,以动物识别系统(或货物袋装系统)为例,实现基于规则的系统构造实验。 2. 要求: 1> 结果显示要求 (1) 有若干选择动物特征的选择列表; (2) 表现判断动物时,使用了哪些规则; (3 ) 表现数据库的变化;(正向推理中表现每使用一次规则后,产生新事实。反向推理中表现新的目标事实有哪些需要证明,哪些已经得到证实); (4 ) 显示规则的调用次序; (5 ) 显示最后的结果,包含动物能识别出来和动物不能识别出来两种情况。 (6 ) 至少检查两个例子实现正向推理和反向推理的区别; 老虎的例子如上所示,以下为金钱豹的例子: 正向推理: 反向推理: 2> 指出综合数据库和规则库分别使用哪些函数实现的? 综合数据库和规则库均采用数组完成。其中的综合数据库为一个 string 类型的数组,内容为事实的名称字符串,下标则为该事实的序号。数组长度为 33,表示共有 33 个事实(最后 7 个为动物名称)。代码如下: string facts[factnum]={"有爪","有犬齿","有奶","有毛发","目视前方","吃肉","有蹄","有羽毛","会飞","生蛋","不会飞","黑白色","会游泳","善飞","不怕风浪","长腿","长脖子","有暗斑点","白色","黑色斑点","黑色条纹","黄褐色","食肉动物","鸟","哺乳动物","有蹄动物","老虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","海燕"}; 规则库为一个结构体数组。该结构体由一个 int 型数组(表示前提条件的序号集合)和一个 int 数据(表示由此前提推出的结果)表示。该数组长度为 14,表明有 14 条规则。该规则库在建立时有一个内在要求:前提的规则(子规则)的序号必须在父规则之前。(便于正向推理的实现)代码如下: struct rule { int con[10]; int res; }; Rule rules[rulenum]={{{2,-1},24},{{3,-1},24},{{7,-1},23},{{8,9,-1},23},{{24,0,1,4,-1},22 },{{24,5,-1},22},{{24,6,-1},25},{{22,21,20,-1},26},{{22,...