人工智能实验指导书.docx

上传人:b****6 文档编号:5621672 上传时间:2022-12-29 格式:DOCX 页数:68 大小:150.48KB
下载 相关 举报
人工智能实验指导书.docx_第1页
第1页 / 共68页
人工智能实验指导书.docx_第2页
第2页 / 共68页
人工智能实验指导书.docx_第3页
第3页 / 共68页
人工智能实验指导书.docx_第4页
第4页 / 共68页
人工智能实验指导书.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

人工智能实验指导书.docx

《人工智能实验指导书.docx》由会员分享,可在线阅读,更多相关《人工智能实验指导书.docx(68页珍藏版)》请在冰豆网上搜索。

人工智能实验指导书.docx

人工智能实验指导书

华清学院软件工程专业

 

人工智能实验指导书

 

西安建筑科技大学信控学院

目录

 

第1章课程简介,实验项目及学时安排…………………………….

(1)

第2章实验设备简介………………………………………………….

(2)

第3章人工智能课程实验…………………………………………….(47)

实验一熟悉VisualProlog软件开发平台………………………………(47)

实验二使用VisualProlog求解Fibonacci序列问题……………………(49)

实验三使用VisualProlog求解梵塔问题………………………………..(50)

实验四使用VisualProlog求解装错信封问题…………………………..(51)

 

第1章课程简介,实验项目及学时安排

一.课程简介

人工智能、专家系统、决策支持系统、智能机器、神经网络等等,都是近几年来国内外计算机界十分活跃的研究领域;它们是计算机科学、控制论、信息论、神经生物学、心理学、语言学等多学科相互渗透发展起来的综合性学科。

把它们反映到教学活动之中,可开拓学生的视野,了解计算机的新兴发展方向,对实现“宽专业、厚基础”的培养目标十分必要。

通过本课程的学习,将向学生介绍人工智能、专家系统、知识工程的发展简历、核心课题和具体应用领域;讲授知识的有关基本概念和知识的各种逻辑表示方法、常用的计算机问题求解搜索策略;学习智能系统的组成结构和开发工具、方法,掌握小型智能系统的构造原理和调试方法。

因此,《人工智能实验》的主要目的是使学生达到3个层次的实验训练要求:

1.加深理解人工智能的基本概念和方法,掌握一种智能型系统开发软件——VisualProlog的基本安装、配置及其使用方法。

2.结合课程内容,掌握使用VisualProlog完成小规模人工智能程序设计的一般过程和方法。

3.在上述实验的基础上,达到巩固并加深对人工智能基本原理和概念的理解。

4.通过实验,培养学生的自主意识、动手能力、查阅文献能力、思维能力、想象能力和表达能力。

二.实验项目及学时安排

序号

项目

学时

实验性质

验证

综合

设计

1

熟悉VisualProlog软件开发平台

2

2

使用VisualProlog求解Fibonacci序列问题

2

3

使用VisualProlog求解梵塔问题

2

4

使用VisualProlog求解装错信封问题

2

 

第2章VisualProlog语言介绍

Prolog是英文“PROgramminginLOGic”的缩写。

其主要思想就是用逻辑进行程序设计。

第一个Prolog系统是由AColmeruer及其研究小组于1972年在法国马赛研制成功的,它本身就是一个演绎推理机,具有表处理功能,通过合一、消解、回溯和匹配等机制实现问题求解。

VisualProlog是基于Prolog语言的可视化逻辑程序设计集成开发环境,是Prolog开发中心推出的基于Windows环境的智能化编程工具,其语言特点符合相应的国际标准ISO/IEC13211-1:

1995。

VisualProlog具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能。

它包含图形开发环境、编译器、连接器和调试器,支持模块化和面向对象程序设计,支持系统级编程、文件操作、字符串处理、位级运算、算术与逻辑运算,以及与其它编程语言的接口。

它捆绑了范围广泛的API函数,包括WindowsGUI函数族、ODBC/OCI数据库函数和Internet函数族(socket、ftp、http、cgi)。

支持Windows/98/Me/NT/2000/XP、OS/2和文本方式下的DOS、Linux和SCOUNIX。

