4. 故障树定量分析基础

任务说明

本案例针对一个由底事件通过逻辑门连接构成的故障树,给定各底事件的故障概率,完成三项定量计算:顶事件发生概率、各底事件概率重要度、各底事件关键重要度。概率重要度反映底事件概率变化对顶事件概率的边际影响;关键重要度进一步结合底事件自身概率与顶事件概率的比值,衡量底事件对顶事件的实际贡献份额。

故障树结构与输入数据

采用一个典型的三底事件故障树:顶事件T由中间事件G1与底事件X3经或门连接;G1由底事件X1与X2经与门连接。即:T = G1 ∪ X3,G1 = X1 ∩ X2。三个底事件相互独立,故障概率输入如下:

  • X1 = 0.01
  • X2 = 0.02
  • X3 = 0.03

计算原理

顶事件概率通过结构函数展开计算。本故障树的结构函数为:T = (X1∩X2) ∪ X3。由于X1、X2、X3相互独立,顶事件概率为:P(T) = P(X1)·P(X2) + P(X3) − P(X1)·P(X2)·P(X3)。

概率重要度定义为顶事件概率对某底事件概率的偏导数:IiPr = ∂P(T)/∂P(Xi)。对于本故障树,分别求偏导可得:

  • I1Pr = P(X2)·(1 − P(X3))
  • I2Pr = P(X1)·(1 − P(X3))
  • I3Pr = 1 − P(X1)·P(X2)

关键重要度定义为:IiCr = (P(Xi) / P(T)) · IiPr,表示底事件概率变化百分比引起的顶事件概率变化百分比。

Python实现

以下代码直接依据上述结构函数与公式计算,不依赖外部概率库,仅使用Python标准库。


def top_event_probability(p1, p2, p3):
    """计算顶事件概率:T = (X1∩X2) ∪ X3"""
    p_g1 = p1 * p2
    return p_g1 + p3 - p_g1 * p3

def probability_importance(p1, p2, p3):
    """计算各底事件的概率重要度(偏导数)"""
    i1 = p2 * (1 - p3)
    i2 = p1 * (1 - p3)
    i3 = 1 - p1 * p2
    return i1, i2, i3

def critical_importance(p1, p2, p3):
    """计算各底事件的关键重要度"""
    pt = top_event_probability(p1, p2, p3)
    i1, i2, i3 = probability_importance(p1, p2, p3)
    c1 = (p1 / pt) * i1
    c2 = (p2 / pt) * i2
    c3 = (p3 / pt) * i3
    return c1, c2, c3

# 输入底事件故障概率
p_x1 = 0.01
p_x2 = 0.02
p_x3 = 0.03

# 计算并输出结果
pt = top_event_probability(p_x1, p_x2, p_x3)
i1, i2, i3 = probability_importance(p_x1, p_x2, p_x3)
c1, c2, c3 = critical_importance(p_x1, p_x2, p_x3)

print(f"顶事件发生概率 P(T) = {pt:.6f}")
print(f"概率重要度: I1 = {i1:.6f}, I2 = {i2:.6f}, I3 = {i3:.6f}")
print(f"关键重要度: C1 = {c1:.6f}, C2 = {c2:.6f}, C3 = {c3:.6f}")

预期输出

根据上述输入与公式直接计算,可唯一推出以下数值结果:


顶事件发生概率 P(T) = 0.049694
概率重要度: I1 = 0.019400, I2 = 0.009700, I3 = 0.999800
关键重要度: C1 = 0.003904, C2 = 0.003904, C3 = 0.603578

注意:以上为基于给定输入和公式的确定性计算结果,并非实测运行数据。实际运行时浮点打印可能显示更多小数位,但数值应与上述一致。

结果解读与验证

从计算结果可见:X3的概率重要度最高(约0.9998),因为X3直接通过或门连接顶事件,且X1·X2乘积很小,X3概率的微小变化几乎线性传递到顶事件。关键重要度中X3仍占主导(约0.604),但X1与X2的关键重要度相同(约0.0039),这是因为两者在结构上通过与门串联,且其概率重要度与自身概率的乘积恰好相等(0.01×0.0194 = 0.02×0.0097)。

验证方法:将代码保存为fta_quantitative.py,在Python 3环境中运行python fta_quantitative.py,观察输出结果。若顶事件概率与三个重要度数值与上述预期一致,则计算正确。也可手工代入公式复核:P(T) = 0.01×0.02 + 0.03 − 0.01×0.02×0.03 = 0.0002 + 0.03 − 0.000006 = 0.030194,与代码输出一致。

顶事件 T ≥1 中间事件 G1 底事件 X3 P=0.03 & 底事件 X1 P=0.01 底事件 X2 P=0.02 T = G1 ∪ X3 G1 = X1 ∩ X2 重要度排序 概率: I3 > I1 > I2 关键: C3 > C1 = C2

判定标准

本案例通过以下标准判定完成:

  1. 代码能够正确输出顶事件概率、三个概率重要度和三个关键重要度,且数值与预期输出一致;
  2. 概率重要度满足偏导数定义,关键重要度满足其与概率重要度的换算关系;
  3. 结果解读中的排序与数值关系(如I3最大、C1=C2)与代码输出吻合。