一种基于改进序列二元决策图的动态故障树分析方法与流程

文档序号:12594542阅读:330来源:国知局
一种基于改进序列二元决策图的动态故障树分析方法与流程
本发明公开了一种改进基于序列二元决策图的动态故障树分析方法,涉及一种基于Pandora的动态故障树的分析方法,属于数据处理的
技术领域

背景技术
:在2005年,Pandora首次被MartinWalker在《ProjectPandora:TemporalFaultTreeAnalysis》中提出。Pandora通过引入新的时间门,使其可以更加完整的描述底事件的顺序关系。同时,Pandora添加了新的规则和算法,通过这些规则和算法可以使Pandora动态故障树可以得到解析。目前分析基于Pandora的动态故障树的方法主要有代数关系式法和SBDD(SequentialBinaryDecisionDiagram)方法。代数关系式法采用Pandora中的理论知识对动态故障树进行分析,但是该方法是对动态故障树进行分解运算,容易造成空间爆炸和时间爆炸。在分析基于Pandora的动态故障树过程中,SBDD方法没有考虑动态故障树各底事件的联系,造成生成的SBDD中存在无效分支。SBDD是受二叉决策树(BDD,BinaryDecisionDiagram)影响的动态故障树分析方法。SBDD的核心思想是:将动态故障树中的每个动态门看作一个连续的布尔变量并使用一个对应的序列代替它;然后,通过生成算法将取代后的动态故障树转化成相应的SBDD。但是,在取代后的动态故障树中,由于重复变量的出现,各底事件也不是完全相互独立的,这就可能造成在一个给定的不太完整的变量排序的情况下,建立的SBDD图存在无效的节点。假设存在这样两个变量xi和xj,当xi=0时,xj=0,SBDD是故障树中所有节点的全排序,则一定存在这样一个序列:由已知条件可知,和xj无法共存,因此由该序列求出的割集是无效的。故障树的定性分析是根据SBDD求出其不交化割集,故障树的定量分析是根据不交化割集计算出顶事件发生的概率。如果不去除不交化割集中的无效割集,则定性分析和定量分析的结果都是有错误的。技术实现要素:本发明的发明目的是针对上述
背景技术
的不足,提供了一种基于改进序列二元决策图的动态故障树分析方法,减少了SBDD节点数目并消除了无效分支,使得故障树的定性分析和定量分析更加准确,解决了现有SBDD方法分析基于Pandora的动态故障树得到的SBDD存在无效分支的技术问题。本发明为实现上述发明目的采用如下技术方案:一种基于改进序列二元决策图的动态故障树分析方法,包括如下步骤:A、将动态故障树中的动态门转换成固定叶节点以生成待分析故障树;B、采用考虑了动态底事件和静态底事件关系的结构式排序方法对待分析故障树中的底事件进行排序;C、按照自顶向下的顺序及对底事件的排序对各层底事件进行扩展SBDD运算以生成二元决策图;D、根据二元决策图计算动态故障树的不交化割集。进一步的,所述一种基于改进序列二元决策图的动态故障树分析方法中,步骤B的具体方法为:B1、排列动态故障树的各层底事件生成每一层的层排序队列:在同一层底事件中既有静态底事件又有动态底事件时,优先排列静态底事件,排列静态底事件时优先排列出现次数多的静态底事件,排列出现次数相同的静态底事件时优先排列与已排序静态底事件在同一静态门的静态底事件,排列动态底事件时按照同时与门优先于优先或门以及优先或门优先于优先与门的顺序排列;B2、按照优先排列靠近待分析故障树顶事件的层排序队列的规则将各层排序队列插入全局排序队列中。再进一步的,所述一种基于改进序列二元决策图的动态故障树分析方法中,步骤C的具体方法为:读取待分析故障树和全局排序队列并初始化全局SBDD树;自顶层开始取每一层的各底事件作为操作节点进行扩展SBDD运算:根据每个操作节点是否为门的情形抽取局部SBDD树,比较全局SBDD树首个底事件和局部底事件首个底事件在操作节点所属层的层排序队列中的位置,对首个底事件位置靠后的SBDD树进行简化,对简化后的SBDD树和未简化SBDD树进行扩展SBDD运算。更进一步的,所述一种基于改进序列二元决策图的动态故障树分析方法中,比较全局SBDD树首个底事件和局部底事件首个底事件在层排序队列中的位置,对首个底事件位置靠后的SBDD树进行简化,具体方法为:在全局SBDD树首个底事件在局部SBDD树首个底事件之前时,按照如下三条化简规则删除局部SBDD树的无效动态底事件:化简规则一:组成动态底事件的静态底事件不发生时,删除该动态底事件,化简规则二:动态底事件发生时,删除由组成已发生动态底事件的静态底事件和不同动态门组成的动态底事件,化简规则三:动态底事件不发生时,删除由组成不发生动态底事件的静态底事件和不同动态门组成的动态底事件;在全局SBDD树首个底事件在局部SBDD树首个底事件之后时,按照所述三条化简规则删除全局SBDD树的无效动态底事件。作为所述一种基于改进序列二元决策图的动态故障树分析方法的进一步优化方案,步骤A将动态故障树中的动态门转换成固定叶节点,具体为:将优先与门转换为以A<B为标记的动态底事件,将优先或门转换为以A|B为标记的动态底事件,将同时与门转换为以A&B为标记的动态底事件。本发明采用上述技术方案,具有以下有益效果:本发明考虑了底事件的联系对故障树的底事件进行全局排序,在扩展SBDD算法中由底事件的全局排序以及动态底事件和静态底事件之间的关联动态删除SBDD树的无效节点以消除无效分支,能够有效地将基于Pandora的动态故障树转化为SBDD,生成的SBDD数目更加少且不存在无效割集,使故障树的定性分析和定量分析更加准确。附图说明图1为PAND转换图。图2为POR转换图。图3为SAND转换图。图4为转换故障树的流程图。图5为底事件排序的流程图。图6为本发明涉及的改进SBDD流程图。图7为计算不交化割集的流程图。图8为实施例中的故障树。图9为实施例中替换过动态门后的故障树。图10为实施例中由顶事件ite表达式扩展得到的SBDD树。图11为实施例扩展得到的SBDD树。图12为SBDD方法和本申请生成的SBDD树节点数目的比较结果。图13为SBDD方法和本申请生成的SBDD树不交化割集数目的比较结果。具体实施方式下面结合附图对发明的技术方案进行详细说明。本申请提出的扩展SBDD方法能够有效地将基于Pandora的动态故障树转化为SBDD,该本方法主要包括两个方面:改进的底事件排序规则和动态优化SBDD生成算法。改进的底事件排序规则的基本思想是利用故障树的结构关系和底事件间的关系来给底事件赋予不同的排序优先级。动态优化SBDD生成算法在底事件排序队列的基础上,采用扩展的香农公式生成SBDD,在采用扩展香农公式生成SBDD的迭代过程中,每一次迭代之前都采用简化规则删除无效节点。步骤一:替换动态故障树中的动态门将以PAND门、SAND门和POR门为根节点的子树转换成一个固定的叶节点,如图1所示将PAND门转换为(A<B),如图2所示将POR门转换为(A|B),如图3所示将SAND门转换为(A&B),具体流程如图4所示:层序遍历故障树对每个节点进行判断,若为PAND门、SAND门或POR门的节点,则访问该节点的所有子节点,对子节点的分支进行相应的转换得到转换后的叶节点,将该叶节点插入原门节点的位置,遍历完故障树则完成所有门节点的转换并得到转换后的故障树。步骤二:使用改进的结构式排序方法对动态故障树中的底事件排序运用改进的结构式排序方法对基于Pandora动态故障树的底事件进行排序,具体流程如图5所示:第一次遍历转换后的故障树:统计故障树中各底事件出现的次数,其中,在统计静态底事件时,要将用以组合形成动态底事件的静态底事件统计到静态底事件总数中去;第二次采用层序方式遍历转换后的动态故障树:每一层的底事件按照改进的结构式排序方法中的排序规则1和3和4进行排序得到第i层的排序队列Ai(1<i<n),按照改进的结构式排序方法中的排序规则2依次将每层的排序队列合并到总排序队列A中,Ai和A都是由静态底事件、SAND动态底事件、POR动态底事件和PAND动态底事件组成,在合并过程中分别将Ai的4种不同类型底事件插入A中相同类型底事件的后方,层序遍历完动态故障树得到的总排序队列A就是动态故障树的底事件排序队列。排序规则1:静态布尔变量排在动态布尔变量之前。排序规则2:对于静态布尔变量来说,静态布尔变量越靠近故障树顶事件越需要排在靠前的位置。排序规则3:对于处于同层的静态布尔变量优先排出现次数多的静态布尔变量;对于出现次数相同的静态布尔变量优先排与已排序静态变量在同一个静态门的静态变量;出现次数相同的静态布尔变量中没有与已排序静态布尔变量在同一个静态门的静态布尔变量时,按照从左到右的顺序排序出现次数相同的静态布尔变量。排序规则4:动态布尔变量按照优先排列SAND门(A&B)、其次排列POR门(A|B)最后排列PAND门(A->B)的顺序进行排列。排序算法伪码:代码主要由两部分组成:第一次遍历过程和第二次遍历过程。第一次遍历过程是通过队列存储节点的形式层序遍历该故障树,并将各门的数量记录到record_Num[]中;第二次遍历过程也是通过队列辅助进行的层序遍历,为每一层的节点建立一个层排序队列,在该层访问结束后,该层排序队列按照排序规则2插入全局排序队列中。步骤三:使用改进后的SBDD生成算法构建SBDD改进的SBDD生成算法主要是根据改进后的计算公式不断的迭代动态故障树进行SBDD树的建立。使用改进的SBDD生成算法流程如图6所示,主要包括对动态故障树的循环遍历、迭代运算前对运算因子的化简和扩展SBDD运算这三部分。在算法开始时输入动态门被替换掉的动态故障树和一个层排序队列并初始化全局SBDD树G。在程序中自顶向下使用扩展SBDD算法对各层节点进行运算,根据当前操作节点是否为门的情形抽取局部SBDD树G2,对两个ite表示的式子G和G2进行计算时,首先判断G和G2中首个变量(首个底事件)的排序情况:若G的首变量在G2的首变量之前,采用如下三条简化规则消除G2的无效分支,采用扩展Shannon公式中x<y的情况进行计算;若G的首变量在G2的首变量之后,采用如下三条简化规则消除G的无效分支,采用扩展Shannon公式中x>y的情况进行计算;对于G的首变量与G2的首变量排序相同的情形直接采用扩展Shannon公式中x=y的情况进行计算。由于扩展SBDD算法的香农公式主要是同层的子式进行计算,通过对将当前节点重新赋值为其兄弟节点的方式实现对故障树下一层子式的计算,当顶事件的兄弟节点都被遍历计算完毕时,该动态故障树的SBDD树建立完成。其中,抽取局部而SBDD树的方法为:当前操作节点为门时,对以当前操作节点为顶点的动态故障树进行SBDD扩展运算得到局部SBDD树;当前操作节点不为门时,以当前操作节点为局部SBDD树。递归地使用这一该函数关系,直到所有的变量转化成SBDD节点以形成完整的SBDD,x1是故障树的顶节点,f(1,x2,…,xn)和f(0,x2,…,xn)是x1的孩子函数,在使用该公式展开时主要使用扩展的SBDD生成算法进行计算,扩展的SBDD生成算法即如下的扩展Shannon公式:A和B是ite形式的布尔函数,<op>对应于故障树中包括与门和或门的门类型布尔操作,X|y=k(X为布尔函数,y为布尔变量,k=0或1)采用下列的规则进行无效节点的判断和删除。已知:X=ite(xi<op>xj,M,N),xi和xj静态底事件,xi<op>xj是动态底事件,化简规则一:ite(xi<op>xj,M,N)|xi=0=N|xi=0,<op>∈{&,<,|},化简规则二:ite(xi<op>xj,M,N)|xi&xj=1=N|xi&xj=1,<op>∈{<,|},化简规则三:ite(xi<op>xj,M,N)|(xi|xj=0)=N|(xi|xj=0),<op>∈{<}。化简规则一主要是根据静态底事件和动态底事件的关系提出的,动态底事件是由多个静态底事件和动态门组合成的,当某个静态底事件不发生时,含有该不发生静态底事件的动态底事件也不发生,此时,该动态底事件为无效节点,需要删除。化简规则二主要是根据动态底事件和动态底事件的关系提出的,当某些动态底事件发生时,由相同静态底事件和不同动态门重新组成的动态底事件不会发生,此时,这些重新组成的动态底事件为无效节点,需要删除。化简规则三主要是根据动态底事件和动态底事件的关系提出的,当某些动态底事件不发生时,由相同静态底事件和不同动态门重新组成的动态底事件不会发生,此时,这些重新组成的动态底事件为无效节点,需要删除。将删除完无效节点的全局SBDD与局部SBDD进行运算,或,将删除完无效节点的局部SBDD与全局SBDD进行运算,再经过各层次节点的迭代运算即可生成SBDD树。算法伪代码如下:调用函数Do_PointBDD():两个SBDD树的门操作。步骤四:计算动态故障树的不交化割集在生成的SBDD中,不交化割集是所有从顶节点到1的叶节点的路径。SBDD中,每个节点的右分支代表0分支,表示该节点不发生;左分支代表1分支,表示该节点发生。不交化割集中的每个割集都可以用这样一个序列表示:其中,每个元素表示从顶节点到1的叶节点路径上经过每个节点的顺序结合。在计算动态故障树不交化割集时,采用先序遍历的方法变量SBDD。每经历一个节点,将该节点加入已经过节点的队列中,再处理该节点的左右分支。如果该节点的左分支,则将队列中的节点标记为1节点。若为右分支,则为0节点。直到遇到1或0节点。该计算函数Cal_Way(已经过路径,SBDD首节点)的算法流程如图7所示。为了更好的理解和说明这一方法,现举一棵Pandora动态故障树来说明。采用本发明涉及的SBDD方法分析图8所示的故障树,这个方法共分为四步:替换Pandora动态故障树中的动态门,计算基于SBDD的变量排序,使用改进的生成算法构建SBDD图和计算Pandora动态故障树的割集。第一步:替换Pandora动态故障树中的动态门对于动态故障树中的PAND门G4可以替换为序列集A<B。对于POR门G5可以替换为序列集A|N。对于SAND门G6可以替换为序列集C&K。替换后的动态故障树如图9所示。第二步:选择一个基于SBDD的变量排序1、遍历替换后的动态故障树,计算各底事件出现的次数。静态底事件次数和动态底事件次数分别如表1和表2所示。底事件ABCD次数3221表1静态底事件次数表底事件A<BA|NC&K次数111表2动态底事件次数表2、层序遍历替换后的动态故障树,对每层的底事件进行排序。优先排静态变量,根据静态底事件的位置和次数进行排序,然后按照动态底事件的顺序进行排序。①第一层只有一个静态变量A,先排静态变量A。②第二层共有6个底事件:B、C、D、A<B、A|N和C&K。其中静态底事件为B、C、D。有表可知,B和C都是出现了两次,同层同次数从左到右进行排序。将B和C加入底事件序列为:A<B<C。D只出现了一次,加入底事件序列后为:A<B<C<D。剩余的为动态底事件,按照动态底事件排序规则进行排序,加入底事件序列为:A<B<C<D<(C&K)<(A|N)<(A<B)。替换后的动态故障树底事件排序序列为:A<B<C<D<(C&K)<(A|N)<(A<B)。第三步:使用改进的生成算法构建SBDD由于顶事件S=A∧G1∧G2∧G3,需要计算G1、G2和G3的扩展后的香农公式表达式。G1=ite(B,1,ite(C,1,0))G2=ite(D,1,ite(A<B,1,0))G3=ite(C&K,1,ite(A|M,1,0))计算完G1、G2和G3后,计算顶事件S=A∧G1∧G2∧G3:S=A∧G1∧G2∧G3=ite(A,ite(B,ite(D,ite(C&K,1,ite(A|M,1,0)),ite(C&K,ite(A<B,1,0),ite(A|M,ite(A<B,1,0),0)),ite(C,ite(D,ite(C&K,1,ite(A|M,1,0)),0)),0))。由顶事件S的ite表达式可以得到扩展后的SBDD图如图10所示。第四步:计算Pandora动态故障树的割集扩展后的SBDD树的割集与原BDD图的割集一样,都是其从顶点到1的路径。则图10的割集为:使用SBDD方法生成的SBDD如图11所示。由该图得到的不交化割集为:该不交化割集共包含8个割集,其中,最后两个割集为无效割集。改进的SBDD方法和原方法的结果对比显示:改进的SBDD方法得到的不交化割集数目更少且不包含无效割集,保证故障树的定性分析和定量分析更加准确。将SBDD方法和扩展SBDD方法使用C语言编程实现。通过随机树生成算法生成随机的基于Pandora的故障树。分别用SBDD方法和SBDD方法对生成的随机树进行计算得到生成SBDD的总节点数和不交化割集数目,总节点数目对比如图12所示。不交化割集数目对比如图13所示。在总结点数目和不交化割集数目上,扩展SBDD方法明显小于SBDD方法,并且扩展SBDD中不存在无效割集。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1