VisualProlog非常适合于专家系统、规划和其它AI相关问题的求解,是智能程序设计语言中有代表性且应用较多的一种程序设计语言。

由于这种语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,在智能程序设计语言中占有相当重要的地位。

§2.1VisualProlog开发环境

2.1.1VisualProlog安装及其选项

本书所叙述的实例程序均基于VisualPrologV5.x版本编写,为了运行和测试正常,建议读者安装V5.2以上的VisualProlog运行环境,在安装期间,您需要注意以下安装:

●在编译程序对话框Compiler中安装可视化开发环境VDE(VisualDevelopmentEnvironment),推荐选择Win32版本。

●在库对话框Libraries中,选中与所选的VDE平台相对应的库。

在资料对话框Documentation中,必须选中安装Answers和Examples。

我们还推荐把Documentation对话框中所列出的所有其它安装项开关选为ON。

●在对话框Final中,推荐选中使32位VDE与项目文件扩展名PRJ和VPR相关联。

2.1.2VisualProlog启动及其配置

完成安装后,为使用可视化开发环境VDE中的TestGoal实用程序运行书中的实例程序。

建议对VisualProlog编译程序中的某些非缺省选项进行配置,做法为:

1)启动VisualProlog的VDE。

若是第一次启动VDE,因没有一个可被装入的项目,你将会看到图2.1这样的情形。

同时你将被告知,缺省的VisualProlog初始文件已被创建。

图2.1图2.2

2)开始创建一个新项目。

选择Project|NewProject菜单项,对话框ApplicationExpert将被激活。

3)指定基目录BaseDirectory和项目名ProjectName。

假定在安装时你已经选择了VisualProlog的根目录C:

\VIP,在这种情况下,推荐指定下面的基目录:

C:

\VIP\DOC\Examples\TestGoal

这一选择对于将来装入示例的Prolog源文件是方便的。

在项目名ProjectName一栏,推荐指定“TestGoal”。

还要选中多程序员方式MultiprogrammerMode,并点击Nameof.PRJFile控制项里面的文件名。

你将会看到项目名TestGoal.PRJ出现。

4)指定目标Target设置。

在对话框ApplicationExpert的Target标签项,我们选择如图2.2那样的设置。

现在按下Create按钮,创建一个缺省的项目文件。

5)设置创建TestGoal项目所要求的编译程序选项。

选择Options|Project|CompilerOptions菜单项,编译程序选项对话框CompilerOptions被激活。

选择Warnings标签项。

在这一标签项中:

a)选中Nondeterm单选按钮。

这将迫使VisualProlog的编译程序缺省接受所有用户定义的谓词是不确定性的,从而可以产生不止一个解。

b)去掉复选项:

非引用符号选项(NonQuotedSymbols)、强类型转换检查选项(StrongTypeConversionCheck)和检查谓词类型选项(CheckTypeofPredicates)。

这些选项将抑制一些可能产生的、而对于理解示例程序不太重要的编译警告信息。

c)最后,编译程序选项CompilerOptions对话框看起来如图2.3所示。

按下OK按钮,保存编译程序选项CompilerOptions的设置。

2.1.3运行和测试VisualProlog程序

为检查系统配置是否合适,在编辑器窗口中键入下面的文本:

GOALwrite(“HelloWorld”),nl.

这就是Prolog术语所说的所谓目标GOAL。

为了执行GOAL,激活菜单项Project|TestGoal或按下快捷键Ctrl+G。

如果系统安装合适,屏幕上将出现如图2.4所示的情形。

执行的结果将出现在另一个新开窗口中。

它的标题如下:

[InactiveC:

\Vip\Doc\Examples\TestGoal\Obj\goal$000.exe]

图2.3图2.4

2.1.4VDE编辑器

VDE含一个标准的文本编辑器,菜单命令File|New可以创建一个新的编辑器窗口,使用鼠标和键盘即可对它进行操纵。

它支持Copy、Paste、Cut、Undo、Redo等操作。

VisualProlog的源程序就可在此进行编辑,并保存为后缀为.pro的源程序文件。

2.1.5程序错误处理

如果程序中出现了错误,在编译时,VDE将显示Errors(Warnings)窗口,其中包含所检测出来的错误的列表。

