人工智能实验报告_2.pdf

上传人:李医生 文档编号:6077938 上传时间:2020-09-06 格式:PDF 页数:12 大小:344.41KB
返回 下载 相关 举报
人工智能实验报告_2.pdf_第1页
第1页 / 共12页
人工智能实验报告_2.pdf_第2页
第2页 / 共12页
人工智能实验报告_2.pdf_第3页
第3页 / 共12页
人工智能实验报告_2.pdf_第4页
第4页 / 共12页
人工智能实验报告_2.pdf_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《人工智能实验报告_2.pdf》由会员分享,可在线阅读,更多相关《人工智能实验报告_2.pdf(12页珍藏版)》请在三一文库上搜索。

1、1 课课 程程 实实 验验 报报 告告 学年学期20152016 年第一学期 课程名称人工智能原理与技术 实验名称PROLOG 语言编程练习 实 验 室无 专业年级电气 134 学生姓名赵倩 学生学号2013011989 提交时间2015.12.28 成绩 任课教师樊强 水利与建筑工程学院 2 第一章PROLOG 语言编程练习 1.1实验目的 加深学生对逻辑程序运行机理的理解,使学生掌握 PROLOG 语言的特点、熟悉其编程环境,同时为后 面的人工智能程序设计做好准备。 (1)熟悉 PROLOG 语言编程环境的使用; (2)了解 PROLOG 语言中常量、变量的表示方法; (3)了解利用 PR

2、OLOG 进行事实库、规则库的编写方法; 1.2实验环境 计算机,Turbo PROLOG 教学软件。 1.3预习要求 实验前应阅读实验指导书,了解实验目的、预习 PROLOG 语言的相关知识。 1.4实验内容 (1)学习使用 Turbo PROLOG,包括进入 PROLOG 主程序、编辑源程序、修改环境目录、退出等基本操作。 (2)在 Turbo prolog 集成环境下调试运行简单的 Turbo PROLOG 程序,如描述亲属关系的 PROLOG 程序或 其他小型演绎数据库程序等。 1.5实验方法和步骤 (1)启动 Windows XP 操作环境。 (2)打开文件目录,执行 prolog

3、应用程序,启动 Turbo prolog,并按空格键(SPACE)进入集成开发环境。 (3)选择 Setup 项,打开下拉菜单,选择 Directories 项,进行工作目录修改,按 Esc 键退出,选择 Save Configuration 项,保存修改。 (4)选择 Files 项,打开下拉菜单,选择 New file 项,进入源程序输入和编辑,或选择 Load 项,选择 要打开的示例程序,再选择 Edit 项,可以进行编辑源程序。 (5)编辑之后,可以选择 Run 项,执行程序,可以在 Dialog 窗口进行询问,即外部目标的执行,查看程 序运行结果,分析程序之功能。 (6)仿前例,可以

4、选择其他程序并运行,分析程序功能。 (7)退出,选择 Quit 项,可以退出 Turbo Prolog 程序,返回到 Windows XP 环境。 1.6示例程序 逻辑电路模拟程序。该程序以逻辑运算“与”、“或”、“非”的定义为基本事实,然后在此基础上 定义了“异或”运算。那么,利用这些运算就可以对“与”、“或”、“非”和“异或”等逻辑电路进行 模拟。事实上,在此基础上也可以对其他任一逻辑门电路进行模拟。 domains d=integer predicates not_(d,d) and_(d,d,d) or_(d,d,d) xor_(d,d,d) clauses not_(1,0). no

5、t_(0,1). and_(0,0,0). and_(0,1,0). and_(1,0,0). and_(1,1,1). 3 or_(0,0,0). or_(0,1,1). or_(1,0,1). or_(1,1,1). xor_(Input1, Input2, Output):- not_(Input1,N1), not_(Input2,N2), and_(Input1,N2,N3), and_(Input2,N1,N4), or_(N3,N4,Output). 实现同或 domains d=integer predicates not_(d,d) and_(d,d,d) or_(d,d,d

6、) th_(d,d,d) clauses not_(1,0). not_(0,1). and_(0,0,0). and_(0,1,0). and_(1,0,0). and_(1,1,1). or_(0,0,0). or_(0,1,1). or_(1,0,1). or_(1,1,1). th_(Input1, Input2, Output):- not_(Input1,N1), not_(Input2,N2), and_(Input1,Input2,N3), and_(N1,N2,N4), or_(N3,N4,Output). 4 1.7实验总结 出现的问题:对于每个谓词的格式没有看清,老把下划

