第一篇:人工智能专家系统实验
河南城建学院
《 人工智能 》实验报告
实验名称:__实验四 名称实现一个基于产生式系统的小型专家系统(动物识别)成绩: 专业班级: 0814112 学号: 081411202 姓名: xxxxxxxxxxxx 实 验 日 期 : 2014 年 5 月 20 日
实验器材:VC6.0软件,多媒体计算机。
一、实验目的
掌握产生式系统的运行机制和基于规则推理的基本方法。通过一个实例了解小型专家系统的结构、设计和实现过程,初步掌握专家系统的设计和实现方法。
二、实验要求
设计并实现一个某领域的小型专家系统(动物识别),该系统能对输入的询问回答分类或预测的结果,并根据推理过程回答“为什么”或“怎样得出该结论”的问题。
三、实验步骤
(1)定义变量,包括变量名和变量的值。(2)建立规则库,其方法是:(a)输入规则的条件:每条规则至少有一个条件和一个结论,选择变量名,输入条件(符号);选择变量值,按确定按钮就完成了一条条件的输入。重复操作,可输入多条条件;
(b)输入规则的结论:输入完规则的条件后,就可以输入规则的结论了,每条规则必须也只能有一个结论。选择变量名,输入条件(符号),选择变量值,按确定按钮就完成了一个结论的输入。重复以上两步,完成整个规则库的建立。
(3)建立事实库(总数据库):建立过程同步骤2。重复操作,可输入多条事实。
该动物识别专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编 号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:
char *feature[]={“有毛”,“产奶”,“有羽毛”,“会飞”,“会下蛋”,“吃肉”,“有犬齿”,“有爪”,“眼睛盯前方”,“有蹄”,“反刍”,“黄褐色”,“有斑点”,“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};存放规则的结构体: typedef struct
{ int relation[5];
int name;}Rule;存放产生式规则推理过程的数组: Rule rule[15]={ {{0,-1},20}, {{1,-1},20}, {{2,-1},21}, {{3,4,-1},21}, {{20,5,-1},22}, {{6,7,8,-1},22}, {{20,8,-1},23}, {{20,9,-1},23}, {{22,11,12,-1},30}, {{22,11,13,-1},29}, {{23,14,15,12,-1},28}, {{23,13,-1},27},//如果动物是蹄类(23),且有黑色条纹(13),则该动物对应事实数组的第27个“斑马”
{{21,14,15,16,-1},26}, {{21,19,-1},25},//如果动物是鸟类(21),且是肉食类(19),则该动物对应事实数组的第25个“海燕”。
{{21,17,18,16,-1},24} };程序用编号序列的方式表达了产生式规则,如资料中规则14,如果动物是鸟,且是肉食类,则该动物对应事实数组的第二十五个“海燕”。如资料中规则12,如果动物是蹄类,且有黑色条纹,则该动物对应事实数组的第二十七个“斑马”。
(4)按“开始”或“单步”按钮即可。
此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。其他的可参见其帮助文件。
三、源代码
#include
“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,//13
“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};
//24
typedef struct //存放规则的结构体 { int relation[5];
int name;}Rule;Rule rule[15]={ {{0,-1},20}, {{1,-1},20}, {{2,-1},21}, {{3,4,-1},21}, {{20,5,-1},22}, {{6,7,8,-1},22}, {{20,8,-1},23}, {{20,9,-1},23}, {{22,11,12,-1},30}, {{22,11,13,-1},29}, {{23,14,15,12,-1},28}, {{23,13,-1},27}, {{21,14,15,16,-1},26}, {{21,19,-1},25}, {{21,17,18,16,-1},24}};int flag[23]={0};//标记各个特征是否选择 int IsAnimal(int a);int inference();void input();void menu();void menu(){ int i=0;
for(i=0;i<24;i++){
if(i%4==0&&i!=0)
{
cout< } printf(“%-3d.%-15s”,i,feature[i]); } } void input(){ int ti=0;for(int i=0;i<24;i++){ flag[i]=0;} while(ti!=-1){ cout<<“n输入选择(-1结束):”; cin>> ti; if(ti>=0&&ti<=23) flag[ti]=1; else if(ti!=-1) { cout<<“输入错误!请输入0~23//notanimal=25 cin.clear();//清除流错误错误标 cin.sync();////////////清空输入缓冲区 } } } int IsAnimal(int a){ if(a>=24&&a<=30) return 1; else return 0;} int inference()//正向推理 { int ti; int i,j; int tres; cout< for(i=0;i<15;i++) { j=0; 之间的数字!”<< endl; ti=rule[i].relation[j]; while(ti!=-1)//-1作为结束 { if(flag[ti]==0) break; j++; ti=rule[i].relation[j]; } if(ti==-1)//ti==-1代表规则满足 { tres=rule[i].name; flag[tres]=1; printf(“运用了规则%d : ”,i); j=0; while(rule[i].relation[j]!=-1) { cout< j++; } cout<<“====> ”< if(IsAnimal(tres)) { return 1; } } } if(i==15) { cout<<“没有这种动物”; } return-1;} void main(){ char q; while(q!='n') { menu(); input(); inference(); cout<<“n继续?(Y/N)”< cin>>q; system(“cls”); } } 四、结果分析 1、若已知:动物是蹄类(23),且有黑色条纹(13),则结果:该动物对应事实数组的第27个“斑马”。使用了推理规则12,即:{{23,13,-1},27},使用规则运行结果如图1所示: 图1 2、若已知:动物是鸟类(21),且是肉食类(19),则结果该动物对应事实数组的第25个“海燕”。使用了推理规则14,即:{{21,19,-1},25},使用规则运行结果如图2所示: 图2 五、心得体会 本实验环境主要提供一个能够实现模拟产生式专家系统的验证、设计和开发的可视化操作平台。使用户既能用本系统提供的范例进行演示或验证性实验,也能够用它来设计并调试自己的实验模型。 通过这次实验,我对产生式系统有了更深刻的认识。产生式系统是由一组规则组成的、能够协同作用的推理系统。其模型是设计各种智能专家系统的基础.产生式系统主要由规则库、综合数据库和推理机三大部分组成。产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产生式条件和操作对。在产生式系统中,论域的知识分为两部分:用事实表示静态知识;用产生式规则表示推理过程和行为。专家系统的规则是由专家定的,在该实验中,是由本人制定的。 教师评语: 教师签名: 姓名:万伟 学号:1120100924 人工智能与专家系统感想 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 人工智能技术导论这门课的学习,让我知道了人工智能从诞生发展到今天经历了一条漫长的路,许多科研人员为此而不懈努力。人工智能的开始可以追溯到电子学出现以前。象布尔和其他一些哲学家和数学家 建立的理论原则后来成为人工智能逻辑学的基础。而人工智能真正引起 研究者的兴趣则是1943年计算机发明以后的事。技术的发展最终使得人们可以仿真 人类的智能行为,至少看起来不太遥远。接下来的四十年里,尽管碰到许多阻碍,人工智能仍然从最初只有十几个研究者成长到现在数以千计的工程师和专家在研究; 从一开始只有一些下棋的小程序到现在的用于疾病诊断的专家系统,人工智能的发展有目共睹。 人工智能经过几十年的发展,其应用在不少领域得到发展,在我们的日常生活和学习当中也有许多地方得到应用。我通过网络查找,知道了以下领域的人工智能的发展。 专家系统是一种模拟人类专家解决领域问题的计算机程序系统。专家系统内部含有大量的某个领域的专家水平的知识与经验,能够运用人类专家的知识和解决 问题的方法进行推理和判断,模拟人类专家的决策过程,来解决该领域的复杂问题。专家系统是人工智能应用研究最活跃和最广泛的应用领域之一,涉及到社会各个 方面,各种专家系统已遍布各个专业领域,取得很大的成功。根据专家系统处理的问题的类型,把专家系统分为解释型、诊断型、调试型、维修型、教育型、预测 型、规划型、设计型和控制型等10种类型。具体应用就很多了,例如血液凝结疾病诊断系统、电话电缆维护专家系统、花布图案设计和花布印染专家系统等等。为了实现专家系统,必须要存储有该专门领域中经过事先总结、分析并按某种模式表示的专家知识(组成知识库),以及拥有类似于领域专家解决实际问题的 推理机制(构成推理机)。系统能对输入信息进行处理,并运用知识进行推理,做出决策和判断,其解决问题的水平达到或接近专家的水平,因此能起到专家或专家 助手的作用。 开发专家系统的关键是表示和运用专家知识,即来自领域专家的己被证明对解决有关领域内的典型问题有用的事实和过程。目前,专家系统主要采用基于规则 的知识表示和推理技术。由于领域的知识更多是不精确或不确定的,因此,不确定的知识表示与知识推理是专家系统开发与研究的重要课题。此外,专家系统开发工 具的研制发展也很迅速,这对扩大专家系统的应用范围,加快专家系统的开发过程,将起到积极地促进作用。随着计算机科学技术整体水平的提高,分布式专家系 统、协同式专家系统等新一代专家系统的研究也发展很快。在新一代专家系统中,不但采用基于规则的推理方法,而且采用了诸如人工神经网络的方法与技术。 一、人工智能与专家系统应用领域 1在管理系统中的应用 人工智能应用于企业管理的意义主要不在于提高效率,而是用计算机实现人们非常需要做,但工业工程信息技术是靠人工却做不了或是很难做到的事情。智能教学系统(ITS)是人工智能与教育结合的主要形式,也是今后教学系统的发展方向。信息技术的飞速发展以及新的教学系统开发模式的提出和不断完善,推动人们综合运用超媒体技术、网络基础和人工智能技术区开发新的教学系统,计算机智能教学系统就是其中的典型代表。它包含学生模块、教师模块,体现了教学系统开发的全部内容,拥有着不可比拟的优势和极大的吸引力。2在工程领域的应用 医学专家系统是人工智能和专家系统理论和技术在医学领域的重要应用,具有极大的科研和应用价值,它可以帮助医生解决复杂的医学问题,作为医生诊断、治疗的辅助工具。目前,医学智能系统已通过其在医学影像方面的重要作用,从而应用于内科、骨科等多个医学领域中,并在不断发展完善中。 3在技术研究中的应用 人工智能在电子技术领域的应用可谓由来已久。随着网络的迅速发展,网络技术的安全是我们关心的重点,因此我们必须在传统技术的基础上进行网络安全技术的改进和变更,大力发展数据挖掘技术、人工免疫技术等高效的AI技术,开发更高级AI通用和专用语言,和应用环境以及开发专用机器,而与人工智能技术则为我们提供了可能性。4人工智能在现实中的应用。 AI系统是设计出的一种计算机程序,这种程序具有某些像人和动物智能一样的功能。在过去的30多年中,已经建立了一些具有一定“智能”的AI系统,例如下棋程序、定理证明系统、集成电路设计与分析系统、自然语言翻译系统、智能信息检索系统、疾病诊断系统等 在一年一度AT&T实验室举行的机器人足球赛中,每支球队的“球员”都装备上了AI软件和许多感应器,它们都很清楚自己该踢什么位置,同时也明白有些情况下不能死守岗位。尽管现在的AI技术只能使它们大部分时间处于个人盘带的状态,但它们传接配合的能力正在以很快的速度改进。5.机器翻译 机器翻译是利用计算机把一种自然语言转变成另一种自然语言的过程,用以完成这一过程的软件系统叫做机器翻译系统。几十年来,国内外许多专家、学者为 机器翻译的研究付出了大量的心血和汗水。虽然至今还没有一个实用、全面、高质量的自动翻译系统出现,不过也取得了很大的进展,特别是作为人们的辅助翻译工 具,机器翻译已经得到大多数人的认可。目前,国内的机器翻译软件不下百种,根据这些软件的翻译特点,大致可以分为三大类:词典翻译类、汉化翻译类和专业翻 译类。词典类翻译软件代表是“金山词霸”了,堪称是多快好省的电子词典,它可以迅速查询英文单词或词组的词义,并提供单词的发音,为用户了解单词或词组含 义提供了极大的便利。汉化翻译软件的典型代表是“东方快车2000”,它首先提出了“智能汉化”的概念,使翻译软件的辅助翻译作用更加明显。以“译星”、“雅信译霸”为代表的专业翻译系统,是面对专业或行业用户的翻译软件,但其专业翻译的质量与人们的实用性还有不少差距,有人评价说“满篇英文难不住,满篇 中文看不懂”,该说法虽然比较极端,但机译译文的质量确实却一直是个老大难问题。这里,我们不妨对现有的机译和人译过程作一比较,从中可以看出一些原因。 机器翻译: 1.一句一句处理,上下文缺乏联系; 2.对源语言的分析只是求解句法关系,完全不是意义上的理解; 3.缺乏领域知识,从计算机到医学,从化工到法律都通用,就换专业词典; 4.译文转换是基于源语言的句法结构的,受源语言的句法结构的束缚; 5.翻译只是句法结构的和词汇的机械对应。 人工翻译: 1.一般会先通读全文,会前后照应; 2.对源语言是求得意义上的理解; 3.只有专业翻译人员,而没有万能翻译人员; 4.译文是基于他对源语言的理解,不受源语言的句法结构的束缚; 5.翻译是一个再创造的过程。 在目前的情况下,计算机辅助翻译应该是一个比较好的实际选择。事实上,在很多领域中,计算机辅助人类工作的方式已经得到了广泛的应用,例如CAD软 件。如果计算机辅助技术用于语言的翻译研究,应该同样可以起到很大的辅助作用,这就是所谓的“计算机辅助翻译”。它集机器记忆式翻译、语法分析式翻译和人 际交互式翻译为一体,把翻译过程中机械、重复、琐碎的工作交给计算机来完成。这样,翻译者只需将精力集中在创造性的思考上,有利于工作效率的提高。 机器翻译研究归根结底是一个知识处理问题,它涉及到有关语言内的知识、语言间的知识、以及语言外的世界知识,其中包括常识和相关领域的专门知识。随 着因特网的普及与发展,机器翻译的应用前景十分广阔。作为人类探索自己智能和操作知识的机制的窗口,机器翻译的研究与应用将更加诱人。国际上有关专家分析 认为机器翻译要想达到类似人工翻译一样的流畅程度,至少还要经历15年时间的持续研究,但在人类对语言研究还没有清楚“人脑是如何进行语言的模糊识别和判 断”的情况下,机器翻译要想达到100%的准确率是不可能的。 二、人工智能与专家系统的发展前景 1 人工智能的研究新课题 人工智能的长远目标是要理解人类智能的机器,用机器模拟人类的智能。这是一个十分漫长的过程,人工智能研究者奖通过多种途径、从不同的研究课题入手进行探索。 在近期,有几方面的研究课题可供选择:更完善更新的人工智能理论框架;自动或半自动的知识获取工具;能实现海量高速存储并具有学习功能的联想知识库;新型推理机制和推理机;分布式人工智能与协同式专家系统;智能控制与智能管理;智能机器人;人工智能机;新一代的脑模型。 2人机融合 人机融合是一个相当长的发展过程,它将伴随技术进步,逐级逐步地向前发展。首先实现的是低级和局部的融合,近几年人工智能科授的进步不断证实了这种趋势。如最近美国科学家就明确宣布,他们研制的“神经芯片”首先就是用于改善人的中枢神经功能,“使截瘫患者丢掉手杖”。随着人机融合的升级,最终将在地球上产生一种人机高度融合、高智慧、能自行繁殖(复制)的“新智体”(或曰“新人类”)。因此,文明人类的演化由于技术的影响将经历自然进化——人工促进人智能的进化——人机融合体(新智体)的自行进化的辩证发展过程。在人机融合时代,出于物理目标的不同,将存在多种多样、多层次的智能机(体),但具有怨茁级智能的应是人机融合体。当今人工智能科技和其他高科技的种种发展动向表明,在人类进入“信息社会”之后,将有一场规模巨大的“智能革命”,智能革命的环境是人工智能对人、对社会的广泛而深入的影响,就像今天的微电子技术对信息革命的影响一样。人工智能科技将渗透到社会各个领域,人类将对人工智能科技进行大规模的研究、开发和应用。 当今人工智能科技和其他高科技的种种发展动向表明,在人类进入“信息社会”之后,将有一场规模巨大的“智能革命”,智能革命的环境是人工智能对人、对社会的广泛而深入的影响,就像今天的微电子技术对信息革命的影响一样。人工智能科技将渗透到社会各个领域,人类将对人工智能科技进行大规模的研究、开发和应用。 总之,人工智能的应用前景一片的好,当然,挑战也很多,只有科学不断发展突破进步,我们才能真正的享受智能化带给我们的乐趣„ 目录 1.设计任务 1.1 设计题目 1.2设计要求 1.3设计任务 2.方案设计 2.1原理 2.2 具体设计方法 3.系统实施 3.1 系统开发环境 3.2系统主要功能介绍 3.3处理流程图 3.4 核心源程序 3.5系统运行结果 4.开发心得 4.1设计存在的问题 4.2进一步改进提高的设想 4.3经验和体会 5.参考文献 1.设计任务 1.1 设计题目 在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,该问题称八数码难题或者重排九宫问题。 1.2 设计要求 其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。 1.3 设计任务 利用人工智能的图搜索技术进行搜索,解决八数码问题来提高在推理中的水平,同时进行新方法的探讨。 2.方案设计 2.1 原理 八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式,即树式搜索和线式搜索。搜索策略大体有盲目搜索和启发式搜索两大类。盲目搜索就是无“向导”的搜索,启发式搜索就是有“向导”的搜索。 2.2 具体设计方法 启发式搜索 由于时间和空间资源的限制,穷举法只能解决一些状态空间很小的简单问题,而对于那些大状态空间的问题,穷举法就不能胜任,往往会导致“组合爆炸”。所以引入启发式搜索策略。启发式搜索就是利用启发性信息进行制导的搜索。它有利于快速找到问题的解。由八数码问题的部分状态图可以看出,从初始节点开始,在通向目标节点的路径上,各节点的数码格局同目标节点相比较,其数码不同的位置个数在逐渐减少,最后为零。所以,这个数码不同的位置个数便是标志一个节点到目标节点距离远近的一个启发性信息,利用这个信息就可以指导搜索。即可以利用启发信息来扩展节点的选择,减少搜索范围,提高搜索速度。 启发函数设定。对于八数码问题,可以利用棋局差距作为一个度量。搜索过程中,差距会逐渐减少,最终为零,为零即搜索完成,得到目标棋局。 3.系统实施 3.1 系统开发环境 Windows操作系统、SQL Server 200X 3.2 系统主要功能介绍 该搜索为一个搜索树。为了简化问题,搜索树节点设计如下: struct Chess//棋盘 3.4 核心源程序 #include “stdio.h” #include “stdlib.h” #include “time.h” #include “string.h” #include const int N=3;//3*3棋盘 const int Max_Step=30;//最大搜索深度 enum Direction{None,Up,Down,Left,Right};//方向 struct Chess//棋盘 { int cell[N][N];//数码数组 int Value;//评估值 Direction BelockDirec;//所屏蔽方向 struct Chess * Parent;//父节点 }; //打印棋盘 void PrintChess(struct Chess *TheChess){ printf(“----------n”);for(int i=0;i printf(“t”); for(int j=0;j { printf(“%dt”,TheChess->cell[i][j]); } printf(“n”);} printf(“tttt差距:%dn”,TheChess->Value);} break;case Left: t_j++; if(t_j>=N) AbleMove=false; break;case Right: t_j--; if(t_j<0) AbleMove=false; break;};if(!AbleMove)//不可以移动则返回原节点 { return TheChess;} if(CreateNewChess){ NewChess=new Chess(); for(int x=0;x { for(int y=0;y NewChess->cell[x][y]=TheChess->cell[x][y]; } } else NewChess=TheChess;NewChess->cell[i][j]=NewChess->cell[t_i][t_j];NewChess->cell[t_i][t_j]=0; return NewChess;} //初始化一个初始棋盘 struct Chess * RandomChess(const struct Chess * TheChess) p=NULL;queue do{ p1=(struct Chess *)Queue1.front(); Queue1.pop(); for(int i=1;i<=4;i++)//分别从四个方向推导出新子节点 { Direction Direct=(Direction)i; if(Direct==p1->BelockDirec)//跳过屏蔽方向 continue; p2=MoveChess(p1,Direct,true);//移动数码 if(p2!=p1)//数码是否可以移动 { Appraisal(p2,Target);//对新节点估价 if(p2->Value<=p1->Value)//是否为优越节点 { p2->Parent=p1; switch(Direct)//设置屏蔽方向,防止往回推 { case Up:p2->BelockDirec=Down;break; case Down:p2->BelockDirec=Up;break; case Left:p2->BelockDirec=Right;break; case Right:p2->BelockDirec=Left;break; } Queue1.push(p2);//存储节点到待处理队列 if(p2->Value==0)//为0则,搜索完成{ p=p2; i=5; } } else { //打印 if(T){ /*把路径倒序*/ Chess *p=T; stack while(p->Parent!=NULL) { Stack1.push(p); p=p->Parent; } printf(“搜索结果:n”); while(!Stack1.empty()) { PrintChess(Stack1.top()); Stack1.pop(); } printf(“n完成!”);}else printf(“搜索不到结果.深度为%dn”,Max_Step); scanf(“%d”,T);} 3.5 系统运行结果 4.开发心得 4.1 设计存在的问题 完全能解决简单的八数码问题,但对于复杂的八数码问题还是无能为力。4.2 进一步改进提高的设想 可以改变数码规模(N),来扩展成N*N的棋盘,即扩展为N数码问题的求解过程。 2、内存泄漏。由于采用倒链表的搜索树结 05.参考文献 [1]王汝传.计算机图形学[M].北京:人民邮电出版社,1999:123-130.[2]刘榴娣,刘明奇,党长民.实用数字图像处理[M].北京:北京理工大学出版,2000:12-25..[3]丁兆海.Delphi基础教程[M].北京:电子工业出版社,1999.[4]王小华.Delphi 5程序设计与控件参考[M].北京:电子工业出版社,1999:70-120.[5]赵子江.多媒体技术基础[M].北京:机械工业出版社,2001:118-130.[6]段来盛,郑城荣,曹恒.Delphi实战演练[M].北京:人民邮政出版社,2002:80-95. 读书的好处 1、行万里路,读万卷书。 2、书山有路勤为径,学海无涯苦作舟。 3、读书破万卷,下笔如有神。 4、我所学到的任何有价值的知识都是由自学中得来的。——达尔文 5、少壮不努力,老大徒悲伤。 6、黑发不知勤学早,白首方悔读书迟。——颜真卿 7、宝剑锋从磨砺出,梅花香自苦寒来。 8、读书要三到:心到、眼到、口到 9、玉不琢、不成器,人不学、不知义。 10、一日无书,百事荒废。——陈寿 11、书是人类进步的阶梯。 12、一日不读口生,一日不写手生。 13、我扑在书上,就像饥饿的人扑在面包上。——高尔基 14、书到用时方恨少、事非经过不知难。——陆游 15、读一本好书,就如同和一个高尚的人在交谈——歌德 16、读一切好书,就是和许多高尚的人谈话。——笛卡儿 17、学习永远不晚。——高尔基 18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向 19、学而不思则惘,思而不学则殆。——孔子 20、读书给人以快乐、给人以光彩、给人以才干。——培根 《人工智能应用》课程实验教学大纲时间:2010-05-23 00:04来源:知行网 编辑:麦田守望者 点击:168次 一、实验课程基本情况与说明 (一)课程中文名称:人工智能应用 (二)课程英文名称:Application of Artificial Intelligence (三)实验学分:1 (四)实验学时:36 (五)适用专业及年级:教育技术学3年级 (六)所属实验室名称:软件实验室 (七)实验教材及参考书: 1.实验教科书(五号宋体加粗) [1]《人工智能教程》,张仰森、黄改娟编著,2008年,高等教育出版社; 2.实验参考书(五号宋体加粗) [1]《人工智能及其应用》李长河主编,2006年,机械工业出版社; [2] 《人工智能》,[美]Rob Callan编,2004年,黄厚宽、田盛丰等译,电子工业出版社; [3] 《人工智能及其应用》(第三版),2004年,蔡自兴、徐光佑编,清华大学出版社。 [4] 《人工智能技术导论》(第二版),2000年,廉师友编,西安电子科技大学出版社; (八)实验目的和内容: 目的:通过本课程的学习,培养学生掌握计算机如何来模仿人脑所从事的推理、学习、思考和规划等思维活动,来解决需人类专家才能解决的复杂问题,进一步熟悉知识的获取、知识的表示方法和知识的使用等。 内容: 1、产生式系统 2、问题归约 3、逻辑推理 4、机器人问题求解 5、专家系统 (九)考核方式及成绩评定:(五号宋体加粗) 上机考试、编程并运行通过,提交实验报告。成绩评定标准:学生成绩以20%的比例计入《人工智能应用》这门课程。 (十)实验环境: 硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 软件: C、lisp、C++、prolog任选; 所有实验使用到的设备:微机、服务器、网络设备、打印机、编程环境等。 (十一)实验项目及安排 以下实验项目中必做题目在学期结束时必须完成,并提交实验报告;选做题可以根据实际情况选择做和不做。 序号 实验名称 实验类型 学时 每组人数 备注 1产生式系统 基础与验证性 4 1 必做 2问题归约 基础与验证性 4 1 必做 3逻辑推理 基础与验证性 4 1 必做BP网络解决XOR分类问题(用BP神经网络实现XOR分类)基础与验证性 4 1 4、5二 选一状态空间搜索(8数码问题)基础与验证性 4 1机器人问题求解 综合性、设计性 8 1 必做专家系统 综合性、设计性 12 1 必做 (十二)实验报告要求 基础和验证性实验:理工类:参照范本、计算机类:电子版数据全部存盘 设计性、综合性实验:按照定义(设计性实验是指给定实验目的要求和实验条件,由学生自行设计实验方案并加以实现的实验;综合性实验是指实验内容涉及本课程的综合知识或与本课程相关课程知识的实验)来做,理工类:纸质材料存档,、计算机类:电子版数据全部存盘。 二、实验课程授课大纲 实验一 产生式系统 1、实验目的熟悉和掌握产生式系统的运行机制,掌握基于规则推理的基本方法。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)对已有的产生式系统(默认的例子)进行演示,同时可以更改其规则库或(和)事实库,进行正反向推理,了解其推理过程和机制。 (2)自己建造产生式系统(包括规则库和事实库),然后进行推理,即可以自己输入任何的规则和事实,并基于这种规则和事实进行推理。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验二问题归约 1、实验目的熟悉和掌握问题规约法的原理、实质和规约过程;理解规约图的表示方法。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)演示已有的梵塔问题(默认程序例程),可以更改圆盘数量,了解问题解决的归约过程。 (2)分析归约机理,熟悉问题规约的详细过程。 (3)自己建造一个梵塔问题归约系统,然后根据归约原理进行逆向推理,得到本原问题集合。通过解决这些本原问题,最终求解问题。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验三 逻辑推理 1、实验目的熟悉和掌握逻辑推理的原理、实质和过程。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)编写公理系统证明程序。 (2)上机运行。打印出运行结果,并结合程序运行结果进行分析。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验四 BP网络解决XOR分类问题 1、实验目的用BP神经网络实现XOR分类。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)用BP神经网络实现XOR分类 (2)上机运行。打印出运行结果,并结合程序运行结果进行分析。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验五 状态空间搜索 1、实验目的用实验方法模拟8数码问题。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)用实验方法模拟8数码问题。 (2)上机运行。打印出运行结果,并结合程序运行结果进行分析。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验六 机器人问题求解 1、实验目的了解机器人的信息处理流程,比较基于行为主义和符号主义的人工智能方法在机器人中的应用特点和效果,以及结合两者的规划与决策方式。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 4、实验内容及步骤 (1)了解AmigoBot移动机器人的传感器和驱动器工作情况; (2)观察机器人的反射式避障行为; (3)编程控制机器人路径,观察行为并比较其避障效果; (4)观察混合式方法的导航效果,分析行为决策和规划在系统中的作用; (5)分析根据先验地图规划路径的导航系统的优缺点。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 实验七 专家系统 1、实验目的加深学生对专家系统原理的理解,使学生初步掌握专家系统的设计和实现方法。 2、实验设备 (1)硬件最低要求:586微型计算机,主频450MHZ以上,内存64MB以上,硬盘10G。每个学生每次上机实验使用一台计算机。 (2)软件: C、lisp、C++、prolog任选; 3、实验要求 (1)了解专家系统设计与实现的一般方法; (2)熟悉和掌握产生式系统的运行机制、产生式规则的程序语言实现; 4、实验内容及步骤 综合利用人工智能的产生式系统、图搜索算法以及专家系统的框架,建造一个小型的医疗诊断专家系统,要求系统具有知识库、推理机和动态数据库三部分。 5、实验报告 学院______________________系____________________专业_____________________ 班级_______________________姓名__________________学号____________________ 实验时间______________________实验地点___________________________________ 组号_____________________________同组人_________________________________ 实验名称_______________________________________________________ 一、实验目的二、实验内容及原理 三、实验仪器 四、实验步骤 五、实验过程及实验数据记录 六、实验数据处理与分析,并得出结论 七、实验心得与体会 (责任编辑:麦田守望者 人工智能技术基础 PROLOG语言编程练习 实验报告 一、实验目的: 加强对逻辑程序运行机能的理解,更好地掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。 二、实验要求: (1)程序自选,但必须是描述某种逻辑关系的小程序。(2)跟踪程序的运行过程,理解逻辑程序的特点。 (3)对原程序可作适当修改,以便熟悉程序的编辑、编译和调试过程。 三、实验内容: 在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序,如描述亲属关系的PROLOG程序或其他小型演绎数据库程序等。 四、实验结果: (1)验证题1源程序 domains d=integer predicates not_(D,D)and_(D,D,D)or_(D,D,D)xor(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).xor(Input1,Input2,Output):- not_(Input1,N1),/*(1,0)*/ not_(Input2,N2),/*(0,1)*/ and_(Input1,N2,N3),and_(Input2,N1,N4),or_(N3,N4,Output).(2)验证题2源程序 predicates student(integer,string,real)grade goal grade.clauses student(1,“zhang”,90.2).student(2,“li”,95.5).student(3,“wang”,96.4).grade:-write(“Please input name:”),readln(Name),student(_,Name,Score),nl,write(Name,“grade is”,Score).grade:-write(“Sorry,the student cannot find!”).(3)验证题3源程序 domains n,f=integer predicates factorial(n,f)goal readint(I), factorial(I,F), write(I,“!=”,F).clauses factorial(1,1).factorial(N,Res):- N>0,N1=N-1,factorial(N1,FacN1),Res=N*FacN1.(4)验证题4源程序 domains s=symbol predicates p(s)p1(s)p2(s)p3(s)p4(s)p5(s,s)p11(s)p12(s)p31(s)goal p(X),write(“the x is ”,X).clauses p(a1):-p1(b),p2(c).p(a2):-p1(b),p3(d),p4(e).p(a3):-p1(b),p5(f,g).p1(b):-p11(b1),p12(b2).p3(d):-p31(d1).p2(c1).p4(e1).p5(f,g).p11(b1).p12(b2).p31(d11).(5)验证题5源程序 domains name=symbol age =integer predicates player(name,age)match(name,name)clauses player(peter, 9).player(paul, 10).player(chris, 9).player(susan, 9).match(X,Y):-player(X,9), player(Y,9), X<>Y.match(X,Y):-!, player(X,9), player(Y,9), X<>Y.match(X,Y):-player(X,9),!, player(Y,9), X<>Y.match(X,Y):-player(X,9), player(Y,9),!, X<>Y.match(X,Y):-player(X,9), player(Y,9), X<>Y,!.在外部Goal: match(X,Y)条件下,“分别”采用以上各match谓词,观察对应的执行结果如下: (a) (b) (c) (d) (e) 五、实验总结 (1)实验中出现的问题 a、做完验证题一,用load加载已改为.PRO格式的验证题二文本,加载不成功。b、由于验证题五需要在外部Goal: match(X,Y)条件下,“分别”采用以上各match谓词,观察对应的执行结果。我采用建立一个源程序文本,load加载进去,修改删除五次match谓词结构,结果第一次编辑运行完,第二次load加载,还是第一次修改后的结果。 (2)对问题的解决方法 a、验证题一运行验证完后,加以保存,再进行load加载下一验证实验。 b、由于在进行第二个match谓词验证之前,对第一个match谓词运行的结果进行了保存,所以第二次load加载是第一个保存后的结果。为了减少不必要的麻烦分别建立了五个独立.PRO文本。分别load加载后,实验运行成功。(3)心得体会 本次实验,课上基本都有提到,课上的理论推理知识较易掌握,实验是对课上理论知识的实践,进一步的夯实。在实验前,认真阅读了实验指导,加以课上老师的指点,实验完成的十分顺利。 通过本次上机实验,使自己对PROLOG语言集成环境下调试运行,有了一定的掌握,目前所接触到的语言的调试运行都大同小异。掌握一门新语言,除了掌握理论知识外,上机实验,多动脑分析代码,多动手调试运行代码十分重要。对于工科类学生深知实践对工作学习的重要性。第二篇:人工智能与专家系统感想
第三篇:人工智能与专家系统课程设计解读
第四篇:人工智能实验
第五篇:人工智能实验一