可双击其中一个错误而到达错误所在源文本中的位置。

从VisualPrologV5.3开始,可单击其中一个错误并按下F1键来显示有关所选错误的扩展信息。

当处于帮助Help窗口时,单击搜索Search按钮并键入一个错误号,帮助主题和关于这个错误的扩展信息将显示出来。

§2.2Prolog基本语法规则

2.2.1Prolog语言的特点

Prolog是基于Horn子句的,而Horn子句是谓词逻辑形式系统的子集,因此它能进行清晰地推理。

作为一种逻辑程序语言,Prolog具有两个方面的特性:

(1)它描述求解问题的方式与通常的高级程序设计语言不同。

众所周知,通常的程序设计语言(如:

C)求解问题时,需指明算法,即对一个给定问题指明一系列计算机要执行的计算步骤,告诉计算机“如何做”。

而Prolog语言求解问题时,只描述所解问题中的对象和对象之间关系的某些已知事实、推理规则,程序一般不必告诉计算机执行的先后次序。

因此,Prolog是一种描述性逻辑语言。

(2)它还具有程序设计语言所具有的其它语言特点。

①Prolog的数据和程序结构统一,均以(关于某一问题领域的)知识数据库的形式存在。

知识数据库、知识库及程序这几个专业术语在Prolog语言中的意思是相同的。

②Prolog包括一个推理机(InferenceEngine),能自动实现模式匹配和回溯,从而在逻辑推理的过程中找到给定问题的解(而且是所有解)。

③Prolog语言支持递归的定义和调用,因此能够使一个复杂的问题可以用小的程序来解决。

2.2.2子句:

事实和规则

谓词逻辑是人们为了把基于逻辑的思想表达为书面形式而发展起来的。

Prolog利用这种语法发展了一种基于逻辑的程序设计语言。

在谓词逻辑中,首先从句子中消去所有不必要的词。

然后,变换并确定句子之间的关系,依据关系对对象进行分组。

接着,对象变成作用于关系的参数。

(表2.1)示例3句子被转换为谓词逻辑语法。

表2.1自然语言转换为谓词逻辑

自然语言

谓词逻辑

玫瑰花是红色的

red(rose)

玛丽穿的是套装

wears(mary,dress)

比尔喜欢狗,如果那些狗是漂亮的

likes(bill,dogs)ifpretty(dogs)

在Prolog的谓词逻辑中,所有的对象及它们之间的关系均被概括成短语,短语中只有两种表现类型,一是事实,一是规则。

短语在Prolog中被统称为子句(clause),它是构成Prolog程序的核心。

与自然语言语句类似子句由实心句号“·”结束。

一、事实:

已知的关系

在Prolog中,知识的最简单形式就是事实,它陈述了自然语言中对象间的已知关系。

例如,在自然语言中表示“喜欢”的关系有:

比尔喜欢狗。

玛丽喜欢蓝色衬衫。

汤姆喜欢自行车。

而用Prolog语法写出来的同样事实为:

likes(bill,dog).

likes(mary,blueshirt).

likes(tom,bike).

因此,在Prolog中事实的一般形式及其描述规则如下:

关系(对象1,对象2,…,对象n).

(1)先描述关系名,接着在一对圆括号中描述若干对象(其标准名称为变元),每个对象之间用逗号隔开。

(2)所有关系名和对象名均应小写。

(3)事实子句必须用“·”号结束。

Prolog是根据句号来判断事实结束的。

一般而言,子句括号内的变元顺序对于Prolog来说没有什么关系。

但在某一特定应用环境中的前后约定应该注意保持一致,来看下面两个事实:

狗(dog)咬(bites)人(man)

人(man)咬(bites)狗(dog)

它们的意思显然不同。

在翻译成Prolog语言时必须保持原来的顺序:

bites(dog,man)./*狗咬人*/

bites(man,dog)./*人咬狗*/

应注意的是,在数据库中上述两个事实如果有一个存在,并不意味着另一个事实也存在。

也就是说,“狗咬人”这一事实并不能代表“人咬狗”的事实!

下面还有一些简单的Prolog事实:

事实

说明

count(dracula).

德雷克拉是会计

