




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档动物分类专家系统设计与实现 班级:计算机0352姓名:刘一飞学号:200320010220一、 专家系统简介: 专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。也就是说,专家系统是一个具有大量的专门知识与经验的程序系统,它应用人工智能技术和计算机技术,根据某领域一个或多个专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题,简而言之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。 1.专家系统的特点专家系统具有下列3个特点:(1) 启发性专家系统能运用专家的知识与经验进行推理、判断和决策。世界上的大部分工作和知识都是非数学性的,只有一小部分人类活动是以数学公式为核心的(约占8%)。即使是化学和物理学科,大部分也是靠推理进行思考的;对于生物学、大部分医学和全部法律,情况也是这样。企业管理的思考几乎全靠符号推理,而不是数值计算。 (2) 透明性 专家系统能够解释本身的推理过程和回答用户提出的问题,以便让用户能够了解推理过程,提高对专家系统的信赖感。例如,一个医疗诊断专家系统诊断某病人患有肺炎,而且必需用某种抗生素治疗,那么,这一专家系统将会向病人解释为什么他患有肺炎,而且必须用某种抗生素治疗,就像一位医疗专家对病人详细解释病情一样。 (3) 灵活性专家系统能不断地增长知识,修改原有知识,不断更新。由于这一特点,使得专家系统具有十分广泛的应用领域。 2.专家系统的优点近十多年来,专家系统获得迅速发展,应用领域越来越广,解决实际问题的能力越来越大,这是专家系统的优良性能以及对国民经济的重大作用决定的。具体地说,包括下列几个方面: (1) 专家系统能够高效率、准确、周到、迅速和不知疲倦地进行工作。 (2) 专家系统解决实际问题时不受周围环境的影响,也不可能遗漏忘记。(3) 可以使专家的专长不受时间和空间的限制,以便推广珍贵和稀缺的专家知识与经验。(4) 专家系统能促进各领域的发展,它使各领域专家的专业知识和经验得到总结和精炼,能够广泛有力地传播专家的知识、经验和能力。(5) 专家系统能汇集多领域专家的知识和经验以及他们协作解决重大问题的能力,它拥有更渊博的知识、更丰富的经验和更强的工作能力。(6) 军事专家系统的水平是一个国家国防现代化的重要标志之一。(7) 专家系统的研制和应用,具有巨大的经济效益和社会效益。(8) 研究专家系统能够促进整个科学技术的发展。专家系统对人工智能的各个领域的发展起了很大的促进作用,并将对科技、经济、国防、教育、社会和人民生活产生极其深远的影响。二、算法设计本程序采用正向推理作为算法主体。正向推理就是从初始事实数据出发,正向使用规则进行推理(即用规则前提与动态数据库中的事实匹配,或用动态数据库中的数据测试规则的前提条件,然后产生结论或执行动作),朝目标前进,其算法思想为:1、 将初始事实/数据置入动态数据库。2、 将动态数据库中的事实/数据,匹配/测试目标条件,若目标条件满足,则推理成功,结束。3、 用规则库中各规则的前提匹配动态数据库中的事实/数据,将匹配成功的规则组成待用规则集。4、 若待用规则集为空,则运行失败,退出。5、 将待用规则集中各规则的结论加入动态数据库,或者执行其动作,转2.三、 源程序:#define ANIMAL_H#define True 1#define False 0#define DontKnow -1#include#include#include/事实集(概念集)char *str=, chew_cud /* 1 */, hooves /* 2 */, mammal /* 3 */, forward_eyes/* 4 */, claws /* 5 */, pointed_teeth /* 6 */,eat_meat /* 7 */, lay_eggs /* 8 */, fly /* 9 */,feathers /* 10 */, ungulate /* 11 */, carnivore /* 12 */,bird /* 13 */, give_milk /* 14 */, has_hair /* 15 */,fly_well /* 16 */, black&while_color/* 17 */, can_swim /* 18 */,long_legs /* 19 */, long_neck /* 20 */, black_stripes /* 21 */,dark_spots /* 22 */, tawny_color /* 23 */, albatross /* 24 */,penguin /* 25 */, ostrich /* 26 */, zebra /* 27 */,giraffe /* 28 */, tiger /* 29 */, cheetah /* 30 */,0;/规则之前件(条件)集,注意与下面对应int rulep6=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;/规则之后件(结论)集,注意与上面对应int rulec= 30, 29, 28, 27, 26, 25, 24, 3, 3, 13, 13, 12, 12, 11, 11; /前个是要识别的动物/事实类class factprivate:int Number;/事实IDchar Name21; /事实名int Active; /激活标志int Succ;/事实断言:真、假、不知道三种情况值public:fact *Next;/事实链表后继指针 /* Num:事实ID L:事实名 */fact(int Num,char *L)strcpy(Name,L);Number=Num;Active=False;/初始不激活Succ=DontKnow;/初始断言不确定Next=NULL;/初始后继为空char *GetName()/获取事实名char *L;L=new char21;strcpy(L,Name);return L;int GetNumber()return Number; /获取事实IDint GetAct()return Active; /获取事实激活标志int GetSucc()return Succ; /获取事实断言值/设置事实激活标志和断言值void PutAct(const int Act0,int Suc0) Active=Act0; Succ=Suc0; /end factfact *Fact; /事实链表class list /前提(前提来源与事实集)链表类private:int Number; /前提ID,即事实IDpublic:list *Next; /前提链表后继指针/* Num:事实ID */list(int Num) Number=Num; Next=NULL;int GetNumber()return Number; /获取前提ID(也就是事实ID); /end listclass rule /规则类char *Name; /规则名list *Pre; /规则前件(前提、条件)链表头指针int Conc; /规则后件(结论)ID(也是事实ID)public:rule *Next; /规则链表后继指针rule(char *N,int P,int C); /规则类构造函数rule(); /析构函数int Query(); /推理机函数void GetName() printf(%s%,Name); /输出规则名;/* N:规则名P:规则前件数组C:规则后件ID*/rule:rule(char *N,int P,int C)int i;list *L;Pre=NULL; /前提链头指针初始化Next=NULL; /规则链后继指针初始化Name=new charstrlen(N)+1;strcpy(Name,N);i=0;while(Pi!=0) /有前提情况下L=new list(Pi+); /加入前提链L-Next=Pre; /注意:前插入Pre=L;Conc=C; /填入规则后件(结论)/* */rule:rule()list *L;while(Pre)L=Pre-Next;delete Pre;Pre=L;delete Name;/* */int rule:Query()/ int i; char c; /保存用户输入按键符号 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; /一旦查询到,有这样的前提(不管其是否成立)则中止查询。我们的知识库必须保证一定能查许到,否则dead loop F=F-Next; /查询下一事实 /退出循环时,F指向查询到的事实节点 if(L-GetNumber()0) /如果前提为真 if(F-GetSucc()=True) /而且事实链表中的这个事实断言也为真 L=L-Next; /则本规则的当前前提在推理中满足 continue; /继续下一前提的判断 if(F-GetSucc()=False) /Sorry,该前提在事实链表中断言不成立 return False; /该规则推理使用结束,直接返回 else/如果前提为假,表现为ID if(F-GetSucc()=True)/Sorry,该前提在事实链表中断言却为真 return False; /该规则推理使用结束,直接返回 if(F-GetSucc()=False) /同上类似 L=L-Next; continue; /end ifelse printf(%s(Y/N),F-GetName(); /向用户提问,这里简单以事实名为问题 c=getchar(); /接受用户输入 flushall(); /*注意:事实链表中节点的Succ域指:该事实的用户断言或中间推出的断言*/ if(c=Y)|(c=y) /回答“是” if(L-GetNumber()0) F-PutAct(1,True); /且当前规则中的当前前提要求为“真”,置激活和“真”断言 if(L-GetNumber()PutAct(1,True); /置激活和用户的断言 return False; /本规则推理结束,不成功;后面的前提不判断了! else /分析同上 if(L-GetNumber()PutAct(-1,False);if(L-GetNumber()0) F-PutAct(-1,False); return False; L=L-Next; /用户断言和当前规则的当前前提符合,则取当前规则的下一前提进行判断! /end while /只要上述while循环正常退出,表明当前规则的所有前件都满足,下面要得出当前规则的推理结论了 F=Fact; for(;) if(Conc=F-GetNumber() break; /在事实表中查找与当前规则得后件相同得事实(结论性) F=F-Next; if(ConcPutAct(1,True); /那就是中间事实性结论,设置其激活和中间推理确证了的断言 return False; /然后返回,本规则并不能结束整个推理 /当前规则之后件是最终结论,得出要识别的动物,返回真! printf(nThis annimal is %s,F-GetName(); return True;#endif#include animal.hint main(int argc, char* argv)/list *List;fact *F,*T;rule *Rule,*R;char ch8;int i=1;Fact=NULL; /事实链表初始为空while(stri0!=0) /在事实链表中填入事实,注意:前插入F=new fact(i,stri+);F-Next=Fact;Fact=F;F=Fact;Fact=NULL;while(F) /倒转上面前插入的事实链表。inverted the upper linkT=F;F=F-Next;T-Next=Fact;Fact=T; i=0;ch0=R;ch1=U;ch2=L;ch3=E;ch4=_;ch5=a;ch6=0;Rule=NULL; /规则链表初始为空for(i=0;iNext=Rule;Rule=R;ch5+;R=Rule;for(;) /开始询问用户。Query i=R-Query();if(i=1) break; /如果返回“真”,则推理成功,并可以给出最后专家答案!R=R-Next;if(!R) break; /所有规则都扫描完,R为空,则退出!if(!R) pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年矿业工程师职业资格考试试卷及答案
- 2025年建筑工程管理专业考研试题及解答
- 2025年宏观经济学基础知识与应用考试试题及答案
- 2025年公共关系与广告传播考试试题及答案
- 2025年中国邮政集团有限公司甘肃省分公司校园招聘笔试模拟试题含答案详解
- 2025年中国电信集团有限公司北京分公司招聘笔试模拟试题含答案详解
- 物管公司客户管理制度
- 特殊学校老师管理制度
- 特种专业车辆管理制度
- 特色餐饮加盟管理制度
- 全过程咨询项目管理
- 2024年广东省广州市白云山风景名胜区管理局分支机构第一次公开招聘考试真题及答案
- DB65T 8020-2024 房屋建筑与市政基础设施工程施工现场从业人员配备标准
- 2024年江西省水利投资集团有限公司招聘考试真题
- 2024年贵州省普通高校招生信息表(普通类本科批-物理组合)
- 2025年个人与企业投资合同模板
- 《中南大学》课件
- 幼儿园教师考核评价量化表
- 医院反腐倡廉廉洁行医专题党课宣讲课件
- 2025版《VOCs废气处理设施安全检查表》(全)
- 辽宁省本溪市(2024年-2025年小学六年级语文)统编版期末考试((上下)学期)试卷及答案
评论
0/150
提交评论