人工智能动物识别系统 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能导论
实验报告
题目动物识别专家系统
学院信息科学与工程学院
专业计算机科学与技术
姓名侯立军
学号 *********** 班级计信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中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再
无可适用的知识为止。
2.3 反向推理
逆向推理是以某个假设目标作为出发点的一种推理,又称为目标驱动推理、逆向链推理及后件推理等。
2.2.1 反向推理的基本思想:
首先选定一个假设目标,然后寻找支持该假设的证据,若所需的证据都能找到,则说明原假设成立;若无论如何都找不到所需证据,说明原假设不成立,此时需要另作新的假设。
3 系统模块
struct cause_type{
char * cause; /* 事实字符串指针 */
struct cause_type * next; /* 指向下一个节点 */
};
struct rule_type{
char * result; /* 结论字符串指针 */
int lastflag; /* 结论规则标志 */
struct cause_type * cause_chain;/* 事实链表指针 */
struct rule_type * next; /* 指向下一个节点出*/
};
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()
{
struct rule_type *rpp;
struct cause_type *cpp;
creatKB();
markKB();
getchar();
inputDB();
rpp=KnowledgeBase;
think();
while(rpp)
{ printf("result:%s \t",rpp->result);
printf("lastflag:%d \t",rpp->lastflag); cpp=rpp->cause_chain;
while(cpp){
printf("cause:%s \t",cpp->cause);
cpp=cpp->next;
printf("\n"); }
rpp=rpp->next; }
explain(); }
4 主要框图
5 各模块的设计思路
5.1 创建知识库
creatKB():首先判断是否存在知识库,若存在继续执行,若不存在则提示输入规则,创建知识库,将建立的知识库以文件的形式保存在d:\\rule.dat中。5.2 输入已知事实
inputDB():用户按顺序输入已知的事实,判断是否充分,进行标记。
5.3 推理
think():对输入的已知事实进行推理,从已知事实出发,通过规则库求得结论。
5.4 解释
explain():对推理结果进行解释,显示解释的过程。
6 界面设计
输入规则: