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

合集下载

动物识别实训报告

动物识别实训报告

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

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

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

二、实训目标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.利用所选开发语言来建立推理过程。

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

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

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

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

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

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

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

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

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

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

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

(3)结束。

农业专家系统实验报告

农业专家系统实验报告

实验报告课程:农业专家系统行政班级:09农信姓名:王雪学号:0908074115 一、实验目的加深对知识表示方法的理解与认识,掌握知识特别是产生式知识在计算机内的存储方式;掌握知识库构建方法,利用关系型数据库建立知识库;选用适当的程序设计语言练习专家系统推理机的设计,编写推理程序;在上述基础上,根据农业专家系统的组成构建一个简单的农业专家系统。

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

三、实验环境及开发工具实验环境:(1)硬件环境:网络环境中的微型计算机。

(2) 软件环境:Windows 操作系统,任选一种网络编程语言和数据库管理系统。

开发工具:Microsoft SQL Sever C++编程语言四、实验内容(一)、知识表示(节选)动物分类专家系统由15 条规则组成,可以识别七种动物,在15 条规则中,共出现 30 个概念(也称作事实),共30 个事实,每个事实给一个编号,从编号从1 到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示。

(二)、构建知识库1、事实数据库的设计与实现(附数据库截屏图)对动物进行比较和分析,找出它们之间的不同,然后利用数据库根据动物的不同之处出创建出一个表。

2、利用关系型数据库构建知识库(附截屏图)系统的知识库中只有两个谓词,规则和事实,利用关系数据库来构造知识库时,只需建立两个表,即规则表和事实表。

规则表包含推理用到的条件事实和结论事实,针对每一事实,在事实表中存储。

创建知识库的过程就是根据推理机制进行推理的过程,这个过程中根据如果能够根据事实数据库中的动物的特征,然后再根据真实存在的事实,那样就可以得到关于这种动物的推理的一个数据表,这样就组成了一个知识库;(三)、推理机设计(附程序源代码)动物识别15 条规则的中文表示是:规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物有奶则:该单位是哺乳动物规则3: 如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁该程序为:运行结果为:。

动物专家系统实验报告

动物专家系统实验报告
//printf("%d",a1);
printf("Q2:有奶吗?\n1:YES\n0:NO\n");
scanf("%d", &a2);
// printf("%d",a2);
printf("\n\n\n初步结果:\n");
if (a1 == 1 && a2 == 1) {
printf("----------是哺乳动物----------\n\n");
printf("----------是有蹄类动物----------\n\n");
x4 = 1;
} else if (d2 == 1 && x1 == 1) {
printf("----------是有蹄类动物----------\n\n");
x4 = 1;
} else {
printf("----------不是有蹄类动物----------\n\n");
printf("----------该动物是虎----------");
//r11
else if (x1 == 1 && x2 == 0 && x3 == 0 && x4 == 1 && n1 == 0 && n2 == 1 && n3 == 0 && n4 == 1 && n5 == 1 && n6 == 0 && n7 == 0 && n8 == 0)

动物识别系统实验报告

动物识别系统实验报告
{
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{

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

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

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

二.实验内容(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"不存在";}}}六.截图七.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。

动物识别系统实验报告

动物识别系统实验报告

暨南大学人工智能实验报告题目:基于web的动物识别系统院系:信科院计算机系专业:计算机技术学号:27学生姓名:ming fang成绩:日期:2010年12月10日一、目的与要求1.掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。

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

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

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

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

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

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

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

不一定是数字。

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

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

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

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

产生式一般形式为:前件后件。

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

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

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

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedef struct anim
{
int flag[30];
string nam;
}anim;
该结构体中包括了动物的名称以及属性数组。对应的flag[i]=1,则对应的第i个属性是满足的,反之该动物没有该属性。这样就可以得到不同动物的属性。
在提问的时候根据该问题的编号,找到存在该属性的动物并且进行标记。并且在剩余的动物中,对没有提问的各个属性进行判断,找到尽可能能把这些动物平分成两部分的问题进行提问。如此就可以找到想要的动物。
通过本次实验,我学习到了推理的使用方法,对于这种问题就的解决也有了理解。这不仅仅让我学习到了如何进行推理问题的证明,也让我对该系统有了更深的了解。这让我的编程的能力也有了进一步的提高。
实验方案
首先系统中包含了若干动物种类,例如狮子,老虎等。由于每一种动物都有不同的属性,而根据这些属性就可以确定是哪一种动物。所以我们要有数据结构可以存储动物以及动物的不同属性。为了节约空间,我们将各个属性用一个数据结构存储起来。
这里我用的是数组进行存储,每一个记录代表了一种属性。而动物则用结构体存储,如下。
}
yes=0;
no=0;
}
代码分析:上述代码是对下一个问题进行选择的代码,该部分主要是将剩下的动物进行判断,利用二分查找的思想,尽量使下一个问题回答之后,无论选什么答案,都使剩下的集合等分。
但是由于当前系统中的动物以及问题过少,因此我们可以向系统中添加新的记录,以完善该系统。
首先在每次提问之后,用户可以判断系统回答是否正确,如果不正确,可以手动添加记录以完善该系统。系统会提示是否增加新的问题,如果添加的话,首先要输入问题,注意该问题必须的非真即假,不能有第三种情况。
然后对于新增的问题,对系统中的每一个动物都进行初始化,以便于下一次判断。
然后可以增加动物的数目,对该动物的所有属性都要进行设置,然后该记录就增加完成了。
如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。如上右图所示。
实验总结
本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。对于不同的属性可以有时间P1,P2…Pn。这样在满足不同的条件之后就可以进行推理,得到所要的动物了。
该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。这样提问两次就可以得出结论。
而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。
人工智能实验报告
学 号
XXXXX
姓 名
XXXXX
实验名称
动物识别专家系统
实验目的
本实验的主要目的是熟练使用推理方法,进行编程完成相应的功能。本次试验的预期功能是在系统可以像使用者提出问题,然后系统根据该问题的回答来筛选出相应的动物并确定下一个问题。其中下一个问题的提出是在尽量减少提问次数的前提下找到的。同时该系统还具有增加记录的功能,可以增加包含的动物种类。
for(int i=0;i<anc;i++)
{
if(a[i]==1)
{
if(an[i].flag[count]!=anser)
{
a[i]=0;
}
}
}
代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。
for(int j=0;j<tc;j++)
同时如果猜测不正确可以添加新的动物或者属性,并设置各个动物的属性,这样就可以进行学习,使得系统更加准确。
实验记录
首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。
对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。
{
for(int i=0;i<anc;i++)
{
if(a[i]==1&&an[i].flag[j]==1)
yes++;
if(a[i]==1++;
}
if((yes-no>=0?yes-no:no-yes)<=dif&&aa[j]==1)
{
count=j;
dif=yes-no>0?yes-no:no-yes;
相关文档
最新文档