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,与代码输出一致。
判定标准
本案例通过以下标准判定完成:
- 代码能够正确输出顶事件概率、三个概率重要度和三个关键重要度,且数值与预期输出一致;
- 概率重要度满足偏导数定义,关键重要度满足其与概率重要度的换算关系;
- 结果解读中的排序与数值关系(如I3最大、C1=C2)与代码输出吻合。