动物识别专家系统研究及设计.docx
- 文档编号:8873810
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:63.48KB
动物识别专家系统研究及设计.docx
《动物识别专家系统研究及设计.docx》由会员分享,可在线阅读,更多相关《动物识别专家系统研究及设计.docx(14页珍藏版)》请在冰豆网上搜索。
动物识别专家系统研究及设计
动物识别专家系统研究与设计
摘要:
动物识别专家系统是将人的思维进程转化为运算机语言的逻辑进程,其关键在于知识和信息的表示,智能推理或求解的基础——知识库的创建和治理,和基于某种知识和信息表示的智能推理或求解进程。
专家系统已有很普遍而又重要的应用,它对人类所作出的奉献,使它愈来愈为更多人所同意,专家系统有着普遍的应用,遍及化学、医学、地质学、气象学、教育乃至军事等方面。
本论文所做的研究与设计是以识别七种动物为设计思路所写的。
通过输入一些已知事实,然后运用规那么进行推理,最终判定出动物。
关键字:
动物识别,人工智能,产生式系统
一、专家系统大体知识
动物识别专家系统介绍
动物识别专家系统是人工智能中一个比较基础的规那么演绎系统,是人工智能领域里的一个大模块的专家系统的一个特定例子。
是集知识表与推理为一体的,以规那么为基础对用户提供的事实进行向前、逆向或双向的推理得出结论的一种产生式系统。
若是通过良好的分析、精准地设计和细致的计划会创设出高度灵活和快速有效的识别系统,再加上良好的界面供用户添加新的事实和规那么,反馈详细的错误或信息的话,那确实是一个相当完整的识别系统了。
专家系统实际应用
目前专家系统已经成功地渗透到生活的各个领域,而且还产生了庞大的社会效益和经济效益。
例如,像车辆传感、药物、纺织服装等重工业和轻工业领域中都会应用到,专门是在运算机领域里,此刻已是一门超级重要的学科类了。
专家系统的开发
专家系统设计与实现的一样进程
选题与明确任务
系统需求分析
知识获取与概念化
系统设计
编程与调试
系统维护与完善
知识的形式化表示
测试与评价
图1专家系统开发流程
二、设计大体思路
知识库
知识库作用
用产生式系统辨别动物,需要一种演绎机制,利用己知事实的集合做出新的结论,一种方式是替动物园中的每一个动物作一个产生式,利用者第一搜集所有可利用的事实,然后在产生式的表中进行扫描,寻觅一个状态部份能与之匹配的产生式。
一样要通过量少步并生成和利用一些中间事实才能从大体事实推出结论,如此做所包括的产生式能够比较小,容易明白得,容易利用和容易产生。
动物识别专家系统中的知识库中的知识一般是用规那么表示的。
知识库成立
在本文中咱们多成立的知识库所要遵循的规那么如下:
规那么1:
若是:
动物有毛发
那么:
该动物是哺乳动物
规那么2:
若是:
动物能产奶
那么:
该单位是哺乳动物
规那么3:
若是:
该动物有羽毛
那么:
该动物是鸟
规那么4:
若是:
动物会飞,且会下蛋
那么:
该动物是鸟
规那么5:
若是:
动物吃肉
那么:
该动物是肉食动物
规那么6:
若是:
动物有犬齿,且有爪,且眼盯前方
那么:
该动物是食肉动物
规那么7:
若是:
动物是哺乳动物,且有蹄
那么:
该动物是有蹄动物
规那么8:
若是:
动物是哺乳动物,且是反刍动物
那么:
该动物是有蹄动物
规那么9:
若是:
动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点
那么:
该动物是豹
规那么10:
若是:
若是:
动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹
那么:
该动物是虎
规那么11:
若是:
动物有暗斑点,且有长腿,且有长脖子,且是有蹄类
那么:
该动物是长颈鹿
规那么12:
若是:
动物有黑条纹,且是有蹄类动物
那么:
该动物是斑马
规那么13:
若是:
动物有长腿,且有长脖子,且是黑色的,且是鸟,且可不能飞
那么:
该动物是鸵鸟
规那么14:
若是:
动物是鸟,且可不能飞,且会游泳,且是黑色的
那么:
该动物是企鹅
规那么15:
若是:
动物是鸟,且善飞
那么:
该动物是信天翁
在本系统中一共有15条规那么,能够识别七种动物。
这些规那么既少又简单,在尔后咱们完善系统时能够以此为蓝本来改造这些规那么,也能够加进新的规那么,同时,也能够替换这些规那么来识别其他的事物,如花、草、鸟等。
咱们把规那么概念为对象,把规那么的结构和关于规那么的推理利用概念成规那么类,由规那么类生成的所有规那么对象组成知识库,对知识库的操作方式由规那么类的操作方式提供。
Rule
规则名
前提链
结论
规则名
前提链
结论
前提1
前提2
前提n
。
。
。
。
。
图2规那么的结构
规那么类概念:
classrule
{
char*Name;
list*Pre;
intConc;
public:
rule*Next;
rule(char*N,intP[],intC);
~rule();
intQuery();
voidGetName()
{
cout< } }; 规那么由规那么类的构造函数成立,规那么动态节点的存储单元由析构函数释放。 一条规那么是一个知识实体,它本身具有咨询推理功能,这由规那么类的函数Query实现。 在本系统中,除知识库外,还有一个事实库,记录用户与系统对话的结果及推理的中间结果。 事实库的结构下: Fact 断言 事实链 事实号 事实名 激活标志 图3事实的结构 事实的概念如下: classfact {private: intNumber; charName[21]; intActive; intSucc; public: fact*Next; fact(intNum,char*L) { strcpy(Name,L); Number=Num; Active=False; … 规则名 前提链 结论 事实Kn+1 前提1 前提2 前提n 事实K1 事实K2 事实Kn 事实对象集 规则对象集 用户 老虎 有犬齿 有爪子 目视前方 有毛发 吃肉 长腿 有奶 长脖子 有暗斑点 有羽毛 有蹄 下蛋 会飞 善飞 黑白色 会游泳 有黑条纹 黄褐色 猎豹 长颈鹿 信天翁 斑马 企鹅 鸵鸟 肉食动物 蹄类动物 反刍动物 哺乳动物 鸟类 .1理机用这批事实与知识库中规那么的前提进行匹配。 2.把匹配成功的规那么的结论部份作为新的事实加到数据库中去(这时,数据库中的事实增加了)。 再用更新后的数据库中的所有事实,重复上述①②二步,如此反复进行,直到得以结论(答案)或再也不有新的事实加到数据库为止。 例如,用户输入一批事实: 动物有暗斑点、长脖子、长腿、产奶、有蹄子(这批事实寄存在数据库中),要求系统判定这是一个什么动物? 推理机利用这批事实来匹配规那么。 .2正向推理示用意 图7正向推理示用意 .3正向推理机所要具有功能 要设计一个正向推理机,确实是设计一组程序,使其至少具有以下的功能: 1.能用数据库中的事实去匹配规那么的前提,假设匹配不成功,能自动地进行吓一跳规那么的匹配。 那个地址如何匹配最为适合,是设计专家系统者依照专业特点和知识表示等情形,需要专门好考虑的问题,也确实是在匹配时到底用什么策略等问题都需要考虑全面; 2.假设某条规那么匹配成功,系统能将此规那么的结论部份自动加入数据库; 3.能判定何时应终止推理; 4.能将匹配成功的规那么记录下来; 反向推理 .1反向推理大体思想 由用户或系统第一提出一批假设,然后系统一一验证这些假设的真假性,方式: 1.看假设是含在数据库中,假设在,那么假设成立,推理终止或进行下一个假设的验证,不然进行下一步。 2.判定这些假设是不是是证据节点,假设是,系统提问用户,不然进行下一步。 3.找出结论部份包括此假设的那些规那么,把这些规那么的所有前提作为新的假设。 4.重复①、②、③步。 .2反向推理示用意 图8反向推理示用意 反向推理机所要具有功能 1.能依照用户要求或情形提出假设; 2.能验证此假设是不是是在数据库中; 3.能把知识库中将结论部份包括此假设的规那么都找出来; 4.能将找出来地规那么的前提部份掏出,并作为新的假设逐条验证; 5.能判定假设是不是是证据接点,假设是,能向用户提出相应的问题,并记录结果; 6.能将匹配成功的规那么记录下来; 7.能判定何时应终止推理; 三、实例系统实现 系统介绍 此系统是实现了《人工智能导论(第3版)》专家系统实例里的动物识别系统。 此系统是识别——老虎、猎豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁等七种动物。 是严格遵循了知识库中的规那么,并运用C语言在VisualC++环境下实验编译同过的。 因为各类缘故没能设计实现出比较精美的界面,但仍是表现出了很多专家系统所该具有的东西和功能。 4.2大体思路 该系统的知识表示采纳产生式表示法。 产生式系统由规那么库、综合数据库、操纵系统三个部份组成。 其中规那么库、综合数据库别离对应本系统中的rule类,str指针链表。 Rule链表存放用户输入的事实。 用到一个fact事实类和Fact事实链表,并用GetName(),GetNumber(),GetAct(),GetSucc()等函数来获取事实信息。 推理操纵策略采纳精准匹配算法的正向推理。 程序要紧代码 /* */ rule: : ~rule() { list*L; while(Pre) { L=Pre->Next; deletePre; Pre=L; } deleteName; } /* */ intrule: : Query() { charc;//保留用户输入按键符号 list*L;//临时前提链 fact*F;//临时事实链 L=Pre;//L指向前提链 F=Fact; if(L==NULL)printf("\nError! ");//若是推理时,本规那么前提链为空,犯错,后面while循环也退出! while(L! =NULL)//前提链未处置完 { F=Fact;//F指向事实链表 for(;;)//以当前前提,在事实链表中查询(依照ID) {//因为前提为“-事实ID”,表示该事实不成立,因此取绝对值 if(abs(L->GetNumber())==F->GetNumber())break; F=F->Next;//查询下一事实 }//退出循环时,F指向查询到的事实节点 if(L->GetNumber()>0)//若是前提为真 { if((F->GetSucc())==True){//而且事实链表中的那个事实断言也为真 L=L->Next;//那么本规那么的当前前提在推理中知足 continue;//继续下一前提的判定 } if((F->GetSucc())==False)//该前提在事实链表中断言不成立 returnFalse;//该规那么推理利用终止,直接返回 } else { if((F->GetSucc())==True)//Sorry,该前提在事实链表中断言却为真 returnFalse;//该规则推理使用结束,直接返回 if((F->GetSucc())==False){ L=L->Next; continue; } }//endif-else printf("%s(Y/N)",F->GetName());//向用户提问 c=getchar();//同意用户输入 flushall(); if((c=='Y')||(c=='y'))// { if(L->GetNumber()>0)F->PutAct(1,True); if(L->GetNumber()<0){//且假设当前规那么中的当前前提要求为“假” F->PutAct(1,True);//置激活和用户的断言 returnFalse;//本规那么推理终止,不成功;后面的前提不判定了! } } else { if(L->GetNumber()<0)F->PutAct(-1,False); if(L->GetNumber()>0){ F->PutAct(-1,False); returnFalse; } } L=L->Next;//用户断言和当前规那么的当前前提符合,那么取当前规那么的下一前提进行判定! }//endwhile ————————————得出推理结论———————————— F=Fact; for(;;) { if(Conc==F->GetNumber())break;//在事实表中查找与当前规那么得后件相同得事实F=F->Next; } if(Conc<24)//若是规那么后件(结论)不是最终最终性得(即不是7种要识别得动物) { F->PutAct(1,True);//那确实是中间事实性结论,设置其激活和中间推理确证了的断言 returnFalse;//然后返回,本规那么并非能终止整个推理 } printf("\n该动物是: %s\n",F->GetName()); returnTrue; } 系统执行结果 四、结论 动物识别专家系统实现起来或许相对简单一些,但大体上也包括了专家系统的各个组成部份。 动物识别具有必然的智能性,可是依照所采纳的匹配方式的不同其智能性也有不小的差距。 而知识库的治理和数据库的设计是不是完善关于动物识别专家系统是极为关键的,这也是很多此类专家系统的通病。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动物 识别 专家系统 研究 设计