故障诊断专家系统研究之五-----推理机制及可信度算法

 

推理机制及可信度算法

在第三章和第四章中讨论了如何表示燃气轮机专家的知识以及如何把这些知识存储到知识库之中,即关于知识表示和知识库的问题,而故障诊断专家系统的另一个核心组件就是基于知识的诊断推理机。本章在前两章讨论的知识表示和知识库的基础之上,以正反向相结合的混合推理方式实现诊断推理机,并针对本文提出的知识库模型对混合推理方式的控制策略作了改进,以广度优先索实现正向推理,以深度优先搜索实现反向推理,提高了推理机的效率。此外根据燃气轮机故障现象和故障原因之间的不确定对应性,溶合了不精确推理的思想,因此,还介绍了本文采用的一个可信度算法。 

第一节   推理机概述

本文讨论的推理机是故障诊断推理机,它实际上是计算机中的一组智能程序,包括推理方式和控制策略两个部分。推理过程主要解决的问题是,在问题求解的每一状态下,如何控制知识的选择和运用。知识的运用称为推理方式,知识的选择过程称为控制策略。推理机的任务是运用给定的推理方式和控制策略从知识库中选择有关专家知识,针对用户提出问题或目前监测到的异常现象,作出相应的解答。

   推理方式

推理方式按照知识的确定性程度分,有精确推理和不精确推理;按照推理过程的方向分,有正向推理、反向推理和正反向混合推理。

