人工智能报告

上传人:新** 文档编号:458270104 上传时间:2024-01-06 格式:DOCX 页数:12 大小:182.64KB
返回 下载 相关 举报
人工智能报告_第1页
第1页 / 共12页
人工智能报告_第2页
第2页 / 共12页
人工智能报告_第3页
第3页 / 共12页
人工智能报告_第4页
第4页 / 共12页
人工智能报告_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《人工智能报告》由会员分享,可在线阅读,更多相关《人工智能报告(12页珍藏版)》请在金锄头文库上搜索。

1、人工智能课程设计简单小程序和家族关系推理系统信息学院 1201001193 温小龙1. 背景介绍“人工智能”一词最初是在 1956 年 Dartmouth 学会上提出的。从那以后,研 究者们发展了众多理论和原理,人工智能的概念也随之扩展。人工智能是一门极 富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工 智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等 等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人 类智能才能完成的复杂工作。Prolog 语言最早由 Aix-Marseille 大学的 Alain Colmerauer 与 P

2、hillipe Roussel 等人于 60 年代末研究开发。1972 年被公认为是 Prolog 语言正式诞生的年份,自 1972 年以后,分支出多种 Prolog 的方言。最主要的两种方言为 Edinburgh 和 Aix-Marseille。最早的Prolog解释器由Roussel建造,而第一个Prolog编译器则 是 David Warren编写的。Prolog 一直在北美和欧洲被广泛使用。日本政府曾经为了建造智能计算机而 用Prolog来开发ICOT第五代计算机系统。在早期的机器智能研究领域,Prolog 曾经是主要的开发工具。80年代Borland开发的Turbo Prolog,进

3、一步普及了 Prolog的使用。1995年确定了 ISO Prolog标准目前比较流行的实现工具包括 SWI-Prolog, Yap 等。2. 课程实验介绍本次课程实验要求使用prolog语言编写一个人工智能方面的应用。2.1 “Hello World”程序的实现本小实验是一个入门的实验,主要实现的功能是在鼠标点击处显示Hello World”。初始化界面如图2.1.1所示。图 2.1.1 初始化界面当鼠标点击时,会显示Hello World字样”,如图2.1.2所示。图 2.1.2 显示 “Hello World”2.2 数的阶乘的实现 本实验主要实验数的阶乘,即输入一个正整数,然后给出该数