7、线忘掉,还以为程序不对。 解决方案:仔细阅读程序,名字和格式都了解过后再验证。 心得:Prolog 是一门语言,需要较长的时间才能掌握,如今只是验证,可以凭借对谓词的英文意思看 懂程序。 5 课课 程程 实实 验验 报报 告告 学年学期20152016 年第一学期 课程名称人图搜索问题求解 实验名称PROLOG 语言编程练习 实 验 室无 专业年级电气 134 学生姓名赵倩 学生学号2013011989 提交时间2015.12.28 成绩 任课教师樊强 水利与建筑工程学院 6 第二章图搜索问题求解 2.1实验目的 加深学生对图搜索技术的理解,使学生掌握图搜索基本编程方法,并能利用图搜索技术解决

8、一些应用 问题。 (1)掌握 Turbo prolog 软件编程方法; (2) 熟悉状态图搜索的基本算法; (3)掌握图搜索问题求解中的问题表示、节点表示、close 表和 open 表的构造。 2.2实验环境 计算机,Turbo PROLOG 教学软件。 2.3预习要求 (1)预习教材第四章有关状态图问题求解的内容,熟悉状态图求解的过程和方法; (2)了解 Turbo PROLOG 程序设计的基本知识。 2.4实验内容 走迷宫是人们熟悉的一种游戏, 如图 2-1 就是一个迷宫。如果我们把该迷宫的每一个格子以及入口和 出口都作为节点, 把通道作为边, 则该迷宫可以由一个有向图表示。 那么, 走

9、迷宫其实就是从该有向图的 初始节点(入口)出发, 寻找目标节点(出口)的问题, 或者是寻找通向目标节点(出口)的路径的问题。 用状态图搜索或与或图搜索方法,求出迷宫图中路径。图中 S0为入口,Sg 为出口。 图图 2-1 迷宫图迷宫图 2.5实验方法和步骤 (1)启动 prolog 编辑环境; (2)用状态图搜索思想编辑路径求解问题的源程序; (3)运行程序,分析结果; (4)用与或图搜索思想编辑路径求解问题的源程序; (5)运行程序,分析结果。 2.6示例程序 下面是一个通用的状态图搜索程序。对于求解的具体问题,只需将其状态图的程序表示并入该程序即 可。 /*状态图搜索通用程序*/ DOMA

10、INS state=symbol DATABASE-mydatabase open(state,integer) closed(integer,state,integer) res(state) open1(state,integer) min(state,integer) mark(state) 7 fail_ PREDICATES solve road(state,state) search(state,state) result searching step4(integer,state) step56(integer,state) equal(state,state) repeat r

