人工智能动物识别系统 实验报告

更新时间:2023-09-28 23:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人工智能导论 实验报告

题 目 动物识别专家系统 学 院 信息科学与工程学院 专 业 计算机科学与技术 姓 名 侯立军 学 号 20131222036 班 级 计信1301

二O一五 年 十一 月 二十六 日

1 设计内容

题目:动物识别专家系统

内容:动物识别专家系统是流行的专家系统实验模型,他用产生是规则来表示知识可以识别不同的动物。这些规则既少又简单,可以改造他们,也可以加入新的规则,还可以用来识别其他新规则来取代这些规则。

2 基本原理

2.1 产生式系统的问题求解基本过程:

(1) 初始化综合数据库,即把欲解决问题的已知事实送入综合数据库中; (2) 检查规则库中是否有未使用过的规则,若无转 (7);

(3) 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事 实相匹配的规则,若有,形成当前可用规则集;否则转(6);

(4) 按照冲突消解策略,从当前可用规则集中选择一个规则执行,并对该规则作上标记。把执行该规则后所得到的结论作为新的事实放入综合数据库;如果该规则的结论是一些操作,则执行这些操作;

(5) 检查综合数据库中是否包含了该问题的解,若已包含,说明解已求出,问题求解过程结束;否则,转(2);

(6) 当规则库中还有未使用规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转(2);否则,执行下一步;

(7) 若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。

2.2 正向推理

正向推理是以已知事实作为出发点的一种推理,又称数据驱动推理、前向链推理及前件推理等。

2.2.1 正向推理的基本思想:

从用户提供的初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS,然后按某种冲突消解策略从KS中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再

1

无可适用的知识为止。

2.3 反向推理

逆向推理是以某个假设目标作为出发点的一种推理,又称为目标驱动推理、逆向链推理及后件推理等。 2.2.1 反向推理的基本思想:

首先选定一个假设目标,然后寻找支持该假设的证据,若所需的证据都能找到,则说明原假设成立;若无论如何都找不到所需证据,说明原假设不成立,此时需要另作新的假设。

3 系统模块

struct cause_type{

char * cause; /* 事实字符串指针 */

struct cause_type * next; /* 指向下一个节点 */ };

struct rule_type{

};

void freeKB(struct rule_type *);/* 释放规则链表子程序 */ void freeDB(struct cause_type *);/* 释放事实链表子程序 */ int FindCause(char *);/* 查证事实是否已知子程序 */ void markKB(); /* 标记结论性规则子程序 */ void creatKB();/* 创建知识库的子程序 */ void inputDB();/* 输入已知事实的子程序 */ void think();/* 推理机子程序 */ void explain(); /* 解释子程序 */ 主函数:void main() {

char * result; /* 结论字符串指针 */ int lastflag; /* 结论规则标志 */ struct cause_type * cause_chain;/* 事实链表指针 */ struct rule_type * next; /* 指向下一个节点出*/

2

struct rule_type *rpp; struct cause_type *cpp; creatKB(); markKB(); getchar();

inputDB();

rpp=KnowledgeBase; think(); while(rpp)

{ printf(\ printf(\ cpp=rpp->cause_chain; while(cpp){

printf(\ cpp=cpp->next; printf(\ rpp=rpp->next; }

explain(); }

4 主要框图

判断是否存在知识库 是 否 输入已知条件 输入规则创建知识 查找规则 成功查找 查找失败

添加规则

输出结果 分析结果

3

5 各模块的设计思路 5.1 创建知识库

creatKB():首先判断是否存在知识库,若存在继续执行,若不存在则提示输入规则,创建知识库,将建立的知识库以文件的形式保存在d:\\\\rule.dat中。 5.2 输入已知事实

inputDB():用户按顺序输入已知的事实,判断是否充分,进行标记。

5.3 推理

think():对输入的已知事实进行推理,从已知事实出发,通过规则库求得结论。

5.4 解释

explain():对推理结果进行解释,显示解释的过程。

6 界面设计

输入规则:

4

本文来源:https://www.bwwdw.com/article/uujd.html

Top