4、的阶乘。初始化界面如图 2.2.1 所示。图 2.2.1 数阶乘的初始化界面输入一个数后,点击Factorial”按钮就可显示结果,如图2.2.2所示。图 2.2.2 5的阶乘的结果显示2.3 家族关系推理系统 这里我们选择编写一个家族分析系统,在这个系统里我们输入个人的一些简要信息(这里我们只考虑男女性别)以及家族信息。例如person(judith,female()表示judith为女性, parent(john,judith)表示john为judith的父母。我们用一个txt文件作为该系统的输入, 该文件里保存了我们所需要的家族信息。这里我们给系统设计了三个功能,分别是根据输入 信息找到

5、父子关系,爷孙关系以及输入一个人的姓名找到其祖先。我们的开发环境为visual prolog6。系统设计界面如图2.3.1所示:图 2.3.1 系统界面其中 find 菜单下边的三个子菜单为分别对应我们的三个子功能:父子关系推理,爷孙关系推理以及祖先推理。下面我们首先装载入数据,如图2.3.2 所示:图 2.3.2 装载数据成功接着我们根据数据先找父子关系及爷孙关系,结果如图2.3.3 所示图2.3.3父子关系推理结果lessagespam i$ father of johngrandfather testpam i$ grandfather of john讪图2.3.4爷孙关系推理结果:最后

6、我们在对话框里输入一个名字,用我们的系统推理出其祖先是谁,这里我们输入pam,则推断结果如图2.3.5 所示:图 2.3.5 祖先推理结果3.系统实现原理简介: 由于我们要实现系统的图形界面,因此这里我们将系统分为两个部分,其中一部分负责 根据输入来进行逻辑推理,我们这里暂称为逻辑推理层。下面将是我们逻辑推理层的prolog 代码:class predicatesfather:(string Person,string Father) nondeterm anyflow.clausesfather(Person,Father):- parent(Person,Father), person(F

7、ather,male().class predicatesgrandFather:(string Person,string GrandFather) nondeterm anyflow. clausesgrandFather(Person,GrandFather):- parent(Person,Parent), father(Parent,GrandFather).class predicatesancestor:(string Person,string Ancestor) nondeterm anyflow. clausesancestor(Person,Ancestor) :- pa

8、rent(Person,Ancestor).ancestor(Person,Ancestor):- parent(Person,P1), ancestor(P1,Ancestor).接着另一部分为一些GUI图形界面处理代码,这里我们就列出来了,具体可见附录。这里 我们实现的系统由于较为简单,因此在系统实现的时候没有将逻辑推理层和GUI处理分开 来,而是放在一起,这对于开发小型系统较为高效,但对于很复杂的AI系统是万万不能的。 4.总结Prolog是一个很强大的逻辑推理程序,尤其适合于AI人工智能领域。通过这次实践, 对开发AI程序有了更为直观的了解,增强了对人工智能的理解和兴趣。附录l.“He

9、llo Worl程序的源码Utah State Universityimplement queryinherits formWindow open core, vpiDomainsconstantsclassName = query/query. classVersion = .clauses classInfo(className, classVersion).clauses display(Parent) = Form :-Form = new(Parent), Form:show().clauses new(Parent):- formWindow:new(Parent), genera

10、tedInitialize().class facts mousePoint:pnt := pnt(-1, -1).predicates onMouseDown : drawWindow:mouseDownListener.clausesonMouseDown(_S, Point, _ShiftControlAlt, _Button) :- mousePoint := Point, Point= pnt(X, Y),R= rct(X-8, Y-8, X+60, Y+8),invalidate(R).predicatesonPaint : drawWindow:paintResponder.cl

11、ausesonPaint(_Source, _Rectangle, GDIObject) :- ifpnt(X, Y)= mousePoint, X0thenmousePoint := pnt(-1, -1), GDIObject:drawText(pnt(X, Y), Hello, World!, -1) else succeed() end if.% This code is maintained automatically, do not update it manually. 00:04:49-30.7.2007 factsok_ctl : button. cancel_ctl : b

12、utton. help_ctl : button.predicates generatedInitialize : ().clauses generatedInitialize():- setFont(vpi:fontCreateByName(MS Sans Serif, 8), setText(query), setRect(rct(50,40,186,104), setDecoration(titlebar(closebutton(),maximizebutton(),minimizebutton(), setBorder(sizeBorder(), setState(wsf_ClipSi

13、blings,wsf_ClipChildren), menuSet(noMenu), addShowListener(generatedOnShow), addMouseDownListener(onMouseDown), setPaintResponder(onPaint), ok_ctl := button:newOk(This), ok_ctl:setText(&OK), ok_ctl:setPosition(8, 40), ok_ctl:setSize(30, 12), ok_ctl:setAnchors(control:right,control:bottom), cancel_ct

14、l := button:newCancel(This), cancel_ctl:setText(Cancel), cancel_ctl:setPosition(48, 40), cancel_ctl:setSize(30, 12), cancel_ctl:setAnchors(control:right,control:bottom), help_ctl := button:new(This), help_ctl:setText(&Help), help_ctl:setPosition(88, 40), help_ctl:setSize(30, 12), help_ctl:setAnchors

15、(control:right,control:bottom).predicates generatedOnShow: window:showListener.clauses generatedOnShow(_,_):- succeed.% end of automatic code end implement query 2.数阶乘的源码Utah State Universityimplement queryinherits formWindow open core, vpiDomainsconstants className = formcontainer/query. classVersion = .clauses classInfo(className, classVersion).clauses display(Parent) = Form :- Form = new(Parent), Form:show().clauses new(Parent)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号