资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,绪论,理工大学工程兵工程学院,敖志刚,编制,第,13,章 基于,Prolog,程序实现的专家系统开发实例,敖志刚,编制,第,13,章 基于,Prolog,程序实现的专家系统开发实例,第,13,章 基于,Prolog,程序实现的专家系统开发实例,13,1,基于规则的动物识别专家系统,13,1,1,动物识别专家系统的基本组成,13,1,2,系统的,PDC Prolog,源程序及运行,13,2,基于逻辑的液压故障诊断专家系统,13,2,1,液压故障诊断专家系统的构建,13,2,2,液压故障诊断系统的编程与运行状态,第,13,章 基于,Prolog,程序实现的专家系统开发实例,13,1,1,动物识别专家系统的基本组成,动物识别,ES,从结构上可以分成六个基本部分,:,知识库、数据库、知识表示、推理机、解释部分、知识获取部分。,1.,动物识别专家系统的知识库,10,条规则用,Turbo Prolog,语言表示如下,:,it_is(“,哺乳动物”,):-positive(“,产奶”,).,it_is(“,哺乳动物”,):-positive(“,有毛发”,).,it_is(“,食肉动物”,):-positive(“,吃肉”,).,it_is(“,食肉动物”,):-positive(“,有犬齿”,),positive(“,有爪”,),positive(“,眼前视”,).,it_is(“,有蹄动物”,):-positive(“,有蹄子”,),it_is(“,哺乳动物”,).,it_is(“,有蹄动物”,):-positive(“,反刍食物”,),it_is(“,哺乳动物”,).,animal_is(“,老虎”,):-it_is(“,哺乳动物”,),it_is(“,食肉动物”,),positive(“,黄褐色”,),positive(“,有黑条纹”,).,animal_is(“,金钱豹”,):-it_is(“,哺乳动物”,),it_is(“,食肉动物”,),positive(“,黄褐色”,),positive(“,有暗斑点”,).,animal_is(“,斑马”,):-it_is(“,有蹄动物”,),positive(“,有黑条纹”,).,animal_is(“,长颈鹿”,):-it_is(“,有蹄动物”,),positive(“,有长脖子”,),positive(“,有长腿”,),positive(“,有暗斑点”,).,2.,数据库,positive(X):-ask(X).,ask(X):-write(X,吗?,),readln(Reply,),remember(X,Reply).,3.,知识表示,rule,(,1,“,老虎”,1,2,3,4,),.,rule,(,2,“,金钱豹”,1,2,3,5,),.,rule,(,3,“,斑马”,4,6,),.,rule,(,4,“,长颈鹿”,5,6,7,8,),.,condition(1,“,哺乳动物”,).,condition(2,“,食肉动物”,).,condition(3,“,黄褐色”,).,condition(4,“,有黑条纹”,).,condition(5,“,有暗斑点”,).,condition(6“,有蹄动物”,).,condition(7,“,有长脖子”,).,condition(8,“,长腿”,).,4.,推理机,推理机是一组函数,本例既有正向推理机又有反向推理机,都是用精确推理。,正向推理,用户首先提供一批事实,存放到数据库中,然后推理机进行工作。方法是,:,推理机用这批事实与知识库中规则的前提进行匹配。,把匹配成功的规则的结论部分作为新的事实加到数据库中去,(,这时,数据库中的事实增加了,),。再用更新后的数据库中的所有事实,重复上述,、,二步,如此反复进行,直到得出结论,(,答案,),或不再有新的事实加到数据库为止。,正向推理,图,13-1,正向推理机示意图,开始,令,I=1,取出规则,I,的前提部分,将这些结论加入数据库,并记下规则,I,这些前提都在数据库中吗?,取出规则,I,的结论部分,这些结论是新事实吗?,令,I=I+1,还能产生新的事实吗?,结束,是,是,能,否,否,否,反向推理,由用户或系统首先提出一批假设,然后系统逐一验证这些假设的真假性,方法是,:,看假设是否在数据库中,若在,则假设成立,推理结束或进行下一个假设的验证,否则,进行下一步。,判断这些假设是否是证据节点,若是,系统提问用户,否则进行下一步。,找出结论部分包含此假设的那些规则,把这些规则的所有前提作为新的假设。,重复,、,步。,图,13-2,反向推理机示意图,开始,提出假设,此假设还在数据库中吗?,有此事实否?,结束,在,是,否,有,无,此假设是否是证据节点?,找出结论部分包含此假设的那些规则,找出规则之一的,1,个前提作为新的假设,此假设成立,结束,提问用户,将此事实记入数据库,否,或,或,反向推理,设计一个反向推理机所具有的功能,能根据用户要求或情况提出假设。,能验证此假设是否是在数据库中。,能把知识库中将结论部分包含此假设的规则都找出来。,能将找出来的规则的前提部分取出,并作为新的假设逐条验证。,能判断假设是否是证据节点,若是,能向用户提出相应的问题,并记录结果。,能将匹配成功的规则记录下来。,能判断何时应结束推理。,反向推理机的实现,positive(X,):-,xpositive(X,),!.,positive(X,):-,not(negative(X),!,ask(X,).,negative(X,):-,xnegative(X,),!.,ask(X,):-write(,该动物,X,吗,?),readln(Reply),remember(X,Reply,).,remember(X,yes,):-,asserta(xpositive(X,).,remember(X,no,):-,asserta(xnegative(X),fail,.,clear_facts,:-,retract(xpositive(_),fail,.,clear_facts,:-,retract(xnegative(_),fail,.,5.,解释部分,怎么得出这个结论的,?,系统回答这个问题是通过打印,(,或屏幕显示,),展示推导这个结论所用的规则。,例如若用户问,:“,为什么说该动物是金钱豹呢,?”,系统回答,:“,由于你告诉动物有毛发,它是哺乳动物;又由于你告诉它吃肉,所以它又是食肉动物;由于它是哺乳动物、食肉动物,且你告知是黄褐色的,又有暗斑点,所以它是金钱豹。”,为什么问我这个问题,?,系统根据推理过程,解释问这个问题的原因。,若用户提出,:“,为什么问我,:,动物吃肉,?”,系统就会回答,:“,我为了推出该动物是金钱豹,我首先看它是否是哺乳动物,根据你的回答,这个结论是对的,于是我要考虑它是否是食肉动物,只要它吃肉,它就是食肉动物,所以我要问你这个问题。”,6.,知识获取部分,知识获取部分也称学习功能,这是为了向专家获取新规则或修改已有的不适用或有错误的规则。本系统主要是通过询问,ask,和建立动态数据库,xpositive,与,xnegative,来获取知识的。,13.1.2,系统的,PDC Prolog,源程序及运行,首先在,PDC Prolog,系统界面上执行命令“,Run”,,屏幕上会立即显示如图,13-3,所示的信息并展开对话。如果系统中没有一种动物符合您提供的特点,系统会告诉您“不认识此动物”。在对话中问过的问题不会重复再问,这类问题作为动态信息保留在知识库中,大大地提高了对话的效率。如果动物很多,每一种动物具有很多特性,只需要扩充规则库,采用同样的推理机制、同样的动态数据库方法、同样的知识表示方式和类似的解释机制即可。,该动物产奶吗?,yes,该动物吃肉吗?,yes,该动物黄褐色吗?,no,该动物有蹄子吗?,yes,该动物有黑条纹吗?,yes,您要找的动物是,:,斑马,动物识别专家系统,图,13-3,动物识别,ES,的人机对话,13,2,基于逻辑的液压故障诊断专家系统,13,2,1,液压故障诊断专家系统的构建,1.,故障诊断和维修是一项复杂性的工作,设备是多种技术的荟萃。,故障原因与征兆之间的关系并非一一对应。,故障与征兆之间的关系存在着两类不确定性,随机性和模糊性。,故障的发生可能是间歇性的。,故障探测仪表本身也可能发生故障。,2.,液压系统的应用,塑料加工机械、压力机械、机床等;,行走机械中的工程机械、建筑机械、农业机械、汽车等;,钢铁工业用的冶金机械、提升装置、轧辊调整装置等;,土木水利工程用的防洪闸门及堤坝装置、河床升降装置、桥梁操纵机构等;,发电厂涡轮机调速装置、核发电厂等等;,船舶用的甲板起重机械(绞车)、船头门、舱壁阀、船尾推进器等;,特殊技术用的巨型天线控制装置、测量浮标、升降旋转舞台等;,军事工业用的火炮操纵装置、船舶减摇装置、飞行器仿真、飞机起落架的收放和方向舵控制装置等。,3.,液压系统的基本原理,液压系统利用液压泵将原动机的机械能转换为液体的压力能,通过液体压力能的变化来传递能量,经过各种控制阀和管路的传递,借助于液压执行元件,(,缸或马达,),把液体压力能转换为机械能,从而驱动工作机构,实现直线往复运动和回转运动。其中的液体称为工作介质,一般为矿物油,它的作用和机械传动中的皮带、链条和齿轮等传动元件相类似。液压系统主要由:动力元件(油泵)、执行元件(油缸或液压马达)、控制元件(各种阀)、辅助元件和工作介质等五部分组成。,4.,液压故障诊断的流程,5,液压故障诊断系统结构,6.,液压故障与征兆的对应关系描述,6.,液压故障与征兆的对应关系描述,rule(6,常见故障,液压油老化,17,18).,便和下列征兆(条件)相关联:,cond(17,油温过高,).,cond(18,磨损粉末过多,).,程序有三项大的功能,(,对应菜单中三个选项,),:即,增加新的故障到知识库;,专家咨询系统;,退出系统。,提问:征兆现象是不动作吗,?,紧接着按键,1,回答,是,,按键,2,回答,不是,。,7.,程序运行界面,欢迎使用液压故障诊断专家系统,*,*,1.,增加新的故障到知识库*,*,2.,专家咨询系统 *,*3.,退出系统 *,*,请您选择:,1,2,或,3,8.,运行状态,菜单,1,选项的运行动态,键入,1,,增加新的故障到知识库,系统会显示“键入汉字故障名,:”,;从键盘输入一故障名后,系统会显示,18,种故障征兆的编号,紧接着在下一行显示:,请按符合条件键入一组征兆号,所有征兆号键入完成按下键“,0”,:,在键盘上依次输入全部符合此故障条件的征兆号;输入一个号,按回车结束,再输入一个号,,以此类推;按“,0”,结束征兆号的输入;这时系统显示:,某某故障:已经增加到故障知识库,这时,系统新增加了一个故障,若再增加一个故障,再键入,1,,,以此类推,直到所有的新故障都输入完为止。,8.,运行状态,菜单,2,选项的运行动态,键入,2,,进入专家咨询系统。系统显示:,欢迎进入液压系统故障诊断专家系统,!,请键入,常见故障,进入故障诊断专家咨询,或键入,?,进入故障知识库检索:,键盘输入:常见故障,系统提问:征兆现象是不动作吗,?(,按,1,回答,是,按,2,回答,不是,),。键入:,1,系统提问:征兆现象是抖动吗,?,键入:,1,系统提问:征兆现象是不能微动吗,?,键入:,1,系统提问:征兆现象是油管车体振动吗,?,键入:,1,系统提问:征兆现象是液压泵噪声高吗,?,键入:,0,8.,运行状态,系统提问:征兆现象是异响吗,?,键入:,1,系统提问:征兆现象是高压管路漏吗,?,键入:,0,系统提问:征兆现象是保位无力沉降快吗,?,键入:,1,系统提问:征兆现象是溢油噪声高吗,?,键入:,1,系统提问:征兆现象是动作慢吗,?,键入:,1,系统提问:征兆现象是液压缸、阀门系统泄漏吗,?,键入:,1,系统提问
展开阅读全文