一个动物识别专家系统在PROLOG下的实现

更新时间:2023-05-20 09:53:01 阅读量: 实用文档 文档下载

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

人工智能

第18卷第4期

2003年12月成 都 信 息 工 程 学 院 学 报JOURNALOFCHENGDUUNIVERSITYOFINFORMATIONTECHNOLOGYVol.18No.4Dec.2003文章编号:167121742(2003)0420371205

一个动物识别专家系统在PROLOG下的实现

夏明华

(湛江海洋大学电子与信息工程系,广东湛江524005)

摘要:首先扼要分析了专家系统的基本工作原理,然后用PROLOG语言实现了一个简单的动物识别专家系

统。

关 键 词:专家系统;动物识别;PROLOG

中图分类号:TP182   文献标识码:B

1 引言

自1968年E.A.Feigenbaum、C.Djerassi以及J.LeberbergDENDRAL以来,专家系统迅速发展,目前已经成为人工智能中一个最活跃、框图着手,扼要介绍了专家系统的基本工作原理,识别专家系统。

2 2.1 专家系统的定义

尽管专家系统已经得到广泛的应用,但对于究竟什么是专家系统这个问题,目前尚无统一且精确的定义。E.A.Feigenbaum认为“:专家系统是一种智能的计算机程序,运用知识和推理步骤来解决只有专家才能解决的问题。”NilsJ.Nilsson认为“:Allprogramsthatachieveexpert2levelcompetenceinsolvingproblemsbybringtobearabodyofknowledgearecalledknowledge2basedsystemsorexpertsystems.”比较一致的观点是:专家系统是一个具有大量的专门知识,并能够利用这些知识以专家水平去解决该领域中的困难问题的计算机智能程序。

2.2 专家系统的基本工作原理

尽管专家系统有众多类型,名称各异,但基本原理框图一致,如图1所示。

专家系统的核心是知识库和推理机,其基本工作过程为:系统根据知识库中的知识和用户提供的事实进行推理,不断地由已知前提推出一些初步结论,并将这些初步结论作为中间结果存放在数据库中,然后将其作为新的已知事实进行下一步推理,往复循环,逐步逼近求解目标。在这个过程中,系统可以通过人机接口不断地与用户交流,向用户提问,或对用户提出的问题做出解释。

知识库是专家系统的知识存储器,用来存放求解问题的领域知识(包括事实性知识和启发性知识)。常见的知识表示法有:一阶谓词逻辑表示法、产生式规则表示法、语义网络表示法、框架表示法、脚本表示法、过程表示法、状态图表示法、面向对象表示法以及一些不确定知识的表示方法等。

推理机是专家系统中用来实现推理的程序。其主要功能是模拟领域专家的思维过程,控制并执行对问题的求解。它能根据当前已知的事实,利用知识库中的知识,按一定的推理方法和控制策略进行推理,直到得出相应的结论为止。它包括推理方法和控制策略两个部分。推理方法可以采用精确推理或非精确推理。控制策略分为推理策略和搜索策略两个部分,其中,搜索策略是关键,它可以分为非启发式的搜索和启发式搜索,现代主要采用

收稿日期:2003203231;修订日期:2003206211

人工智能

372成 都 信 息 工 程 学 院 学 报            第18卷启发式搜索。

数据库又称为“黑板”或“综合数据库”,它主要用来存储有关领域问题的初始事实、问题描述、推理过程中得到的中间结果以及最终结果等信息。

解释机构由一组程序组成,它能够跟踪并记录推理过程,当用户提出的询问需要给出解释时,它将根据问题的要求做出相应的处理,最后把解答用约定的形式通过人机接口输出给用户。目前,大多数专家系统都采用人机对话的交互式解释方法。

知识获取机构主要实现机器学习。

人机接口是领域专家、知识工程师、一般用户间进行交互的界面,由一组程序及相应的硬件组成,用于完成输入输出工作

1 3 G下的实现

为了更好地阐明专家系统的基本工作原理,我们用PROLOG语言实现一个简单的动物识别专家系统。该系统可以识别老虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁这7种动物。

3.1 知识库

在本系统当中,知识库中的知识用产生式规则来表示。本系统能够识别7种动物,知识库中共有以下15条规则。

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不会飞THEN该动物是鸵鸟

R14 IF该动物是鸟AND会游泳AND不会飞AND 有黑白二色THEN该动物是企鹅

R15 IF该动物是鸟AND善飞 THEN该动物是信天翁

人工智能

第4期        夏明华:一个动物识别专家系统在PROLOG下的实现373在知识库中,并非简单地给每一种动物一条规则。首先,将动物粗略地分为哺乳动物、鸟、肉食动物3大类,然后逐步缩小分类范围,最后给出识别7种动物的规则。图2给出了识别长颈鹿和斑马的推理网络

图2 长颈鹿与斑马的推理网络

3.2 数据库

假设数据库中存放以下事实:动物有暗斑,有长脖子,有长腿,有奶,有蹄。

求解目标:该动物是什么动物?

3.3 推理机

在本系统中,

我们采用正向推理,。

图3 正向推理流程图

3.4 PROLOG源程序

/3下面为谓词说明3/

database

 xpositive(symbol,symbol).

 xnegative(symbol,symbol).

predicates

人工智能

