动物专家识别系统

合集下载

动物识别专家系统的建立

动物识别专家系统的建立


















实用第一 智慧密集
… . . … … … … … .
家豫 绩

童 小 明
摘 要 :专 家 系统是 具 有人 工智 能和推 理功 能 的知识 系统 。 以一 个动 物识 别专 家 系统的 建 立为例 ,
1 1 3 4
()吃 肉的哺 乳类 称为食 肉动 物 ( 肉 &哺乳 类 _ 肉类) 5 吃 >食 。 ( )反 刍食 物 的 哺 乳 类 是 偶 蹄 类 f 刍 食 物 & 哺 乳 类 一 6 反 >
“ 有蹄 类“黄 褐 色” , “ , 1 1 1 1 1 0 2 2 2 4 2 6 5 6 7 8 9 2 1 2 3 2 5 2
父节点 &父节点 子 节点 ( )有 毛 发 的动 物 是 哺 乳 类 ( 毛发 & 动物 一 1 有 >哺 乳 类) 。 ( )有 奶 的动 物 是 哺 乳 类 ( 奶 & 动物 一 2 有 >哺 乳 类) 。
长 脖
鸵 鸟 潜 水 企 鹅 f 毛 发 ¨动 物 ¨哺 乳 类 ¨ 有 奶 ¨ 有 羽 毛 鸟 有 . 类n会 飞-生 蛋 n吃 肉 “反刍 食 物 ”偶 蹄 类 ”有 蹄 * ” , “ , - , * , 一 , ・ 一 ,
( )吃 肉 的 哺 乳类 称 为 食 肉动 物 ; ( )反 刍食 物 的 哺 乳 类 是 5 6 偶蹄 类 ; ( )有 蹄 的 哺乳 类 是 有 蹄 类 ; ( ) 黄褐 色有 暗斑 点 7 8 的 食 肉类 是 金 钱 豹 ; ( )黄 褐 色有 黑 色 条 纹 的食 肉类 是 老 虎 ; 9 (0 1 )尖 牙 利 爪 且 眼 睛 向前 的 是 食 肉动 物 ; ( 1 脖 有 黄 褐 色 1)

专家系统实例

专家系统实例

专家系统实例
专家系统是一种基于知识推理的智能信息系统,用于解决特定领域的问题。

它们利用专家知识和推理规则,通过询问用户的问题来识别问题的本质,然后提供相应的解决方案。

以下是一些专家系统实例: 1. 动物识别专家系统:该实例是一个基于人工智能技术的专家系统,用于识别动物物种。

它利用了计算机视觉和自然语言处理技术,通过询问用户有关动物的特征和属性来识别动物。

2. 医学诊断专家系统:该实例是一个用于医学诊断的专家系统,它利用医学知识和推理规则,通过对用户提供的症状和疾病特征进行分析,从而作出准确的医学诊断。

3. 工业控制专家系统:该实例是一个用于工业控制的专家系统,它利用控制理论和推理技术,通过对用户提供的控制命令进行分析和优化,以实现更高效、更安全的工业控制。

4. 农业施肥专家系统:该实例是一个用于农业施肥的专家系统,它利用植物营养知识和推理规则,通过对用户提供的肥料信息和植物需求进行分析,从而提供最佳的施肥方案。

这些专家系统实例展示了人工智能技术在各个领域的应用,可以帮助用户解决各种复杂问题。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

动物识别系统__代码

