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

合集下载

动物识别实训报告

动物识别实训报告

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

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

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

二、实训目标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动物识别专家系统介绍动物识别专家系统是人工智能中一个比较基础的规则演绎系统,是人工智能领域里的一个大模块的专家系统的一个特定例子。

是集知识表与推理为一体的,以规则为基础对用户提供的事实进行向前、逆向或双向的推理得出结论的一种产生式系统。

如果通过良好的分析、精确地设计和细致的规划会创设出高度灵活和快速有效的识别系统,再加上良好的界面供用户添加新的事实和规则,反馈详细的错误或信息的话,那就是一个相当完整的识别系统了。

1.2专家系统实际应用目前专家系统已经成功地渗透到生活的各个领域,并且还产生了巨大的社会效益和经济效益。

例如,像车辆传感、药物、纺织服装等重工业和轻工业领域中都会应用到,特别是在计算机领域里,现在已经是一门非常重要的学科类了。

1.3专家系统的开发专家系统设计与实现的一般过程图1【3】二、设计基本思路2.1知识库2.2.1知识库作用用产生式系统监别动物,需要一种演绎机制,利用己知事实的集合做出新的结论,一种方法是替动物园中的每个动物作一个产生式,使用者首先收集所有可利用的事实,然后在产生式的表中进行扫描,寻找一个状态部分能与之匹配的产生式。

一般要经过多少步并生成和利用一些中间事实才能从基本事实推出结论,这样做所包含的产生式可以比较小,容易理解,容易使用和容易产生。

动物识别专家系统中的知识库中的知识通常是用规则表示的。

2.1.2 知识库建立知识库所要遵循的规则【1】规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物能产奶则:该单位是哺乳动物规则3:如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁动物分类专家系统由15条规则组成可以识别七种动物.2.1.3 知识库获取知识获取一般是指从某个活某些致使原中获取专家系统问题求解所需要的专门知识,并以某种形式在计算机中存储、传输与转移。

动物识别系统

动物识别系统

学生实验报告实验课名称:人工智能实验项目名称:产生式系统实验专业名称:计算机科学与技术班级: 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 。

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

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

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

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

人工智能实验报告

人工智能实验报告

人工智能课程报告——专业:计算机科学与技术年级:姓名:学号:成绩:2011-11-01 实验名称:人工智能程序设计——少量动物识别专家系统本程序用于识别豹子、老虎、鸟、长颈鹿、斑马等七种动物的一个实验专家系统。

通过本程序的编制理解PROLOG的运行机制及推理规则,同时对专家系统有初步的了解。

源程序代码如下:databasexpositive(symbol,symbol).xnegative(symbol,symbol).predicatesrunanimal_is(symbol)it_is(symbol)positive(symbol,symbol)negative(symbol,symbol)clear_factsremember(symbol,symbol,symbol)ask(symbol,symbol)clausesrun:-animal_is(X),!,write("\nyour animal may be a(n) ",X),nl,nl,clear_facts.run:-write("\n unable to determine what "),write("\n your animal is \n\n"), clear_facts.positive(X,Y):-xpositive(X,Y),!.positive(X,Y):-not(xnegative(X,Y)),!,ask(X,Y).negative(X,Y):-xnegative(X,Y),!.negative(X,Y):-not(xpositive(X,Y)),!,ask(X,Y).ask(X,Y):-write(X," is ",Y,"\n" ),readln(Reply),remember(X,Y,Reply).remember(X,Y,yes):-assertz(xpositive(X,Y)).remember(X,Y, no):-assertz(xnegative(X,Y)),fail.clear_facts:-retract(xpositive(_,_)),fail.clear_facts:-retract(xnegative(_,_)),fail.clear_facts:-write("\n\nplease press the space bar to Exit"),readchar(_).animal_is(cheetah):-it_is(mammal),it_is(carnivore),positive(has,tawn y_color),positive(has,black_spots).animal_is(tiger):-it_is(mammal),it_is(carnivore),positive(has,tawny_c olor),positive(has,black_stripes).animal_is(giraffe):-it_is(ungulate),positive(has,long_neck),positive(has,long_legs),positive(has,dark_spots).animal_is(zebra):-it_is(ungulate),positive(has,black_stripes).animal_is(ostrich):-it_is(bird),negative(does,fly),positive(has,long_neck),positive(has,long_legs),positive(has,black_and_white_color). animal_is(penguin):-it_is(bird),negative(does,fly),positive(does,swim),positive(has,black_and_white_color). animal_is(albatross):-it_is(bird),positive(does,fly_well).it_is(mammal):-positive(has,hair).it_is(mammal):-positive(does,give_milk).it_is(bird):-positive(has,feather).it_is(bird):-positive(does,fly),positive(does,lay_eggs).it_is(carnivore):-positive(does,eat_eat).it_is(carnivore):-positive(has,pointed_teeth),positive(has,claws),positive(has,forward_eyes).it_is(ungulate):-it_is(mammal),positive(has,hooves).it_is(ungulate):-it_is(mammal),positive(has,chew_cud).谓词解释:Xpositive肯定数据库——记录yes选项的谓词,xnegative否定数据库——记录no选项的谓词。

人工智能动物识别系统JAVA

人工智能动物识别系统JAVA
实验报告课程名称人工智能与专家系统实验名称动物分类专家系统设计系别电子信息科学学院专业班级指导教师学号姓名实验日期201641实验成绩一实验目的1加深理解专家系统的结构原理与实际应用
实验报告
课程名称
系别电子信息科学学院专业班级指导教师
学号____________姓名____________实验日期2016.4.1实验成绩___________
}
jp.add(lblImage);lblImage.setBounds(630,30,300,400);this.add(jp);
this.setTitle("动物识别系统");this.setBounds(100,100,1000,500);this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
/用数组创复选框
{newCheckbox("有毛发"),newCheckbox("有奶"),newCheckbox("有羽毛"),
newCheckbox("会飞,且生蛋"),newCheckbox("吃肉"),
newCheckbox("有犬齿,且有爪,且眼盯前方"),newCheckbox("有蹄"),
publicclassRZSextendsJFrameimplementsActionListener{privatestaticJPaneljp=newJPanel();
privateJLabeljl1=newJLabel("请选择条件:");sta ticCheckbox[]Checkbox=

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

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

人工智能导论实验报告题目动物识别专家系统学院信息科学与工程学院专业计算机科学与技术姓名侯立军学号 *********** 班级计信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)。
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;
相关文档
最新文档