374成 都 信 息 工 程 学 院 学 报            第18卷 run.

 animal-is(symbol).

 it-is(symbol).

 positive(symbol,symbol).

 negative(symbol,symbol).

 clear-facts.

 remember(symbol,symbol).

 ask(symbol,symbol).

/3下面为推理过程3/

clauses

 run:-animal-is(X),!,

(\nYouranimalmaybea(n)” write“,X),

 nl,nl,clear-facts.

(\nUnabletodeterminewhat”), run:-write“

(youranimalis\n\n”),clear-facts. write“

 positive(X,Y):-xpositive(X,Y),!.

 positive(X,Y):-not(xnegative(X,Y))and negative(X,Y):-xnegative(X!.

 negative(X,Y):-,Y).

), ask(X,Y):(X,“,\n”

readln(,

remember(X,Y,Reply).

 remember(X,Y,yes):-assertz(xpositive(X,Y)).

 remember(X,Y,no):-assertz(xnegative(X,Y)),fail.

 clear-facts:-retract(xpositive(-,-)),fail.

 clear-facts:-retract(xnegative(-,-)),fail.

(\n\nPleasepressthespacebartoExit”),readchar(-). clear-facts:-write“

/3下面为推理机提供知识3/

 it-is(mammal):-positive(has,hair).

 it-is(mammal):-positive(does,give-milk).

 it-is(bird):-positive(has,feathers).

 it-is(bird):-positive(does,fly)andpositive(does,lay-eggs).

 it-is(carnivore):-positive(does,eat-meat).

 it-is(carnivore):-positive(has,pointed-teeth)andpositive(has,claws)andpositive(has,forward-eyes). it-is(ungulate):-it-is(mammal)andpositive(has,hooves).

 it-is(ungulate):-it-is(mammal)andpositive(does,chew-cud).

 animal-is(cheetah):-it-is(mammal)andit-is(carnivore)andpositive(has,tawny-color)andpositive(has,black-spots).

 animal-is(tiger):-it-is(mammal)andit-is(carnivore)andpositive(has,tawny-color)andpositive(has,black-stripes).

 animal-is(giraffe):-it-is(ungulate)andpositive(has,long-neck)andpositive(has,long-legs)

 positive(has,dark-spots).

 animal-is(zebra):-it-is(ungulate)andpositive(has,black-stripes).

人工智能

第4期        夏明华:一个动物识别专家系统在PROLOG下的实现375 animal-is(ostrich):-it-is(bird)andpositive(has,long-neck)andpositive(has,long-legs)andnegative(does,fly).

 animal-is(penguin):-it-is(bird)andpositive(does,swim)andnegative(does,fly)andpositive(has,black-and-white-color).

 animal-is(albatross):-it-is(bird)andpositive(does,fly-well).

3.5 推理机的工作过程

首先从规则库中取出第一条规则R1,检查其前提是否可与数据库中的已知事实相匹配。R1的前提是“有毛发”,但事实库中没有这一事实,故匹配失败。接着取规则R2,它的前提可以与事实库中的已知事实“有奶”相匹配,R2被执行,并将其结论“该动物是哺乳动物”作为新的事实加入到数据库中。此时,数据库的内容变为:动物有暗斑,有长脖子,有长腿,有奶,有蹄,是哺乳动物。

再从规则库中取R2,R3,R4,R5,R6进行匹配,结果都匹配失败。接着取R7,其前提与事实库中的已知事实“是哺乳动物”和“有蹄”相匹配,因此R7被执行,并将其结论“该动物是有蹄类动物”作为新的事实加入到数据库中。此时,数据库中内容变为:动物有暗斑,有长脖子,有长腿,有奶,有蹄,是哺乳动物,是有蹄类动物。

最后,规则R8,R9,R10均匹配失败。取R11,其前提“该动物是有蹄类动物AND有长腿AND身上有暗斑点”与事实库中的已知事实相匹配,R11,“长颈鹿”已经是目标集合中的一个结论,即已推出最终结果,4 总结

,。并在此基础上,采用精确推理的方法,运用PROLOG。

参考文献:

[1] NilsJ.Nilsson.ArtificialIntelligenceANewSynthesis[M].北京:机械工业出版社,1999.

[2] 王万森.人工智能原理及其应用[M].北京:电子工业出版社,2000.

[3] 陈慧萍等.人工智能教程[M].北京:电子工业出版社,2001.

[4] 陆汝钤.人工智能(上、下)[M].北京:科学出版社,1995.

[5] 林尧瑞,马少平.人工智能导论[M].北京:清华大学出版社,1989.

[6] 蔡自兴,徐光佑.人工智能及其应用(第二版)[M].北京:清华大学出版社,1996.

[7] 邱建设.TURBOPROLOG程序设计[M].武汉:武汉大学出版社,1989.

[8] 黄可鸣.专家系统[M].南京:东南大学出版社,1991.

[9] 武波,马玉祥.专家系统[M].北京:北京理工大学出版社,2001.

ImplementationofananimalrecognitionexpertsystembyProlog

XIAMing2hua

(Dept.ofElectronics&InformationEngineering,ZJOU,Zhanjiang524004,China)

Abstract:Theprincipleoftheexpertsystemispresented.TheanimalrecognitionexpertsystemisimplementedwiththeprogramminglanguagePROLOG.

Keywords:expertsystem;animalrecognition;PROLOG

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

Top