prince(charles).

查尔斯是王子

gardener(james).

詹姆斯是园林工人

married(jane,david).

珍妮和戴维结婚

friends(tony,peter).

托尼和彼德是朋友

drinks(joyce,coffee).

乔伊斯喝咖啡

drive(john,pauline,bmw).

约翰和波林驾驶bmw轿车

还应注意的是,事实中的变元数可以是任意的,这取决于所期望联系在一起的对象数目。

且Prolog无法知道我们给出的事实真实与否。

例如:

bird(pig)./*猪是一种鸟*/

这样的错误却可以被Prolog完全接受。

二、规则:

从已知事实进行推理

在日常生活中,通过其它事实推断出某事为真往往是可能的,Prolog所构造和描述从其它信息进行推断的就是规则。

一个规则就是指一系列其它关系已知为真,那么某个关系则为真,其语法描述为:

规则头:

-规则体.

或关系(对象,对象,…,对象):

-关系(对象,…,对象),

……,

关系(对象,…,对象).

或规则头:

-子目标,……,子目标.

其中,规则头是:

如果若干条件为真则其为真的事实,也称作结论或依赖关系。

规则体是:

一些条件,它们必须为真才能使Prolog利用它们证明规则头为真。

例如,“约翰喜欢汽车,如果该汽车十分有趣”,此句用Prolog规则表示为:

likes(john,Car):

-fun(Car).

注意,likes谓词中的第二个变元以大写字母开始,而第一个变元john却不是,这是因为john是一个固定的常量对象,而Car是一个可能取不同值的变量,在Prolog中变量总是以大写字母开始的。

2.2.3变量

如果将如下ch02ex01.pro完整程序调入VDE环境,并用TestGoal运行它。

/*Programch02ex01.pro*/

PREDICATES

likes(symbol,symbol)

CLAUSES

1ikes(ellen,tennis).

likes(john,football).

likes(tom,baseball).

likes(eric,swimming).

likes(mark,tennis).

likes(bill,Actvity):

-likes(tom,Activity).

GOAL

likes(bill,baseball).

TestGoal在应用程序窗口中会回答:

yes

它已经结合了规则:

likes(bill,Activity):

-likes(tom,Activity).

用事实likes(tom,baseball).

来判定目标likes(bill,baseball).

也可以试着询问:

likes(bill,tennis).

TestGoal回答:

no

VisualProlog对询问“Bill喜欢打网球吗?

”回答no是因为:

●没有事实显示“Bill喜欢打网球”;

●bill与网球的关系不能从给出的规则和可用的事实中推断出来。

当然,Bill在现实生活中很喜爱网球运动是可能的,但是VisualProlog的回答仅仅基于已经在程序中给出的事实和规则。

如上所述,变量可以使你能写出更一般化的事实和规则。

此外,还能让你提出更一般的问题,如:

likes(Person,tennis).

其中用Person表示未知的人。

在VisualProlog中,变量名必须以大写字母(或下划线)开始,其后可以是任何数量的字母(大写或小写)、数字或下划线(“_”)字符。

例如,下列是有效的变量名:

My_first_correct_variable_name,Sales_10_11_86

而下列三个是无效的变量名:

lstattempt,second_attempt,“disaster”

仔细地选择变量名可以使程序更具可读性。

例如,对比下述两个子句:

likes(Person,tennis).和likes(x,tennis).

显然前者更好,因为Person比X有更明确的含义。

现在测试目标:

GOALlikes(Person,tennis).

VisualProlog回答:

Person=e1len

Person=mark

2Solutions

因为求解目标只有两个情形,即用变量Person匹配值ellen和mark。

在变量名中,除了第一个字符必须是大写字母或下划线,VisualProlog允许其它位置的字符任意大小写。

使变量名更具可读性的办法之一是大小写字母混合使用,例如:

IncomeAndExpenditureAccount

一、变量如何取值

当程序中某个量的值是变化或不确定时,就要用到变量。

你可能注意到了Prolog语言中没有赋值语句,这是它与其它程序设计语言的一个显著区别。

Prolog中的变量通过与事实和规则中的常量匹配获取其值。

