基于Prolog程序实现的专家系统开发实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功