动物识别系统__代码
{
cout<<Name;
}
};
rule::~rule()
{
list *L;
while(Pre)
{
L=Pre->Next;
delete Pre;
Pre=L;
}
delete Name;
}
rule::rule(char *N,int P[],int C)
{
int i;
list *L;
Pre=NULL;
Next=NULL;
Rule=NULL;
for(i=0;i<15;i++) //初始化规则库。
{
R=new rule(ch,rulep[i],rulec[i]);
R->Next=Rule;
Rule=R;
ch[5]++;
}
R=Rule;
for(;;)
{
i=R->Query();
if((i==1)||(i==-1))
break;
return True;
}
return False;
}
int main()
{
fact *F,*T;
rule *Rule,*R;
char ch[8];
int i=1;
Fact=NULL;
while(str[i-1]) //初始化事实库,倒序排列。
{
F=new fact(i,str[i-1]);
F->Next=Fact;
}
void PutAct(const int Act0,int Suc0)
{
Active=Act0;
Succ=Suc0;

描述动物识别系统的流程

描述动物识别系统的流程

描述动物识别系统的流程
动物识别系统的流程包括以下几个步骤:
1. 图像采集:使用相机或其他设备采集动物的图像数据。

2. 图像处理:对采集到的图像数据进行处理,包括去噪、增强、分割等。

3. 特征提取:从处理后的图像数据中提取出与动物特征相关的信息,如颜色、纹理、形状等。

4. 特征匹配:将提取出的特征与事先存储的动物特征信息进行匹配,识别出动物的种类。

5. 结果输出:系统将识别结果以文字或者图片的形式输出,方便用户查看。

以上就是动物识别系统的基本流程,通过各个步骤的处理,能够实现对动物种类的识别和分类。

(毕业论文)动物识别专家系统

(毕业论文)动物识别专家系统

摘要专家系统是目前人工智能中最活跃,最有成效的一个研究领域,它是一种基于知识的系统,它从人类专家那里获得知识,并用来解决只有专家才能解决的困难问题。

该动物识别专家系统是在VC编程环境下编写的基于Windows操作平台上的图形用户界面程序,依据15条规则,构建知识库,能判别七种动物。

该系统具有较好的扩充性,可移植性、透明性,算法简单高效,使用方便,用户界面友好。

在层次树结构的数据结构基础上,采用正向推理的技术构建推理机,解释机构的实现采用了唱片技术和追踪技术。

构建该动物识别专家系统主要目的是为了提高人工智能的理论水平,更深入地了解专家系统的原理、历史、构成和各组成部件的基本原理,并提高VC的编程能力。

关键字:专家系统,知识库,规则,推理机,解释机AbstractExpert system is one of the most active and effective research realms. It can solve difficult problems, which can only be solved by experts. It is a system based on knowledge and can achieve knowledge from experts.This expert system is the visual interface program, which based on Windows operation system in the situation of Visual C++ programming. It can distinguish seven kinds of animals by constructing knowledge base, which is based on 15 rules. This system is moveable, transparent, and expansible. It can be easily used. Its mathematic is simple and efficient the user interface is friendly. The construction of reasoning machine adopts the positive reasoning technology and the realization of explanation adopts the record and pursuit technologyThis animal distinguish expert system aims to raise the theory standard of artificial intelligence. The writer intended to know about the principle, the history and the composition theory of expert system, and upgrade the programming ability.Key W ords: expert system, repository, rule, reasoning machine, explanative machine目录摘要 (1)Abstract (2)目录 (3)前言 (4)第一章需求分析 (6)1.1 需求状况 (6)1.2专家系统的设计要求 (6)1.3组成部分 (10)1.4推理机 (12)第2章概要设计 (14)2.1总体流程的设计 (14)2.1.1创建知识库 (14)2.1.2 设计推理机的工作流程 (17)2.2用户界面设计 (19)2.2.1 用户界面设计的原则 (19)2.2.2设计的用户界面 (20)第3章详细设计 (22)3.1学习VC有感 (22)3.1.1认识VC (22)3.1.2使用MSDN (23)3.2 详细编码 (24)第4章测试与完善 (37)4.1 测试系统 (37)4.2 完善功能 (38)4.2.1改善explain功能 (38)4.2.2 添加backspace功能........................... 错误!未定义书签。

动物识别系统实验报告

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

禽兽系统管理

禽兽系统管理

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

动物识别15条规则的中文表示是:规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物有奶则:该单位是哺乳动物规则3:如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁动物分类专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:Char *str{}={"chew_cud","hooves","mammal","forward_eyes","claws", "pointed_teeth","eat_meat","lay_eggs","fly","feathers","ungulate", "carnivore","bird","give_milk","has_hair","fly_well","black&white_color","can_swim","long_legs","long_neck","black_stripes","dark_spots","tawny_color","albatross","penguin","ostrich","zebra","giraffe","tiger","cheetah","\0"}程序用编号序列的方式表达了产生式规则,如资料中规则15,如果动物是鸟,且善飞,则该动物是信天翁。

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

运行环境:Windows XP + VC6.0逻辑:代码:#include <string>#include <vector>#include <iostream>#include <iomanip>#include <fstream>#include <stdlib.h>using namespace std;struct CAUSE_TYPE{ //事实string cause; //事实字符串描述bool flag; //是否已经使用,防止输入的事实重复//其他省略};struct RULE_TYPE{ //结论string result; //结论字符串描述vector<CAUSE_TYPE*> cause; //判断依据的事实int count; //结论的前件有多少个吻合bool finded; //是否匹配好所有前件//其他省略};class AniDist{public:bool load(string str); //根据文件创建结论队列和它们的事实,str为文件路径(知识获取机构)void clear(); //将所有结论的possible清零,所有flag清空RULE_TYPE* find(vector<string> str); //推理过程(推理机)vector<string> split(string str); //将输入的事实字符串转换为队列,字符串以空格分割(用于人机接口)void print(RULE_TYPE* rul); //打印判断的信息void print_table(); //打印从文件中读取的的结论队列void clearmem(); //清理内存friend bool operator !(AniDist ad);private:bool isload;vector<RULE_TYPE*> queue; //结论队列链表CAUSE_TYPE* create_cause(string str); //根据输入的字符串创建单个事实RULE_TYPE* create_rule(string str); //根据输入的字符串创建单个结论void findreasion(RULE_TYPE* rul); //(解释机构)};/*判断知识库有否问题*/bool operator !(AniDist ad){return !ad.isload;}//以下为类函数实现//以下是用于创建结论队列的函数/*//根据输入的字符串创建单个事实*/CAUSE_TYPE* AniDist::create_cause(string str){CAUSE_TYPE *tmp = new CAUSE_TYPE;tmp->cause = str;tmp->flag = false;return tmp;}/*//根据输入的字符串创建单个结论*/RULE_TYPE* AniDist::create_rule(string str){RULE_TYPE *tmp = new RULE_TYPE;tmp->result=str;tmp->count = 0;tmp->finded=false;return tmp;}/*//根据文件创建结论队列和它们的事实,str为文件路径*/bool AniDist::load(string str){isload = false;fstream fp; //从文件读取string readstr="";fp.open(str.c_str(),ios::in);if(!fp) return false;while(getline(fp,readstr)){if(readstr[0]=='#'){readstr.erase(readstr.begin());RULE_TYPE *tmp=NULL;tmp = create_rule(readstr);queue.push_back(tmp);}else{CAUSE_TYPE *tmp=NULL;tmp = create_cause(readstr);if (tmp == NULL) {exit(-1); }if(queue.size()!=0) queue[queue.size()-1]->cause.push_back(tmp);}}fp.close();isload = true;return true;}//以下是用于比对用的函数/*//将所有结论的possible清零,所有flag清空*/void AniDist::clear(){vector<RULE_TYPE*>::iterator itrR = queue.begin();vector<CAUSE_TYPE*>::iterator itrC;while(itrR!=queue.end()){itrC=(*itrR)->cause.begin();while(itrC!=(*itrR)->cause.end()){(*itrC)->flag=false;itrC++;}(*itrR)->count=0;(*itrR)->finded = false;itrR++;}}/*//根据输入的事实比对事实,注意第二中情况*/RULE_TYPE* AniDist::find(vector<string> strs){RULE_TYPE* result=NULL; //存放最终结论for (int i = 0; i != strs.size();i++){vector<RULE_TYPE*>::iterator itrR = queue.begin();vector<CAUSE_TYPE*>::iterator itrC;while (itrR != queue.end()){if ((*itrR)->finded) { itrR++; continue; }itrC = (*itrR)->cause.begin();while (itrC != (*itrR)->cause.end()){//前件与事实吻合if ((*itrC)->cause == strs[i] && (!(*itrC)->flag)){(*itrR)->count++;(*itrC)->flag = true;}itrC++;}//判断结论的前件是否都满足,如果满足,就加入strs进行判断if ((*itrR)->count == (*itrR)->cause.size()){(*itrR)->finded = true;result = (*itrR);strs.push_back((*itrR)->result);}itrR++;}}return result;}/*解释为何*/void AniDist::findreasion(RULE_TYPE* rul){vector<CAUSE_TYPE*>::iterator itrC = rul->cause.begin();//进行递归查找,效率低,可通过更改数据结构来改进while (itrC != rul->cause.end()){vector<RULE_TYPE*>::iterator itrR = queue.begin();while (itrR != queue.end()){if((*itrR)->finded){if ((*itrR)->result == (*itrC)->cause) findreasion((*itrR));}itrR++;}itrC++;}//输出结果itrC = rul->cause.begin();cout << "{ ";while (itrC != rul->cause.end()){cout << (*itrC)->cause << " ";itrC++;}cout << " } -> " << rul->result << endl;}/*//将输入的事实字符串转换为队列,字符串以空格分割*/vector<string> AniDist::split(string str){vector<string> strs;string::size_type pos=0;string::size_type prepos = 0;while (pos != string::npos){pos = str.find_first_of(' ', prepos);string tmp = str.substr(prepos, (pos-prepos));strs.push_back(tmp);prepos = pos+1;}return strs;}/*//打印判断的信息*/void AniDist::print(RULE_TYPE* rul){cout << "找到的结论是<" << rul->result<<'>'<<endl;findreasion(rul);}/*//打印从文件中读取的的结论队列*/void AniDist::print_table(){vector<RULE_TYPE*>::iterator itrR = queue.begin();vector<CAUSE_TYPE*>::iterator itrC;while(itrR!=queue.end()){cout<<setw(10)<<left<<(*itrR)->result<<" :\t";itrC=(*itrR)->cause.begin();while(itrC!=(*itrR)->cause.end()){cout<<setw(5)<<(*itrC)->cause<<'\t';itrC++;}itrR++;cout<<endl;}cout << endl;}/*//清理内存*/void AniDist::clearmem(){vector<RULE_TYPE*>::iterator itrR = queue.begin();vector<CAUSE_TYPE*>::iterator itrC;while(itrR!=queue.end()){itrC=(*itrR)->cause.begin();while(itrC!=(*itrR)->cause.end()){delete (*itrC);itrC++;}delete (*itrR);itrR++;}}int main(){AniDist ad;ad.load("data.txt");if (!ad) { cout << "知识库出错!" << endl; exit(-1); }ad.print_table();string instr = "";vector<string> strs;while (true){cout << "请输入事实,空格隔开:";getline(cin,instr);if (instr=="quit") break;strs = ad.split(instr);RULE_TYPE *re = ad.find(strs);if (re == NULL){ cout << "没有找到结论!" << endl; continue; }ad.print(re);ad.clear();}ad.clearmem();return 0;}数据(data.txt): #哺乳动物有奶胎生#鸟类翅膀羽毛#鸟类会飞下蛋#肉食动物吃肉#老虎哺乳动物条纹肉食动物#鸵鸟善跑鸟类#鸽子鸟类识路#家猫哺乳动物善爬条纹#豹猫哺乳动物善爬斑点纹运行结果:。

相关文档
最新文档