1、 人工智能导论课程 实验指导书 廉师友编 计算机工程实验室 2007 年 3 月 1 目 录 1. 小型专家系统设计与实现 .2 2 专家 系统涉及 人工智能导论 课程的大部分内容,而且实践性和应用性都很强。因此, 本课程 将 专家 系统设计与实现作为一个上机实 验 项目 。该实验是一个设计性实验,它对 加深课程内容的理解和掌握,培养学生 运用所学知识 开发智能系统的能力 有重要意义 。 一、实验 名称 小型 专家 系统设计与实现 二、实验 目的 1. 加深理解专家系统的结构原理与实际应用。 2. 初步掌握知识获取的基本方法。 3. 掌握产生式规则知识表示方法及其编程实现方法。 4. 初步掌握
2、知识库的组建方法。 5. 加深理解 推理机的算法原理并初步掌握其编程实现方法。 三、实验 内容 运用所学知识,设计并编程实现 一个小型 专家 系统(如分类、诊断、预测等类型) 。 四、 基本 要求 1. 具体应用领域自选,具体系统名称自定 ; 但所做 系统绝对不能雷同。 2. 用产生式 规则 作为知识表示,用产生系统实现该 专家 系统。 3. 可 用 PROLOG 语言 编程并参考下面示例 程 序;但也可 用 其 他语言另行编程。 4. 所实现的专家系统必须上机运行演示; 程序运行时,应有人机对话 过程 。 5. 系统完成后,要提交实验报告。 五、实验步骤 具体工作及步骤为: 1. 选题 。
3、2. 系统分析 。 3. 知识获取与 知识 表示 选择 /设计。 4. 知识库组建 。 5. 推理机选择 /编制 。 6. 系统调试与测试 : 可先运行一两个简单的 PROLOG 程序,以 熟悉语言环境;接着运行示例程序;然后编辑、 调试 、 测试 自己的系统程序 。 7. 撰 写实验报告。 3 六、 系统 示例 考虑到本实 验 有一定难度,下面给出一个 “小型动物分类专家系统” 示例,以供参考。 1. 动物分类 规则集 ( 1) 若某动物有奶,则它是哺乳动物。 ( 2) 若某动物有毛发,则它是哺乳动物。 ( 3) 若某动物有羽毛,则它是鸟。 ( 4) 若某动物会飞且生蛋,则它是鸟。 ( 5)
4、 若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。 ( 6) 若某动物是哺乳动物且吃肉,则它是食肉动物。 ( 7) 若某动物是哺乳动物且有蹄,则它是有蹄动物。 ( 8) 若某动物是有蹄动物且反刍食物,则它是偶蹄动物。 ( 9) 若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。 ( 10) 若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。 ( 11) 若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。 ( 12) 若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 ( 13) 若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。 ( 14) 若某动物是鸟
5、且不会飞且会游泳且黑白色,则它是企鹅。 ( 15) 若某动物是鸟且善飞且不怕风浪,则它是海 燕。 下面是该规则集所形成的(部分)推理网络: 老虎 黄褐色 有 黑色条纹 食肉动物 哺乳动物 有 毛发 有奶 吃肉 有 爪 有 犬齿 目盯前方 金钱豹 有 黑色斑点 长颈鹿 有蹄动物 有蹄 长腿 长脖子 有 暗斑点 4 2. 源 程序 database xpositive(symbol, symbol) xnegative(symbol, symbol) predicates run positive(symbol, symbol) negative(symbol, symbol) clear_fac
6、ts 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. nn“), positive(X, Y):-xpositive(X, Y),!. positive(X, Y):-not(xnegative(X, Y), a
7、sk(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(_, _)
8、, fail. clear_facts:-retract(xnegative(_, _), fail. clear_facts:-write(“nnPlease press the space bar to Exit“), readchar(_). animal_is(cheetah):- it_is(carnivore), positive(has, tawny_color), positive(has, black_spots). 5 animal_is(tiger):- it_is(carnivore), positive(has, tawny_color), positive(has,
9、 black_stripes). animal_is(giraffe):- it_is(ungulate), positive(has, long_neck), positive(has, long_legs), positive(has, dark_spots). animal_is(zebra):- it_is(ungulate), positive(has, black_stripes). animal_is(ostrich):- it_is(bird), negative(does, fly), positive(has, long_neck), positive(has, long_
10、legs), positive(has, black_and_white_color). animal_is(penguin):- it_is(bird), negative(does, fly), positive(does, swim), positive(has, black_and_white_color). animal_is(albatross):- it_is(bird), positive(does, fly_well). it_is(mammal):- positive(has, hair). it_is(mammal):- positive(does, give_milk)
11、. it_is(bird):- positive(has, feathers). it_is(bird):- positive(does, fly), positive(does, lay_eggs). it_is(carnivore):- positive(does, eat_meat). it_is(carnivore):- it_is(mammal), positive(has, pointed_teeth), positive(has, claws), positive(has, forward_eyes). it_is(ungulate):- it_is(mammal), 6 pos
12、itive(has, hooves). it_is(ungulate):- it_is(mammal), positive(does, chew_cud). 需要说明的是,严格来讲,该专家系统程序中并无显式的推理机,而是利用了 PROLOG 语言本身的推理机制实现推理的。这就是说,用 PROLOG 编写专家系统程序,可以省去推理机部分。如果用其他语言编程,推理机则是必不可少的。当然,用 PROLOG 编写专家系统程序,也可以不用它自身的推理机作为所实现的专家系统的推理机,而用户自己重新编写一个显式的推理机,这可根据问题和需要而定。如果要重新编写推理机,一般说来,规则就要用 PROLOG 的事实
13、来实现。知识库就要用 PROLOG 的动态数据库来 实现。 当然,以上实习也可用 C 或 C+编程,但工作量要大得多。 七、实验报告 实验报告用学校统一的实验报告纸书写,表头严格按其要求填写,其中“实验名称”后填:小型专家系统设计与实现。下面是实验报告的基本内容和书写格式。 一、实验目的 加深对 专家系统 的理解,初步掌握专家 系统的 设计 与 实现方法。 二、实验内容 运用所学知识, 设计并编程实现 一个小型 专家 系统 。 三、实验步骤 1. 选题。 2. 系统分析 。 3. 知识获取与 知识 表示 选择 /设计。 4. 知识库组建 。 5. 推理机选择 /编制 。 6. 系统调试与测试 。 四、实验结果 1. 系统 名称 所 做 系统的名称 2. 系统 概述 (包括所 做 系统 的背景和主要 功能 等。) 3. 产生式规则集文本 4. 系统运行演示过程 7 (1) 输入的初始事实或数据: (2) 系统运行 时 产生的推理树(网): (3) 输出的结果: 5. 源程序清单