简单动物识别系统的知识表示实验报告

合集下载

动物识别实训报告

动物识别实训报告

一、实训背景随着科技的发展,动物识别技术在农业、野生动物保护、生物多样性研究等领域发挥着越来越重要的作用。

为了提高学生对动物识别技术的理解和应用能力,我们开展了为期两周的动物识别实训课程。

本次实训旨在通过理论学习和实践操作,使学生掌握动物识别的基本原理、方法和技巧,提高学生在实际工作中应用动物识别技术的能力。

二、实训目标1. 理解动物识别的基本原理和常用方法。

2. 掌握动物识别软件的使用技巧。

3. 能够独立识别常见的动物种类。

4. 培养学生的团队协作能力和实践操作能力。

三、实训内容1. 理论学习(1)动物识别的基本原理:介绍了动物识别的背景、意义和发展趋势,讲解了动物识别的基本原理,如形态学识别、分子生物学识别、行为学识别等。

(2)动物识别方法:介绍了常见的动物识别方法,如图像识别、声音识别、气味识别等,并分析了各种方法的优缺点。

(3)动物识别软件:介绍了常用的动物识别软件,如Google Vision API、Microsoft Azure Computer Vision API、百度AI动物智能识别系统等,并讲解了软件的使用方法。

2. 实践操作(1)图像识别:利用动物识别软件对图片进行识别,识别内容包括动物种类、颜色、姿态等。

(2)声音识别:通过录制动物声音,利用动物识别软件进行识别,识别内容包括动物种类、叫声特点等。

(3)气味识别:利用动物识别设备,对动物的气味进行分析,识别动物种类。

四、实训过程1. 第一周:理论学习(1)组织学生进行理论学习,讲解动物识别的基本原理、方法和常用软件。

(2)安排学生进行动物识别软件的学习和操作,要求学生掌握软件的基本功能和使用方法。

2. 第二周:实践操作(1)分组进行实践操作,每组选择一种识别方法进行实践。

(2)教师对学生的实践过程进行指导和评价,帮助学生解决操作过程中遇到的问题。

(3)每组提交实践报告,总结实训过程中的收获和体会。

五、实训成果1. 学生掌握了动物识别的基本原理和方法。

简单动物识别系统的知识表示

简单动物识别系统的知识表示

•简单动物识别系统的知识表示• 1. 实验目的•理解产生式知识表示方法,能够用选定的编程语言设计产生式系统的规则库和综合数据库。

• 2. 实验环境•在微型计算机上,选一种编程语言。

• 3. 实验要求•(1) 以动物识别系统的产生式规则为例。

•(2) 用选定的编程语言建造知识库和综合数据库,并能对它们进行增加、删除和修改操作。

•学习任务•通过网络搜索,以“专家系统的作用”为主题进行调查。

搜集各种应用专家系统的实例,分析其用途,并根据不同的用途进行分类。

•请上网查找专家系统的相关资料,从不同的角度追溯专家系统的发展史。

•作品结果:把上面两个任务结果,形成一个WORD文档。

其中对专家系统的用途分类形成一个表格。

•用Intermodeller设计一个小型的专家系MYCIN是一个通过提供咨询服务来帮助普通内科医生诊治细菌感染性疾病的专家系统,其于1972年开始研制,74年基本完成,并投入实际应用。

MYCIN的取名来自多种治疗药物的公共后缀,如clindamycin、erythromycin、kanamycin等。

如果说能推测有机化合物分子结构的DENDRAL是世界上第一个有重要实用价值的专家系统,那末MYCIN则是最有影响力的专家系统。

围绕着MYCIN的各种研究工作一直沿续了10年,对于推动知识工程以及专家系统学科的建立和发展具有重要影响。

可以说,早期的专家系统,尤其是医疗诊断和咨询型专家系统,许多都参照了MYCIN系统的技术,如知识表示、不确定推理、推理解释、知识获取等。

MYCIN也设计为典型的产生式系统,由规则库、综合数据库和控制系统三个部分组成;只是基于规则的推理采用逆向方式,即从问题求解的目标出发,搜寻原始证据对于目标成立的支持,并传递和计算推理的不确定性。

从KB系统的组成来看,规则库就是MYCIN的知识库,综合数据库和控制系统联合形成推理机。

其中,综合数据库用以保存问题求解的原始证据(初始状态)和中间结果。

动物标本识别实训报告

动物标本识别实训报告

一、实训背景动物标本是生物学研究和教学的重要资源,对于普及生物学知识、提高学生的观察和分析能力具有重要意义。

为了使学生更好地掌握动物标本的识别技巧,提高生物学实践能力,我们开展了动物标本识别实训。

二、实训目的1. 了解动物标本的制作过程和保存方法。

2. 熟悉各类动物标本的特点和识别方法。

3. 培养学生的观察能力、分析能力和实践操作能力。

4. 提高学生对生物学知识的运用能力。

三、实训内容1. 标本制作与保存实训过程中,我们首先学习了动物标本的制作过程,包括剥制、填充、整形、着色等步骤。

同时,了解了不同种类动物标本的保存方法,如浸制法、干制法、冷冻干燥法等。

