Page 68 - 《软件学报》2021年第7期
P. 68

1986                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 的正确性.首先,在模糊故障树建立之后,将交由领域专家核查其合理性和逻辑性,核查通过后才会用于事件识
                 别.其次,本文认为静态事件因果关系模型已不能适应复杂多变的环境状态以及未知的软件变化.因此,为进一
                 步确保正确性,本文将在系统运行过程中对事件因果关系模型进行动态修正与更新.模型的修正与更新时机可
                 根据系统运行情况来决定,通常当系统运行一周时间后,或者系统运行日志累计到 50 000 条时对模型进行更新,
                 这个运行时间以及运行日志累积量可根据系统实际运行情况进行调整与改变.在模型修正与更新时,本文将重
                 新挖掘并探索新的事件因果关系,并重新统计基本事件发生的概率,在此基础上修改与完善事件因果关系模型,
                 包括根据新的事件关系修改模糊故障树模型中的事件逻辑关系,将新的基本事件发生概率重新映射为模糊数,
                 并计算模糊算子,使其能够适应并准确识别出不确定环境中发生的各类事件.

                 3.2   基于贝叶斯网络正向推理的事件识别
                    (1)  贝叶斯网络模型建立
                    本文进一步将模糊故障树转换为推理能力更强的贝叶斯网络,以利用贝叶斯网络的推理能力实现事件识
                 别.如图 3 所示,本文将模糊故障树结构转换为贝叶斯网络的有向无环图.模糊故障树中的基本事件对应转换为
                 贝叶斯网络中的父节点.中间事件和顶事件对应转换为子节点.若模糊故障树中存在多个相同的基本事件和中
                 间事件,则贝叶斯网络中只需建立一个节点.模糊故障树中的逻辑门对应连接贝叶斯网络节点的有向边.
                    贝叶斯网络结构确立之后,需计算贝叶斯网络中各个父节点与其子节点之间的条件概率.传统贝叶斯网
                 络中条件概率难以准确获取,目前的获取方式主要分为两种,一是专家确立,该方式存在一定的主观性;二是
                 通过日志统计得到,但日志如果选取不当或者缺乏代表性,会使条件概率与真实情况相差较大,进而影响利用
                 贝叶斯网络进行推理的准确性.本文则通过计算模糊故障树中的逻辑门算子,得到贝叶斯网络的条件概率,组
                 成条件概率表,能够克服传统贝叶斯网络建模困难,即条件概率难以准确获取,进而影响贝叶斯网络准确推理
                 的难题  [32] .











                                  Fig.3    Conversion process from fuzzy fault tree to Bayesian network
                                           图 3   模糊故障树向贝叶斯网络的转换过程
                    (2)  事件识别过程
                    本文通过贝叶斯网络正向推理能力识别事件.贝叶斯网络获取到环境状态与资源状态等输入数据,通过这
                 些状态数据与基本事件之间的映射规则判断是否有基本事件发生,然后向上推理计算出中间事件和顶事件的
                 发生概率,计算公式如式(4)所示,P(upperEvent i )表示通过式(4)计算得到的第 i 个上层事件发生的概率,这里,中
                 间事件和顶事件都为上层事件,P(lowerEvent s )表示第 s 个下层事件发生的概率,P(upperEvent i |lowerEvent s )表示
                 第 s 个下层事件导致其上层事件发生的条件概率,由模糊算子计算而来.这里的上层事件与下层事件是相对而
                 言的,是指通过有向边连接的上层与下层事件.
                                                 k
                                                                
                                               =
                                   P         i upperEvent   P   s lowerEvent   P upperEvent i  s  | lowerEvent  (4)
                                                sj
                                                 
                    在向上推理的过程中,当基本事件 j 发生时,其将作为下层事件 lowerEvent j (P(lowerEvent j )=1),此时获取
                 P(upperEvent i |lowerEvent j )以及与基本事件 j 位于同层并与其上层事件 i 有关联的基本事件 k 的先验概率
                 P(lowerEvent k )以及 P(upperEvent i |lowerEvent k ),共同代入式(4)中,计算得到 P(upperEvent i ).继续将 upperEvent i
                 作为下层事件 lowerEvent i ,代入式(4)中,重复这个过程,直到所有的上层事件发生概率都计算完成,即中间事件
   63   64   65   66   67   68   69   70   71   72   73