基于Prolog程序实现的专家系统开发实例_第1页
基于Prolog程序实现的专家系统开发实例_第2页
基于Prolog程序实现的专家系统开发实例_第3页
基于Prolog程序实现的专家系统开发实例_第4页
基于Prolog程序实现的专家系统开发实例_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例敖志刚敖志刚 编制编制第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例第第13章章 基于基于Prolog程序实现的专家系统程序实现的专家系统开发实例开发实例 131 基于规则的动物识别专家系统基于规则的动物识别专家系统 1311 动物识别专家系统的基本组成动物识别专家系统的基本组成 1312 系统的系统的PDC Prolog源程序及运行源程序及运行 132 基于逻辑的液压故障诊断专家系统基于逻辑的液压故障诊断专家系统 1321 液压故障诊断专家系统的构建液压故障诊断专家系

2、统的构建 1322 液压故障诊断系统的编程与运行状液压故障诊断系统的编程与运行状态态 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例第第13章章 基于基于Prolog程序实现的专家程序实现的专家系统开发实例系统开发实例 1311 动物识别专家系统的基动物识别专家系统的基本组成本组成 动物识别动物识别ES从结构上可以分成六个从结构上可以分成六个基本部分基本部分:知识库、数据库、知识知识库、数据库、知识表示、推理机、解释部分、知识获表示、推理机、解释部分、知识获取部分。取部分。 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开

3、发实例1. 动物识别专家系统的知识库 10条规则用条规则用Turbo Prolog语言表示如下语言表示如下: it_is(“哺乳动物哺乳动物”):- positive(“产奶产奶”). it_is(“哺乳动物哺乳动物”):- positive(“有毛发有毛发”). it_is(“食肉动物食肉动物”):- positive(“吃肉吃肉”). it_is(“食肉动物食肉动物”):- positive(“有犬齿有犬齿”), positive(“有爪有爪”), positive(“眼前视眼前视”). it_is(“有蹄动物有蹄动物”):- positive(“有蹄子有蹄子”),it_is(“哺乳动物哺

4、乳动物”). 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(“有蹄动物有蹄动物

5、”), 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

6、. 知识表示 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章

7、章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例4. 推理机 推理机是一组函数,本例既有正向推理机又有反向推推理机是一组函数,本例既有正向推理机又有反向推理机,都是用精确推理。理机,都是用精确推理。 正向推理正向推理 用户首先提供一批事实,存放到数据库中,然后推理用户首先提供一批事实,存放到数据库中,然后推理机进行工作。方法是机进行工作。方法是: 推理机用这批事实与知识库中规则的前提进行匹配。推理机用这批事实与知识库中规则的前提进行匹配。 把匹配成功的规则的结论部分作为新的事实加到数据库中把匹配成功的规则的结论部分作为新的事实加到数据库中去去(这时,数据库中的事实增

8、加了这时,数据库中的事实增加了)。再用更新后的数据库中。再用更新后的数据库中的所有事实,重复上述、二步,如此反复进行,直到的所有事实,重复上述、二步,如此反复进行,直到得出结论得出结论(答案答案)或不再有新的事实加到数据库为止。或不再有新的事实加到数据库为止。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例 正向推理正向推理 图图13-1 正向推理机示意图正向推理机示意图开始开始令令I=1取出规则取出规则I的前提部分的前提部分将这些结论加入数据库,将这些结论加入数据库,并记下规则并记下规则I这些前提都在这些前提都在数据库中吗?数据库中吗?取出规则取出规则I

9、的结论部分的结论部分这些结论是新这些结论是新事实吗?事实吗?令令I=I+1还能产生新还能产生新的事实吗?的事实吗?结束结束是是是是能能否否否否否否第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例反向推理反向推理 由用户或系统首先提出一批假设,然后系统逐由用户或系统首先提出一批假设,然后系统逐一验证这些假设的真假性,方法是一验证这些假设的真假性,方法是: 看假设是否在数据库中,若在,则假设成立,推看假设是否在数据库中,若在,则假设成立,推理结束或进行下一个假设的验证,否则,进行下理结束或进行下一个假设的验证,否则,进行下一步。一步。 判断这些假设是否是证据节

