CN107609325A - 基于sat的故障树求解最小割集的方法 - Google Patents
基于sat的故障树求解最小割集的方法 Download PDFInfo
- Publication number
- CN107609325A CN107609325A CN201710978280.7A CN201710978280A CN107609325A CN 107609325 A CN107609325 A CN 107609325A CN 201710978280 A CN201710978280 A CN 201710978280A CN 107609325 A CN107609325 A CN 107609325A
- Authority
- CN
- China
- Prior art keywords
- clause
- assignment
- fault tree
- decision
- pmcs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于SAT的故障树求解最小割集的方法,首先,将故障树的基本事件抽象成布尔变量;其次,将故障树中基本事件和顶事件的逻辑关系利用布尔表达式表示,顶事件的发生与否取决于对应的布尔表达式的真值;然后,加入对MCS的判定和分析;最后,利用SAT求解算法高效求解MCS。本发明不但在存储空间上表现优异,而且提高了故障树MCS的求解速度。
Description
技术领域
本发明涉及一种故障树分析方法,是解决工业大型故障树最小割集求解问题。本文将故障树的约束条件建模为CNF范式,利用SAT求解器构造故障树最小割集求解器,能够有效提高现有故障树割集求解技术的效率。此方法属于故障树分析技术领域。
背景技术
故障树(fault tree,FT)是描述系统故障模式的缘由关系图。它结合顶事件、中间事件(门事件)和基本事件,用对应的逻辑符号将它们连接。如图1。逻辑符号的输入是某一故障事件的导致因素,它可以是中间事件也可以是基本事件。而逻辑符号的输出则是导致的结果,可以是最终的顶事件故障,也可以是另一个中间事件逻辑门的输入。故障树能很好地展现其故障模式,形象客观地描述故障事件之间的逻辑关系。
故障树是布尔表达式的一种表现形式。可以将每一个基本事件看成一个布尔变量,每一个逻辑门对应一个逻辑符号。按照故障树所表现出来的逻辑关系,将布尔变量用逻辑符号连接,从而构成一个布尔表达式。其中,布尔变量为真表示其对应的基本事件发生故障,否则未发生故障。整个布尔表达式最后的真值情况则表示了故障树对应的顶事件故障是否发生。
为了更好的描述故障树,本文说明以下基本概念。文字(literal),对于m个布尔变量的集合U={x1,x2,…,xm},每个布尔变量xi∈U,xi和分别称为xi的正文字和负文字。积(product),是一个文字集合,这个集合内不同时包括同一个变量的正文字和负文字。它的形式是将集合内部的文字用与逻辑符号连接。例如:赋值(assignment),f是布尔表达式,对f中的布尔变量取真或假所构成的集合。用积的形式表示一个赋值。例如:可以表示,当且仅当x1取真、x2取真、x3取假时的赋值。若赋值满足正(负)文字,当且仅当其正(负)文字在对应赋值下的真值为真(假)。例如:赋值满足文字x1、x2和当且仅当变量取得一个赋值中对应的真值时使得f为真称此赋值满足布尔表达式f。蕴含(imply),f和g是两个布尔表达式,若任意一个满足f的赋值同时也满足g,称f蕴含g,写作f→g。
故障树分析(fault tree analysis,FTA)是系统可靠性、安全性分析的重要方法。它在分析系统故障模式、寻找薄弱环节、指导故障维修等工作中具有重要的参考价值。它采用逻辑的方法,从故障树的顶事件开始,自上而下寻找导致顶事件发生的直接原因和间接原因,并对其进行一系列分析计算。其特点是直观、明了、逻辑性强,体现了以系统工程方法研究安全问题的系统性、准确性和预测性。
在FTA中,定性分析的主要目的在于寻找导致顶事件发生的原因或多个原因的组合,识别导致顶事件发生的所有模式。它可以判明潜在的故障,以便改进设计,也可以用于指导故障诊断,改进运行和维修方案。割集(cut set,CS)是由引发顶事件发生的组件失效事件组成,可以用于描述组件失效对于顶事件的影响。然而有些底事件失效并不足以导致顶事件失效,FTA的定性分析往往更关心那些导致顶事件失效的根本原因。最小割集(minimal cut set,MCS)是引起顶事件发生的最低限度的基本事件的组合。它准确、直观地表现了系统的失效模式,是导致顶事件故障的根本原因。FTA中定性分析的主要目的是求得故障树的MCS。
求解故障树的MCS是一个复杂计算的过程。首先,求解MCS的本质是求解基本事件的条件组合问题。其求解规模随着基本事件的数量增加成指数级别增长。其次,工业上的故障树涉及的基本事件和门事件个数庞大,存储表示需要耗费巨大的存储空间。因此,如何有效地压缩故障树存储空间和提高故障树MCS的求解速度是亟待解决的问题。
传统的故障树MCS的求解算法主要基于代数方法,二元决策图(binary decisiondiagram,BDD)和基于特殊故障树结构的特殊方法。由于基于布尔操作的算法随着故障树基本事件和门事件数量的增加,将会产生大量中间运算过程,求解时间和存储空间上的消耗十分巨大。而基于特殊故障树结构的特殊方法使用有其局限性。虽然在具有特殊结构的故障树上算法表现优秀,但是在不具有其特殊结构的故障树上效果欠佳。相对于前两者,基于BDD的故障树MCS求解算法借助BDD优良的结构特性,使得这类算法在使用范围和总体效率上具有其独特的优势。所以基于BDD的故障树MCS求解算法在故障树求解算法中讨论最为广泛。
利用变量表示故障树基本事件的发生与否所构造的BDD(下称原始BDD)只描述了故障树的部分CS。只有当BDD取得最优的变量顺序,使得BDD达到最简形式,原始BDD才描述了对应故障树的MCS。Coudert等人改进了传统的BDD,提出了Metaproduct。它是对原始BDD的一种扩展,通过引入两个布尔变量集合O={o1,o2,…,on}和S={s1,s2,…,sn}分别描述基本事件xi是否会影响顶事件发生和基本事件xi是否发生,从而使其可以直观地描述原有故障树对应的布尔公式的所有MCS。
基于BDD求解MCS的算法不可避免地存在一些缺陷。其一,由于其BDD中表示一个基本事件的节点数量可能不止一个,导致本算法内存消耗大。其二,BDD算法的效率依赖于变量优先顺序。求解最优的故障树变量顺序是一个NPC问题。
布尔可满足(satisfiability,SAT)问题是判断CNF范式表示的布尔公式的可满足性问题。计算机科学中的很多问题都可以转化为SAT问题来求解。因此SAT问题可以被应用于众多领域,例如数学、人工智能、机器视觉和数据库系统。SAT问题的基本组成要素如下所述。子句(clause)是一种特殊的布尔表达式,由若干文字通过析取运算符连接而成。若一个赋值v使得子句c中至少一个文字满足,称这个赋值v可以使得子句c满足。例如:子句当赋值v=x1∧x2时,e可以使得c满足。子句集合(clause set)用来表示合取范式(conjunctive normal form,CNF)。例如:对于合取范式F=c1∧c2∧…∧cn可以表示成n个子句的集合C={c1,c2,…,cn}。
当前主流的SAT问题的求解方法均基于Davis-Putnam-Loveland-Logemann(DPLL)算。引入其基本定义。决策等级(decision level):是用于衡量决策次数的变量。这个值从1开始。对于算法中的每一个赋值都对应的一个决策等级。算法中每一个判定过程和赋值都和决策等级有密切的关系。子句状态(state of a clause):每一个决策等级dli,均对应一个赋值vi。若vi可以使得子句满足,则子句状态为satisfied;若vi可以使得子句不满足,则子句状态为conflicting,当且仅当子句集合中有一个子句处于conflicting状态时,称这种情况为发生冲突;若根据赋值vi,可以使得子句中的文字除了一个满足性未知(对应变量未被赋值),其余所有文字均为假,则子句状态为unit;其余情况,子句状况均为unresolved。单位子句规则(unit clause rule):当一个赋值v使得一个子句的状态变成unit时,v要被扩展以使这个子句满足。布尔约束传播(Boolean Constraint Propagation,BCP):根据单位子句规则,使得当前决策等级下不发生冲突,并得到扩展赋值的过程。冲突(conflict):若赋值v使得布尔表达式f为假。那么称v是f的一个冲突。冲突子句(conflictclause):形式上是文字的析取组成。表明一些赋值组合不能使得子句集合中所有子句得到满足。例如,冲突子句:表示x1、x2和不能分别同时分别取值为真、真和假。
发明内容
为了解决传统故障树求解最小割集方法耗时巨大的问题,本发明的发明目的在于提供一种基于SAT的故障树求解最小割集的方法,主要思想是:首先,将故障树的基本事件抽象成布尔变量;其次,将故障树中基本事件和顶事件的逻辑关系利用布尔表达式表示,顶事件的发生与否取决于对应的布尔表达式的真值;然后,加入对MCS的判定和分析;最后,利用SAT求解算法高效求解MCS。此算法不但在存储空间上表现优异,而且提高了故障树MCS的求解速度。
本发明的发明目的通过以下技术方案实现:
一种基于SAT的故障树求解最小割集的方法,包含以下步骤:
步骤A、对故障树建模,将故障树模型转换为布尔表达式;
步骤B、求解出布尔表达式的最小割集,包含以下步骤:
步骤1,判定是否布尔表达式中所有的变量都已经赋值,如果是则进入步骤6,否则进入步骤2。
步骤2,根据VSIDS决策策略选择当前自由变量对其赋值,得到variableAssignment,如果variableAssignment是对正文字赋值为真,则将variableAssignment压入assignmentStack中,进入步骤3。
步骤3,进入BCP过程,若BCP过程结束后未产生冲突则进入步骤5,否则进入步骤4;所述BCP过程为将assignmentStack和clauseDatabase子句集中的每个子句进行约束推导的过程,以得出在当前决策等级下由单位子句规则决定的其他赋值;
步骤4,回溯到上一级决策等级,得到一个使得clauseDatabase子句集中所有子句都满足的赋值,并且将当前冲突子句加入clauseDatabase子句集,若当前clauseDatabase子句集不可满足,返回求得的pMCS,退出程序,若当前clauseData-base子句集仍然存在被满足的可能性,继续步骤3;
步骤5,判断当前对变量的赋值是否满足所有原始子句,若不满足,则进入下一决策等级并进入步骤1,否则则表示求得一个近似最小割集AMCS,通过替换过程将近似最小割集加入pMCS集合中;所述替换过程为:
步骤5-1,将得到的AMCS和已经求得的pMCS集合中的每一个元素msi对比,若则用AMCS代替msi加入pMCS集合,若则不操作,否则,直接将AMCS加入pMCS集合;若AMCS成功加入pMCS中,进入步骤6,否则,进入步骤7;
步骤6,取得当前可满足的赋值中的正文字,得到隔离子句加入到clauseDatabase中,进入步骤7。
步骤7,将决策等级设为初始状态,将assignmentStack清空。
附图说明
图1为motor2故障树图;
图2为基于SAT的故障树求解最小割集的方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
本发明主要包括两个部分内容。其一,对故障树建模,将故障树编码为SAT问题的输入。其二,利用SAT求解器构造最小割集求解器求解出故障树的最小割集。
第一部分,对故障树建模,将求解故障树最小割集问题转换为求解SAT问题。
每一个故障树都是布尔表达式的一种表现形式。可以将每一个基本事件看成一个布尔变量,每一个逻辑门对应一个逻辑符号。按照故障树逻辑门所表现出来的逻辑关系,将布尔变量用逻辑符号连接,从而构成一个布尔表达式。其中,布尔变量为真表示其对应的基本事件发生故障,否则未发生故障。整个布尔表达式最后的真值情况则表示了故障树对应的顶事件故障是否发生。
本发明需要根据文献[Huth M,Ryan M.Logic in Computer Science:Modellingand Reasoning about Systems[M].Cambridge University Press,2000,117-120.]所述的算法,将故障树对应的布尔表达式转化为CNF范式,用于描述故障树中基本事件所表示的逻辑关系。将布尔表达式。用CNF范式表示出整个故障树后,将所有子句作为本第二部分最小割集求解器的输入。
本发明定义布尔表达式的最小可满足解(minimal satisfiability,MSAT)是一组文字的集合,此集合满足以下两条性质。其一,满足此集合中所有文字的赋值可以使得布尔表达式满足。其二,不存在满足此集合的子集中所有文字的赋值使得布尔表达式满足。例如,对于布尔表达式f=(x1)∨(x1∧x2),x1是f的MSAT,而x1∧x2不是。因此,求解故障树的最小割集问题可以转化为求解布尔表达式所有MSAT问题。
第二部分,构造最小割集求解器,求解最小割集。本文定义布尔表达式的最小可满足解(minimal satisfiability,MSAT)是一组文字的集合,此集合满足以下两条性质。其一,满足此集合中所有文字的赋值可以使得布尔表达式满足。其二,不存在满足此集合的子集中所有文字的赋值使得布尔表达式满足。因此,求解故障树的MCS问题可以转化为求解布尔表达式所有MSAT问题。SATMCS的总体思路是以下两个步骤的不断迭代过程。
步骤一:给定一个布尔表达式,利用SAT求解算法求解得到所有可以使得此布尔表达式满足的赋值。这些赋值本文称为近似最小割(approximate minimal cut,AMC)。它是CS的元素,但是不一定属于MCS。
步骤二:由步骤一得到的AMC c,和已经求得的MSAT集合中的每一个元素msi对比,若则用c代替msi加入MSAT。若则不操作。否则,直接将c加入MSAT。
接下来证明步骤二求得的MSAT集合是此布尔表达式对应的故障树的MCS。首先证明MSAT是CS中的元素。由步骤一得MSAT中任意一个元素ms,其对应的赋值满足f的所有子式,即ms→f,满足CS元素的定义,故得证。然后证明MSAT是MCS中的元素。由于ms是CS中的元素,那么ms必将会由步骤一找到。如果ms通过步骤一和步骤二的不断迭代,最后留在MSAT中,说明不存在使得c→f,由MC定义得ms是MCS中的元素。综上所述,MSAT集合是此布尔表达式对应的故障树的MCS。
求解过程是一个迭代形式的分支搜索过程。求解器输入是第一部分生成的CNF范式子句集合。整个求解器分为六大模块,如图2所示。Decide模块的功能是采用启发式的决策策略选择未赋值的变量赋值。并记录赋值为真的变量。本发明采用的启发式的决策策略为[Mahajan Y S,Fu Z,Malik S.Zchaff2004:An Efficient SAT Solver[J].LectureNotes in Computer Science.2004,3542:360-375.]中所描述的Variable StateIndependent Decaying Sum(VSIDS)决策策略。在VSIDS中,求解器记录所有子句集合中每一个文字的个数,每次决策都选择个数最大的那个文字赋值。BCP采用唯一子句约束规则对现有的变量赋值做出推导,根据子句的约束可以得到新的变量赋值或冲突。并记录赋值为真的变量。AnalyzeConflict模块用于分析当前赋值引发的冲突,并给出解决冲突的新的子句约束。BackTrack模块根据AnalyzeConflict模块得出的新的子句约束,从新回退决策等级,以满足新的子句约束。并且删除大于回退决策等级所记录的变量。AnalyzeAssignments模块用于判定当前原始子句是否都得到满足,若满足则将对所记录的变量进行replace,增加pMCS。Clear模块,此模块的作用为清理数据结构,为新的迭代过程调用做准备。求解器算法伪代码如算法1和算法2所示。
算法1基于SAT的故障树MCS求解算法(SATMCS)
算法2 SATAMCS
求解器基本步骤如下。(为便于理解,表1中列出了各步骤统一使用的主要符号及其含义)
表1主要符号及其含义一览表
初始状态下不存在被赋值的变量,本文称未赋值的变量为自由变量。
步骤1,判定是否f中所有的变量都已经赋值,如果是则进入步骤6,表示找到可满足解。否则,进入步骤2。
步骤2,通过decide过程中的决策算法选择当前自由变量对其赋值,得到variableAssignment。这种对未赋值的变量进行选择并赋值的操作称为决策。如果variableAssignment是对正文字赋值为真,则将variableAssignment压入assignmentStack中。进入步骤3。
步骤3,BCP过程描述的是利用已知赋值和clauseDatabase中的每个子句进行约束推导的过程,以便得出在当前决策等级下由单位子句规则决定的其他赋值。BCP推导过程结束后,若未产生冲突,则进入步5。否则,进入步骤4。
步骤4,SAT求解器可以找到应该回溯到的决策等级,即回溯到过去某个分支。通过回溯操作,可以得到一个使得clauseDatabase中所有子句都满足的赋值。并且,记录下当前冲突的信息,即冲突子句。将冲突子句加入clauseDatabase子句集,以便在日后的求解过程中对搜索空间进行一定程度上的削减。这一过程被称为冲突驱动学习(conflict-drivenlearning)。若得到的dlevel为0则判定当前clauseDatabase不可满足,返回求得的pMCS,退出程序。若dlevel大于等于0,表明当前赋值下clauseDatabase仍然存在被满足的可能性。继续步骤3。
步骤5,当前对变量的赋值使得clauseDatabase中的所有子句满足或者满足情况未知。得到当前的partialAssignment,判断其是否满足originalCause中所有的子句。若不满足则进入下一级的决策等级并进入步骤1。否则,则表示求得一个近似最小割集(approximate minimal cut set,AMCS)。它是CS,但是不一定是MCS,其值为partialAssignment。通过replace过程将AMCS加入pMCS中。replace过程如下所示:
步骤5-1,得到的AMCSc,和已经求得的pMCS集合中的每一个元素msi对比,若则用c代替msi加入MSAT。若则不操作。否则,直接将c加入pMCS。若AMCS成功加入pMCS中,进入步骤6。否则,进入步骤7。
步骤6,取得当前可满足的赋值中的正文字,得到隔离子句加入到clauseDatabase中,用于表示此满足解已经被找到,避免重复求解此满足解。进入步骤7。
步骤7,初始化求解器。将决策等级设为初级状态,将assignmentStack清空。
对于原始子句较多的故障树,每次在BCP模块未产生冲突的情况下都要判断原始子句是否全部满足,这一操作需要对originalClause中每一个子句做出满足性判断。
本发明引入assignmentDlevelMap结构,提出了基于标记的原始子句可满足性判断算法(Marked Satiable Original Clauses,MSOC)很好地解决了前文方分析的时间消耗问题。本算法利用assignmentDlevelMap结构记录不同决策等级对应的第一个不满足的原始子句的序号。显然对应此决策等级,所标记对应的原始子句以上的原始子句都是此决策等级以前的赋值可以满足的。每次判定只从当前决策等级对应标记的原始子句开始,而不用从头开始原始子句的可满足性判定。如算法3所示。
算法3判断原始子句可满足性算法(MSOC)
此优化算法通过记录每次当前决策等级下,当前赋值对原始子句的满足情况。使得每次判断都不用遍历所有原始子句集合,只要从当前决策等级对应的第一个不满足子句开始即可。是明显的空间换时间的优化策略。对于原始子句众多的故障树十分有效。
在图1故障树的求解过程中,子句集合中第一个子句为e1∨e2,第二个子句为e5∨e7∨e8∨e3。如果第一次决策过程选择e1赋值为真,可以使得子句集合中子句e1∨e2得到满足但不能满足子句e5∨e7∨e8∨e3,那么对应的决策等级为2的assignmentDlevelMap结构将记录子句e5∨e7∨e8∨e3的下标,表示第二次决策后所要比对的原始子句从子句e5∨e7∨e8∨e3开始。
下面以文献[Vesley B W E,Goldberg F F,Roberts N H,et al.Fault TreeHandbook[J].U.s.nuclear Regulatory Commission Rep.2010.]中的motor2故障树模型为实例,使用基于SAT的故障树求解最小割集的方法求解motor2故障树的最小割集。
根据前文所述实施步骤,首先,为motor2故障树建模,将其转化为SAT问题。具体实施步骤如下:
步骤A.1,将图1所表示的motor2故障树模型转换为布尔表达式,r1=((e1|(e2&(e3|e7|(e4&e5&e6))))&(e8|(e3|e5|e7)))。
步骤A.2,将步骤1中的布尔表达式转化为CNF范式,r1=(e1∨e2)∧(e5∨e7∨e8∨e3)∧(e4∨e7∨e1∨e3)∧(e7∨e6∨e1∨e3)∧(e5∨e7∨e1∨e3)。问题被转化为求r1的MSAT问题。
然后,将r1作为输入,即子句集合clauseDatabase初始化为{{e1,e2},{e5,e7,e8,e3},{e4,e7,e1,e3},{e7,e6,e1,e3},{e5,e7,e1,e3}}。调用最小割集求解器。
根据VSIDS可得初始状态下,各个文字的分数如下表。
所以初始化赋值顺序为:e3,e7,e1,e5,e8,e6,e4,e2,
步骤1,存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e3赋值为真。此时,assignmentStack={e3}。
步骤3,进入BCP过程,由单位子句规则无扩展赋值。且无冲突,进入步骤5。
步骤5,当前赋值{e3}使得{e1,e2}的满足程度未知,所以assignmentStack={e3}不能是原始子句全部满足,决策等级变为1,进入步骤1。
步骤1,依然存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e7赋值为真。此时,assignmentStack={e3,e7}。
步骤3,进入BCP过程,由单位子句规则无扩展赋值。且无冲突,进入步骤5。
步骤5,当前赋值{e3,e7}使得{e1,e2}的满足程度未知,所以
assignmentStack={e3,e7}不能是原始子句全部满足,决策等级变为2,进入步骤1。
步骤1,依然存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e1赋值为真。此时,assignmentStack={e3,e7,e1}。
步骤3,进入BCP过程,由单位子句规则无扩展赋值。且无冲突,进入步骤5。
步骤5,当前赋值{e3,e7,e1}使得所有原始子句均满足,所以assignmentStack={e3,e7,e1}是找到的一个AMCS。进入步骤5-1。
步骤5-1,由于pMCS集合为空,所以{e3,e7,e1}直接加入pMCS,有pMCS={{e3,e7,e1}},进入步骤6.
步骤6,得到隔离子句:加入clauseDatabase中。进入步骤7。
步骤7,初始化决策等级为0;初始化clauseDatabase为{{e1,e2},{e5,e7,e8,e3},{e4,e7,e1,e3},{e7,e6,e1,e3},{e5,e7,e1,e3},assignmentStack={}。
从新计算各个文字的分数如下表。
所以初始化赋值顺序为:e3,e7,e1,e5,e8,e6,e4,e2,
进入新一次的AMCS的迭代求解过程。
步骤1,存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e3赋值为真。此时,assignmentStack={e3}。
步骤3,进入BCP过程,由单位子句规则无扩展赋值。且无冲突,进入步骤5。
步骤5,当前赋值{e3}使得{e1,e2}的满足程度未知,所以assignmentStack={e3}不能是原始子句全部满足。决策等级变为1,进入步骤1。
步骤1,依然存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e7赋值为真。此时,assignmentStack={e3,e7}。
步骤3,进入BCP过程,由单位子句规则得e1应赋值为假且e2应赋值为真。此时无冲突,进入步骤5。
步骤5,当前赋值使得所有原始子句均满足,所以assignmentStack={e3,e7,e2}是找到的一个AMCS。进入步骤5-1。
步骤5-1,pMCS={{e3,e7,e1}},无需替换,所以{e3,e7,e2}直接加入pMCS,有pMCS={{e3,e7,e1},{e3,e7,e2}},进入步骤6。
步骤6,得到隔离子句:加入clauseDatabase中。进入步骤7。
步骤7,初始化决策等级为0;初始化clauseDatabase为{{e1,e2},{e5,e7,e8,e3},{e4,e7,e1,e3},{e7,e6,e1,e3},{e5,e7,e1,e3}, assignmentStack={}。
从新计算各个文字的分数如下表。
所以初始化赋值顺序为:e3,e7,e1,e5,e8,e6,e4,e2,
进入新一次的AMCS的迭代求解过程。
步骤1,存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e3赋值为真。此时,assignmentStack={e3}。
步骤3,进入BCP过程,由单位子句规则无扩展赋值。且无冲突,进入步骤5。
步骤5,当前赋值{e3}使得{e1,e2}的满足程度未知,所以assignmentStack={e3}不能是原始子句全部满足。决策等级变为1,进入步骤1。
步骤1,依然存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e7赋值为真。此时,assignmentStack={e3,e7}。
步骤3,进入BCP过程,由单位子句规则得e1应赋值为假且e2应赋值为假,此时由子句{e1,e2}产生冲突,进入步骤4。
步骤4,回溯到决策等级0,此时当前赋值为{e3},不产生冲突。得到冲突子句加入子句集合,此时clauseDatabase为{{e1,e2},{e5,e7,e8,e3},{e4,e7,e1,e3},{e7,e6,e1,e3},{e5,e7,e1,e3}, 进入步骤3。
步骤3,进入BCP过程,由单位子句规则得e7应赋值为假,当前赋值为此时无冲突,进入步骤5。
步骤5,当前赋值使得{e1,e2}的满足程度未知,所以assignmentStack={e3}不能是原始子句全部满足。决策等级变为1,进入步骤1。
步骤1,依然存在未赋值变量。
步骤2,根据VSIDS,选择分数最大的文字赋值,既选择e1赋值为真。此时,assignmentStack={e3,e1}。
步骤3,进入BCP过程,此时无冲突,进入步骤5。
步骤5,当前赋值使得所有原始子句均满足,所以assignmentStack={e3,e1}是找到的一个AMCS。进入步骤5-1。
步骤5-1,pMCS={{e3,e7,e1},{e3,e7,e2}},替换{e3,e7,e1},有pMCS={{e3,e1},{e3,e7,e2}},进入步骤6。
步骤6,得到隔离子句:加入clauseDatabase中。进入步骤7。
步骤7,初始化决策等级为0;初始化clauseDatabase为{{e1,e2},{e5,e7,e8,e3},{e4,e7,e1,e3},{e7,e6,e1,e3},{e5,e7,e1,e3},
从新计算各个文字的分数如下表。
所以初始化赋值顺序为:e3,e7,e1,e8,e6,e4,e2,
由此不断迭代多次,直到clauseDatabase中的子句不可能被任何赋值满足时,即得到MSAT集合。最后可以得到图1故障树MCS为{e1∧e7,e1∧e3,e1∧e5,e1∧e8,e2∧e4∧e5∧e6,e2∧e7,e2∧e3}。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
Claims (2)
1.一种基于SAT的故障树求解最小割集的方法,包含以下步骤:
步骤A、对故障树建模,将故障树模型转换为布尔表达式;
步骤B、求解出布尔表达式的最小割集,包含以下步骤:
步骤1,判定是否布尔表达式中所有的变量都已经赋值,如果是则进入步骤6,否则进入步骤2;
步骤2,根据VSIDS决策策略选择当前自由变量对其赋值,得到variableAssignment,如果variableAssignment是对正文字赋值为真,则将variableAssignment压入assignmentStack中,进入步骤3;
步骤3,进入BCP过程,若BCP过程结束后未产生冲突则进入步骤5,否则进入步骤4;所述BCP过程为将assignmentStack和clauseDatabase子句集中的每个子句进行约束推导的过程,以得出在当前决策等级下由单位子句规则决定的其他赋值;
步骤4,回溯到上一级决策等级,得到一个使得clauseDatabase子句集中所有子句都满足的赋值,并且将当前冲突子句加入clauseDatabase子句集,若当前clauseDatabase子句集不可满足,返回求得的pMCS,退出程序,若当前clauseData-base子句集仍然存在被满足的可能性,继续步骤3;
步骤5,判断当前对变量的赋值是否满足所有原始子句,若不满足,则进入下一决策等级并进入步骤1,否则则表示求得一个近似最小割集AMCS,通过替换过程将近似最小割集加入pMCS集合中;所述替换过程为:
步骤5-1,将得到的AMCS和已经求得的pMCS集合中的每一个元素msi对比,若则用AMCS代替msi加入pMCS集合,若则不操作,否则,直接将AMCS加入pMCS集合;若AMCS成功加入pMCS中,进入步骤6,否则,进入步骤7;
步骤6,取得当前可满足的赋值中的正文字,得到隔离子句加入到clauseDatabase中,进入步骤7;
步骤7,将决策等级设为初始状态,将assignmentStack清空。
2.根据权利要求1所述的一种基于SAT的故障树求解最小割集的方法,其特征在于所述布尔表达式为CNF范式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710978280.7A CN107609325A (zh) | 2017-10-18 | 2017-10-18 | 基于sat的故障树求解最小割集的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710978280.7A CN107609325A (zh) | 2017-10-18 | 2017-10-18 | 基于sat的故障树求解最小割集的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107609325A true CN107609325A (zh) | 2018-01-19 |
Family
ID=61078661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710978280.7A Pending CN107609325A (zh) | 2017-10-18 | 2017-10-18 | 基于sat的故障树求解最小割集的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107609325A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733528A (zh) * | 2018-04-23 | 2018-11-02 | 南京航空航天大学 | 一种基于约束的系统故障注入方法 |
CN108876002A (zh) * | 2018-05-03 | 2018-11-23 | 浙江运达风电股份有限公司 | 一种风力发电机组零部件备品备件库存优化方法 |
CN108959959A (zh) * | 2018-06-15 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种对计算透明的数据隐私保护方法及系统 |
CN109146077A (zh) * | 2018-08-01 | 2019-01-04 | 何安平 | 一种sat求解器 |
CN109684376A (zh) * | 2018-12-11 | 2019-04-26 | 孙炜 | 启发式精准知识数据搜索引擎及数据自学习自诊断方法 |
CN110045715A (zh) * | 2019-04-15 | 2019-07-23 | 中国民航大学 | 基于Petri网与改进二元决策图模型的最小割集求解方法 |
CN111159631A (zh) * | 2019-12-31 | 2020-05-15 | 中国人民解放军国防科技大学 | 一种基于可编程逻辑的硬件sat求解器 |
CN112204485A (zh) * | 2018-06-07 | 2021-01-08 | 西门子股份公司 | 用于解决多部件系统的自动故障树分析中的闭环的计算机实现的方法和设备 |
CN114080577A (zh) * | 2019-07-12 | 2022-02-22 | 西门子工业软件有限责任公司 | 故障树中的环闭合和规范化表示 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150481A (zh) * | 2013-03-14 | 2013-06-12 | 安凯 | 故障树分析中割集不交化及计算机实现方法 |
US20140351677A1 (en) * | 2011-12-09 | 2014-11-27 | Nec Corporation | Minimum cut set evaluation system, minimum cut set calculation method, and program |
CN105573855A (zh) * | 2015-12-22 | 2016-05-11 | 浙江师范大学 | 一种用于故障树决策图分析的模块化事件排序方法 |
CN106055729A (zh) * | 2016-04-20 | 2016-10-26 | 西北工业大学 | 一种基于蒙特卡洛仿真的故障树分析方法 |
-
2017
- 2017-10-18 CN CN201710978280.7A patent/CN107609325A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140351677A1 (en) * | 2011-12-09 | 2014-11-27 | Nec Corporation | Minimum cut set evaluation system, minimum cut set calculation method, and program |
CN103150481A (zh) * | 2013-03-14 | 2013-06-12 | 安凯 | 故障树分析中割集不交化及计算机实现方法 |
CN105573855A (zh) * | 2015-12-22 | 2016-05-11 | 浙江师范大学 | 一种用于故障树决策图分析的模块化事件排序方法 |
CN106055729A (zh) * | 2016-04-20 | 2016-10-26 | 西北工业大学 | 一种基于蒙特卡洛仿真的故障树分析方法 |
Non-Patent Citations (1)
Title |
---|
罗炜麟 等: "基于SAT求解器的故障树最小割集求解算法", 《计算机工程与科学》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733528A (zh) * | 2018-04-23 | 2018-11-02 | 南京航空航天大学 | 一种基于约束的系统故障注入方法 |
CN108876002A (zh) * | 2018-05-03 | 2018-11-23 | 浙江运达风电股份有限公司 | 一种风力发电机组零部件备品备件库存优化方法 |
CN108876002B (zh) * | 2018-05-03 | 2021-08-17 | 浙江运达风电股份有限公司 | 一种风力发电机组零部件备品备件库存优化方法 |
CN112204485A (zh) * | 2018-06-07 | 2021-01-08 | 西门子股份公司 | 用于解决多部件系统的自动故障树分析中的闭环的计算机实现的方法和设备 |
CN108959959B (zh) * | 2018-06-15 | 2020-06-23 | 中国人民解放军国防科技大学 | 一种对计算透明的数据隐私保护方法及系统 |
CN108959959A (zh) * | 2018-06-15 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种对计算透明的数据隐私保护方法及系统 |
CN109146077A (zh) * | 2018-08-01 | 2019-01-04 | 何安平 | 一种sat求解器 |
CN109146077B (zh) * | 2018-08-01 | 2021-10-19 | 何安平 | 一种sat求解器 |
CN109684376A (zh) * | 2018-12-11 | 2019-04-26 | 孙炜 | 启发式精准知识数据搜索引擎及数据自学习自诊断方法 |
CN110045715A (zh) * | 2019-04-15 | 2019-07-23 | 中国民航大学 | 基于Petri网与改进二元决策图模型的最小割集求解方法 |
CN110045715B (zh) * | 2019-04-15 | 2021-10-01 | 中国民航大学 | 基于Petri网与改进二元决策图模型的最小割集求解方法 |
CN114080577A (zh) * | 2019-07-12 | 2022-02-22 | 西门子工业软件有限责任公司 | 故障树中的环闭合和规范化表示 |
CN111159631A (zh) * | 2019-12-31 | 2020-05-15 | 中国人民解放军国防科技大学 | 一种基于可编程逻辑的硬件sat求解器 |
CN111159631B (zh) * | 2019-12-31 | 2023-08-11 | 中国人民解放军国防科技大学 | 一种基于可编程逻辑的硬件sat求解器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107609325A (zh) | 基于sat的故障树求解最小割集的方法 | |
Izza et al. | On explaining random forests with SAT | |
US20230334439A1 (en) | Method and System for Generating Vehicle Service Content | |
Ming et al. | ProtoSteer: Steering deep sequence model with prototypes | |
He et al. | Big data oriented root cause identification approach based on Axiomatic domain mapping and weighted association rule mining for product infant failure | |
CN107632590A (zh) | 一种基于优先级的底事件排序方法 | |
Duan et al. | Root cause analysis approach based on reverse cascading decomposition in QFD and fuzzy weight ARM for quality accidents | |
CN106295692A (zh) | 基于降维与支持向量机的产品早期故障根原因识别方法 | |
CN109783500A (zh) | 一种基于故障树和案例相似性的故障诊断方法 | |
CN107103363A (zh) | 一种基于lda的软件故障专家系统的构建方法 | |
CN106682343A (zh) | 一种基于图的邻接矩阵的形式化验证方法 | |
CN111598467A (zh) | 一种对集输联合站以及关键设备的可靠性评价方法及系统 | |
CN116485597B (zh) | 基于岗位能力模型的标准化实训方法 | |
CN116771576A (zh) | 水电机组故障综合诊断方法 | |
CN114219096A (zh) | 一种机器学习算法模型的训练方法、装置及存储介质 | |
CN113987139A (zh) | 一种基于知识图谱的航空发动机fadec系统软件缺陷案例可视化查询管理系统 | |
CN110363662A (zh) | 一种个人信用评分系统 | |
CN105868115A (zh) | 软件密集型系统软件测试模型的构建方法和系统 | |
Zhou et al. | D-bot: Database diagnosis system using large language models | |
Bergmann et al. | Similarity measures for case-based retrieval of natural language argument graphs in argumentation machines | |
CN107679132A (zh) | 基于局部传播图的故障树最小割集提取方法 | |
CN114385403A (zh) | 基于双层知识图谱架构的分布式协同故障诊断方法 | |
CN102999324B (zh) | 一种Rete网络的建立方法及系统 | |
Elwakil | Knowledge discovery based simulation system in construction | |
CN109190204B (zh) | 一种基于复杂网络的复杂机械产品模块划分方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180119 |
|
WD01 | Invention patent application deemed withdrawn after publication |