1.   正向推理(forward reasoning     正向推理是一种从证据到结论的推理方法,也称之为数据驱动策略。

运用正向推理构成的推理机一般应具备以下功能:

1   根据用户提出的前提事实或目前监测到的异常情况,知道如何选用知识库中的知识;

2   将选用的知识及经过推理得出的结论(包括中间结论)保存在临时存储器中,以备给用户解释之用。

3   能够判断推理何时结束。

2.   反向推理(backward reasoning)反向推理是一种从结论到证据的推理方法,它是根据用户的问题或目前监测到的异常情况提出一个假设,然后到知识库之中去寻找支持这个假设成立的证据,若证据存在,则假设成立。反之则否。这种推理方式由于是从结论到证据,故又称为目标驱动策略。

运用反向推理构成的推理机一般应具备以下功能:

1   能根据用户提出的问题,作出相应的假设,并能判断此目标的真假。

2   如假设成立,将结果告知用户并作出解释。

3   若假设不成立,则重新作出假设,并能在知识库之中搜索该假设成立的证据。

4   能判断推理何时结束。

3.   正反向混合推理(global reasoning  正反向混合推理则是一种从证据到结论,再由结论到证据的综合推理方法。即

证据Þ       结论Þ证据 Þ结论

其推理过程是:先根据用户提供的前提事实,通过正向推理,帮助系统参考结论,再运用反向推理,进一步寻找支持该结论成立的证据,如此反复循环直到推理成功或失败为止。

不论是正向推理、反向推理还是正反向混合推理,都有精确推理和不精确推理之分。

4.   精确推理     精确推理是指经过推理得出的结论要么为真,要么为假。在这种推理过程之中,运用到的知识或涉及到的推理规则,都是客观世界中存在的必然事实,证据和结论之间,都有确定的因果关系。

例如,当压气机的出口压力过高而进口压力过低时,那就意味着压气机压比必然过高。

5. 非精确推理(Inexact Reasoning)非精确推理主要用于某些事实的前提和因果关系都并非肯定的场合,这在诊断型、预测型的专家系统中常会用到。其共同的特点是:利用客观世界中某些不完善的、或不确切的事实和资料、以及不确定的因果关系进行推理,得出某些近乎合理的结论。

在燃气轮机故障诊断方面,也存在大量非精确和不完善的专家经验知识,因而经过推理得到的结论,也不是完全肯定的,作为最终结论或决策,推理机必须给出结论的可信度。

非精确推理的主要理论基础是概率论。由于在某些领域,尚未获得大容量的样本空间,以及其它一些原因,使得纯概率论的方法运用受到某些限制。为此,专家系统的建造者们提出了许多改进的理论模型与经验公式,以处理不确定性问题。非精确推理是专家系统的一个重要问题,人们尚处在探索阶段,对已提出的一些模型和方法亦有待进一步完善。

  控制策略(control strategy

控制策略主要指推理方向路线的控制及其推理规则的选择策略。单纯的正、反向推理,在目标的搜索上常常具有较大的盲目性。在一个庞大的知识库(样本空间),盲目地搜索问题的求解目标,将影响系统的工作效率。因此,推理的路线和推理的规则要求要具有启发性,使之能有效缩短推理过程,加快目标的收敛聚焦速度。

在专家系统中,根据搜索空间的大小,目前常用下述两种控制策略:

1)深度优先策略;

2)广度优先策略;

 

第二节   推理方式的选择

如前所述,推理方式包括正向推理、反向推理和正反向混合推理,而其中每一种方式均有精确和不精确两种模式。但不是任何一种方式对某一领域的所有问题都有效,在某些具体应用领域及特定环境下,有的适合正向推理,有的适合反向推理,也有的适合正反向混合推理。这就是说,对某些具体的应用领域,不能事先预定一种一成不变的推理方式,而是要随着问题的展开,根据问题的具体特征和当时的环境,动态地选择和执行某一种合适的推理方式,然后再完成其推理过程。

本节对上述三种推理方式作一论述,对各自的特点作一比较。然后根据本文所讨论的燃气轮机具体应用领域选择本文所采用的推理方式。至于其中不精确推理的成分,将在可信度算法中予以描述。

   正向推理

正向推理又称为数据驱动策略。其基本思想是,将目前已知的初始状态作为节点置于黑板(又称动态数据库、工作存储器,用来存放推理的中间状态和最终结果。由于推理过程的动态性,导致推理的中间结果是多变的,即是可擦可写的,故形象地称之为黑板)之中,根据一定的搜索策略到规则库中获取下一条可用的规则,用该条规则的前件同黑板中的所有节点逐一匹配,若匹配成功,则该条规则可用,将其后件加入黑板,然后继续搜寻规则库,寻找下一条可用规则。若匹配不成功,放弃该规则,同样到规则库中寻找下一条可用规则,并导致新的匹配过程。如此循环往复,直至没有规则可用或黑板不再改变为止。正向推理方式如图51表示。基本算法可用形式语言描述为:

Procedure  Forward_reasoning(Kb,Dynamic_DB)

  BEGIN

        S    SCAN1(Kb,Dynamic_DB)

        While (NOT (EMPTY(S)) AND  (CHANGED(Dynamic_DB)) do

          BEGIN

                Conclusion      GET_CONCLUSION(S)

                ADD Conclusion  TO  Dynamic_DB

               S     SCAN1(Kb,Dynamic_DB)

              END

  END                         

这里,Kb为规则库,Dynamic_DB为黑板,函数SCAN1的功能是到Kb中搜索前件同Dynamic_DB相匹配的规则集S。循环体的功能是将S中规则的后件取出并加入到黑板之中,同时再次扫描规则库,准备下一轮循环。该过程一直持续到找不到匹配的规则(EMPTY(S)为真)或者黑板内容不再改变为止(CHANGED (Dynamic_DB)  为假)。这种单纯的正向推理方式的主要优点是,用户可以主动提供有关问题的信息,而不必等到系统要求时才提供,因为那样会给推理机带来相当大的时间迟滞性;正向推理的不足之处是知识的选择过程似乎是在整个规则库漫无目标地游弋,从而导致系统求解过程中会执行许多与目标无关的无效操作。因为规则库中并非每一条规则可用于目前推理进程,当规则库较大时,正向推理机的相当时间耗费在排除无效的规则上。因而,正向推理的效率较低。

 

  反向推理

反向推理的基本思想是,先根据目前黑板中的初始状态节点,提出一个合理的假设目标,然后依据一定的搜索策略在规则库中搜寻那些其后件部分同该目标相匹配的规则集,检查该规则集中每条规则的前件部分,如果某条规则的前件部分所含有的所有条件项均存在于黑板之中,则把该规则的结论部分(即目前的假设目标)加入到黑板之中,从而该目标被证明有效。否则,把规则的条件项作为新的子目标,递归执行上述过程,直到各“与”关系的子目标全部出现在黑板之中,或者各“或”关系的只目标中有一个出现在黑板之中,则目标被求解。如果子目标不能被分解而且黑板不能满足上述要求时,那么先前假设的目标不成立,推理机必须作出新的假设。反向推理方式如图52所示。基本算法可用形式语言描述为:

Procedure  Backward_reasoning(Kb,Dynamic_DB)

  BEGIN

           Goal         GET_GOAl

           S    SCAN2(Kb,Goal)

While (NOT (EMPTY(S)) AND (NOT(Goal or Sub_goal is found)) do

         BEGIN

                    Condition      GET_CONDITION(S)

                  MATCH  Condition  WITH  Dynamic_DB

                  IF  MATCH  Is  Successful  THEN

                          ADD  Goal  TO  Dynamic_DB

                  ELSE

                    Sub_goal     GET_SUB_GOAL

                         S     SCAN2(Kb,Dynamic_DB)

             END

   END                   

 

51    正向推理方式流程图

 

52 反向推理过程流程图

 

这里,GET_GOAL函数根据目前状态提出假设目标GoalSCAN2函数到规则库中搜索后件同假设目标Goal相匹配的规则集S。循环体则取出规则集S中规则的前件,为并同黑板相匹配,如若成功,便将Goal加入黑板,否则分解目标Goal子目标Sub_goal,同时再次搜索规则库,准备为下一轮循环。上述过程一直持续到无规则可匹配或假设目标被发现为止。

反向推理的难点在于如何作出假设目标。如果假设目标不合理,则会让推理机执行无效的推理,因为推理机最终会将该假设目标推翻。靠单纯的反向推理则不可能提出合理的假设,因此,在进行反向推理之前,系统必须启动一次正向启发式搜索以求得假设目标。而且在反向推理过程中,当假设目标与某条规则的后件相匹配之后,该条规则可能会有多个前件,因而会再生出多个子目标,每个子目标在匹配过程中又可能再生出若干个子目标。如果出现子目标A的子目标BA的父目标时,其推理过程便会陷入死循环。发生这种情况后,就应对规则进行相容性检查,关于这一点,本文第六章提出了一个解决办法:即在知识获取时,就对知识库进行相容性检查,把由于知识的不相容性而导致推理出现循环的现象扼杀在摇篮之中。

       反向推理的一个显著优点是,不用寻找和不必使用那些与假设目标无关的知识,推理过程的方向性很强。不足之处在于初始目标的选择往往较为盲目,必须借助于正向启发式搜索来选择初始目标。

 

  正反向混合推理

正向推理和反向推理各有其优缺点,它们是控制策略的两种极端方法。正向推理和反向推理两种策略同时控制下的推理称为推理。这种推理的基本思想是综合正向推理和反向推理的优点,先通过正向推理帮助选择初始目标,然后通过反向推理进一步求证目标,或者正向推理和反向推理同时进行,在某个中间状态相交,满足一致性条件时终止。

 

               

53 混合推理过程示意图

 

采用这种正反向混合推理,既可以避免正向推理的盲目性,又可避免反向推理中初始目标选择的盲目性,使两种推理互为补充。这种推理过程的示意图如图53所示,其基本思想可用形式语言描述如下:

PROCEDURE   Mixed_reasoning(Kb,Dynamic_DB)

   BEGIN

             REPEAT

             Goals      Forward_reasoning(Kb,Dynamic_DB)

                G       Choose_Goal(Goals)

                P        Backward_reasoning(Kb,Dynamic_DB)

             UNTIL  P is TRUE or (Goals is Empty)

      END

上述程序含有两种算法:即先根据用户提供的初始状态信息(KB,Dynamic),通过正向推理提供一组参考目标(Goals),再由Choose-Goal过程决定初始目标G的选择,然后通过反向推理找出使目标G成立的证据P,如果在黑板中存在P,则初始目标G亦为真,G即为问题的解。上述过程一直持续到找到证据P或者找不到目标集为止。

 

四、本文采用的推理方式

上面介绍了三种常用的推理方式,并分析了每种方式的优点和不足之处。作为总结,以表格的方式描述如下:

 

推理方式名

优点

不足之处

正向推理

充分利用用户主动

提出的信息

盲目地执行许多

无关操作

反向推理

推理的目的性很强

难以提出假设目标

混合推理

充分利用现有知识,

推理的目的性强

控制较为复杂

51 三种推理方式比较

 

观察表51,显然采用第三种方式——混合推理方式是较为合理的。在对燃气轮机实施故障诊断以前,肯定有一个初始状态存在,否则故障诊断便失去了前提。这个初始状态或者是用户主动提供的故障现象(例如在故障咨询时),或者是系统本身监测到的参数的异常状态(也属于故障现象),因此,首先总是根据系统目前异常状态初步推理出其故障原因(可能不是最终原因,即该原因或许是由其他更深层的原因引起),这一步从故障现象到故障原因的推理,属于正向推理。而第二步,则有两种方案:

1.   以此为基础进一步采取正向推理,直到沿着该方向的正向推理不能进行(找不到匹配的规则)为止。那么真正的故障原因可能包含于此时的推理结果之中,由于故障原因的不确定性(一种故障现象可能对应多个不同的故障原因),因而最终的推理结果可能不止一个,随着正向推理的逐步深入,这种情况会越来越明显。为保证诊断的精度,给燃机维护和管理人员提供一个合理的检修范围,必须根据故障发生而表现出来的其它必然现象是否出现,对事实上没有发生的故障予以排除。而这一过程是从故障原因寻找故障现象(即结论成立的证据)的过程,因而是一个反向推理的过程。

2.   以此为假设目标,采用反向推理,直到找到该假设成立的证据或者否定该假设目标为止。

上述两种方案的根本区别在于何时使用反向推理,即是在正向推理出最终原因之后进行反向验证,还是每正向推理一步就及时地反向验证。先考察一个例子,为叙述简便,该例子以第三章中给出的规则的表示形式描述,且不失一般性,各断言、可信度、行动方案均用字母或字母组合表示。

 

51 有如下五条规则

            

 

       该例子可用规则树的形式表示如图54,为简洁起见,图中忽略了可信度和行动方案。设目前初始状态为A,第一步由正向推理找到节点BCD三个初步原因,按照方案1,第二步将继续正向推理,以节点B为例,找到原因E,继续正向推理找到最终的原因HI。之后反向推理验证HI是否为真正的原因,若为真正原因,则HI保留在黑板之中,该方向的推理结束,回溯到B,考虑F,因为可能还有其它原因。若HI被排除,则摘掉以节点E为根的子树,从黑板之中剔除节点EHI,同样回溯到B,考虑F。但是如果采用方案2,在第二步立即对节点B实施反向推理加以验证,若B被排除则推理机可以剔除以B为根的子树,免作许多无用功。在大多数情况之下,实际发生的故障数目远远小于推理机推理得出的最终结果的数目。因此,及时地对推理结果予以验证,以避免不必要的后续推理,是很有必要的。特别是随着知识的不断丰富,知识库规模的不断扩大,推理层次会越来越深,因而方案2的效果会更加明显。

 

 

54    51的树形结构

 

综上所述,从推理方式的角度来讲,本文选择了正反向推理相结合的混合推理方式。具体地说,从全局上看是正向推理,从局部上看,每正向推理一步,均要反向推理寻找证据,以验证结论的正确性。因此,这种方式又是一个全局正向、单步反向的过程。

 

 

第三节   控制策略的选择

在前面,本文讨论了推理方式的问题,即提出了全局上从现象到原因的正向推理和局部上从原因到现象的反向验证相结合的思想。但是构筑一个完整的推理机仅凭推理方式是不够的,还有一个推理路线的问题。例如,在图54中,当以节点B为前提,成功地推理出EF之后,是紧接着E继续推理,还是会过头来考虑CD的情况之后再考虑节点E?这种推理路线的选择称为控制策略。

 

一、深度优先搜索策略

       假定在搜索空间(知识库),存在包括初始状态S和目标状态F在内的树形结构,如图55所示。从图中可以看出,由问题的初始状态出发,到达问题获解的目标状态,存在多种可能的途径(推理路线),并要经历相应的一些中间状态过程(如ABC……状态)。按不同的搜索路线进行搜索,从初始状态到达目标状态的时间复杂性不是相同的。

 

55 深度优先搜索法

 

       所谓深度优先搜索策略,是从起始状态节点S出发,按照从子节点向子节点的子节点的方向进行纵深搜索(如图55中的虚线所示),并逐一检验这些节点是否为目标点,当到达最后一个节点尚未发现目标时,则又依次返回上层父节点的另一子节点再进行搜索,如此重复,直到找到目标为止。      这种搜索路线,体现了优先向树形结构深度方向发展的趋势,故称为深度优先搜索方法。图55中采用深度优先搜索法由节点S经左子树到达节点I的路径是:SACGCHLHCADAS BEI

       深度优先搜索方法的特点是:易于实现,但很冒险。如果树形结构层次较多,它有可能错过目标所在的层次而深入到下面去搜索。因此这种方法虽然简单,但效率却难保证。

 

 

二、广度优先搜索策略

       如图56所示,所谓广度优先搜索策略,就是从起始状态S开始,依次按层(状态节点在树形图中的层次)从左到右逐一搜索,直到找到目标状态为止。

广度优先搜索方法的具体过程如下:从起始状态节点S出发,首先访问与S节点相邻接的第I层节点,看是否有目标状态节点存在,对第I层节点的测试按先生成先测试的原则进行(图56中从左至右虚线所示),即先测试A再测试B……,如果都不是求解目标,则将搜索过程转移到第II层节点进行测试,如此继续进行下去,直到找到目标状态为止。图56中由节点S经广度优先搜索到达节点I的路径是:SABCDEFGHI

56 广度优先搜索法

 

       广度优先搜索的特点是:保守、可靠。即使在树形结构比较复杂的情况下,它也能通过逐层遍历的方式获得目标状态,但是耗时可能会更多,因而适合于某些搜索空间不大的场合。

 

三、本文采用的控制策略

上面讨论了深度优先搜索法和广度优先搜索法,为了能清楚地了解两种方式的优点和不足之处,这里以表格的方式列出如下:

 

控制策略名称

优点

不足之处

深度优先搜索法

易于实现

不安全、冒险

广度优先搜索法

安全可靠

复杂、耗时

52 两种搜索方式的比较

推理机制由推理方式和控制策略构成。在确定了推理方式之后,控制策略的选择必须同推理方式紧密结合,保持逻辑上的一致性,这样推理机的设计显得紧凑而严密。在前面提出的全局正向、单步反向的混合推理方式的基础之上,本文采用深度优先搜索和广度优先搜索相结合的思想,以深度优先搜索法实现全局正向推理,以广度优先搜索法实现局部反向推理。充分利用两种方式的优点,取长补短,以深度优先搜索法易于实现的特点弥补广度优先搜索法复杂耗时之不足;以广度优先搜索法安全可靠的优点弥补深度优先搜索法不安全的冒险因素。

还是回到图54中,考察例51,看看这两种搜索方法是如何运用到两种推理方式上的。设初始状态为A,往后推理6步,其中正反向推理各3步:

第一步:正向推理  由现象A往下搜索找到三个可能的故障原因BCD,这是一个深度优先搜索的过程;

第二步:反向推理  根据可能的故障原因BCD依次寻找它们发生的征兆(即证据),若发现某原因对应的征兆同目前状态相矛盾,则该故障肯定没有发生,即可排除该原因,并摘掉以该原因为根节点的子树。由于此处是对BCD三个原因分别进行反向验证,因而是一个广度优先搜索的过程。

第三步:正向推理  假设故障原因B没有被排除,以B为前提寻找更深层次的原因EF,这也是一个深度优先搜索的过程。

第四步:反向推理  分别以EF为前提寻找其发生的证据,对EF试图逐一排除。这一搜索过程是从EF,因而也是一个广度优先搜索的过程。

第五步:正向推理  假设故障原因E没有被排除,以E为前提寻找更深层次的原因HI,这又是一个深度优先搜索的过程。

第六步:反向推理  分别以HI为前提,对HI试图逐一排除,这又是一个从HI 的广度优先搜索的过程。

此后,由于无法向下继续搜索,便沿着路径IEBF回溯到FF同样无法继续搜索,便又沿着路径FBAC回溯到C……,直到所有节点搜索完成,那么黑板之中没有被排除的最终结果即为可能的故障原因。

分析上述推理路线,从全局上看,是一个沿着逐层树枝向下搜索和不断回溯的深度优先搜索的过程,它具有明确的物理路线,这种严格按照树枝搜索的方法比撇开树的分枝结构“武断”地横向搜索的广度优先搜索法要自然得多且易于实现;从局部上看,每一步正向推理之后,都存在着一个从原因到现象的反向验证的过程,而这一过程对最近的一次正向推理的所有结果逐一进行,因而是一个广度优先搜索的过程。正是由于这一过程的存在,使得那些事实上不可能存在的故障原因及时地被排除,彻底地扼杀了深度优先搜索法因错过目标而向下徒劳搜索的不安全因素。

 

 

第四节   可信度算法

燃气轮机专家的经验知识大都具有不确定性,因而根据专家的经验总结出来的规则也有一个成立的可信度问题,本文中以规则强度来衡量规则成立的量度。由于规则的不确定性导致根据规则推理出的结论也具有不确定性,为表征结论的这一不确定性,本节提出了断言强度的概念,因此,可信度在这里被细化为规则强度和断言强度。可信度的计算过程就是规则强度向断言强度传播的过程。

一、断言强度的提出

在知识表示一章中,本文认为规则由断言构成,那么推理的初始条件和最终结果均由断言表示,如下列规则:

A;(BctBactB))

这里,A为故障现象(条件),B为故障原因(结论),ctB为规则强度,actB为相应的解决措施,引起结论B具有不确定性的原因有:

1)条件A可能是由用户给出的、而用户对于某一现象的定性并不十分精确,故结论B也具有不精确性;

2)规则本身具有不确定性(表现在规则强度上),导致结论B也带有不确定性;