2. 标本识别实训内容主要包括各类动物标本的识别,包括:(1)无脊椎动物标本:如昆虫、软体动物、甲壳动物等。

(2)脊椎动物标本:如鱼类、两栖类、爬行类、鸟类和哺乳类等。

3. 实训操作在实训过程中,我们按照以下步骤进行操作:(1)观察标本的外观特征,如体型、颜色、花纹等。

(2)了解标本所属的动物门类、纲、目、科、属和种。

(3)结合所学知识,对标本进行分类和识别。

四、实训过程1. 教师讲解动物标本的制作与保存方法,并展示各类动物标本。

2. 学生分组进行实训操作,每组由一名教师指导。

3. 学生按照实训内容,对动物标本进行识别和分类。

4. 教师对学生的实训成果进行点评和指导。

五、实训成果1. 学生掌握了动物标本的制作与保存方法。

2. 学生能够识别各类动物标本,提高了生物学实践能力。

3. 学生对生物学知识有了更深入的理解和运用。

六、实训总结通过本次动物标本识别实训,我们取得了以下成果:1. 学生对动物标本有了全面的认识,了解了动物标本的制作过程和保存方法。

2. 学生的观察能力、分析能力和实践操作能力得到了提高。

3. 学生的生物学知识得到了巩固和拓展。

总之,本次实训活动取得了圆满成功,为今后生物学教学和研究奠定了坚实基础。

在今后的学习和工作中,我们将继续努力,不断提高自身综合素质,为我国生物学事业贡献力量。

报告_基于产生式系统的动物识别系统

报告_基于产生式系统的动物识别系统

报告_基于产⽣式系统的动物识别系统实验基于产⽣式系统的动物识别系统知识表⽰与推理专题魏江200620108203 计算机系统结构专业(1班)正向推理是产⽣式系统的⼀种推理⽅法,它是从⼀组表⽰事实的谓词或命题出发,使⽤⼀组产⽣式规则,⽤以证明该谓词公式或命题是否成⽴.本实验⽤两种⽅法实现了⼀个简单的动物识别系统.⼀、实验⽬的1.熟悉和掌握产⽣式系统的运⾏机制,2.掌握基于产⽣式系统的正向推理的基本⽅法。

3.简要⽐较两种实现⽅式的异同⼆、实验内容1. 能根据输⼊的动物特征判断是那种动物或给出相应的回答. (第⼀种⽅法)2. 如果根据初始输⼊的动物特征不能判断,则可以动态增加新事实(即动物特征)来判断属于那种动物. (第⼀种⽅法)3. 可根据提⽰选择所要识别的动物是否具有该特征.(第⼆种⽅法)三、算法设计编程语⾔与编程环境: C++,VC6.0下⾯⽤第⼀种⽅法简要说明算法的设计过程.⾸先建⽴了⼀个animal_identifier的类.该类包含的属性有:f和r. f指针指向事实集,r指向规则集.包括的关键成员函数有:Creat_Rules(),Creat_Fact(), reason().1 建⽴静态规则库.即建⽴产⽣式规则.本算法采⽤了产⽣中间事实的⽅法,这样做的优点是涉及到的规则少,容易理解,便于建⽴和使⽤规则.为了便于设计,我们把要识别的动物限于7种,这样所需要的产⽣式规则就⽐较少.本算法总共有16种规则,部分规则如下:R1:如果某动物有⽑发则该动物是哺乳动物R2:如果某动物有奶则该动物是哺乳动物R3:如果某动物有⽻⽑则该动物是鸟R4:如果某动物会飞,且下蛋则该动物是鸟R5:如果某动物吃⾁则该动物是⾷⾁动物R6:如果某动物有锋利的⽛齿,且有⽖,且眼睛盯着前⽅则该动物是⾷⾁动物R7:如果某动物是哺乳动物,且有蹄则该动物是有蹄类哺乳动物……………..R16: 如果反刍则哺乳动物上述规则库由类animal_identifierd的⽅法Creat_rules()静态实现.2 建⽴事实库建⽴事实库是由⽅法Creat_Fact()实现的.该⽅法要求⽤户动态输⼊事实,即要求⽤户先输⼊特征个数,然后输⼊动物的特征,如果未识别出来,⽤户可以增加输⼊,或者退出.3 正向推理过程.正向推理是从已知事实出发,通过规则库求得结论,或称数据驱动⽅式。

人工智能动物识别实验报告

人工智能动物识别实验报告

一.实验目的:1.熟悉并掌握如何使用SQL SERVER 20002.熟悉JAVA语言编程3.熟悉讲JAVA与数据库结合进行数据库编程4.理解产生式表示法5.熟悉产生式系统的基本过程二.实验环境及工具SQL SERVER 2000,ECLIPSE 7.0,PC机一台,Tomcat 6.0三.实验步骤及方法1.产生式规则分析通过分析书上的15条规则,我们可以得到该图为动物识别系统的部分推理网络在该图中,最上层的节点称为“结论”,中间节点称为“中间假设”,终结点称为“事实”。

其中,每个“结论”都是问题的一个目标,所有的“结论”就构成了本问题的一个目标集合。

