《人工智能导论》实验指导书(新).doc_第1页
《人工智能导论》实验指导书(新).doc_第2页
《人工智能导论》实验指导书(新).doc_第3页
《人工智能导论》实验指导书(新).doc_第4页
《人工智能导论》实验指导书(新).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录实验一 PROLOG语言编程练习2实验二 图搜索问题求解4实验三 小型专家系统(原型)设计7实验一 PROLOG语言编程练习一、 实验目的加深学生对逻辑程序运行机理的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。1、熟悉PROLOG语言编程环境的使用;2、了解PROLOG语言中常量、变量的表示方法;3、了解利用PROLOG进行事实库、规则库的编写方法;二、 实验环境计算机,Turbo PROLOG教学软件。三、 预习要求实验前应阅读实验指导书,了解实验目的、预习PROLOG语言的相关知识。四、 实验内容1、学习使用Turbo PROLOG,包括进入PROLOG主程序、编辑源程序、修改环境目录、退出等基本操作。2、在Turbo prolog集成环境下调试运行简单的Turbo PROLOG程序。3、编写一个描述亲属关系的PROLOG程序,然后再给出一些事实数据,建立一个小型演绎数据库。可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他亲属关系。4、修改教材2.2节例2.9的程序,使其能输出图中所有路径(path)。五、 实验方法和步骤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环境。六、 示例程序一个简单的学生成绩数据库查询程序。predicates student(integer,string,real) gradegoal grade.clauses student(1,zhang,90.2). student(2,li,95.5). student(3,wang,96.4). grade:-write(please input the name:), readln(Name), student(_,Name,Score), nl,write(Name, score is:,Score). grade:-write(Sorry,cant find the student!).七、 实验报告要求实验报告应简单明了,语言通顺,结果正确,程序规范。实验报告的重点是实验结果的正确性与分析。包括:实验题目、要求、实验环境、实验内容与实验结果(要求附上运行的源程序)、实验中出现的问题、对问题的解决方案、实验总结等。实验二 图搜索问题求解一、实验目的加深学生对图搜索技术的理解,使学生掌握图搜索基本编程方法,并能利用图搜索技术解决一些应用问题。1. 掌握Turbo prolog软件编程方法;2. 熟悉状态图和与或图搜索的基本算法;3掌握图搜索问题求解中的问题表示、节点表示、close表和open表的构造。二、 实验环境计算机,Turbo PROLOG教学软件三、 预习要求1. 预习教材中有关状态图和与或图问题求解的内容,熟悉状态图和与或图求解的过程和方法;2. 了解Turbo PROLOG程序设计的基本知识。四、 实验内容走迷宫是人们熟悉的一种游戏, 如图1就是一个迷宫。如果我们把该迷宫的每一个格子以及入口和出口都作为节点, 把通道作为边, 则该迷宫可以由一个有向图表示。 那么, 走迷宫其实就是从该有向图的初始节点(入口)出发, 寻找目标节点(出口)的问题, 或者是寻找通向目标节点(出口)的路径的问题。 用状态图搜索或与或图搜索方法,求出迷宫图中路径。图中S0为入口,Sg为出口。 图1 迷宫图五、 实验方法和步骤1. 启动prolog编辑环境;2. 用状态图搜索思想编辑迷宫问题求解的源程序;3. 运行程序,分析结果;4. 用与或图搜索思想编辑迷宫问题求解的源程序;5运行程序,分析结果。六、 示例程序 下面是一个通用的状态图搜索程序。对于求解的具体问题,只需将其状态图的程序表示并入该程序即可。 /*状态图搜索通用程序*/DOMAINS state= %例如:state=symbol DATABASE-mydatabase open(state,integer) %用动态数据库实现OPEN表 closed(integer,state,integer) %和CLOSED表 res(state) open1(state,integer) min(state,integer) mark(state) failPREDICATES solve search(state,state) result searching step4(integer,state) step56(integer,state) equal(state,state) repeat resulting(integer) rule(state,state) GOAL solve.CLAUSES solve: -search(,),result. /* 例如 solve: -search(st(0,1,2,3,4,5,6,7,8),st(0,2,8,3,4,5,6,7,1),result. */search(Begin,End): - % 搜索 retractall(_,mydatabase), assert(closed(0,Begin,0), assert(open(Begin,0), %步1 将初始节点放入OPEN表 assert(mark(End), repeat, searching,!. result: - % 输出解 not(fail_), retract(closed(0,_,0), closed(M,_,_), resulting(M),!.result: - beep,write(sorry dont find a road!).searching: - open(State,Pointer), %步2 若OPEN表空, 则失败,退出 retract(open(State,Pointer), %步3 取出OPEN表中第一个节点,给其 closed(No, _, _),No2=No+1, % 编号 asserta(closed(No2,State,Pointer), %放入CLOSED表 !,step4(No2,State). searching: -assert(fail_). %步4 若当前节点为目标节点, 则成功 step4(_,State): -mark(End),equal(State,End). %转步2step4(No,State): -step56(No,State),!,fail. step56(No,StateX): - %步5 若当前节点不可扩展, 转步2 rule(StateX,StateY), %步6 扩展当前节点X得Y not(open(StateY,_), %考察Y是否已在OPEN表中 not(closed(_,StateY,_), %考察Y是否已在CLOSED表中 assertz(open(StateY,No), %可改变搜索策略 fail.step56(_,_): -!. equal(X,X).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): -. % 例如: rule(X,Y): -road(X,Y). 七、 实验报告要求1. 实验报告应简单明了,语言通顺,结果正确,程序规范。实验报告的重点是实验结果的正确性与分析。包括:实验题目、要求、实验环境、实验内容与实验结果(要求附上运行的源程序)、实验中出现的问题、对问题的解决方案、实验总结等;2. 迷宫问题求解的搜索结果及分析;3比较状态图搜索和与或图搜索的特点。实验三 小型专家系统(原型)设计一、实验目的加深学生对专家系统原理的理解,使学生初步掌握专家系统的设计和实现方法。二、实验环境计算机,Turbo PROLOG教学软件或VC+等三、预习要求1.了解专家系统设计与实现的一般方法;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),n1,n1,clear_facts. run:- write(Unbale 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). negative(X,Y):-xnegative(X,Y),!. negative(X,Y):-not(xnegative(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(nnPlease press the space bar to Exit),readchar(_). animal_is(cheetah):- it_is(mammal), it_is(carnivore), positive(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(ungulate), positive(has,black_stripes). animal_is(ostrich):- it_is(bird), negtive(does,fly), positive(has,long_neck), positive(has,long_legs), positive(has,black_and_white_color). animal_is(penguin):- it_is(bird), negtive(does,fly), positive(does,swim), positive(has,black_and_white_color)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论