1、人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 人工智能与专家人工智能与专家系统系统第第5 5章章 专家系统专家系统人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 第第5章章 专家系统专家系统 专家系统专家系统(Expert System,ES)是一)是一种模拟人类专家解决领域问题的计算机软种模拟人类专家解决领域问题的计算机软件系统。专家系统内部含有大量的某个领件系统。专家系统内部含有大量的某个领域的专家水平的知识与经验,能够运用人域的专家水平的知识与经验,能够运用人类专家的知识和解决问题的方法进行推理类专
2、家的知识和解决问题的方法进行推理和判断,模拟人类专家的决策过程,来解和判断,模拟人类专家的决策过程,来解决该领域的复杂问题。决该领域的复杂问题。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 第5章 专家系统5.1 专家系统概述专家系统概述5.2 LISP语言语言5.3 知识库与推理机知识库与推理机 5.4 解释机制与解释器解释机制与解释器5.5 知识获取与检测知识获取与检测5.6 专家系统工具专家系统工具人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.1 专家系统概述5.1.1 专家系统研究的意义专家
3、系统研究的意义5.1.2 专家系统的结构与开发方法专家系统的结构与开发方法人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.1.1 专家系统研究的意义专家系统研究的意义1 专家系统研究的意义专家系统研究的意义 (1)专家系统研究是计算机科学的应)专家系统研究是计算机科学的应用和发展的需要用和发展的需要.(2)专家系统为人类保存、传播、使)专家系统为人类保存、传播、使用和评价知识提供了一种有效的手段用和评价知识提供了一种有效的手段.(3)专家系统研究可以产生巨大的经)专家系统研究可以产生巨大的经济效益济效益.人工智能与专家系统人工智能与专家系统(第二
4、版)中国水利水电出版社第二版)中国水利水电出版社 2 专家系统和传统程序的区别专家系统和传统程序的区别 (1)数据结构数据结构+算法算法=程序程序 知识知识+推理推理=系统系统 (2)专家系统解决问题的知识和对知)专家系统解决问题的知识和对知识的处理识的处理(推理机推理机)相分离。相分离。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.1.2 专家系统的结构与开发方法专家系统的结构与开发方法1 专家系统的结构专家系统的结构 知识库知识库以某种存储结构存储领域专家以某种存储结构存储领域专家的知识。的知识。全局数据库全局数据库亦称为亦称为“黑板黑板”
5、,它用于,它用于存存储求解问题的初始数据和推理过程中得到储求解问题的初始数据和推理过程中得到的中间数据,以及最终的推理结论。的中间数据,以及最终的推理结论。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 推理机推理机根据全局数据库的当前内容,从知识根据全局数据库的当前内容,从知识库中选择匹配成功的可用规则,并通过执行可用库中选择匹配成功的可用规则,并通过执行可用规则来修改数据库中的内容,直至推理出来问题规则来修改数据库中的内容,直至推理出来问题的结论。的结论。解释器解释器用用于向用户解释专家系统的行为。于向用户解释专家系统的行为。用户接口用户接口是系
6、统与用户进行对话的界面。是系统与用户进行对话的界面。知识获取模块知识获取模块把知识工程师提供的知识转换把知识工程师提供的知识转换为知识内部表示模式存入知识库中,在知识存储为知识内部表示模式存入知识库中,在知识存储的过程中,对知识进行一致性、完整性检测。的过程中,对知识进行一致性、完整性检测。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 图5.1 专家系统结构框图人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 2 专家系统的一般特点专家系统的一般特点 (1)知识的汇集)知识的汇集 (2)启发性推理)启发性推
7、理 (3)推理和解释的透明性)推理和解释的透明性 (4)知识获取与知识更新)知识获取与知识更新人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 3 专家系统的开发方法专家系统的开发方法 (1)生命周期方法图5.2 专家系统开发过程的瀑布模型人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社(2)快速原型法)快速原型法 快速原型法快速原型法采用增量式开发方法,即采用增量式开发方法,即通过对基本功能的逐步扩大来完善系统。通过对基本功能的逐步扩大来完善系统。演示原型演示原型 研究原型研究原型 领域原型领域原型 产品原型
8、产品原型人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.2 LISP语言5.2.1 LISP语言的特点与表达式语言的特点与表达式5.2.2 LISP语言的基本函数语言的基本函数人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.2.1 LISP语言的特点与表达式语言的特点与表达式1 LISP语言的特点语言的特点 (1)函数性)函数性 (2)递归性)递归性 (3)数据与程序的一致性)数据与程序的一致性 (4)自动进行存储分配)自动进行存储分配 (5)语法简单)语法简单人工智能与专家系统人工智能与专家系统(
9、第二版)中国水利水电出版社第二版)中国水利水电出版社 2 LISP的符号表达式的符号表达式 符号名符号名是以字母开头不含规定的特殊是以字母开头不含规定的特殊字符的字符串,可以把计算或处理后的结字符的字符串,可以把计算或处理后的结果赋给一个符号。果赋给一个符号。数和符号都称为数和符号都称为原子原子。若干个数或符。若干个数或符号用括号括起来就构成一个号用括号括起来就构成一个表表,表中的元,表中的元素用空格分开。没有元素的表称为素用空格分开。没有元素的表称为空表空表,空表可用()表示,也可表示为空表可用()表示,也可表示为nil,空表,空表也是原子。也是原子。人工智能与专家系统人工智能与专家系统(第
10、二版)中国水利水电出版社第二版)中国水利水电出版社 表是可递归定义的,即可用若干个表来表是可递归定义的,即可用若干个表来定义另一个表。定义另一个表。原子和表称为原子和表称为LISP的的符号表达式符号表达式。LISP的符号表达式采用前缀表示形式,的符号表达式采用前缀表示形式,即表中第一个元素是函数符号名,其余的元即表中第一个元素是函数符号名,其余的元素是这个函数要求的运算或处理的元素。素是这个函数要求的运算或处理的元素。符号表达式符号表达式:(setq y (*2 3 4 )人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.2.2 LISP语言的基本
11、函数语言的基本函数1 数值运算函数数值运算函数 (1)算术运算函数)算术运算函数 算术运算函数有:加函数算术运算函数有:加函数+、减函数、减函数-、乘函数乘函数*、除函数、除函数/、加、加1函数函数1+、减、减1函数函数1-等。等。+、-、*、/等函数可对多个数或已经等函数可对多个数或已经赋值的符号进行数值运算。赋值的符号进行数值运算。(2)超越函数)超越函数人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 2 求值与赋值函数求值与赋值函数 (1)禁止求值函数)
12、禁止求值函数 禁止求值函数禁止求值函数quote对指定的表说明表中元素都是数。例如对指定的表说明表中元素都是数。例如(quote (a b c )的返回值是表的返回值是表(a b c)。quote函数的缩写为函数的缩写为“”。(2)赋值函数)赋值函数 赋值函数赋值函数setq用于对变元赋值,对一个变元赋的值可以是一用于对变元赋值,对一个变元赋的值可以是一个数、一个符号表达式、一个表或者另一个变元。个数、一个符号表达式、一个表或者另一个变元。setq函数可函数可以对多个变元依序赋值,例如以对多个变元依序赋值,例如 (setq x (1 2)y x)(3)求值函数)求值函数 函数函数values返
13、回其后各变元的值,函数返回其后各变元的值,函数values-list返回其后一个返回其后一个表的各元素。表的各元素。(values (*2 3)(+4 5)6 9 (values-list(a b c)a b c人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 3 表处理函数表处理函数 (1)取表部分内容的函数)取表部分内容的函数 car函数函数:取表的第一个元素,例如取表的第一个元素,例如(car (a b c)a cdr函数函数:取表中除掉第一个元素的余下表,例如取表中除掉第一个元素的余下表,例如 (cdr (a b c)(b c)函数函数car和
14、和cdr可对一个表连续作用,例如可对一个表连续作用,例如(car(cdr(cdr(cdr (a b c d e f)可表示为可表示为 (cadddr (a b c d e f)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (2)构造表的函数)构造表的函数 cons函数函数:把指定的两个元素构造成一个表,如果第把指定的两个元素构造成一个表,如果第2个元素是一个表,则把第个元素是一个表,则把第1个元素加到第个元素加到第2个元素的表头。个元素的表头。例如例如 (cons a (b c)(a b c)(cons (a b)(c d)(a b)c d)lis
15、t函数函数:把指定的多个元素按顺序构造成一个表。把指定的多个元素按顺序构造成一个表。例如例如(list a b c d)(a b c d)(list (a b)(c d)(a b)(c d)append函数函数:把指定的多个表拼接成一个表。把指定的多个表拼接成一个表。例如例如(append (a b)(c d)(a b c d )人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (3)其他表函数)其他表函数 list-length函数返回指定的一个表的元素个数。函数返回指定的一个表的元素个数。例如例如 (list-length (a (b c)2 me
16、mber函数表达式为函数表达式为 (member item list)如果如果item是表是表list中的一个元素,则中的一个元素,则member返回返回list中从元素中从元素item开始的余下表;否则,返回空表开始的余下表;否则,返回空表(),也即是返回(),也即是返回nil。(member b (a b c d))(b c d)(member (a b)(a b c d)()(member (b c)(a (b c)d)(b c)d)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 4 逻辑函数逻辑函数 (1)数据类型判断函数)数据类型判断函数
17、atom函数函数:判断其后的对象是否是原子,判断其后的对象是否是原子,若是一个原子,则返回若是一个原子,则返回t;否则,返回;否则,返回nil。listp函数函数:判断其后的对象是否是一个判断其后的对象是否是一个表,若是一个表(包括空表),则返回表,若是一个表(包括空表),则返回t;否则;否则,返回,返回nil。null函数函数:判断其后的对象是否是一个空判断其后的对象是否是一个空表,若是一个空表,则返回表,若是一个空表,则返回t;否则,返回;否则,返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 人工智能与专家系统人工智能与专家系统(第二
18、版)中国水利水电出版社第二版)中国水利水电出版社 (2)数的比较函数)数的比较函数 数的比较函数用于比较两个数的大小,有数的比较函数用于比较两个数的大小,有大于比较函数大于比较函数小于比较函数小于比较函数大于等于比较函数大于等于比较函数=小于等于比较函数小于等于比较函数等于比较函数等于比较函数=不等于比较函数不等于比较函数/=若指定的两个数满足函数的比较关系,则返回若指定的两个数满足函数的比较关系,则返回t;否;否则,返回则,返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (3)等值函数)等值函数 数的等于比较函数数的等于比较函数“=”用
19、于比较两个数是否用于比较两个数是否相相等,若要判别两个表或符号是否相等,则要用等等,若要判别两个表或符号是否相等,则要用等值函数值函数equal。(equal (a b c)(a b c)t(equal ()nil)t(equal (a b c)(a (b c)nil人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (4)逻辑运算函数)逻辑运算函数 and 函数函数:当且仅当其各元素的值均当且仅当其各元素的值均为非为非nil,则返回值为,则返回值为t;否则,返回;否则,返回nil。or函数函数:当且仅当其各元素中只要有当且仅当其各元素中只要有一个元素的
20、值为非一个元素的值为非nil,则返回值为,则返回值为t;否;否则,返回则,返回nil。not函数函数:当且仅当其元素的值为当且仅当其元素的值为nil,则返回值为则返回值为t;否则,返回;否则,返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5 条件函数条件函数 (1)if函数函数 if函数的表达式为函数的表达式为 (if test then else)若测试条件表达式若测试条件表达式test的值为非的值为非nil,则对表,则对表达式达式then求值,且求值,且if函数的返回值就是函数的返回值就是then的值;的值;否则,对表达式否则,对表
21、达式else求值并作为求值并作为if函数的返回值,函数的返回值,如果没有如果没有else,则,则if函数返回函数返回nil。if函数表达式中,函数表达式中,else部分是可缺省的。表达部分是可缺省的。表达式中用方括号式中用方括号 括起来的部分表示是可缺省的。括起来的部分表示是可缺省的。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社(2)when函数函数 when函数的表达式为函数的表达式为 (when test form*)其中其中,test为测试条件表达式,为测试条件表达式,form为符号为符号表达式,表达式,form*表示可有多个符号表达式。表示
22、可有多个符号表达式。若若test的值为非的值为非nil,则顺序对多个,则顺序对多个form求值,且以最后一个求值,且以最后一个form的值作为的值作为when函函数的返回值;否则,数的返回值;否则,when函数返回函数返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (3)unless函数函数 unless函数的表达式为函数的表达式为 (unless test form*)若测试条件表达式若测试条件表达式test的值为的值为nil,则顺,则顺序对多个符号表达式序对多个符号表达式form求值,且以最后求值,且以最后一个一个form的值作为的值
23、作为unless函数的返回值;函数的返回值;否则,否则,unless函数返回函数返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (4)cond函数函数 cond函数的表达式为函数的表达式为 (cond (exp11 exp12 )(exp21 exp22 )(expn1 expn2 )cond函数顺序对函数顺序对n个表进行处理,一个表个表进行处理,一个表(expi1 expi2 )称为一个称为一个cond分句分句。每个分句。每个分句中中的第一个元素的第一个元素expi1是这个分句的测试条件表达是这个分句的测试条件表达式,其后各元素是符号表
24、达式。式,其后各元素是符号表达式。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 cond函数顺序计算各分句函数顺序计算各分句expi1的值,若的值,若expi1的值为非的值为非nil,则计算这个分句各表达式的值,且,则计算这个分句各表达式的值,且以最后一个表达式的值作为以最后一个表达式的值作为cond函数的返回值;函数的返回值;若所有分句的条件表达式的值均为若所有分句的条件表达式的值均为nil,则,则cond函函数返回数返回nil。一种特殊情况是:若某个一种特殊情况是:若某个cond分句中只有分句中只有expi1且且expil的值为非的值为非nil
25、,则,则cond函数返回这个函数返回这个expi1的非的非nil值。值。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 6 自定义函数自定义函数 defun自定义函数的表达式为自定义函数的表达式为(defun name lambda-list form*)其中其中 name是新函数的函数名,是新函数的函数名,lambda-list是新函数是新函数name的变量表,的变量表,form*是由多个表达式组成的新函是由多个表达式组成的新函数数name的定义体。的定义体。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社
26、 例例5.15.1 用自定义函数用自定义函数defundefun定义比较函数定义比较函数comparecompare。解:解:可如下定义函数可如下定义函数compare:(defun compare (x y)(cond (=x y)(print“numbers are same”)(x y)(print“fist is bigger”)(t (print“first is smaller”)一个新的函数被定义后就可如同一个新的函数被定义后就可如同LISP的基本的基本函数一样被直接调用。例如函数一样被直接调用。例如(compare (3 5)“first is smaller”人工智能与专家系
27、统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 无名函数无名函数lambda人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 7 结构迭代函数结构迭代函数 do函数的表达式为:函数的表达式为:(do (var1 init1 upd1)(var2 init2 upd2))(condition action1 action2 )form*)(condition action1 action2)是循环是否结束的)是循环是否结束的判判断子句,若断子句,若condition的值为非的值为非nil,则循环结束,并对,则循环结束,并对ac
28、tion1,action2,依序求值,把最后一个表达式依序求值,把最后一个表达式action的的值作为值作为do函数的返回值;否则,执行循环体函数的返回值;否则,执行循环体form*。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 例例5.45.4 用结构迭代方式来定义计算阶乘用结构迭代方式来定义计算阶乘n n!的函数!的函数factorial(factorial(n n)。解解:可如下定义:可如下定义:(defun factorial (n)(do (i 1 (1+i)(result 1)(i n)result)(setq result (*i r
29、esult)调用时,用实参代替函数调用时,用实参代替函数factorial的形参的形参n。例如。例如(factorial 4)24人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 8 非结构迭代函数非结构迭代函数 prog函数的表达式为函数的表达式为 (prog (var1 init1)(var2 init2)exp1 exp2 )在表达式序列在表达式序列exp1,exp2,中可以有中可以有多个表达式含有多个表达式含有go函数表达式,至少有一函数表达式,至少有一个表达式含有个表达式含有return函数表达式。若没有函数表达式。若没有go和和return
30、,则对各表达式顺序求值后退出,则对各表达式顺序求值后退出prog,且函数,且函数prog的返回值为的返回值为nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 go函数的表达式为函数的表达式为(go symbol)在在prog中找名为中找名为symbol的表达式(原的表达式(原子),若未找到,则子),若未找到,则prog函数返回出错信函数返回出错信息;若找到,转到名为息;若找到,转到名为symbol的原子之后的原子之后的表达式继续执行。的表达式继续执行。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 r
31、eturn函数的表达式为函数的表达式为(return form)对对form求值后退出求值后退出prog,且函数,且函数prog的的返回值为返回值为form的值。的值。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.3 知识库与推理机5.3.1 产生式规则与规则库的存储结构产生式规则与规则库的存储结构5.3.2 正向推理机正向推理机5.3.3 反向推理机反向推理机人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.3.1 产生式规则与规则库的存储结构1 产生式规则的存储结构 (F1F2F3)(F4F5)
32、H1H2可等价变换为下述4条规则:R11:F1F2F3 H1 R12:F4F5 H1 R21:F1F2F3 H2 R22:F4F5 H2人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 用与/或图表示规则的事实和结论之间的与或关系:F1F2F3F4F5H2H1图图5.3 产生式规则与产生式规则与/或或图图人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 产生式规则与条件语句之间存在以下根本的区别根本的区别:产生式规则具有自含性。可用规则的执行将取决于产生式系统的冲突消解策略。在LISP中,一条产生式规则的存储结
33、构是一个表:(规则名(规则名 (if(条件(条件1)(条件)(条件2)(条件(条件n)(then(结论(结论1)(结论)(结论2)(结论(结论m)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 2 规则库的存储结构规则库的存储结构 例例5.55.5 建立动物识别专家系统的规则库,规则名分别是rule1,rule2,rule15,规则库的符号名为rules。(setq rules (rule1 (if (animal has hair)若动物有毛发(F1)(then (animal is mammal)则动物是哺乳动物(M1)人工智能与专家系统人工智能
34、与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule2 (if(animal gives milk)若动物有奶(F2)(then(animal is mammal)则动物是哺乳动物(M1)(rule3 (if(animal has feathers)若动物有羽毛(F9)(then(animal is bird)则动物是鸟(M4)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule4 (if(animal flies)若动物会飞(F10)(animal lays eggs)且生蛋(F11)(then(animal is b
35、ird)则动物是鸟(M4)(rule5 (if(animal eats meat)若动物吃肉(F3)(then(animal is carnivore)则动物是食肉动物(M2)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule6 (if(animal has pointed teeth)若动物有犀利牙齿(F4)(animal has claws)且有爪(F5)(animal has forword eyes)且眼向前方(F6)(then(animal is carnivore)则动物是食肉动物(M2)人工智能与专家系统人工智能与专家系统(第二
36、版)中国水利水电出版社第二版)中国水利水电出版社 (rule7 (if(animal is mammal)若动物是哺乳动物(M1)(animal has hoofs)且有蹄(F7)(then(animal is ungulate)则动物是有蹄类动物(M3)(rule8 (if(animal is mammal)若动物是哺乳动物(M1)(animal chews cud)且反刍(F8)(then(animal is ungulate)则动物是有蹄类动物(M3)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule9 (if(animal is ma
37、mmal)若动物是哺乳动物(M1)(animal is carnivore)且是食肉动物(M2)(animal has tawny color)且有黄褐色(F12)(animal has dark sports)且有暗斑点(F13)(then(animal is cheetah)则动物是豹(H1)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社(rule10 (if(animal is mammal)若动物是哺乳动物(M1)(animal is carnivore)且是食肉动物(M2)(animal has tawny color)且有黄褐色(F12)
38、(animal has black stripes)且有黑色条纹(F15)(then(animal is tiger)则动物是虎(H2)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule11 (if(animal is ungulate)若动物是有蹄类动物(M3)(animal has long neck)且有长脖子(F16)(animal has long legs)且有长腿(F14)(animal has dark spots)且有暗斑点(F13)(then(animal is giraffe)则动物是长颈鹿(H3)人工智能与专家系统人工
39、智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社(rule12 (if(animal is ungulate)若动物是有蹄类动物(M3)(animal has black stripes)且有黑色条纹(F15)(then(animal is zebra)则动物是斑马(H4)(rule13 (if(animal is bird)若动物是鸟(M4)(animal does not fly)且不会飞(F17)(animal has long neck)且有长脖子(F16)(animal has long legs)且有长腿(F14)(animal is black and whi
40、te)且有黑白二色(F18)(then(animal is ostrich)则动物是鸵鸟(H5)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (rule14 (if(animal is bird)若动物是鸟(M4)(animal does not fly)且不会飞(F17)(animal swims)且会游泳(F19)(animal is black and white)且有黑白二色(F18)(then(animal is penguin)则动物是企鹅(H6)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社
41、 (rule15 (if(animal is bird)若动物是鸟(M4)(animal flies well)且善飞(F20)(then(animal is albatross)则动物是信天翁(H7)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 R1:F1 M1 R2:F2 M1R3:F9 M4 R4:F10F11 M4R5:F3 M2 R6:F4F5F6 M2R7:F7M1 M3 R8:F8M1 M3R9:F12F13M1M2 H1 R10:F12F15M1M2 H2R11:F13F14F16M3 H3 R12:F15M3 H4R13:F14F
42、16F17F18M4 H5 R14:F17F18F19M4 H6R15:F20M4 H7人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 图图5.4 动物识别专家系统规则库与动物识别专家系统规则库与/或图或图人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5.3.2 正向推理机1 函数函数recall 函数表达式:(recall fact)函数功能:判断变量fact中的一个事实是否在表facts中,若是,recall返回值是fact中的事实;否则,返回nil。(defun (recall fact)(cond
43、 (member fact facts)fact)(t nil)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 2 函数函数test-if 函数表达式:(test-if rule)函数功能:判断变量rule中的一条规则的前件包含的全部事实是否在表facts中,若是,test-if返回t;否则,返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社(defun (test-if rule)(prog (ifs)(setq ifs (cdadr rule)loop (cond (null ifs)(retu
44、rn t)(recall (car ifs)(t (return nil)(setq ifs (cdr ifs)(go loop)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 3 函数函数remember 函数表达式:(remember new)函数功能:判断变量new中的一个事实是否在表facts中,若是,remember返回nil;否则,将new中的事实添加到表facts的表头,且remember返回new中的事实。(defun (remember new)(cond (member new facts)nil)(t (setq facts (
45、cons new facts)new)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 4 函数函数use-then 函数表达式:(use-then rule)函数功能:判断变量rule中的一条规则的后件包含的全部结论是否在表facts中,若全部结论都在facts中,则use-then返回nil;否则,将不在facts中的结论逐一添加到表facts中,且use-then返回t。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (defun (use-then rule)(prog (thens success)
46、(setq thens (cdddr rule)loop (cond (null thens)(return success)(remember (car thens)(print(car rule)(print|DEDUCES|(car thens)(setq success t)(setq thens (cdr thens)(go loop)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 5 函数函数try-rule 函数表达式:(try-rule rule)函数功能:判断规则变量rule中的一条规则的前件包含的全部事实是否在表facts中,若全
47、部事实都在facts中,且规则后件有不在facts中的结论,则把不在facts中的结论逐一添加到表facts中,try-rule返回t;否则,try-rule返回nil。(defun (try-rule rule)(and (tesr-if rule)(use-then rule)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 6 函数函数step-forward 函数表达式:(step-forward rules)函数功能:逐次扫描规则库rules中的规则,若发现rules中有一条可用规则,即该规则的前件包含的全部事实在表facts中,则把该规则的
48、后件中不在facts中的所有结论添加facts中,且step-forward返回t;若rules中没有一条可用规则,则step-forward返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 (defun (step-forward rules)(prog (rule-list)(setq rule-list rules)loop (cond (null rule-list)(return nil)(try-rule (car rule-list)(return t)(setq rule-list (cdr rule-list)(go lo
49、op)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 7 正向推理机函数正向推理机函数deduce 函数表达式:(deduce facts)函数功能:连续不断地从规则库rules中选择可用规则,每选择到一条可用规则,就把该规则的后件中不在facts中的所有结论添加到facts中,对facts扩充,由扩充了的facts来选择下一条可用规则对facts再次扩充,直至没有可用规则可选为止。若曾找到一条可用规则对facts进行过一次扩充,则deduce返回t;否则,deduce返回nil。人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版
50、)中国水利水电出版社 (defun (deduce facts)(prog (progress)loop (cond (step-forward rules)(steq progress t)(t (return progress)(go loop)人工智能与专家系统人工智能与专家系统(第二版)中国水利水电出版社第二版)中国水利水电出版社 例例5.65.6 对于动物识别专家系统,若已知的初始事实是F13、F12、F3和F1,应用正向推理机deduce,说明推理过程和得出的推理结论。(setq facts (animal has dark spots)(animal has tawny colo