3)条件A可能是其它规则的结论部分,而通过其它规则推理出A的过程必然使A蒙上不精确性。

因此有必要对结论附加一定的可信度,以准确地反映推理结果的真实程度。这里结论B是相对的,在推理过程中,通过匹配它可能会作为另一条规则的条件而出现,但不论是条件或结论,它们均为断言。为表征断言的真实程度而附加一定的可信度,本文中称之为断言强度。由于断言强度是在推理过程之中滋生出来的,并且随着推理的进行它有可能会改变,这就是为什么在以静态形式存储的断言库中并未考虑断言强度项的原因。

 

二、可信度的计算

可信度在本文中被细化为规则强度和断言强度,可信度的计算过程事实上是条件的断言强度和规则强度向结论的断言强度传播的过程。本文中采用MYCIN系统中使用的确定性理论计算可信度。

 

1)规则强度的描述

对一般形式的规则IF  A  THEN  B,这里A表示前提断言,B表示结论断言,确定性理论用一可信度因子rule(B,A)描述其规则强度,rule(B,A)定义为

 

                (式51

从式51可以看出,若P(B|A)=1,即前提为真时断言为真,则rule(B,A)=1,若P(B|A)=0,即前提为真时断言为假,则rule(B,A)=-1;若P(B|A)=P(B),即前提A与断言B无关,则rule(B,A)=0,这是规则的单位元;若前提A支持断言B,即P(B|A)>P(B),则0<rule(B,A)<1,反之,-1<rule(B,A)<0。实际专家系统建模中,由于条件断言和结论断言的概率都不易获得,故规则强度的值一般由领域专家主观给出。但是专家在给出规则强度时,要遵循如下两条约定:

1. 多条规则其结论相同,那么其规则强度之和不得超过1

2. 一条规则具有多个结论,则对于每一结论而言,其规则强度之和不得超过1

 

2)断言强度的描述

