人工智能课程设计报告动物识别系统.docx
- 文档编号:29160229
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:19
- 大小:83.04KB
人工智能课程设计报告动物识别系统.docx
《人工智能课程设计报告动物识别系统.docx》由会员分享,可在线阅读,更多相关《人工智能课程设计报告动物识别系统.docx(19页珍藏版)》请在冰豆网上搜索。
人工智能课程设计报告动物识别系统
计算机科学与技术学院
《人工智能》课程设计报告
设计题目:
动物识别系统
设计人员:
学号:
学号:
学号:
学号:
学号:
学号:
指导教师:
2015年7月
摘要
动物识别专家系统是将人的思维过程转化为计算机语言的逻辑过程,其关键在于知识和信息的表示,智能推理或求解的基础——知识库的创建和管理,以及基于某种知识和信息表示的智能推理或求解过程。
使动物识别具有一定的智能性、良好的交互性和可视化效果。
本论文也主要以识别七种动物的设计思路和程序为例所写的。
动物识别专家系统是人工智能中一个比较基础的规则演绎系统,是人工智能领域里的一个大模块的专家系统的一个特定例子。
是集知识表与推理为一体的,以规则为基础对用户提供的事实进行向前、逆向或双向的推理得出结论的一种产生式系统。
如果通过良好的分析、精确地设计和细致的规划会创设出高度灵活和快速有效的识别系统,再加上良好的界面供用户添加新的事实和规则,反馈详细的错误或信息的话,那就是一个相当完整的识别系统了。
关键词:
人工智能;专家系统;动物识别
Abstract
animalrecognitionexpertsystemisthehumanthinkingprocessistransformedintothelogicalprocessofcomputerlanguage,thekeyliesinknowledgeandinformation,saidintelligentreasoningorsolvingbasedknowledgebase--creatingandmanagement,andbasedonsomeinformationandknowledgerepresentationofintelligentreasoningandsolvingprocess.Sothattheanimalidentificationhasacertainintelligence,goodinteractionandvisualeffect.Thispaperalsomainlytoidentifysevenkindsofanimaldesignideasandproceduresforthecaseofthewritten.Animalidentificationexpertsystemisoneofthemorebasicrulesinartificialintelligence,andisaspecificexampleoftheexpertsysteminthefieldofartificialintelligence.Aproductionsystembasedonrulesisaproductionsystemwhichisbasedonthefactthattheuserisprovidedwiththefacts.Ifthegoodanalysisandaccuratedesignandmeticulousplanningcreatedahighlyflexible,efficientandrapidrecognitionsystem,plusagoodinterfaceforuserstoaddnewfactsandrules,withthewronginformationfeedback,thatisafairlycompleteknowledgesystem,the.
Keywords:
artificialintelligence;expertsystem;animalidentification
一、专家系统基本知识
1.1专家系统实际应用
目前专家系统已经成功地渗透到生活的各个领域,并且还产生了巨大的社会效益和经济效益。
例如,像车辆传感、药物、纺织服装等重工业和轻工业领域中都会应用到,特别是在计算机领域里,现在已经是一门非常重要的学科类了。
1.2专家系统的开发
专家系统设计与实现的一般过程
图1【3】
二、设计基本思路
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知识库获取
知识获取一般是指从某个活某些致使原中获取专家系统问题求解所需要的专门知识,并以某种形式在计算机中存储、传输与转移。
专家系统的知识获取一般是由知识工程师与专家系统知识的获取机构共同完成的。
知识获取的常用方法有以下几种【3】:
1.手工知识获取;
2.半自动获取;
3.自动知识获取;
4.人工神经网络知识获取;
选用哪种知识获取方法需要根据当前的系统,以及用户的需求来决定。
但在有些大型系统上还可能会用到不是仅仅一种方法的。
2.2数据库
数据库即为事实库【2】,在计算机中流出一些存储区间,以存放反应系统当前状态的事实,存放用户回答的事实、已知的事实和由推理而得的事实,即由已知事实推导出的假设成立时,也作为事实。
其综合数据库的内容是不断变化的。
char*str[]={"",
"反刍动物"/*1*/,"蹄类动物"/*2*/,"哺乳动物"/*3*/,
"目视前方"/*4*/,"有爪子"/*5*/,"有犬齿"/*6*/,
"吃肉"/*7*/,"下蛋"/*8*/,"会飞"/*9*/,
"有羽毛"/*10*/,"有蹄"/*11*/,"肉食动物"/*12*/,
"鸟类"/*13*/,"产奶"/*14*/,"有毛发"/*15*/,
"善飞"/*16*/,"黑白色"/*17*/,"会游泳"/*18*/,
"长腿"/*19*/,"长脖子"/*20*/,"有黑色条纹"/*21*/,
"有暗斑点"/*22*/,"黄褐色"/*23*/,"信天翁"/*24*/,
"企鹅"/*25*/,"鸵鸟"/*26*/,"斑马"/*27*/,
"长颈鹿"/*28*/,"老虎"/*29*/,"猎豹"/*30*/,
"\0"};
intrulep[][6]={{22,23,12,3,0,0},{21,23,12,3,0,0},{22,19,20,11,0,0},
{21,11,0,0,0,0},{17,19,20,13,-9,0},{17,18,13,-9,0,0},
{16,13,0,0,0,0},{15,0,0,0,0,0},{14,0,0,0,0,0},
{10,0,0,0,0,0},{8,7,0,0,0,0},{7,0,0,0,0,0},
{4,5,6,0,0,0},{2,3,0,0,0,0},{1,3,0,0,0,0}};
intrulec[]={30,29,28,
27,26,25,
24,3,3,
13,13,12,
12,11,11};
三、推理机构
3.1推理机介绍
3.1.1推理机作用原理
推理机是一组函数【4】,本例既有正向推理机又有反向推理机,都是用精确推理。
推理机是实施问题求解的核心执行机构,它是对知识进行解释的程序,根据知识的语义,对按一定策略找到的知识进行解释执行,并把结果记录到动态库的适当空间中去。
下图为识别本文中所举的识别七种动物时所规则形成的推理网络:
图2
3.2正向推理
3.2.1正向推理基本思想
用户首先提供一批事实,存放到数据库中,然后推理机进行工作。
方法是:
1.推理机用这批事实与知识库中规则的前提进行匹配。
2.把匹配成功的规则的结论部分作为新的事实加到数据库中去(这时,数据库中的事实增加了)。
再用更新后的数据库中的所有事实,重复上述①②二步,如此反复进行,直到得以结论(答案)或不再有新的事实加到数据库为止。
例如,用户输入一批事实:
动物有暗斑点、长脖子、长腿、产奶、有蹄子(这批事实存放在数据库中),要求系统判断这是一个什么动物?
推理机利用这批事实来匹配规则。
3.2.2正向推理示意图
图3
3.2.3正向推理机所要具有功能
要设计一个正向推理机,就是设计一组程序,使其至少具有以下的功能【3】:
1.能用数据库中的事实去匹配规则的前提,若匹配不成功,能自动地进行吓一跳规则的匹配。
这里如何匹配最为合适,是设计专家系统者根据专业特点和知识表示等情况,需要很好考虑的问题,也就是在匹配时到底用什么策略等问题都需要考虑周全;
2.若某条规则匹配成功,系统能将此规则的结论部分自动加入数据库;
3.能判断何时应结束推理;
4.能将匹配成功的规则记录下来;
3.3反向推理
由用户或系统首先提出一批假设,然后系统逐一验证这些假设的真假性,方法:
1.看假设是含在数据库中,若在,则假设成立,推理结束或进行下一个假设的验证,否则进行下一步。
2.判断这些假设是否是证据节点,若是,系统提问用户,否则进行下一步。
3.找出结论部分包含此假设的那些规则,把这些规则的所有前提作为新的假设。
4.重复①、②、③步。
3.3.2反向推理示意图
图4
1.能根据用户要求或情况提出假设;
2.能验证此假设是否是在数据库中;
3.能把知识库中将结论部分包含此假设的规则都找出来;
4.能将找出来地规则的前提部分取出,并作为新的假设逐条验证;
5.能判断假设是否是证据接点,若是,能向用户提出相应的问题,并记录结果;
6.能将匹配成功的规则记录下来;
7.能判断何时应结束推理;
四、实例系统实现
4.1系统介绍
此系统是实现了《人工智能教程(的二版)》专家系统实例里的动物识别系统。
此系统是识别——老虎、猎豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁等七种动物。
是严格遵循了知识库中的规则,并运用C语言在VisualC++6.0环境下实验编译同过的。
因为各种原因没能设计实现出比较精美的界面,但还是体现出了很多专家系统所该具备的东西和功能。
4.2基本思路
根据产生式系统的原理,该系统一般由规则库、综合数据库、控制系统三部分构成。
先定义规则库结构体,里面包括Condition[6][20],result[20]和规则数Cnum,再定义综合数据库即事实库,里面包括item[20][20],和事实数Fnum,主要用到的参数就是这些。
然后初始化规则库和综合数据库,编辑规则库。
之后就是主程序,也就是推理机的作用:
先让用户输入事实,然后与规则库中的知识从第一条开始逐条匹配,当匹配成功时,将结论插入事实库并更新事实库,再逐条匹配,依次循环..最终如果能匹配成功就显示‘该动物是..’,否则显示‘无法识别该动物’,程序结束。
4.3程序主要代码
见附录二
4.4系统执行结果
五、结论
动物识别专家系统实现起来也许相对简单一些,但基本上也包括了专家系统的各个组成部分。
动物识别具有一定的智能性,但是根据所采用的匹配方法的不同其智能性也有不小的差距。
而知识库的管理和数据库的设计是否完善对于动物识别专家系统是极为关键的,这也是很多此类专家系统的通病。
参考文献:
【1】王士同,陈慧萍,赵跃华,钱旭.人工智能教程[M](第二版)北京:
电子工业出版社,2006:
188-206
WangShi-tong,ChenHui-ping,ZhaoYue-hua,QianXu.Artificialintelligencecourse[M]Beijing:
ElectronicIndustryPress,2006:
188-206
【2】马鸣远.人工智能与专家系统导论[M]北京:
清华大学出版社,2006:
232-238
MaMing-yuan.Introductionofartificialintelligenceandexpertsystem[M]Beijing:
TsinghuaUniversitypress,2006:
232-238
【3】敖志刚.人工智能与专家系统导论[M]合肥:
中国科学技术大学出版社,2002:
165-197
AoZhi-gang.Introductionofartificialintelligenceandexpertsystem[M]Hefei:
PressofUSTC,2002:
165-197
【4】渠川路.人工智能、专家系统及智能计算机[M]北京:
航空航天大学出版社,1991:
123-156
QuChuan-lu.Artificialintelligence,Expertsystemandintelligentcomputer[M]Beijing:
UniversitiofAeronauticsandAstronauticsPress,1991:
165-197
附录一
源程序如下:
#include"iostream.h"
#include"stdio.h"
#include"conio.h"
#include"string.h"
typedefstructRule//定义规则库
{
charCondition[6][20];
charResult[20];
intCnum;
boolused;
}rule;
typedefstructFact//定义综合数据库
{
charitem[20][20];
intFnum;
}fact;
ruler[100];
factf;
voidCreate_Rules();//初始化规则库
voidCreate_Facts();//初始化综合数据库
intGet_RulesNum();
voidRatiocinate(intn);
voidmain()
{
intRnum=0;
Create_Rules();
Create_Facts();
Rnum=Get_RulesNum();
//cout< Ratiocinate(Rnum); } voidCreate_Rules() { strcpy(r[0].Condition[0],"有毛发"); strcpy(r[0].Result,"哺乳动物"); r[0].Cnum=1; r[0].used=false; strcpy(r[1].Condition[0],"奶"); strcpy(r[1].Result,"哺乳动物"); r[1].Cnum=1; r[1].used=false; strcpy(r[2].Condition[0],"有羽毛"); strcpy(r[2].Result,"鸟"); r[2].Cnum=1; r[2].used=false; strcpy(r[3].Condition[0],"会飞"); strcpy(r[3].Condition[1],"会下蛋"); strcpy(r[3].Result,"鸟"); r[3].Cnum=2; r[3].used=false; strcpy(r[4].Condition[0],"吃肉"); strcpy(r[4].Result,"食肉动物"); r[4].Cnum=1; r[4].used=false; strcpy(r[5].Condition[0],"有犬齿"); strcpy(r[5].Condition[1],"有爪"); strcpy(r[5].Condition[2],"眼盯前方"); strcpy(r[5].Result,"食肉动物"); r[5].Cnum=3; r[5].used=false; strcpy(r[6].Condition[0],"哺乳动物"); strcpy(r[6].Condition[1],"蹄"); strcpy(r[6].Result,"有蹄动物"); r[6].Cnum=2; r[6].used=false; strcpy(r[7].Condition[0],"有蹄动物"); strcpy(r[7].Condition[1],"嚼反刍动物"); strcpy(r[7].Result,"有蹄动物"); r[7].Cnum=2; r[7].used=false; strcpy(r[8].Condition[0],"哺乳动物"); strcpy(r[8].Condition[1],"食肉动物"); strcpy(r[8].Condition[2],"黄褐色"); strcpy(r[8].Condition[3],"身上有暗斑点"); strcpy(r[8].Result,"金钱豹"); r[8].Cnum=4; r[8].used=false; strcpy(r[9].Condition[0],"哺乳动物"); strcpy(r[9].Condition[1],"食肉动物"); strcpy(r[9].Condition[2],"黄褐色"); strcpy(r[9].Condition[3],"有黑色条纹"); strcpy(r[9].Result,"虎"); r[9].Cnum=4; r[9].used=false; strcpy(r[10].Condition[0],"有蹄动物"); strcpy(r[10].Condition[1],"长腿"); strcpy(r[10].Condition[2],"长脖子"); strcpy(r[10].Condition[3],"身上有暗斑点"); strcpy(r[10].Result,"长颈鹿"); r[10].Cnum=4; r[10].used=false; strcpy(r[11].Condition[0],"有蹄类动物"); strcpy(r[11].Condition[1],"身上有黑色条纹"); strcpy(r[11].Result,"斑马"); r[11].Cnum=2; r[11].used=false; strcpy(r[12].Condition[0],"鸟"); strcpy(r[12].Condition[1],"有长脖子"); strcpy(r[12].Condition[2],"长腿"); strcpy(r[12].Condition[3],"不会飞"); strcpy(r[12].Condition[4],"有黑白两色"); strcpy(r[12].Result,"鸵鸟"); r[12].Cnum=5; r[12].used=false; strcpy(r[13].Condition[0],"鸟"); strcpy(r[13].Condition[1],"会游泳"); strcpy(r[13].Condition[2],"不会飞"); strcpy(r[13].Condition[3],"有黑白两色"); strcpy(r[13].Result,"企鹅"); r[13].Cnum=4; r[13].used=false; strcpy(r[14].Condition[0],"鸟"); strcpy(r[14].Condition[1],"善飞"); strcpy(r[14].Result,"海燕"); r[14].Cnum=2; r[14].used=false; } voidCreate_Facts() { printf("请输入该动物特性(中间加空格,Enter键结束)\n"); scanf("%s%s%s%s%s",&f.item[0],&f.item[1],&f.item[2],&f.item[3],&f.item[4]); f.Fnum=5; } intGet_RulesNum() { intnum=0; inti=0; while (1) { if(r[i].Condition[0][0]=='\0') { break; } i++; num++; } returnnum; } voidRatiocinate(intn) { boolFindFact(char*str); voidInsertIntoFact(char*str); inti=0,j;///i用来控制查找的是第几条规则,j用来控制查找的规则中的第几条 while (1) { if(r[i].used==false) { for(j=0;j { if(FindFact(r[i].Condition[j])) { continue; } else { cout<<"规则"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 课程设计 报告 动物 识别 系统