经过分析可以本问题的事实有:有毛发,有奶等20个事实;中间假设有:该动物是哺乳动物,鸟,肉食动物和有蹄类动物;目标集合是:金钱豹,虎,长颈鹿,斑马,鸵鸟,企鹅和信天翁。

2.数据库设计根据第一步的分析,我们可以建立一个animal数据库,其中存放两张表,一张称为facts的事实表。

另一种称为factRules的规则表3.程序设计数据库及表已经建立好之后,我们就可以设计本系统的程序了,经过分析,我们得到如下的流程图4.使用Eclipse编程实现AnimalAction的主要源代码为:import com.myhomework.animal.OpenDb;public class AnimalAction extends Action { static OpenDb db = null;public static OpenDb getDB() {if (db == null) {db = new OpenDb();}return db;}public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {do {do {i++;String sql4 = "select * from factRules where rulesNo=" + "'i'";ResultSet rs = getDB().executeQuery(sql4);String sql8 = "select count(*) total from newFacts";ResultSet rsr = getDB().executeQuery(sql8);if (total < count) {return mapping.findForward("err2");}isNew = IsInNewFcats(obj1);} while (!isNew);String sql6 = "select * from factRules where rulesNo=" + "'i'";String cName = "att5";ResultSet rss = getDB().executeQuery(sql6);int m=0;try{isIn = (m > 24 && m < 32);if (isIn) {String sql9 = "select factName from facts where factNo="+ "'m'";ResultSet rss2 = getDB().executeQuery(sql9);request.setAttribute("reslut", factName);return mapping.findForward("succ");}String sql7 = "insert into newFacts values(" + "'m'" + ")";getDB().executeUpdate(sql7);} while (!isIn && i<16);return mapping.findForward("err1");}}Struts-config.xml的主要配置为:<form-beans><form-bean name="animalactionform"type="com.myhomework.animal.AnimalActionForm"> </form-bean></form-beans><action-mappings><action path="/animal"type="com.myhomework.animal.AnimalAction"scope="request"name="animalactionform"><forward name="succ"path="/success.jsp"/><forward name="err1"path="/error1.jsp"/><forward name="err2"path="/error2.jsp"/></action>四.实验结果1.在浏览器上输入http://localhost:8080/anistruts,显示该系统的首页为:2.单击“产生式规则”,即跳转到产生式规则表页面为:交”按钮,则系统成功识别的结果4.如果只选中“有毛发”,然后点击“提交”,条件不足,无法识别的结果5.条件错误,无法识别的结果五.实验总结通过本实验,我基本熟悉了SQL Server2000的基本使用,并理解了产生式表示法和产生式系统的基本过程;也可以熟练的使用Eclipse进行数据库编程。

动物识别系统实验报告人工智能原理及其应用

动物识别系统实验报告人工智能原理及其应用

实验报告实验目的及要求:实验目的:1.熟悉产生式的特点,基本结构和设计思想2.掌握基于规则推理的基本过程和方法(在实验中采用正向推理过程)3.学会用高级程序设计语言开发基于规则的动物识别系统实验要求:1.根据动物识别系统的规则建立合理的数据结构或数据库来表示知识。

2.利用所选开发语言来建立推理过程。

(该程序能正向推理识别动物过程)3.利用控制台或者图形界面给出合理的交互接口,实现基本演示功能。

4.提交实验报告和源程序,总结实验结论和经验教训。

实验原理:1.基于规则产生式系统结构:基于规则的产生式系统一般由规则库(知识库)、综合数据库和推理引擎(推理机)三部分组成,规则库中它的基本组成框架如下图1所示。

知识库由谓词演算事实和有关讨论主题的规则构成,综合库又称为上下文,用来暂时存储推理过程中的结论和数据。

推理机是用规则进行推理的过程和行为,。

知识采集系统是领域专家把相关领域的知识表示成一定的形式,并输入到知识库中。

解释系统通过用户输入的条件来分析被系统执行的推理结构,并将专家知识以易理解的方式并把知识解释给用户。

图1 规则产生式系统的基本结构2. 简单动物识别产生式系统结构:⑴ 知识库 ANIMAL的知识库非常小,仅仅包含16条规则(一般说来,一个产生式系统的知识库应包含≥几百条规则);⑵ 解空间很小,仅仅包含8个解,或8个最高假设(在一个特定的动物园里,共有虎、豹、长颈鹿、斑马、鸵鸟、企鹅和信天翁、八哥等8种动物);⑶ 初始事实集合很小,仅仅包含21个事实,如图中的F1至F21;⑷ 数据(即事实、证据、断言),知识(即浅层知识,规则)和推理都是精确的,即确定性的;⑸ 知识库。

实验步骤:本识别系统需要通过正向推理,正向推理过程的具体步骤是:(1)读入事实集到工作存储器。

(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。

如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。

简单动物识别系统的知识表示

简单动物识别系统的知识表示

特征选择
选择最具代表性的特征, 去除冗余和无关的特征, 提高分类准确率和效率。
特征编码
将提取的特征进行编码, 以便机器学习算法能够理 解和处理。
深度学习模型
卷积神经网络(CNN)
01
用于图像识别和分类的深度学习模型,能够自动提取图像中的
特征。
循环神经网络(RNN)
02
用于处理序列数据的深度学习模型,可以用于动物声音识别和
02
动物识别系统概述
定义与分类
定义
动物识别系统是一种利用计算机 视觉和人工智能技术,对动物图 像或视频进行自动识别和分析的 系统。
分类
动物识别系统可以根据识别对象 的不同,分为哺乳动物识别系统 、鸟类识别系统、爬行动物识别 系统等。
动物识别技术的发展历程
起步阶段
动物识别技术最初起源于20世纪80年代,主要依赖于手工特征提取 和简单的分类器,识别准确率不高。
06
结论与展望
研究成果总结
知识表示方法的有
效性
本研究提出了一种基于特征提取 和分类器的简单动物识别系统, 通过实验验证了该方法的有效性 和准确性,能够快速准确地识别 动物种类。
系统的可扩展性
该系统采用模块化设计,方便添 加新的动物种类和特征,具有一 定的可扩展性和灵活性。
实际应用价值
简单动物识别系统在野生动物保 护、生态监测、动物园管理等领 域具有广泛的应用前景,能够提 高动物管理的科学性和效率。
实时性要求
总结词
简单动物识别系统通常需要在实时场景下运行,对系统的响应速度和计算效率提出了较高的要求。
详细描述
为了满足实时性要求,可以采用高效的算法和计算框架,如使用卷积神经网络进行特征提取,采用轻 量级模型进行推理等。同时,可以采用硬件加速技术,如GPU加速、FPGA加速等,提高系统的计算 效率。

动物识别系统实验报告

动物识别系统实验报告
{
stringFindMaxNumber ="select max(动物序号) from动物库";
SqlCommandcmd2 =newSqlCommand( FindMaxNumber ,con);
1.1功能需求
1.1.1动物识别正向推理
正向推理是从已知事实出发,通过规则库求的结论,也称为自底向上,或称为数据驱动方式。
正向推理过程的具体步骤是:
(1)读入事实集到工作存储器。
(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。
动物识别系统设计主体框架:本系统只用了一个页面实现,界面使用上下结构的框架设计,当用户进入系统的时候,打开Default.aspx,该页面分为上下两个部分,上面的部分是用于根据问题输入动物特征,下面的部分是新规则的加入功能部分,也是用户进行添加新规则的页面,这好似一个导航页面,用户可以更具自己的选择进行的操作,由上至下进入不同的功能部分。各个功能模块的设计:
staticint[] a =newint[7];
SqlConnectioncon =newSqlConnection("Server = PC-11; user id = sa;password = ;Database = animal;");
protectedvoidPage_Load(objectsender,EventArgse)
YesOption.Checked =false;
}
protectedvoidNoOption_CheckedChanged(objectsender,EventArgse)
{
a[Convert.ToInt32(Questionselected.SelectedValue)] = 0;

动物识别系统实验报告

动物识别系统实验报告
if (this.CheckBoxList1.Items[j].Selected == true) {
condition[numbers] = Int32.Parse(this.CheckBoxList1.Items[j].Value.ToString());
numbers++;
}
}
//添加用户自己输入的项
在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。所以数据库系统结构如下:
4. 系统设计
本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。系统实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。
using (DBFunction DBfun = new DBFunction(DBTransactionType.WithTran)) { //如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。
if (this.TextBox1.Text.ToString() != "" && !check(this.TextBox1.Text.ToString(),DBfun)) {
bool check = true;
for (int j = 1; j < 6; j++){
if (dt.Rows[i][j].ToString() == "")
{ }
else{

动物视觉认知实验报告(3篇)

动物视觉认知实验报告(3篇)

第1篇一、实验背景随着科学技术的不断发展,动物认知研究越来越受到重视。

其中,动物视觉认知作为动物认知研究的重要组成部分,对于揭示动物感知世界的方式和机制具有重要意义。

本研究旨在通过动物视觉认知实验,探讨动物视觉系统的工作原理和认知能力。

二、实验目的1. 了解动物视觉系统的工作原理和认知能力;2. 掌握动物视觉认知实验的基本方法和技术;3. 分析动物视觉认知实验数据,得出有意义的结论。

三、实验材料与设备1. 实验动物:小鼠(雄性、雌性各5只,年龄为1个月大);2. 实验器材:视觉水迷宫装置、计算机、摄像头、数据分析软件;3. 实验材料:光栅、水槽、平台、光源等。

四、实验方法1. 实验动物适应:将小鼠置于实验室环境中适应1周,使其熟悉实验环境和实验人员;2. 实验动物分组:将小鼠随机分为实验组和对照组,每组5只;3. 实验训练:对实验组动物进行视觉水迷宫训练,对照组动物进行普通水迷宫训练;4. 视觉水迷宫训练:将实验组动物置于视觉水迷宫装置中,观察其寻找隐藏平台的视觉能力;5. 数据收集:记录实验动物在视觉水迷宫中的行为数据,包括游泳时间、游泳路径、触底次数等;6. 数据分析:运用统计学方法对实验数据进行分析,比较实验组和对照组动物在视觉水迷宫中的表现差异。

五、实验结果1. 实验组动物在视觉水迷宫中的游泳时间明显短于对照组,表明实验组动物在视觉水迷宫中的表现更好;2. 实验组动物在视觉水迷宫中的游泳路径更加直接,触底次数更少,说明实验组动物在视觉水迷宫中的视觉能力更强;3. 实验结果提示,视觉水迷宫训练能够有效提高动物视觉认知能力。

六、讨论1. 本实验结果表明,视觉水迷宫训练能够有效提高动物视觉认知能力,为动物视觉认知研究提供了新的思路和方法;2. 视觉水迷宫实验作为一种动物视觉认知研究方法,具有较高的可操作性和重复性,有助于深入探讨动物视觉系统的工作原理和认知能力;3. 在实验过程中,动物视觉认知能力受到多种因素的影响,如动物种类、年龄、性别等,需要在实验设计和数据分析过程中充分考虑这些因素。

动物识别专家系统实验报告

动物识别专家系统实验报告

题目:动物识别专家系统一.实验目的理解和掌握产生式只是表示方法,能够用选定的编程语言实现产生式系统的规则库。

二.实验内容(1)以动物识别系统的产生式规则为例。

(2)用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三.实验原理动物识别专家系统是流行的专家系统实验模型,它用产生式r来表示知识,共15条r、可以识别七种动物,这些r既少又简单,可以改造他们,也可以加进新的r,还可以用来识别其他东西的新r来取代这些r。

动物识别15条r:r1:IF 动物有毛发THEN 该动物是哺乳动物r2: IF 动物能产奶THEN该单位是哺乳动物r3: IF 该动物有羽毛THEN该动物是鸟r4: IF动物会飞AND会下蛋THEN该动物是鸟r5: IF动物吃肉THEN该动物是肉食动物r6: IF动物有犬齿AND有爪AND眼盯前方THEN该动物是食肉动物r7: IF动物是哺乳动物AND有蹄THEN该动物是有蹄动物r8: IF动物是哺乳动物AND是反刍动物THEN该动物是有蹄动物r9: IF动物是哺乳动物AND是食肉动物AND是黄褐色的AND有暗斑点THEN该动物是豹r10:IF动物是黄褐色的AND 是哺乳动物AND 是食肉AND 有黑条纹THEN该动物是虎r11:IF动物有暗斑点AND 有长腿AND 有长脖子AND 是有蹄类THEN该动物是长颈鹿r12:IF动物有黑条纹AND 是有蹄类动物THEN该动物是斑马r13:IF动物有长腿AND 有长脖子AND 是黑色的AND 是鸟AND 不会飞THEN该动物是鸵鸟r14:IF动物是鸟AND 不会飞AND 会游泳AND 是黑色的THEN该动物是企鹅r15:IF动物是鸟AND 善飞THEN该动物是信天翁四.推理树部分推理树如下:五.代码程序是用java编写的规则对象代码:public class Rule {private ArrayList<Integer> premise = new ArrayList<Integer>();private int result;public void addPremise(int item) { premise.add(item);}public int size() {return premise.size();}public int getPremiseAt(int index) {return premise.get(index);}public void setResult(int result) {this.result = result;}public int getResult() {return result;}}规则库代码如下:public class RuleBase {private ArrayList<Rule> rules= new ArrayList<Rule>();public int size() {return rules.size();}public RuleBase() {init();}public void addRule(Rule rule) {rules.add(rule);}public Rule getRuleAt(int index) {return rules.get(index);}public void init() {Rule rule1 = new Rule();rule1.addPremise(0); rule1.setResult(20);rules.add(rule1);Rule rule2 = new Rule();rule2.addPremise(1); rule2.setResult(20);rules.add(rule2);Rule rule3 = new Rule();rule3.addPremise(2); rule3.setResult(21);rules.add(rule3);Rule rule4 = new Rule();rule4.addPremise(3); rule4.addPremise(13); rule4.setResult(21);rules.add(rule4);Rule rule5 = new Rule();rule5.addPremise(19); rule5.setResult(22);rules.add(rule5);Rule rule6 = new Rule();rule6.addPremise(4); rule6.addPremise(15); rule6.addPremise(12); rule6.setResult(22);rules.add(rule6);Rule rule7 = new Rule();rule7.addPremise(20); rule7.addPremise(9); rule7.setResult(23);rules.add(rule7);Rule rule8 = new Rule();rule8.addPremise(20); rule8.addPremise(18); rule8.setResult(23);rules.add(rule8);Rule rule9 = new Rule();rule9.addPremise(20); rule9.addPremise(22); rule9.addPremise(14); rule9.addPremise(11);rule9.setResult(24);rules.add(rule9);Rule rule10 = new Rule();rule10.addPremise(20); rule10.addPremise(22); rule10.addPremise(11); rule10.addPremise(5);rule10.setResult(25);rules.add(rule10);Rule rule11 = new Rule();rule11.addPremise(23); rule11.addPremise(6); rule11.addPremise(7); rule11.addPremise(14);rule11.setResult(30);Rule rule12 = new Rule();rule12.addPremise(23); rule12.addPremise(5); rule12.setResult(26);rules.add(rule12);Rule rule13 = new Rule();rule13.addPremise(21); rule13.addPremise(6); rule13.addPremise(17); rule13.addPremise(7);rule13.setResult(27);rules.add(rule13);Rule rule14 = new Rule();rule14.addPremise(21); rule14.addPremise(10); rule14.addPremise(17); rule14.addPremise(8);rule14.setResult(28);rules.add(rule14);Rule rule15 = new Rule();rule15.addPremise(21); rule15.addPremise(16); rule15.setResult(29);}}综合数据库代码如下:public class Database {ArrayList<Integer> db = new ArrayList<Integer>();public void addFact(int item) {db.add(item);}public boolean contains(int item) {return db.contains(item);}}控制系统代码如下:public class Machine {public static String inference(Database db) { RuleBase ruleBase = new RuleBase();int result = 0;for (int i = 0; i < ruleBase.size(); i++) { int size = ruleBase.getRuleAt(i).size();boolean flag = true;for (int j = 0; j < size; j++) {if(!db.contains(ruleBase.getRuleAt(i).getPremiseAt(j))) { flag = false;break;}}if (flag) {int fact = ruleBase.getRuleAt(i).getResult();db.addFact(fact);if (fact >= 24) {result = fact;break;}}}switch (result) {case 24:return"金钱豹";case 25:return"老虎";case 26:return"斑马";case 27:return"鸵鸟";case 28:return"企鹅";case 29:return"信天翁";case 30:return"长颈鹿";default:return"不存在";}}}六.截图七.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。

动物识别系统

动物识别系统

学生实验报告实验课名称:人工智能实验项目名称:产生式系统实验专业名称:计算机科学与技术班级: 2012240201学号: 12学生姓名:雷彬教师姓名:陈亮亮2014年12 月10 日实验日期:2012 年12 月10 日实验室名称:明远2202首先给定初始事实,将初始事实放入动态数组中,并用初始事实与15条规则进行匹配,如果规则匹配成功,将规则的后件存入数组中,再用数组中所有的元素与规则进行匹配,满足即加入数组,直到匹配出动物。

如果给定初始事实能推出多种动物,按照数组中条件的先后顺序,顺序循环匹配规则,先匹配出哪种动物就显示该动物。

五.源程序:// MFC_AnimalDlg.cpp : 实现文件#include"stdafx.h"#include"MFC_Animal.h"#include"MFC_AnimalDlg.h"#include"afxdialogex.h"#ifdef_DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CMFC_AnimalDlg 对话框CMFC_AnimalDlg::CMFC_AnimalDlg(CWnd* pParent/*=NULL*/) : CDialogEx(CMFC_AnimalDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMFC_AnimalDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_COMBO1, m_point1);DDX_Control(pDX, IDC_COMBO4, m_point2);DDX_Control(pDX, IDC_COMBO5, m_point3);DDX_Control(pDX, IDC_COMBO6, m_point4);DDX_Control(pDX, IDC_COMBO7, m_point5);DDX_Control(pDX, IDC_COMBO8, m_point6);DDX_Control(pDX, IDC_COMBO9, m_point7);}BEGIN_MESSAGE_MAP(CMFC_AnimalDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON2, &CMFC_AnimalDlg::OnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CMFC_AnimalDlg::OnClickedButton1) END_MESSAGE_MAP()// CMFC_AnimalDlg 消息处理程序BOOL CMFC_AnimalDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

动物识别系统实验报告

动物识别系统实验报告

人工智能实验报告二班级:XXXX 姓名:XXXX 学号:XXXXX 一.实验目的1. 理解并掌握基于规则系统的表示与推理。

2. 学会编写小型的产生式系统,理解正向推理和反向推理的过3. 程以及两者的差别。

4. 学会设计简单的人机交互界面。

二.实验预习内容及实验环境:1. 了解动物识别系统问题;2. 产生式系统的组成部分,正向推理,逆向推理的算法和产生式系统的类型。

三、实验内容和步骤:1.内容:结合第五章内容,以动物识别系统(或货物袋装系统)为例,实现基于规则的系统构造实验。

2.要求:1>结果显示要求(1)有若干选择动物特征的选择列表;(2)表现判断动物时,使用了哪些规则;(3)表现数据库的变化;(正向推理中表现每使用一次规则后,产生新事实。

反向推理中表现新的目标事实有哪些需要证明,哪些已经得到证实);(4)显示规则的调用次序;(5)显示最后的结果,包含动物能识别出来和动物不能识别出来两种情况。

(6)至少检查两个例子实现正向推理和反向推理的区别;老虎的例子如上所示,以下为金钱豹的例子:正向推理:反向推理:2>指出综合数据库和规则库分别使用哪些函数实现的?综合数据库和规则库均采用数组完成。

其中的综合数据库为一个string类型的数组,内容为事实的名称字符串,下标则为该事实的序号。

数组长度为33,表示共有33个事实(最后7个为动物名称)。

代码如下:string facts[factnum]={"有爪","有犬齿","有奶","有毛发","目视前方","吃肉","有蹄","有羽毛","会飞","生蛋","不会飞","黑白色","会游泳","善飞","不怕风浪","长腿","长脖子","有暗斑点","白色","黑色斑点","黑色条纹","黄褐色","食肉动物","鸟","哺乳动物","有蹄动物","老虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","海燕"};规则库为一个结构体数组。

动物识别专家系统实验报告

动物识别专家系统实验报告

人工智能实验报告实验记录首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。

对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。

其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。

该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。

通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。

这样提问两次就可以得出结论。

而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。

for(int i=0;i<anc;i++){if(a[i]==1){if(an[i].flag[count]!=anser){a[i]=0;}}}代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。

如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。

如上右图所示。

实验总结 本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。

对于不同的属性可以有时间P1,P2…Pn 。

这样在满足不同的条件之后就可以进行推理,得到所要的动物了。

通过本次实验,我学习到了推理的使用方法,对于这种问题就的解决也有了理解。

这不仅仅让我学习到了如何进行推理问题的证明,也让我对该系统有了更深的了解。

这让我的编程的能力也有了进一步的提高。

人工智能动物识别系统 实验报告

人工智能动物识别系统 实验报告

人工智能导论实验报告题目动物识别专家系统学院信息科学与工程学院专业计算机科学与技术姓名侯立军学号 *********** 班级计信1301二O一五年十一月二十六日1 设计内容题目:动物识别专家系统内容:动物识别专家系统是流行的专家系统实验模型,他用产生是规则来表示知识可以识别不同的动物。

这些规则既少又简单,可以改造他们,也可以加入新的规则,还可以用来识别其他新规则来取代这些规则。

2 基本原理2.1 产生式系统的问题求解基本过程:(1) 初始化综合数据库,即把欲解决问题的已知事实送入综合数据库中;(2) 检查规则库中是否有未使用过的规则,若无转 (7);(3) 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,形成当前可用规则集;否则转(6);(4) 按照冲突消解策略,从当前可用规则集中选择一个规则执行,并对该规则作上标记。

把执行该规则后所得到的结论作为新的事实放入综合数据库;如果该规则的结论是一些操作,则执行这些操作;(5) 检查综合数据库中是否包含了该问题的解,若已包含,说明解已求出,问题求解过程结束;否则,转(2);(6) 当规则库中还有未使用规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转(2);否则,执行下一步;(7) 若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。

2.2 正向推理正向推理是以已知事实作为出发点的一种推理,又称数据驱动推理、前向链推理及前件推理等。

2.2.1 正向推理的基本思想:从用户提供的初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS,然后按某种冲突消解策略从KS中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再无可适用的知识为止。

实验一:产生式系统-动物识别系统

实验一:产生式系统-动物识别系统

《人工智能导论》实验报告实验一:产生式系统——动物识别系统一、实验目的1、掌握知识的产生式表示法2、掌握用程序设计语言编制智能程序的方法二、实验内容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

(15)若某动物是鸟且善飞,则它是海燕。

2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。

事实库是一个动态链表,一个事实是链表的一个结点。

知识库通过事实号与事实库发生联系。

数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。

推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。

将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。

人工智能实验报告

人工智能实验报告

暨南大学人工智能实验报告题目:动物识别系统院系:信科院计算机系专业:计算机软件与理论学号: 0934061004学生姓名:张韶远成绩:日期: 2009年11月10日一、目的与要求1.掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。

2.推理策略采用正向推理和反向推理两种。

二、主要内容1.学习人工智能的知识表示技术,关键掌握产生式知识表示的具体应用方法。

2.实现的动物识别系统的主要功能如下:2.1系统能通过正向、反向推理得到正确的动物识别结果。

2.2系统能动态地添加规则、能显示推理过程。

三.实验原理产生式表示:产生式表示是知识表示的一种。

这种方法是建立在因果关系的基础上的,可很容易的描述事实、规则及其不确定性度量。

1.事实的表示:事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈述句,语言变量的值或语言变量间的关系可以是一个词。

不一定是数字。

一般使用三元组(对象,属性,值)或(关系,对象1,对象2)来表示事实,其中对象就是语言变量,若考虑不确定性就成了四元组表示(增加可信度)。

这种表示的机器内部实现就是一个表。

如事实“老李年龄是35岁”,便写成(Lee,age,35)事实“老李、老张是朋友”,可写成(friend,Lee,Zhang)2.规则的表示:规则用于表示事物间的因果关系,以if condition then action 的单一形式来描述,将规则作为知识的单位。

其中的condition 部分称为条件式前件或模式,而action部分称作动作、后件或结论。

后件。

前件和后件也可以是有“与”、“或”、“非”等逻辑运算符的组合的表达式。

条件部分常是一些事实的合取或析取,而结论常是某一事实B。

如果不考虑不确定性,需另附可信度度量值。

产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。

一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单动物识别系统的知识表示实验报告
一、实验目的:
1、理解和掌握产生式知识表示方法。

2、能够用选定的编程语言实现产生式系统的规则库。

二、实验内容和要求:
1、以动物识别系统的产生式规则为例。

2、用选定的编程语言建造规则库和综合数据库,并能对它们进行增
加、删除和修改操作。

三、实验步骤:
1、确定需要识别的动物及其属性:
本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁。

2、建立识别七种动物识别系统的规则:
由于实验要求系统的规则库和综合数据库能够进行增加、删除和修改操作,因此可以采取逐步添加条件,压缩范围的方法进行识别,即:先跟据一些动物的共性进行大致分类,然后在添加约束条件,将范围缩小,直到能够识别出每一种不同的动物为止。

这样,我们在需要添加识别其他动物的功能时,只需要添加那些动物的个性方面的信息即可,这样也可以简化系统的结构和内容。

识别老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁这7种动物的简单动物识别系统规则一共可以写成以下15条:
Rule1:IF 该动物有毛发 THEN 该动物是哺乳动物
Rule2:IF 该动物有奶 THEN 该动物是哺乳动物
Rule3:IF 该动物有羽毛 THEN 该动物是鸟
Rule4:IF 该动物会飞 AND 会下蛋 THEN该动物是鸟
Rule5:IF 该动物吃肉 THEN 该动物是肉食动物
Rule6:IF 该动物有犬齿 AND 有爪 AND 眼盯前方 THEN该动物是肉食动物
Rule7:IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物Rule8:IF 该动物是哺乳动物 AND 是嚼反刍动物 THEN 该动物是有蹄类动物
Rule9:IF 该动物是哺乳动物 AND 是肉食动物 AND 是黄褐色AND 身上有暗斑点THEN该动物是金钱豹
Rule10:IF 该动物是哺乳动物 AND 是肉食动物 AND 是黄褐色AND 身上有黑色条纹 THEN 该动物是老虎
Rule11:IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是有长颈鹿
Rule12:IF 该动物是有蹄类动物 AND 身上有黑色条纹 THEN 该动物是斑马
Rule13:IF 该动物是鸟 AND 有长脖子 AND 有长腿 AND不会飞 THEN 该动物是鸵鸟
Rule14:IF 该动物是鸟 AND 会游泳 AND 有黑白二色 AND不会飞THEN 该动物是企鹅
Rule15:IF 该动物是鸟 AND 善飞 THEN 该动物是信天翁
三、选定编程语言并确定综合数据库和规则库结构:
(1)选用C语言作为编程语言
(2)综合数据库的建立:
用C程序写出综合数据库的代码:
char*str{"有毛发","有奶","有羽毛","有犬齿","有暗斑点","有黑色条纹","有蹄","有长脖子","有长腿","有爪","有黑白两色","是黄褐色"," 会游泳","会下蛋","会飞","善飞","不会飞","眼盯前方","吃肉","哺乳动物","嚼反刍动物","肉食动物","有蹄类动物","鸟","老虎","金钱豹","斑马","长颈鹿","企鹅","鸵鸟","信天翁",0}
(3)规则库的建立:
为了简化数据结构,将综合数据库中的事实全部用序号来表示,共有31个事实,编号依次为1到31。

规则库中得到的结论也用序号表示,则所有的结论序号可以组成一个结论编号数组{31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0}。

对于我们要识别的动物,我们将其所具备的事实条件也放在一个数组里,例如我们要识别长颈鹿,按照Rule11:IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是有长颈鹿,其条件可表示为{5,10,8,7},当事实7成立,则询问使用者下一个事实8,依此类推,当7、8、10、5这四个事实全部成立时,则查找结论编号数组中的“24”便可根据规则11识别出此动物是长颈鹿。

用C程序写出规则库的代码:
Int rulep[][6]={{16,24,0,0,0,0},{17,9,8,24,0,0},{11,17,13, 24,0,0},{5,10,8,7,0,0},{6,23,0,0,0,0},{5,12,22,20,0,0},{6,1 2,22,20,0,0},{3,0,0,0,0,0},{14,15,0,0,0,0},{7,20,0,0,0,0},{ 21,20,0,0,0,0},{19,0,0,0,0,0},{18,10,4,0,0,0},{1,0,0,0,0,0} ,{2,0,0,0,0,0},0};
Int rulec[]={31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0 };
四、程序源代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream.h>
#define True 1
#define False 0
char*str{"有毛发","有奶","有羽毛","有犬齿","有暗斑点","有黑色条纹","有蹄","有长脖子","有长腿","有爪","有黑白两色","是黄褐色"," 会游泳","会下蛋","会飞","善飞","不会飞","眼盯前方","吃肉","哺乳动物","嚼反刍动物","肉食动物","有蹄类动物","鸟","老虎","金钱豹","斑马","长颈鹿","企鹅","鸵鸟","信天翁",0};
Int rulep[][6]={{16,24,0,0,0,0},{17,9,8,24,0,0},{11,17,13, 24,0,0},{5,10,8,7,0,0},{6,23,0,0,0,0},{5,12,22,20,0,0},{6,1
2,22,20,0,0},{3,0,0,0,0,0},{14,15,0,0,0,0},{7,20,0,0,0,0},{ 21,20,0,0,0,0},{19,0,0,0,0,0},{18,10,4,0,0,0},{1,0,0,0,0,0} ,{2,0,0,0,0,0},0};
Int rulec[]={31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0 };
五、实验小结:
通过此次动物识别系统知识表示实验,让自己对于动物识别系统及产生式知识表示方法又有了进一步的了解和掌握,通过实践对已学过的知识进行巩固,并不断发现自己学习过程中存在的漏洞,让自己不断改正与进步。

相关文档
最新文档