当规则IF A THEN B的条件A本身不确定性时,断言B的强度显然要降低。断言的不确定性有两种原因,一是A本身可能是用户输入的初始条件,由于各种条件的限制,用户提出的条件A本身可能具有不精确性,另一个原因是A可能是其它规则的结论部分而在这条规则中充当条件的作用,通过其它规则推理出A的过程必然使A带上了不精确性。确定性理论中,断言A的强度运用可信度因子ass(A)来描述。当条件断言A以某种程度为真时,0<ass(A)£0,反之,-1£ass(A)<0。初始条件的可信度因子由用户在系统的具体求解过程提供,非初始条件的断言强度由下面将要描述的可信度的传播过程实现。

 

3)可信度的传播

    设规则的规则强度为为规则前件,为规则后件;断言E的断言强度为。给出规则的一般形式如下:

            If  E  then   R  (规则强度 ,行动方案略)

其后件断言R的强度计算按下式进行

 

                                     (1)       E= and  and ......      (2)       E= or  and ......     (3)

 

说明    1.  规则前件的任何逻辑表达式均可化为上述(2)、(3)式计算;

        2.  对于多条规则分别支持同一结论的情况,分别按上式计算,后取其最大值.

        3.  若一条规则具有多个结论,且对于每个结论其规则强度均不一样,则可化为多条 规则分别计算。

 

