人工智能大作业动物识别专家系统研究Word下载.docx
《人工智能大作业动物识别专家系统研究Word下载.docx》由会员分享,可在线阅读,更多相关《人工智能大作业动物识别专家系统研究Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
动物能产奶
那么:
该单位是哺乳动物
规那么3:
该动物有羽毛
该动物是鸟
规那么4:
动物会飞,且会下蛋
规那么5:
动物吃肉
该动物是肉食动物
规那么6:
动物有犬齿,且有爪,且眼盯前方
该动物是食肉动物
规那么7:
动物是哺乳动物,且有蹄
该动物是有蹄动物
规那么8:
动物是哺乳动物,且是反刍动物
规那么9:
动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点
该动物是豹
规那么10:
动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹
该动物是虎
规那么11:
动物有暗斑点,且有长腿,且有长脖子,且是有蹄类
该动物是长颈鹿
规那么12:
动物有黑条纹,且是有蹄类动物
该动物是斑马
规那么13:
动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞
该动物是鸵鸟
规那么14:
动物是鸟,且不会飞,且会游泳,且是黑色的
该动物是企鹅
规那么15:
动物是鸟,且善飞
该动物是信天翁
动物分类专家系统由15条规那么组成可以识别七种动物.
知识库获取
知识获取一般是指从某个活某些致使原中获取专家系统问题求解所需要的专门知识,并以某种形式在计算机中存储、传输与转移。
专家系统的知识获取一般是由知识工程师与专家系统知识的获取机构共同完成的。
知识获取的常用方法有以下几种【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推理机介绍
推理机作用原理
推理机是一组函数【4】,本例既有正向推理机又有反向推理机,都是用准确推理。
推理机是实施问题求解的核心执行机构,它是对知识进展解释的程序,根据知识的语义,对按一定策略找到的知识进展解释执行,并把结果记录到动态库的适当空间中去。
推理网络
下列图为识别本文中所举的识别七种动物时所规那么形成的推理网络:
图2
3.2正向推理
正向推理根本思想
用户首先提供一批事实,存放到数据库中,然后推理机进展工作。
方法是:
1.推理机用这批事实与知识库中规那么的前提进展匹配。
2.把匹配成功的规那么的结论局部作为新的事实加到数据库中去(这时,数据库中的事实增加了)。
再用更新后的数据库中的所有事实,重复上述①②二步,如此反复进展,直到得以结论(答案)或不再有新的事实加到数据库为止。
例如,用户输入一批事实:
动物有暗斑点、长脖子、长腿、产奶、有蹄子(这批事实存放在数据库中),要求系统判断这是一个什么动物?
推理机利用这批事实来匹配规那么。
正向推理示意图
图3
正向推理机所要具有功能
要设计一个正向推理机,就是设计一组程序,使其至少具有以下的功能【3】:
1.能用数据库中的事实去匹配规那么的前提,假设匹配不成功,能自动地进展吓一跳规那么的匹配。
这里如何匹配最为适宜,是设计专家系统者根据专业特点和知识表示等情况,需要很好考虑的问题,也就是在匹配时到底用什么策略等问题都需要考虑周全;
2.假设某条规那么匹配成功,系统能将此规那么的结论局部自动参加数据库;
3.能判断何时应完毕推理;
4.能将匹配成功的规那么记录下来;
3.3反向推理
反向推理根本思想
由用户或系统首先提出一批假设,然后系统逐一验证这些假设的真假性,方法:
1.看假设是含在数据库中,假设在,那么假设成立,推理完毕或进展下一个假设的验证,否那么进展下一步。
2.判断这些假设是否是证据节点,假设是,系统提问用户,否那么进展下一步。
3.找出结论局部包含此假设的那些规那么,把这些规那么的所有前提作为新的假设。
4.重复①、②、③步。
反向推理示意图
图4
反向推理机所要具有功能
1.能根据用户要求或情况提出假设;
2.能验证此假设是否是在数据库中;
3.能把知识库中将结论局部包含此假设的规那么都找出来;
4.能将找出来地规那么的前提局部取出,并作为新的假设逐条验证;
5.能判断假设是否是证据接点,假设是,能向用户提出相应的问题,并记录结果;
6.能将匹配成功的规那么记录下来;
7.能判断何时应完毕推理;
四、实例系统实现
4.1系统介绍
此系统是实现了《人工智能教程〔的二版〕》专家系统实例里的动物识别系统。
此系统是识别——老虎、猎豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁等七种动物。
是严格遵循了知识库中的规那么,并运用C语言在VisualC++6.0环境下实验编译同过的。
因为各种原因没能设计实现出比拟精巧的界面,但还是表达出了很多专家系统所该具备的东西和功能。
4.2根本思路
该系统的知识表示采用产生式表示法。
产生式系统由规那么库、综合数据库、控制系统三个局部构成。
其中规那么库、综合数据库分别对应本系统中的rule类,str指针链表。
Rule链表存放用户输入的事实。
用到一个fact事实类和Fact事实链表,并用GetName〔〕,GetNumber〔〕,GetAct〔〕,GetSucc〔〕等函数来获取事实信息。
推理控制策略采用准确匹配算法的正向推理。
4.3程序主要代码
/*<
Function释放规那么链表节点之前提链空间/>
<
Note规那么链本身空间为释放/>
*/
rule:
:
~rule()
{
list*L;
while(Pre)
{
L=Pre->
Next;
deletePre;
Pre=L;
}
deleteName;
}
Function主要实现推理机/>
Return规那么使用成功与否/>
intrule:
Query()
charc;
//保存用户输入按键符号
//临时前提链
fact*F;
//临时事实链
L=Pre;
//L指向前提链
F=Fact;
if(L==NULL)printf("
\nError!
);
//如果推理时,本规那么前提链为空,出错,后面while循环也退出!
while(L!
=NULL)//前提链未处理完
//F指向事实链表
for(;
;
)//以当前前提,在事实链表中查询〔根据ID〕
{//因为前提为“-事实ID〞,表示该事实不成立,所以取绝对值
if(abs(L->
GetNumber())==F->
GetNumber())break;
F=F->
//查询下一事实
}//退出循环时,F指向查询到的事实节点
if(L->
GetNumber()>
0)//如果前提为真
if((F->
GetSucc())==True){//而且事实链表中的这个事实断言也为真
L=L->
//那么本规那么的当前前提在推理中满足
continue;
//继续下一前提的判断
}
GetSucc())==False)//该前提在事实链表中断言不成立
returnFalse;
//该规那么推理使用完毕,直接返回
else
GetSucc())==True)//Sorry,该前提在事实链表中断言却为真
//该规那么推理使用完毕,直接返回
GetSucc())==False){
}//endif-else
printf("
%s(Y/N)"
F->
GetName());
//向用户提问
c=getchar();
//承受用户输入
flushall();
if((c=='
Y'
)||(c=='
y'
))//
if(L->
0)F->
PutAct(1,True);
GetNumber()<
0){//且假设当前规那么中的当前前提要求为“假〞
F->
//置激活和用户的断言
//本规那么推理完毕,不成功;
后面的前提不判断了!
PutAct(-1,False);
0){
L=L->
//用户断言和当前规那么的当前前提符合,那么取当前规那么的下一前提进展判断!
}//endwhile
————————————得出推理结论————————————
F=Fact;
)
if(Conc==F->
//在事实表中查找与当前规那么得后件一样得事实F=F->
if(Conc<
24)//如果规那么后件〔结论〕不是最终最终性得〔即不是7种要识别得动物〕
F->
//那就是中间事实性结论,设置其激活和中间推理确证了的断言
returnFalse;
//然后返回,本规那么并不能完毕整个推理
\n该动物是:
%s\n"
returnTrue;
4.4系统执行结果
五、结论
动物识别专家系统实现起来也许相对简单一些,但根本上也包括了专家系统的各个组成局部。
动物识别具有一定的智能性,但是根据所采用的匹配方法的不同其智能性也有不小的差距。
而知识库的管理和数据库的设计是否完善对于动物识别专家系统是极为关键的,这也是很多此类专家系统的通病。
参考文献:
【1】王士同,慧萍,跃华,钱旭.人工智能教程[M]〔第二版〕:
电子工业,2006:
188-206
WangShi-tong,ChenHui-ping,ZhaoYue-hua,QianXu.Artificialintelligencecourse[M]Beijing:
ElectronicIndustryPress,2006:
【2】马鸣远.人工智能与专家系统导论[M]:
清华大学,2006:
232-238
MaMing-yuan.Introductionofartificialintelligenceandexpertsystem[M]Beijing:
TsinghuaUniversitypress,2006:
【3】敖志刚.人工智能与专家系统导论[M]:
中国科学技术大学,2002:
165-197
AoZhi-gang.Introductionofartificialintelligenceandexpertsystem[M]Hefei:
PressofUSTC,2002:
【4】渠川路.人工智能、专家系统与智能计算机[M]:
航空航天大学,1991:
123-156
QuChuan-lu.Artificialintelligence,Expertsystemandintelligentcomputer[M]Beijing:
UniversitiofAeronauticsandAstronauticsPress,1991: