一种基于跳跃回溯的故障树最小割集求解方法与流程

文档序号:15144902发布日期:2018-08-10 20:19阅读:294来源:国知局

本发明属于故障树分析技术领域,具体地涉及一种基于跳跃回溯的故障树最小割集求解方法。



背景技术:

可满足性问题(booleansatisfiabilityproblem,sat)是判断布尔公式的满足性问题。这一问题是计算机理论与应用的核心问题。sat是np-complete(npc)问题,是众多问题求解效率的性能瓶颈,包括约束满足(constraintsatisfaction)、扩展推理(extendinference)、定理证明(theoremproving)等领域。

接下来介绍sat的相关概念。对于包含m个布尔变量的集合文字(literal)是一个布尔变量或者是vi的非(negation)分别称为vi的正文字(positiveliteral)和负文字(negativeliteral),vi和互补(opposite);积(product)是文字的合取,积可以表示为文字的集合;定义在上的赋值(assignment)是一个映射赋值可以由一个积π表示;子句(clause)是文字的析取;对于积π,由得到的子句称为block子句(blockclause);合取范式(conjunctivenormalform,cnf)是子句的合取,可以写成集合的形式;析取范式(disjunctivenormalform,dnf)是积的析取。

davis-putnam-loveland-logeman(dpll)是一类主流的求解sat的确定性算法框架,结构如图1所示。整个框架分为四个模块:decide、bcp、analyzeconflict和backtrack。算法的输入是cnf范式表示的布尔公式f。输出是f的可满足性情况。若f存在可满足解,那么输出一个可满足解,否则输出不可满足。dpll是一个分支搜索算法,其搜索过程可以看成对二叉树的深度优先遍历。其算法的总体思想是通过不断迭代为变量赋值;利用布尔约束不断减少搜索空间,尽可能趋向性地搜索满足输入的赋值;直到找到一个可以使得输入满足的赋值或者判定输入是不可满足为止。

初始状态下所有的变量均未赋值,称为自由变量(freevariable)。在每次迭代过程中,decide采用启发式的赋值策略选择f中的自由变量x,并赋值。通过启发式的赋值策略,dpll可以尽可能趋向性地搜索可满足解。这一过程中,如果不存在自由变量,表示dpll得到一个可满足的赋值,结束算法;否则,开始一个全新的搜索分支。搜索的深度由决策等级(decisionlevel)dlevel表示。dlevel从0开始,每次decide前均加1,表示即将进入相比于上一个决策等级更深一层的搜索分支。之后,算法得到一个部分赋值π,进入布尔约束传播(booleanconstraintpropagation,bcp)过程。bcp基于单位子句规则(unitclauserule)通过f所提供的布尔约束关系和π推导出新的自由变量的赋值。单位子句ci指的是这样的子句:π使得ci中只有一个自由变量且ci未被满足。单位子句规则是一种推导方法,它将从单位子句中推导出新的变量赋值。例如对于子句若当前部分赋值为此时ci是单位子句。根据单位子句规则,bcp更新decide和bcp中被赋值的变量x均对应当前的决策等级dlevel,记为x@dlevel(x被赋值为true)或(x被赋值为false)。

bcp如果不产生冲突,dpll将继续decide进入下一个决策等级。在bcp中可能产生冲突,即当前部分赋值通过单位子句规则的推导会得到相互矛盾的变量赋值。例如,对于前面所述的例子,如果子句集合中同时存在子句那么π将使cj不可满足。产生冲突意味着当前部分赋值即使通过扩展也不能使得f满足,即引发全局性不可满足的情况。此时,dpll将会进行回溯。analyzeconflict将尝试寻找π的子集π′作为引发冲突的原因和寻找可以使得冲突消除的决策等级blevel。analyzeconflict通过分析原因学习到的新约束,称为冲突子句(conflictclause)。冲突子句可以避免再次引发全局性不可满足的赋值的产生,达到减少搜索空间的效果。backtrack回溯到决策等级blevel,继续进行bcp过程。如果blevel=-1,表示当前赋值无论如何改变均不可避免全局性冲突的产生,那么dpll将判定f不可满足而结束。

故障树分析(faulttreeanalysis,fta)是系统可靠性、安全性分析的重要方法。它在分析系统故障模式、寻找薄弱环节、指导故障维修等工作中具有重要的参考价值。它采用逻辑的方法,从故障树的顶事件开始,自上而下寻找导致顶事件发生的直接原因和间接原因,并对其进行一系列分析计算。其特点是直观、明了、逻辑性强,体现了以系统工程方法研究安全问题的系统性、准确性和预测性。

故障树(faulttree,ft)是描述系统故障模式的缘由关系图。它结合顶事件、中间事件(门事件)和基本事件,用对应的逻辑符号将它们连接,如图2。逻辑符号的输入是某一故障事件的导致因素,它可以是中间事件也可以是基本事件。而逻辑符号的输出则是导致的结果,可以是最终的顶事件故障,也可以是另一个中间事件逻辑门的输入。故障树能很好地展现其故障模式,形象客观地描述故障事件之间的逻辑关系。

故障树是布尔表达式的一种表现形式。可以将每一个基本事件看成一个布尔变量,每一个逻辑门对应一个逻辑符号。按照故障树所表现出来的逻辑关系,将布尔变量用逻辑符号连接,从而构成一个布尔表达式。其中,布尔变量为真表示其对应的基本事件发生故障,否则未发生故障。整个布尔表达式最后的真值情况则表示了故障树对应的顶事件故障是否发生。

在fta中,定性分析的主要目的在于寻找导致顶事件发生的原因或多个原因的组合,识别导致顶事件发生的所有模式。它可以判明潜在的故障,以便改进设计,也可以用于指导故障诊断,改进运行和维修方案。割集是由引发顶事件发生的组件失效事件组成,可以用于描述组件失效对于顶事件的影响。然而有些底事件失效并不足以导致顶事件失效,fta的定性分析往往更关心那些导致顶事件失效的根本原因。最小割集(minimalcutset,mcs)是引起顶事件发生的最低限度的基本事件的组合。它准确、直观地表现了系统的失效模式,是导致顶事件故障的根本原因。fta中定性分析的主要目的是求得故障树的mcs。

求解故障树的mcs是一个复杂计算的过程。首先,求解mcs的本质是求解基本事件的条件组合问题。其求解规模随着基本事件的数量增加成指数级别增长。其次,工业上的故障树涉及的基本事件和门事件个数庞大,存储表示需要耗费巨大的存储空间。因此,如何有效地压缩故障树存储空间和提高故障树mcs的求解速度是亟待解决的问题。



技术实现要素:

本发明的目的在于针对现有技术的缺陷或问题,提供一种基于跳跃回溯的故障树最小割集求解方法。

本发明的技术方案如下:一种基于跳跃回溯的故障树最小割集求解方法包括如下步骤:一、根据最新求解得到的最小割集,计算决策等级;二、satmcs回溯到步骤一得到决策等级,进行布尔约束传播过程;三、satmcs进入下一个决策等级,继续搜索割集。

优选地,步骤二中,通过新学习得到block子句,保证在进入下一个决策等级时,当前部分赋值在子句集合下不产生冲突。

优选地,步骤一中,决策等级的计算包括如下步骤:最新求解得到的最小割集中文字按如下序排列x1,x2,…,xk:任意i,j∈[1,…,k],若i<j,都有deleve(xi)≤deleve(xj),其中deleve(x)表示x在dpll中对应的决策等级;设定决策等级为pl,那么使得pl<deleve((xk)且使得pl<deleve(xj)。

优选地,对于x1,x2,…,xk,如果那么pl=0。

本发明提供的技术方案具有如下有益效果:

所述基于跳跃回溯的故障树最小割集求解方法在satmcs的基础上采用跳跃回溯(jump-chronologicalbacktrack)的方式迭代求解故障树的最小割集,即在satmcs的基础上提出一种跳跃回溯的方式连接相邻的两次迭代方法,由于跳跃回溯选择一个恰到好处的求解状态进行回溯,其优势在于选择回溯的求解状态可以较好的保留相邻两次甚至一定范围(迭代次数)内mcs的共同信息以提高mcs的求解速度,因此所述基于跳跃回溯的故障树最小割集求解方法可以有效利用故障树的最小割集求解空间分布聚合的特性,有效提升satmcs求解故障树最小割集的效率。

附图说明

图1为dpll的框架示意图;

图2为motor2的故障树示意图图;

图3为satmcs的框架示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。

本发明在satmcs[luow,weio.wap:sat-basedcomputationofminimalcutsets[c].in:ieeeinternationalsymposiumonsoftwarereliabilityengineering.2017.146-151]的基础上采用跳跃回溯(jump-chronologicalbacktrack)的方式迭代求解故障树的最小割集;即,在satmcs的基础上,本发明提出一种跳跃回溯的方式连接相邻的两次迭代的方法。跳跃回溯选择一个恰到好处的求解状态进行回溯。其优势在于选择回溯的求解状态可以较好的保留相邻两次甚至一定范围(迭代次数)内mcs的共同信息以提高mcs的求解速度。

具体地,satmcs是一种全新的基于sat的故障树最小割集求解算法。satmcs分为9个模块,如图3所示。算法的输入是故障树f,通过tseitin编码将f编码为子句集合输出是f所有的mcs。总体上看,satmcs是一个迭代式的分支搜索算法。对于给定的故障树f,satmcs的搜索空间是中所有变量赋值的组合,satmcs的目标是在搜索空间中找到所有mcs。基于dpll,satmcs迭代地搜索f的割集,然后不断进行mcs的提取。在每次迭代中,satmcs利用block子句对已经求解得到的割集进行屏蔽,不断对搜索空间进行剪枝,以达到使得算法终结和加快求解mcs的目的。

为了达到这样的目的,satmcs维护一个子句集合其中是对f的tseitin编码;根据已经求得的割集对搜索空间进行剪枝,避免重复求解相同的割集;用于记录所有的mcs;保留每次dpll过程中学习到的冲突子句,避免算法重复搜索不满足的搜索空间。初始状态下,satmcs搜索空间的大小为2n(n是中变量个数)。通过不断迭代,satmcs不仅可以一方面利用不断将已经求得的满足的空间屏蔽,促使其不断搜索未被屏蔽的mcs;还可以从另一方面利用不断剪枝不满足的搜索空间,促使其趋向性地搜索满足的搜索空间。通过这两方面的驱动力,加速dpll对割集的搜索。最终剪枝搜索空间中所有满足的搜索空间,此时不可满足,算法终结。

satmcs每次迭代主要包含了三个部分,分别是求解割集、提取mcs和剪枝与回溯。求解割集部分利用dpll搜索得到一个未被覆盖的割集π。提取mcs本质上是一个判定π中文字必要性的问题。satmcs采用一种基于局部传播图(localpropagationgraph,lpg)的mcs提取算法实现了这一过程。剪枝与回溯部分主要用于对搜索空间进行增量式地剪枝然后对算法进行回溯以便开始新一轮mcs的求解。在learnclause中,算法采用动态的增量式的空间剪枝策略将新得到的mcs的信息通过block子句而被satmcs学习。它可以避免相同的mcs被重复搜索。于此同时,satmcs记录已经学习得到的冲突子句,使得每次迭代在bcp模块中学习到的冲突子句可以在迭代求解中共享,避免重复学习。每次迭代结束,satmcs回溯到决策等级0(下称直接回溯(non-chronologicalbacktrack)),开始新一轮mcs的求解。

实际上,现实故障树所包含的mcs个数可达百万甚至千万的规模。由于故障树是人类社会活动的产物,所以大量的mcs在求解空间中的分布可能具有一定的规律。这些规律性有可能来自由同种原料构成的相同的组件,具有相同的材料属性或者缺陷,可能在不同的子系统中由于共同的原因同时发生故障。跳跃回溯的关键是捕获到mcs分布规律,为回溯求解状态的选择提供依据。从实验中可以发现大量mcs存在相同文字,这是mcs的分布规律的体现。

例如,对于故障树f的两个mcsmcsi和mcsj而言,积p是mcsi和mcsj的近似域,其满足以下两条性质:(a)mcsi→p;(b)mcsj→p。p是mcsi和mcsj的近似域,当且仅当不存在p的超集p′是mcsi和mcsj的近似域,我们称p是最大的近似域。此时,|p|就是mcsi和mcsj的临近度。

两两mcs之间的相互临近度体现了他们在搜索空间上的分布,其相互之间的临近度越大,说明两个mcs分布越集中,反之越分散。两个mcs之间相同文字的个数直接体现了两个mcs在求解mcs的时候含有部分相同求解操作,包括decide和bcp。跳跃回溯所选择的恰到好处的回溯的求解状态正是基于以上这点,达到尽可能复用前一次求解的信息的效果。

跳跃回溯选择回溯到前一次迭代得到的mcs中所包含的文字的第二高的决策等级(称为pivotlevel)对应的求解状态。

本发明实施例提供的基于跳跃回溯的故障树最小割集求解方法包括如下步骤:

一、根据最新求解得到的最小割集,计算决策等级;

二、satmcs回溯到步骤一得到决策等级,进行布尔约束传播过程;

三、satmcs进入下一个决策等级,继续搜索割集。

其中,在步骤一中,决策等级的计算包括如下步骤:

最新求解得到的最小割集中文字按如下序排列x1,x2,…,xk:任意i,j∈[1,…,k],若i<j,都有deleve(xi)≤deleve(xj),其中deleve(x)表示x在dpll中对应的决策等级;

设定决策等级为pl,那么使得pl<deleve(xk)且使得pl<deleve(xj)。

而且,对于x1,x2,…,xk,如果那么pl=0。

在步骤二中,步骤二的作用在于通过新学习得到block子句,保证在进入决策等级pivotlevel+1时当前部分赋值在子句集合下不产生冲突。

此外,回溯到虽然中新增了最新求得的mcs的block子句,但是由于pivotlevel的定义,此时必定不会与产生冲突,且在接下来的dpll过程必定会搜索与最新求得的mcs临近的搜索空间(包含一些相同的文字)。跳跃回溯使得satmcs可以充分利用相邻两次迭代求解mcs所共用的信息

而且,跳跃回溯在求解相邻mcs的时候可以减少dpll过程的开销。当然,如果mcs分布分散,跳跃回溯策略最终会趋向地回溯到决策等级0。此时,相比于直接回溯增加了回溯开销。

下面结合[vesleybwe,goldbergff,robertsnh,etal.faulttreehandbook[j].u.s.nuclearregulatorycommissionrep.2010]中的motor2为例,对本发明的具体实施方式作进一步说明。为叙述详尽,此案例步骤结合satmcs算法叙述。

motor2tseitin编码后对应的子句集合为:

步骤1.1:在决策等级0时为保证子句均可满足,通过bcp得到

步骤1.2:在决策等级1,通过decide得到e1,此时不发生bcp过程,所以bcp结束时有

步骤1.3:在决策等级2,通过decide得到g2,此时bcp过程得到g3,e2,所以bcp结束时有

步骤1.4:在决策等级3,通过decide得到e3,此时bcp过程得到g6,所以bcp结束时有

步骤1.5:在决策等级4,通过decide得到e8,此时不发生bcp过程,所以bcp结束时有

步骤1.6:此时找到割集,经过extractmcs得到其中一个mcs{e2,e3}。

步骤1.7:由于deleve(e2)<deleve(e3),所以pivotlevel是deleve(e2)=2,回溯到

步骤2.1:在决策等级2,进行bcp。由于新增加的block子句得到bcp结束时有

步骤2.2:在决策等级3,通过decide得到e7,此时bcp过程得到g6,所以bcp结束时有

步骤2.2:在决策等级4,通过decide得到e5,此时不发生bcp过程,所以bcp结束时有

步骤2.3:此时找到割集,经过extractmcs得到其中一个mcs{e2,e7}。

步骤2.4:由于deleve(e2)<deleve(e7),所以pivotlevel是deleve(e2)=2,回溯到

以此类推,直到求解得到所有mcs为止。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1