11、esulting(integer) rule(state,state) GOAL solve. CLAUSES solve:-search(s0,sg),result. search(Begin,End):- retractall(_,mydatabase), assert(closed(0,Begin,0), assert(open(Begin,0), assert(mark(End), repeat, searching,!. result:- not(fail_), retract(closed(0,_,0), closed(M,_,_), resulting(M),!. result:

12、-beep,write(sorry dont find a road!). searching:- open(State,Pointer), retract(open(State,Pointer), closed(No,_,_),No2=No+1, asserta(closed(No2,State,Pointer),!,step4(No2,State). searching:-assert(fail_). step4(_,State):-mark(End),equal(State,End). step4(No,State):-step56(No,State),!,fail. step56(No

13、,StateX):- rule(StateX,StateY), not(open(StateY,_), not(closed(_,StateY,_), assertz(open(StateY,No), fail. step56(_,_):-!. equal(X,X). 8 repeat. repeat:-repeat. resulting(N):-closed(N,X,M),asserta(res(X),resulting(M). resulting(_):-res(X),write(X),nl,fail. resulting(_):-!. rule(X,Y):-road(X,Y). road

14、(s0,s4).road(s4,s1).road(s1,s4).road(s1,s2).road(s2,s1).road(s2,s3). road(s3,s2).road(s4,s7).road(s7,s4).road(s4,s5).road(s5,s4). road(s5,s6).road(s6,s5). road(s5,s8).road(s8,s5).road(s8,s9).road(s9,s8).road(s2,s5).road(s5,s2). road(s9,sg). 2.7实验总结 实验中出现的问题:这一次的程序较难,只能通过结果验证其正确性。 解决方案:直接看那个迷宫,得出答案,跟

15、程序运行结果对比即可。 心得:路径问题求解的搜索结果及分析: 找到的是最短路径,其间可能经历了歧路。多了分析不了。 状态图搜索和与或图搜索的特点: 两者都是通过搜索实现问题求解。其搜索策略都分为盲目搜索和启发式搜索两类。 状态图是用“状态”和“算符”来表示问题的一种方法。其中,“状态”用以描述问题求解过程中不 同时刻的状况;“算符”表示对状态的操作,算符的每一次使用就使问题从一种状态转变为另一种状态。 当到达目标状态时,由初始状态到目标状态所用算符的序列就是问题的一个解。 与或图则是通过将复杂问题通过分解(与节点)、等价变化(或节点)的方式化简看是否能构成解树 来判断问题是否可解。 9 课课

16、程程 实实 验验 报报 告告 学年学期20152016 年第一学期 课程名称人工智能原理与技术 实验名称小型专家系统(原型)设计 实 验 室无 专业年级电气 134 姓名赵倩 学生学号2013011989 提交时间2015.12.28 成绩 任课教师樊强 水利与建筑工程学院 10 第三章小型专家系统(原型)设计 3.1实验目的 加深学生对专家系统原理的理解,使学生初步掌握专家系统的设计和实现方法。 3.2实验环境 计算机,Turbo PROLOG 教学软件或 VC+等 3.3预习要求 (1)了解专家系统设计与实现的一般方法; (2)熟悉和掌握产生式系统的运行机制、产生式规则的程序语言实现。 3

17、.4实验原理 产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产 生式条件和操作对。在产生式系统中,论域的知识分为两部分:用事实表示静态知识;用产生式规则表示 推理过程和行为。 3.5实验内容 综合利用人工智能的产生式系统、 图搜索算法以及专家系统的框架, 建造一个小型动物分类专家系统, 要求系统具有知识库、推理机和动态数据库三部分。编程语言不限。 3.6示例程序 考虑到本实验有一定难度,下面给出一个示例程序,以供参考。 例 小型动物分类专家系统 /* An Animal Classifying Expert System */ database xpos

18、itive(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

19、:- write(Unable to determine what), write(your animal is. nn),clear_facts. positive(X,Y):-xpositive(X,Y),!. positive(X,Y):-not(xnegative(X,Y),ask(X,Y). 11 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). re

20、member(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(nnPlease press the space bar to Exit),readchar(_). animal_is(cheetah):- it_is(mammal), it_is(carnivore), positiv

21、e(has,tawny_color), positive(has,black_spots). animal_is(tiger):- it_is(mammal), 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(ungula

22、te), 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(alb

23、atross):- it_is(bird), positive(does,fly_well). it_is(mammal):- positive(has,hair). it_is(mammal):- 12 positive(does,give_milk). it_is(bird):- positive(does,fly), positive(does,lay_eggs). it_is(bird):- positive(has,feathers). it_is(carnivore):- positive(does,eat_meat). it_is(carnivore):- 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). 3.7实验总结 出现的问题:这个专家系统范围较小,稍微查一种别的动物,就可能得不到结果。 解决方案:先选中一种已有的动物,再回答程序提出的问题。 心得:知识是实现人工智能的重要内容,尤其是专家系统的实现,需要一定的形式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1