4)计算实例

基于上述算法,本文采用如下思想:认为黑板中的初始断言的可信度均为1。其根据是,既然故障现象已经发生,那么描述该现象的初始断言的正确性不言而喻,并将其作为故障树的叶结点,而推理的中间结果断言则为中间结点,最后的推理结论为根结点(故障源),每一个故障源对应一棵故障树。我们给出如下规则(忽略行动方案)

 

52      Rule1:  if  p1 then  Root  规则强度  0.9

           Rule2:  if  p2 then  Root  规则强度  0.7

            Rule3:  if  e6 then  Root  规则强度  -0.8(表示前提e6不自持结论的程度)      Rule4:  if  e1 and e2  then  p1  规则强度  0.7

            Rule5:  if  e3 and (e4 or e5) then  p2  规则强度    0.98

        其中,断言e1, e2, e3, e4, e5, e6为初始故障现象,断言强度均为1

 

对应上述规则,有如下故障树:   

 

57    52的故障树

 

 

根据前面给出的公式,其中间结点和根结点的计算方法如下

 

    1.

 

    2.

 

    3.  

 

    4.

 

依上述方法,推理结果的强度计算如下

 

所以,推理结果的断言强度为0.686

 

 

第五节   推理机的合成

在决定了本文采用的推理方式和控制策略之后,本节将着手二者的合成——推理机的设计。在拿出推理机的结构之前,有几个细节上的问题需要讨论:

