实验一:产生式系统-动物识别系统_第1页
实验一:产生式系统-动物识别系统_第2页
实验一:产生式系统-动物识别系统_第3页
实验一:产生式系统-动物识别系统_第4页
实验一:产生式系统-动物识别系统_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《人工智能导论》实验报告

实验一:产生式系统

——动物识别系统

一、实验目的

1.掌握知识的产生式表示法

2.掌握用程序设计语言编制智能程序的方法

二、实验内容

所选编程语言:C语言;

2.拟订的规则:

(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(5)(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞旦长腿且长脖子且黑白色,则它是驼鸟。

1、(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

2、(15)若某动物是鸟且善飞,则它是海燕。

设计思路:

用户界面:采用问答形式;

知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物

的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征

得到具体动物;建立知识库的同时也建立了事实库。事实库是一个动态链表,一个事

实是链表的•个结点。知识库通过事实号与事实库发生联系。

3、数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;

4、推理机:采用正向推埋,推理机是动物识别的逻辑控制器,它控制、协调系统的推埋,

并利用知识库中的规则对综合数据库中的数据进行逻辑操作。推理机担负两项基本任

务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方

式和推理顺序。将推理机制同规则对象封装在•起,事实对象记录了当前的状态,规则

对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询

问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则

结论为真,否则系统不知道结论真假。

程序流程图:

程序运行如下:

国"D:\我的文件'学习'文件\AnimalExpert\Debu八AninalExpert.,m

有蹄<Y/N〉?n

犬齿<Y/N〉?n

吃肉<Y/N)?n

能飞<Y/N)?y

下蛋<¥/N>?n

羽毛<Y/N〉?n

有奶<Y/N)?n

毛发<Y/N>?

善飞<Y/N>?y

鸟类<Y/N>?y

Thisis海燕

以老虎,金钱豹,长颈鹿为例画出程序流程图如下:

三、程序编制:

程序包括知识库,数据库:推理机:

#include"Fact.h"

^include"Rule,h”

#include<stdio.h>

fact*Fact;

〃事实集(概念集)

char*str[]={"〃,

〃反刍〃/*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*/,

"\0"

};

〃规则之前件(条件)集:注意与下面对应

intrulep[][6]={

{22,23,12,3,0,0},/木金钱豹30+/{21,23,12,3,0,0},/本老虎29*/

{22,19,20,11,0,0},/*长颈鹿28*/

21,17,0,0,0,0),/*斑马27*/{17,19,20,13,-9,0},/*鸵鸟26*/

{17,18,13,-9,0,0},/*企鹅25*/

{13,16,0,0,0,0},/*海燕24*/{15,0,(),0,0,0},/*哺乳类3*/{14,0,0,0,0,0},

/*哺乳类3*/

{10,0,0,0,0,0},/*鸟类13*/{8,9,0,0,0,0},/*鸟类13*/{3,7,0,0,。,。},

/*食肉类12*/

{3,4,5,6,0,0},/*食肉类12*/{3,2,0,0,0,0},/*有蹄类11*/{3,1,0,0,0,0)

/*有蹄类11*/

};

〃规则之后件•(结论)集,注意与上面对应

intrulcc[]=(

30,29,28,

27,26,25,

24,3,3,

13,13,12,

12,11,11

):〃前7个是要识别的动物

intmain()

{fact*F,*T;

rule*Rule,*R;

charch[8];

inti=l;

Fact=NULL;〃事实链表初始为空

while(strcmp(str[i],"\0")!=0)〃在事实链表中填入事实,注意:前插入

{F=newfact(i,str[i++]);

F->Next=Fact;

Fact=F;

)

F=FdcI,

Fact=NULL;

while(F)

{〃倒转上面前插入的事实链表。invertedtheupperlink

T=F;

F=F->Next;

T->Next=Eact;

Fact=T;

)

ch[O]=*R';ch[l]=,U:;ch[2]=,L*;ch[3]=*E*;ch[41=,_*;ch[5]=,a*;ch[6]=>\0*;

Rule二NULL;〃规则链表初始为空

for(i=0;i<15;i++)//linktherule

(

R=ne\vrule(ch.rulep[i],rulec[i]);

R->Next=Rule;

Rule二R;

ch[5]++;

)

R=Rule:

for(;;)〃开始询问用户。Query

{i=R->Query(Fact);

if((i==l))break;〃如果返回“真”,则推理成功,并可以给出最后专家答

案!

R=R->Next;

if(!R)break;〃所有规则都扫描完,R为空,则退出!

)

if(!R)cout«cndl«z,Idon'tknow";〃所有规则都扫描完的退出,表明无法得

到答案,

cout<<endl«/,Pressanybartoexit!”;

getchar();

ieluxIITrue;

)

五、实验总结

本次识别型专家系统可以采用多种语言编程,如vc,vb,prolog等等,我通过认真阅读

了实验指导书后,选用c语言设计成动物识别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论