当前位置:文档之家› 人工智能实验报告_2

人工智能实验报告_2

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

(1)熟悉PROLOG语言编程环境的使用;(2)了解PROLOG语言中常量、变量的表示方法;(3)了解利用PROLOG进行事实库、规则库的编写方法;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应用程序,启动Turbo prolog,并按空格键(SPACE)进入集成开发环境。

(3)选择Setup项,打开下拉菜单,选择Directories项,进行工作目录修改,按Esc键退出,选择Save Configuration项,保存修改。

(4)选择Files项,打开下拉菜单,选择New file项,进入源程序输入和编辑,或选择Load项,选择要打开的示例程序,再选择Edit项,可以进行编辑源程序。

(5)编辑之后,可以选择Run项,执行程序,可以在Dialog窗口进行询问,即外部目标的执行,查看程序运行结果,分析程序之功能。

(6)仿前例,可以选择其他程序并运行,分析程序功能。

(7)退出,选择Quit项,可以退出Turbo Prolog程序,返回到Windows XP环境。

1.6示例程序逻辑电路模拟程序。

该程序以逻辑运算“与”、“或”、“非”的定义为基本事实,然后在此基础上定义了“异或”运算。

那么,利用这些运算就可以对“与”、“或”、“非”和“异或”等逻辑电路进行模拟。

事实上,在此基础上也可以对其他任一逻辑门电路进行模拟。

domainsd=integerpredicatesnot_(d,d)and_(d,d,d)or_(d,d,d)xor_(d,d,d)clausesnot_(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).xor_(Input1,Input2,Output):-not_(Input1,N1),not_(Input2,N2),and_(Input1,N2,N3),and_(Input2,N1,N4),or_(N3,N4,Output).实现同或domainsd=integerpredicatesnot_(d,d)and_(d,d,d)or_(d,d,d)th_(d,d,d)clausesnot_(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).1.7实验总结出现的问题:对于每个谓词的格式没有看清,老把下划线忘掉,还以为程序不对。

解决方案:仔细阅读程序,名字和格式都了解过后再验证。

心得:Prolog是一门语言,需要较长的时间才能掌握,如今只是验证,可以凭借对谓词的英文意思看懂程序。

课程实验报告学年学期2015—2016年第一学期课程名称人图搜索问题求解实验名称PROLOG语言编程练习实验室无专业年级电气134学生姓名赵倩学生学号2013011989提交时间2015.12.28成绩任课教师樊强水利与建筑工程学院第二章图搜索问题求解2.1实验目的加深学生对图搜索技术的理解,使学生掌握图搜索基本编程方法,并能利用图搜索技术解决一些应用问题。

(1)掌握Turbo prolog软件编程方法;(2)熟悉状态图搜索的基本算法;(3)掌握图搜索问题求解中的问题表示、节点表示、close表和open表的构造。

2.2实验环境计算机,Turbo PROLOG教学软件。

2.3预习要求(1)预习教材第四章有关状态图问题求解的内容,熟悉状态图求解的过程和方法;(2)了解Turbo PROLOG程序设计的基本知识。

2.4实验内容走迷宫是人们熟悉的一种游戏,如图2-1就是一个迷宫。

如果我们把该迷宫的每一个格子以及入口和出口都作为节点,把通道作为边,则该迷宫可以由一个有向图表示。

那么,走迷宫其实就是从该有向图的初始节点(入口)出发,寻找目标节点(出口)的问题,或者是寻找通向目标节点(出口)的路径的问题。

用状态图搜索或与或图搜索方法,求出迷宫图中路径。

图中S0为入口,Sg为出口。

图2-1迷宫图2.5实验方法和步骤(1)启动prolog编辑环境;(2)用状态图搜索思想编辑路径求解问题的源程序;(3)运行程序,分析结果;(4)用与或图搜索思想编辑路径求解问题的源程序;(5)运行程序,分析结果。

2.6示例程序下面是一个通用的状态图搜索程序。

对于求解的具体问题,只需将其状态图的程序表示并入该程序即可。

/*状态图搜索通用程序*/DOMAINSstate=symbolDATABASE-mydatabaseopen(state,integer)closed(integer,state,integer)res(state)open1(state,integer)min(state,integer)PREDICATESsolveroad(state,state)search(state,state)resultsearchingstep4(integer,state)step56(integer,state)equal(state,state)repeatresulting(integer)rule(state,state)GOALsolve.CLAUSESsolve:-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:-beep,write("sorry don't 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,StateX):-rule(StateX,StateY),not(open(StateY,_)),not(closed(_,StateY,_)),assertz(open(StateY,No)),fail.step56(_,_):-!.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(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实验总结实验中出现的问题:这一次的程序较难,只能通过结果验证其正确性。

解决方案:直接看那个迷宫,得出答案,跟程序运行结果对比即可。

心得:路径问题求解的搜索结果及分析:找到的是最短路径,其间可能经历了歧路。

多了分析不了。

状态图搜索和与或图搜索的特点:两者都是通过搜索实现问题求解。

其搜索策略都分为盲目搜索和启发式搜索两类。

状态图是用“状态”和“算符”来表示问题的一种方法。

其中,“状态”用以描述问题求解过程中不同时刻的状况;“算符”表示对状态的操作,算符的每一次使用就使问题从一种状态转变为另一种状态。

当到达目标状态时,由初始状态到目标状态所用算符的序列就是问题的一个解。

与或图则是通过将复杂问题通过分解(与节点)、等价变化(或节点)的方式化简看是否能构成解树来判断问题是否可解。

课程实验报告学年学期2015—2016年第一学期课程名称人工智能原理与技术实验名称小型专家系统(原型)设计实验室无专业年级电气134姓名赵倩学生学号2013011989提交时间2015.12.28成绩任课教师樊强水利与建筑工程学院第三章小型专家系统(原型)设计3.1实验目的加深学生对专家系统原理的理解,使学生初步掌握专家系统的设计和实现方法。

3.2实验环境计算机,Turbo PROLOG教学软件或VC++等3.3预习要求(1)了解专家系统设计与实现的一般方法;(2)熟悉和掌握产生式系统的运行机制、产生式规则的程序语言实现。

相关主题