1.   正向推理时,如何查找所需要的规则;

2.   反向推理时,如何查找相关征兆;

3.   如何从黑板中抽取推理结果;

 

一、规则的查找   

       在正向推理的每一步中,都需要同目前节点相匹配的规则,那么采取何种方法到规则库中搜寻该规则,对推理机的效率至关重要。最简单的办法是采用顺序查找法,对规则库中的所有规则前件逐一同目前节点相匹配,但是,这样做效率太低。设规则库中有N条规则,若所需要的规则在规则库首部,则一次匹配即可找到;若所需要的规则在规则库尾部,则需要匹配N次才可以找到,即前面N1次匹配是无效的;平均而言,每个节点需要匹配N/2次。当N很大时,这个数目相当可观,推理机的大部分时间都耗费在规则的查寻上,因此必须对这种查寻方式予以改造。在知识库一章中,本文曾作出这样的规定,由于规则前、后件是用相应断言在断言库中的序号来表示的,所以规则库中规则的排列是以规则前件的序号由小到大排列的(若有多个前件,则以第一个前件的序号为准)。基于这一特点,本文在正向推理时采用二分查找法查寻规则。这种方法可描述如下:

       设目前结点为a,规则库中规则的排列顺序为:。首先将a相比较,若相等则该规则可用,否则如果a>,则以,…,为匹配区间,如果a<,则以,…,为匹配区间。重复上述操作,直到找到或找不到可用规则为止。采用这种方法查寻时,平均每个结点只需查寻次。

       N较小时,二分查找法和顺序查找法差别不大,但是当N很大时,<<N/2,二分查找法比顺序查找法要优越得多。

 