在被赋值之前一个变量是自由的(free),一旦被赋值则变量成为被绑定的(bound)。

但是绑定的时间只维持到获得一个询问的解,然后Prolog释放它,回头继续寻找其它解。

这是一个非常重要的观点:

不能通过给变量赋值来存储信息。

变量是用来作为模式匹配过程的一部分,而不是一种信息存储方式。

请看下面程序ch02ex02.pro示范变量如何获取它们的值的例子。

/*Programch02ex02.pro*/

PREDICATES

likes(symbol,symbol).

CLAUSES

likes(ellen,reading).

likes(john,computers).

likes(john,badminton).

likes(leonard,badminton).

likes(eric,swimming).

likes(eric,reading).

考察这个询问:

有既喜欢阅读又喜欢游泳的人吗?

likes(Person,reading),likes(Person,swimming).

Prolog将通过对程序子句从头到尾地搜索来求解这个询问的两个部分。

询问的第一部分是:

likes(Person,reading)

其中,变量Person是自由的。

在Prolog尝试找到答案之前,它的值未知。

另一方面,第二个参数reading是已知的。

Prolog寻找匹配询问第一部分的一个事实。

程序中的第一个事实:

likes(ellen,reading)

可以于之匹配(事实中的reading和询问中的reading匹配),Prolog用事实中的ellen绑定变量Person。

同时,Prolog在事实列表中设置一个指针表示已经到达的搜索过程。

接着,为了完全满足询问(找到既喜欢阅读又喜欢游泳的人),第二部分询问必须被执行。

因为变量Person已被ellen绑定,Prolog必须寻找事实:

likes(ellen,swiming)

Prolog从程序的开始搜索,但没有可以匹配的事实(因为程序中没有这样的事实)。

此时,询问的第二部分为假。

Prolog现在释放Person的值,并且试图在Person重新成为一个自由变量的情况下,寻找询问第一部分的另一个解答。

寻找另一个解答的搜索从事实列表指针的位置开始。

Prolog寻找下一个喜欢阅读的人,从而发现事实likes(eric,reading)。

变量Person现在被eric绑定,Prolog再次试图满足询问的第二部分,这次是通过查看事实:

likes(eric,swimming)

这次Prolog发现一个匹配的事实(程序最后一个子句),从而询问全部满足。

Prolog(TestGoal)回答:

Person=eric

1Solution

二、复合目标

来看看下面这个包含有某大学学生信息的程序ch02ex03.pro。

/*Programch03ex03.pro*/

male(tim).

male(marc)./*如果X为male,则male(X)成功*/

male(simon).

female(louise).

female(hazel)./*如果X为female,则female(X)成功*/

female(marie).

year(tim,4).

year(marc,1).

year(simon,2)./*如果学生X为Y级学生,则year(X,Y)成功*/

year(louise,3).

year(hazel,1).

year(marie,4).

studies(tim,history).

studies(marc,philosophy)./*如果学生X学习的课程为Y,*/

studies(simon,mathematics)./*则studies(X,Y)成功*/

studies(louise,computer_science).

studies(hazel,chemistry).

studies(marie,art).

age(tim,24).

age(marc,18)./*如果学生X的年龄为Y,则age(X,Y)成功*/

age(simon,25).

age(louise,21).

age(hazel,22).

age(marie,32).

用户也许会向Prolog提出这样一个问题:

有学历史的男生吗?

为了用Prolog语言来表达上述问题,就必须采取一种更为复杂的询问方式。

因为这一问题涉及到知识库中两种形式的事实:

①说明学生性别的事实;

②说明学生所学课程的事实。

因此,我们必须把两个简单的询问用“与”操作符,也就是用逗号“,”连在一起。

对这一问题的正确询问形式应为:

male(X),studies(X,history).

这就是所谓的目标合取。

为了满足整个目标,Prolog必须满足这两个子目标。

如果它找不到能够满足两个子目标的X值,那么整个目标也将无法满足。

当然,对这个问题,Prolog的答复应该是:

X=tim

此外,还可以提出更为复杂的问题:

在一年级中,有没有20多岁,且学习化学的学生?

这个问题也可以表示为子目标合取的形式为:

year(X,1),age(X,Y),Y>2

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1