10、点,若是,系统提问判断这些假设是否是证据节点,若是,系统提问用户,否则进行下一步。用户,否则进行下一步。 找出结论部分包含此假设的那些规则,把这些规找出结论部分包含此假设的那些规则,把这些规则的所有前提作为新的假设。则的所有前提作为新的假设。 重复、步。重复、步。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例图图13-2 反向推理机示意图反向推理机示意图开始开始提出假设提出假设此假设还在数此假设还在数据库中吗?据库中吗?有此事有此事实否?实否?结束结束在在是是否否有有无无此假设是否是此假设是否是证据节点?证据节点?找出结论部分包含此找出结论部分包含此假设

11、的那些规则假设的那些规则找出规则之一的找出规则之一的1个前个前提作为新的假设提作为新的假设此假设成立此假设成立结束结束提问用户提问用户将此事实记入数据库将此事实记入数据库否否或或或或反向推理反向推理第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例设计一个反向推理机所具有的功能设计一个反向推理机所具有的功能 能根据用户要求或情况提出假设。能根据用户要求或情况提出假设。 能验证此假设是否是在数据库中。能验证此假设是否是在数据库中。 能把知识库中将结论部分包含此假设的规则都能把知识库中将结论部分包含此假设的规则都找出来。找出来。 能将找出来的规则的前提部分取出,