二、征兆的查找

在每一步的反向推理过程中,同样需要查找以当前节点为故障原因的征兆。目前一般采用的方法是,以当前节点到规则库中同规则的后件相匹配,将匹配成功的规则的前件作为征兆。但是,这样做有下列不足之处:

1.   由于规则库中是以规则前件排序的,因此对规则后件的匹配无法使用二分查找法,只能顺序查找,效率太低。

2.   这样找到的征兆是有限的,尽管可以将所有后件相匹配的规则的前件组合作为征兆,但是,通过这种方法不能保证得到所有的征兆。

因此,在设计知识库结构时,本文特地设计了征兆库。反向推理时只需以当前节点到征兆库中匹配征兆的故障原因项,若匹配成功,将征兆项取出即可。

由于征兆库中征兆的排序同规则中规则的排序一样,故也可使用二分查找法搜索征兆库。

 

三、推理结果的抽取

推理完成之后,黑板中存放的内容有初始条件、中间结果和最终的推理结果。从形式上看,它们没有区别,因此,必须把最终结果从黑板中分离出来。本文采用的办法是,将初始条件做上标记,此后在推理过程之中,凡是成功匹配过的节点,均做上标记。因为一旦某节点被成功匹配过,则说明该节点肯定是中间结果。最后没有做上标记的节点即为推理结果。

 

四、推理机结构

至此,可以给出本文采用的推理机流程图如图58所示。

 

五、一个推理实例

结合本文提出的推理机结构,这里给出一个推理机的实例。例子中,各断言均用字母表示,规则的行动方案用相应后件断言名称前附加’act_’表示,可信度显式给出,断言X的不相容断言用ùX表示。设有下列七条规则:

 

1.   A;(B, 0.5, act_B,C, 0.1 act_C,D, 0.4, act_D))

2.   D;(H, 0.5, act_H,I, 0.5, act_I))

3.   E;(J, 0.6, act_J,K, 0.3, act_K))

4.   I N, 0.9, act_N))

5.   B;(E, 0.1, act_E,F, 0.9, act_F))

6.   G;(L, 0.4, act_L,M, 0.6, act_M))

7.   C;(G, 0.99, act_G))

 

上述七条规则中,分号前为故障现象,分号后为可能的原因及可信度和行动方案。该七条规则按照逻辑关系构成如图59所示的树形结构:

 

 

59 七条规则的逻辑树

 

每个可能结果的征兆为:

      1.    BA

      2.    EAùO

      3.    FAP

      4.    JAùOP

       5.    KAùOQ

       6.    CAùP

      7.    DAQ

      8.    HAQùP

      9.    IAQS

       10.  AQSP

      11.  GAùPùQ

      12.  LAùPùQS

13.     MAùPùQS

 

