人工智能导论课程实验指导书 廉师友编 计算机工程实验室 2007年3月
人工智能导论课程实验指导书 廉师友编 计算机工程实验室 2007 年 3 月
目录 1.小型专家系统设计与实现
1 目 录 1. 小型专家系统设计与实现………………………………………………………..2
专家系统涉及人工智能导论课程的大部分内容,而且实践性和应用性都很 强。因此,本课程将专家系统设计与实现作为一个上机实验项目。该实验是一个 设计性实验,它对加深课程内容的理解和掌握,培养学生运用所学知识开发智能 系统的能力有重要意义。 、实验名称 小型专家系统设计与实现 二、实验目的 加深理解专家系统的结构原理与实际应用。 2.初步掌握知识获取的基本方法。 3.掌握产生式规则知识表示方法及其编程实现方法。 4.初步掌握知识库的组建方法 5.加深理解推理机的算法原理并初步掌握其编程实现方法。 三、实验内容 运用所学知识,设计并编程实现一个小型专家系统(如分类、诊断、预测等 类型)。 四、基本要求 具体应用领域自选,具体系统名称自定;但所做系统绝对不能雷同。 2.用产生式规则作为知识表示,用产生系统实现该专家系统。 3.可用 PROLOG语言编程并参考下面示例程序;但也可用其他语言另行编 程。 4.所实现的专家系统必须上机运行演示;程序运行时,应有人机对话过程 5.系统完成后,要提交实验报告。 五、实验步骤 具体工作及步骤为: 1.选题。 2.系统分析。 3.知识获取与知识表示选择/设计 4.知识库组建。 5.推理机选择/编制。 6.系统调试与测试:可先运行一两个简单的 PROLOG程序,以熟悉语言环 境;接着运行示例程序;然后编辑、调试、测试自己的系统程序 7.撰写实验报告
2 专家系统涉及人工智能导论课程的大部分内容,而且实践性和应用性都很 强。因此,本课程将专家系统设计与实现作为一个上机实验项目。该实验是一个 设计性实验,它对加深课程内容的理解和掌握,培养学生运用所学知识开发智能 系统的能力有重要意义。 一、实验名称 小型专家系统设计与实现 二、实验目的 1. 加深理解专家系统的结构原理与实际应用。 2. 初步掌握知识获取的基本方法。 3. 掌握产生式规则知识表示方法及其编程实现方法。 4. 初步掌握知识库的组建方法。 5. 加深理解推理机的算法原理并初步掌握其编程实现方法。 三、实验内容 运用所学知识,设计并编程实现一个小型专家系统(如分类、诊断、预测等 类型)。 四、基本要求 1. 具体应用领域自选,具体系统名称自定;但所做系统绝对不能雷同。 2. 用产生式规则作为知识表示,用产生系统实现该专家系统。 3. 可用 PROLOG 语言编程并参考下面示例程序;但也可用其他语言另行编 程。 4. 所实现的专家系统必须上机运行演示;程序运行时,应有人机对话过程。 5. 系统完成后,要提交实验报告。 五、实验步骤 具体工作及步骤为: 1. 选题。 2. 系统分析。 3. 知识获取与知识表示选择/设计。 4. 知识库组建。 5. 推理机选择/编制。 6. 系统调试与测试:可先运行一两个简单的 PROLOG 程序,以熟悉语言环 境;接着运行示例程序;然后编辑、调试、测试自己的系统程序。 7. 撰写实验报告
六、系统示例 考虑到本实验有一定难度,下面给出一个“小型动物分类专家系统”示例, 以供参考。 1.动物分类规则集 (1)若某动物有奶,则它是哺乳动物。 (2)若某动物有毛发,则它是哺乳动物。 (3)若某动物有羽毛,则它是鸟 (4)若某动物会飞且生蛋,则它是鸟 (5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。 (6)若某动物是哺乳动物且吃肉,则它是食肉动物。 (⑦)若某动物是哺乳动物且有蹄,则它是有蹄动物。 (8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。 (9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎 (10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹 (11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是 长颈鹿。 (12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 (13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。 (14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。 (15)若某动物是鸟且善飞且不怕风浪,则它是海燕 下面是该规则集所形成的(部分)推理网络: 老虎 金钱豹 长颈鹿 有黑色条纹 食肉动物 有黑色斑点 有蹄动物 哺乳动物 有蹄 有爪)(有犬齿入(日町前方)(有奶)(有毛发)(吃肉)(长腿)(长脖子)(有暗斑点
3 六、系统示例 考虑到本实验有一定难度,下面给出一个“小型动物分类专家系统”示例, 以供参考。 1. 动物分类规则集 (1)若某动物有奶,则它是哺乳动物。 (2)若某动物有毛发,则它是哺乳动物。 (3)若某动物有羽毛,则它是鸟。 (4)若某动物会飞且生蛋,则它是鸟。 (5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。 (6)若某动物是哺乳动物且吃肉,则它是食肉动物。 (7)若某动物是哺乳动物且有蹄,则它是有蹄动物。 (8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。 (9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。 (10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。 (11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是 长颈鹿。 (12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 (13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。 (14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。 (15)若某动物是鸟且善飞且不怕风浪,则它是海燕。 下面是该规则集所形成的(部分)推理网络: 老虎 有黑色条纹 黄褐色 食肉动物 哺乳动物 有爪 有犬齿 目盯前方 有奶 有毛发 吃肉 金钱豹 有黑色斑点 长颈鹿 有蹄动物 有蹄 长腿 长脖子 有暗斑点
2.源程序 An Animal Classifying Expert System database xpositive(symbol, symbol) xnegative(symbol, symbol run animal is(symbol) positive(symbol, symbol negative (symbol, symbol) remember(symbol, symbol, symbol) ask(symbol, symbol) run run animal is(X),! write("\nYour animal may be a(n), X) nl, nl, clear facts write(\nUnable to determine what") write( your animal is. \n\n), clear facts. (X,Y) positive(X, Y): -not(xnegative(X, y)), ask(X, y) negative (X, Y): -xnegative(X, y) negative(X, Y): -not(xpositive(X, Y)), ask(X, Y) write(x, it Y,\n") readIn(Reply) remember(X, Y, Reply) remember(X, Y, y): -asserta(xpositive(, Y)) remember(X, Y, n): -assertaxnegative(X, Y)), fail. clear facts: -retract(xpositive(, )),fail clear facts: -retract(xnegative()),fail clear facts: -write(\n\nPlease press the space bar to Exit") Knowledge Base animal is(cheetah) it is(ca positive (has, tawny color) positive (has, black spots)
4 2. 源程序 /* An Animal Classifying Expert System */ database xpositive(symbol,symbol) xnegative(symbol,symbol) predicates run animal_is(symbol) it_is(symbol) positive(symbol, symbol) negative(symbol, symbol) clear_facts remember(symbol, symbol, symbol) ask(symbol, symbol) goal run. clauses run:- animal_is(X),!, write("\nYour animal may be a(n) ", X), nl, nl, clear_facts. run:- write("\nUnable to determine what"), write("your animal is. \n\n"), clear_facts. positive(X, Y):-xpositive(X, Y),!. positive(X, Y):-not(xnegative(X, Y)), ask(X, Y). negative(X, Y):-xnegative(X,Y), !. negative(X, Y):-not(xpositive(X, Y)), ask(X, Y). ask(X, Y):- write(X, " it ", Y, "\n"), readln(Reply), remember(X, Y, Reply). remember(X, Y, y):-asserta(xpositive(X, Y)). remember(X, Y, n):-asserta(xnegative(X, Y)), fail. clear_facts:-retract(xpositive(_, _)), fail. clear_facts:-retract(xnegative(_, _)), fail. clear_facts:-write("\n\nPlease press the space bar to Exit"), readchar(_). /* Knowledge Base */ animal_is(cheetah):- it_is(carnivore), positive(has, tawny_color), positive(has, black_spots)