12、并作为新能将找出来的规则的前提部分取出,并作为新的假设逐条验证。的假设逐条验证。 能判断假设是否是证据节点,若是,能向用户能判断假设是否是证据节点,若是,能向用户提出相应的问题,并记录结果。提出相应的问题,并记录结果。 能将匹配成功的规则记录下来。能将匹配成功的规则记录下来。 能判断何时应结束推理。能判断何时应结束推理。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例 反向推理机的实现反向推理机的实现 positive(X):- xpositive(X),!. positive(X):- not(negative(X),!,ask(X). negative

13、(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. 解释部分解

14、释部分 怎么得出这个结论的怎么得出这个结论的? 系统回答这个问题是通过打印系统回答这个问题是通过打印(或屏幕显示或屏幕显示)展示推导这展示推导这个结论所用的规则。个结论所用的规则。 例如若用户问例如若用户问:“为什么说该动物是金钱豹呢为什么说该动物是金钱豹呢?”系统回系统回答答:“由于你告诉动物有毛发,它是哺乳动物;又由于你告由于你告诉动物有毛发,它是哺乳动物;又由于你告诉它吃肉,所以它又是食肉动物;由于它是哺乳动物、食诉它吃肉,所以它又是食肉动物;由于它是哺乳动物、食肉动物,且你告知是黄褐色的,又有暗斑点,所以它是金肉动物,且你告知是黄褐色的,又有暗斑点,所以它是金钱豹。钱豹。” 为什么问我

15、这个问题为什么问我这个问题? 系统根据推理过程,解释问这个问题的原因。系统根据推理过程,解释问这个问题的原因。 若用户提出若用户提出:“为什么问我为什么问我:动物吃肉动物吃肉?”系统就会回答系统就会回答:“我为我为了推出该动物是金钱豹,我首先看它是否是哺乳动物,根了推出该动物是金钱豹,我首先看它是否是哺乳动物,根据你的回答,这个结论是对的,于是我要考虑它是否是食据你的回答,这个结论是对的,于是我要考虑它是否是食肉动物,只要它吃肉,它就是食肉动物,所以我要问你这肉动物,只要它吃肉,它就是食肉动物,所以我要问你这个问题。个问题。” 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实

16、现的专家系统开发实例6. 知识获取部分知识获取部分 知识获取部分也称学习功能,这是为了向知识获取部分也称学习功能,这是为了向专家获取新规则或修改已有的不适用或有专家获取新规则或修改已有的不适用或有错误的规则。本系统主要是通过询问错误的规则。本系统主要是通过询问ask和和建立动态数据库建立动态数据库xpositive与与xnegative来获取来获取知识的。知识的。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例13.1.2 系统的系统的PDC Prolog源程序及运源程序及运行行 首先在首先在PDC Prolog系统界面上系统界面上执行命令执行命令“Run

17、”,屏幕上会立,屏幕上会立即显示如图即显示如图13-3所示的信息并所示的信息并展开对话。如果系统中没有一展开对话。如果系统中没有一种动物符合您提供的特点,系种动物符合您提供的特点,系统会告诉您统会告诉您“不认识此动物不认识此动物”。在对话中问过的问题不会重复在对话中问过的问题不会重复再问,这类问题作为动态信息再问,这类问题作为动态信息保留在知识库中,大大地提高保留在知识库中,大大地提高了对话的效率。如果动物很多,了对话的效率。如果动物很多,每一种动物具有很多特性,只每一种动物具有很多特性,只需要扩充规则库,采用同样的需要扩充规则库,采用同样的推理机制、同样的动态数据库推理机制、同样的动态数据库

18、方法、同样的知识表示方式和方法、同样的知识表示方式和类似的解释机制即可。类似的解释机制即可。该动物产奶吗?该动物产奶吗?yesyes该动物吃肉吗?该动物吃肉吗?yesyes该动物黄褐色吗?该动物黄褐色吗?nono该动物有蹄子吗?该动物有蹄子吗?yesyes该动物有黑条纹吗?该动物有黑条纹吗?yesyes您要找的动物是您要找的动物是: : 斑马斑马动物识别专家系统动物识别专家系统图图13-3 13-3 动物识别动物识别ESES的人机对话的人机对话第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例132 基于逻辑的液压故障诊断专家系统基于逻辑的液压故障诊断专家系

19、统 1321 液压故障诊断专家系统的构建液压故障诊断专家系统的构建 1. 故障诊断和维修是一项复杂性的工作故障诊断和维修是一项复杂性的工作 设备是多种技术的荟萃。设备是多种技术的荟萃。 故障原因与征兆之间的关系并非一一对故障原因与征兆之间的关系并非一一对应。应。 故障与征兆之间的关系存在着两类不确故障与征兆之间的关系存在着两类不确定性定性-随机性和模糊性。随机性和模糊性。 故障的发生可能是间歇性的。故障的发生可能是间歇性的。 故障探测仪表本身也可能发生故障。故障探测仪表本身也可能发生故障。 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例2. 液压系统的应

20、用液压系统的应用 塑料加工机械、压力机械、机床等;塑料加工机械、压力机械、机床等; 行走机械中的工程机械、建筑机械、农业机械、汽车等;行走机械中的工程机械、建筑机械、农业机械、汽车等; 钢铁工业用的冶金机械、提升装置、轧辊调整装置等;钢铁工业用的冶金机械、提升装置、轧辊调整装置等; 土木水利工程用的防洪闸门及堤坝装置、河床升降装置、土木水利工程用的防洪闸门及堤坝装置、河床升降装置、桥梁操纵机构等;桥梁操纵机构等; 发电厂涡轮机调速装置、核发电厂等等;发电厂涡轮机调速装置、核发电厂等等; 船舶用的甲板起重机械(绞车)、船头门、舱壁阀、船尾船舶用的甲板起重机械(绞车)、船头门、舱壁阀、船尾推进器等

21、;推进器等; 特殊技术用的巨型天线控制装置、测量浮标、升降旋转舞特殊技术用的巨型天线控制装置、测量浮标、升降旋转舞台等;台等; 军事工业用的火炮操纵装置、船舶减摇装置、飞行器仿真、军事工业用的火炮操纵装置、船舶减摇装置、飞行器仿真、飞机起落架的收放和方向舵控制装置等。飞机起落架的收放和方向舵控制装置等。 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例3. 液压系统的基本原理液压系统的基本原理 液压系统利用液压泵将原动机的机械能转换为液液压系统利用液压泵将原动机的机械能转换为液体的压力能,通过液体压力能的变化来传递能量,体的压力能,通过液体压力能的变化来传

22、递能量,经过各种控制阀和管路的传递,借助于液压执行经过各种控制阀和管路的传递,借助于液压执行元件元件(缸或马达缸或马达)把液体压力能转换为机械能,从把液体压力能转换为机械能,从而驱动工作机构,实现直线往复运动和回转运动。而驱动工作机构,实现直线往复运动和回转运动。其中的液体称为工作介质,一般为矿物油,它的其中的液体称为工作介质,一般为矿物油,它的作用和机械传动中的皮带、链条和齿轮等传动元作用和机械传动中的皮带、链条和齿轮等传动元件相类似。件相类似。 液压系统主要由:动力元件(油泵)、液压系统主要由:动力元件(油泵)、执行元件(油缸或液压马达)、控制元件(各种执行元件(油缸或液压马达)、控制元件

23、(各种阀)、辅助元件和工作介质等五部分组成。阀)、辅助元件和工作介质等五部分组成。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例4. 液压故障诊断的流程液压故障诊断的流程 第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例5液压故障诊断系统结构液压故障诊断系统结构第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例6. 液压故障与征兆的对应关系描述液压故障与征兆的对应关系描述第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例6. 液压故障与征兆的对应

24、关系描述液压故障与征兆的对应关系描述 rule(6,常见故障常见故障,液压油老化液压油老化,17,18). 便和下列征兆(条件)相关联:便和下列征兆(条件)相关联: cond(17,油温过高油温过高). cond(18,磨损粉末过多磨损粉末过多). 程序有三项大的功能程序有三项大的功能(对应菜单中三个选项对应菜单中三个选项):即:即 增加新的故障到知识库;增加新的故障到知识库; 专家咨询系统专家咨询系统 ; 退出系统。退出系统。 提问:征兆现象是不动作吗提问:征兆现象是不动作吗? 紧接着按键紧接着按键1回答回答是是,按键,按键2 回答回答不是不是。第第13章章 基于基于Prolog程序实现的专

25、家系统开发实例程序实现的专家系统开发实例7. 程序运行界面程序运行界面 欢迎使用液压故障诊断专家系统欢迎使用液压故障诊断专家系统 * * * * * * * * * * * * * * * * * * * * * 1. 增加新的故障到知识库增加新的故障到知识库 * * 2. 专家咨询系统专家咨询系统 * * 3. 退出系统退出系统 * * * * * * * * * * * * * * * * * * * * * 请您选择:请您选择:1, 2或或3第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例8.运行状态运行状态 菜单菜单1选项的运行动态选项的运行动态

26、键入键入1,增加新的故障到知识库,系统会显示,增加新的故障到知识库,系统会显示“键入汉字故键入汉字故障名障名:”;从键盘输入一故障名后,系统会显示;从键盘输入一故障名后,系统会显示18种故障征种故障征兆的编号,紧接着在下一行显示:兆的编号,紧接着在下一行显示: 请按符合条件键入一组征兆号,所有征兆号键入完成按下请按符合条件键入一组征兆号,所有征兆号键入完成按下键键“0”: 在键盘上依次输入全部符合此故障条件的征兆号;输入一在键盘上依次输入全部符合此故障条件的征兆号;输入一个号,按回车结束,再输入一个号,个号,按回车结束,再输入一个号,以此类推;按以此类推;按“0”结束征兆号的输入;这时系统显示

27、:结束征兆号的输入;这时系统显示: 某某故障:已经增加到故障知识库某某故障:已经增加到故障知识库 这时,系统新增加了一个故障,若再增加一个故障,再键这时,系统新增加了一个故障,若再增加一个故障,再键入入1,以此类推,直到所有的新故障都输入完为止。以此类推,直到所有的新故障都输入完为止。第第13章章 基于基于Prolog程序实现的专家系统开发实例程序实现的专家系统开发实例8.运行状态运行状态 菜单菜单2选项的运行动态选项的运行动态 键入键入2,进入专家咨询系统。系统显示:,进入专家咨询系统。系统显示: 欢迎进入液压系统故障诊断专家系统欢迎进入液压系统故障诊断专家系统! 请键入请键入常见故障常见故障进入故障诊断专家咨询进入故障诊断专家咨询, 或键入或键入?进入故进入故障知识库检索:障知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论