为后面的叙述方便起见,结论X的征兆集合用SYM(X)表示,推理过程中,全局黑板用GLOBAL表示,局部黑板用LOCAL表示。设目前初始状态为

                            GLOBAL [AOPQS]

                            LOCAL  [    ]

 

 

58 推理机流程图

全局黑板中各断言的强度均为1(因为该现象客观存在)。先考虑现象A,则推理过程如下:

 

       第一步:正向推理,以A为前提,用二分查找法到规则库中取出规则1,匹配得结论BCD,计算各结论断言的强度,并将其加入局部黑板。此时,黑板中的内容为:  

                            GLOBAL[AOPQS]

                            LOCAL [BCD]

推理进度如图510所示。

 

510

 

       第二步:反向推理,按照广度优先搜索法分别反向验证BCD,有

SYM(B)=[A]SYM(C)=[A,ùP]SYM(D)=[A,Q]SYM(C)同目前GLOBAL状态不相容,所以C被排除,BD为新节点,故加入全局黑板并释放局部黑板。此时黑板状态为:

                            GLOBAL[AOPQSBD]

                            LOCAL [   ]

推理进度如图511所示。

511

       第三步:正向推理,按照深度优先搜索法找到节点B,用二分查找法在规则库中取出规则5,正向匹配得结论EF,计算各结论断言的规则强度,并将其加入局部黑板,此时黑板中的内容为:

                                   GLOBAL[AOPQSBD]

                                   LOCAL [EF]

推理进度如图512所示。

 

512

 

    第四步:反向推理,按照广度优先搜索法分别反向验证EF,有SYM(E)=[AùO]SYM(F)=[A,P]SYM(E)同目前GLOBAL状态不相容,所以E被排除,F为新节点,故加入全局黑板并释放局部黑板。此时黑板状态为:

                            GLOBAL[AOPQSBDF]

                            LOCAL [   ]

推理进度如图513所示。

 

513

 

       第五步:正向推理,由于F节点无法继续匹配,按照深度优先搜索法沿着路径FBAD回溯到D,用二分查找法在规则库中取出规则2,正向匹配得结论HI,计算各结论断言的规则强度,并将其加入局部黑板,此时黑板中的内容为:

                            GLOBAL[AOPQSBDF]

                            LOCAL [HI]

推理进度如图514所示。

 

514

 

       第六步:反向推理,按照广度优先搜索法分别反向验证HI,有SYM(H)=[AQùP]SYM(I)=[AQS]SYM(H)同目前GLOBAL状态不相容,所以H被排除,I为新节点,故加入全局黑板并释放局部黑板。此时黑板状态为:

                            GLOBAL[AOPQSBDFI]

                            LOCAL [   ]

推理进度如图515所示。

 

515

 

       第七步:正向推理,按照深度优先搜索法找到节点I,用二分查找法在规则库中取出规则4,正向匹配得结论N,计算各结论断言的规则强度,并将其加入局部黑板,此时黑板中的内容为:

                            GLOBAL[AOPQSBDFI]

                            LOCAL [N]

推理进度如图516所示。

 

516

 

       第八步:反向推理,反向验证N,有SYM(N)=[AQSP],没有发现不相容的现象,N为新节点,故加入全局黑板并释放局部黑板。此时黑板状态为:

                            GLOBAL[AOPQSBDFIN]

                            LOCAL [   ]

推理进度如图517所示。

 

517

 

       第九步:第一次深度优先搜索完成,在目前黑板状态下,以黑板中其它节点为条件,重复上述各步骤,直至某一次深度优先搜索完成之后,全局黑板内容不再改变为止。

       可以验证,推理完成之后,全局黑板中的内容为:   GLOBAL[AOPQSBDFIN]。除去初始节点以外,没有经过匹配的节点只有FN,所以最终推理结果为FN

       上述推理结果可以解释为:当故障现象AOPQS发生时,其故障原因为FN,可信度分别为0.450.18,排故方案分别为act_Fact_N

 

 

 

 

本章小结

在第三章和第四章分别决定了燃气轮机的知识表达方式和知识库结构之后,本章则讨论了推理机制的问题。首先介绍了目前常用的几种推理方式和搜索策略,然后针对燃气轮机知识表达方式和知识库特点提出了全局正向、单步反向的推理方式和深度优先与广度优先相结合的搜索策略,以深度优先实现全局正向推理,以广度优先实现单步反向验证,充分保证了推理结果的可靠性。此外,本章还给出了一个可信度算法和一个推理实例。

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=558017


你可能感兴趣的:(算法)