资源描述
人工智能导论课程上机实验指导书
12
2020年6月23日
资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。
人工智能导论课程实验指导书
廉师友编
计算机工程实验室
3月
目 录
1. 小型专家系统设计与实现………………………………………………………..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) 若某动物是哺乳动物且吃肉, 则它是食肉动物。
( 7) 若某动物是哺乳动物且有蹄, 则它是有蹄动物。
( 8) 若某动物是有蹄动物且反刍食物, 则它是偶蹄动物。
( 9) 若某动物是食肉动物且黄褐色且有黑色条纹, 则它是老虎。
( 10) 若某动物是食肉动物且黄褐色且有黑色斑点, 则它是金钱豹。
( 11) 若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点, 则它是长颈鹿。
( 12) 若某动物是有蹄动物且白色且有黑色条纹, 则它是斑马。
( 13) 若某动物是鸟且不会飞且长腿且长脖子且黑白色, 则它是驼鸟。
( 14) 若某动物是鸟且不会飞且会游泳且黑白色, 则它是企鹅。
( 15) 若某动物是鸟且善飞且不怕风浪, 则它是海燕。
老虎
黄褐色
有黑色条纹
食肉动物
哺乳动物
有毛发
有奶
吃肉
有爪
有犬齿
目盯前方
金钱豹
有黑色斑点
长颈鹿
有蹄动物
有蹄
长腿
长脖子
有暗斑点
下面是该规则集所形成的( 部分) 推理网络:
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).
animal_is(tiger):-
it_is(carnivore),
positive(has, tawny_color),
positive(has, 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_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).
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),
positive(has, hooves).
it_is(ungulate):-
it_is(mammal),
positive(does, chew_cud).
需要说明的是, 严格来讲, 该专家系统程序中并无显式的推理机, 而是利用了PROLOG语言本身的推理机制实现推理的。这就是说, 用PROLOG编写专家系统程序, 能够省去推理机部分。如果用其它语言编程, 推理机则是必不可少的。当然, 用PROLOG编写专家系统程序, 也能够不用它自身的推理机作为所实现的专家系统的推理机, 而用户自己重新编写一个显式的推理机, 这可根据问题和需要而定。如果要重新编写推理机, 一般说来, 规则就要用PROLOG的事实来实现。知识库就要用PROLOG的动态数据库来实现。
当然, 以上实习也可用C或C++编程, 但工作量要大得多。
七、 实验报告
实验报告用学校统一的实验报告纸书写, 表头严格按其要求填写, 其中”实验名称”后填: 小型专家系统设计与实现。下面是实验报告的基本内容和书写格式。
——————————————————————————————————
一、 实验目的
加深对专家系统的理解, 初步掌握专家系统的设计与实现方法。
二、 实验内容
运用所学知识, 设计并编程实现一个小型专家系统。
三、 实验步骤
1. 选题。
2. 系统分析。
3. 知识获取与知识表示选择/设计。
4. 知识库组建。
5. 推理机选择/编制。
6. 系统调试与测试。
四、 实验结果
1. 系统名称
〈所做系统的名称〉
2. 系统概述
( 包括所做系统的背景和主要功能等。)
3. 产生式规则集文本
4. 系统运行演示过程
(1) 输入的初始事实或数据:
(2) 系统运行时产生的推理树( 网) :
(3) 输出的结果:
5. 源程序清单
——————————————————————————————————
展开阅读全文