由案例说明可得,当系统在进行蒙特卡洛模拟时,若系统状态为 2 或 3 时,系统则能正
常工作;当状态首次切换到 1 或 4 时,系统失效,此即为模拟终止条件。
在一轮蒙特卡洛过程中,我们需要找到(2 节点数)个切换器中寿命最小的那个,当
时间为其寿命时,其状态发生变化。为了表示已经处理过这个元件,我们将其寿命设置为无
穷大(+inf),相当于删除了这个元件。与此同时,我们需要更新与该被处理元件相关联的
节点状态,再根据处于不同状态的节点数量,确定系统变化后的状态。若状态切换到 1 或
4,则模拟结束,此时该切换器的寿命即为失效时间
[1]
。
该步骤具体的算法流程如图 2 中的伪代码所示。
图 2 确定系统寿命的伪代码
至于求解 10 万个系统,我们只需将上述 2.1.1~2.1.3 步骤重复 10 万次即可,工作寿命的
均值即为 MTTF,寿命超过 25000 小时的系统占比即为可靠性。将节点数从 5 调整至 20,
我们可以从中分别找出 MTTF、系统可靠性最高的两个数值,即为案例说明中要求得到的解。
2.2 代码结构说明
基于上述算法思路以及数据处理要求,笔者进行了代码实现。为了更加清晰地表述代码
中不同模块的功能,笔者将自定义函数的名称与功能列写在表 2 中。
表 2 代码涉及的自定义函数名称与功能说明
顶层函数。计算 5~20 个节点时,10 万套系统的 MTTF 与可靠性
利用参数已知的负指数分布,随机产生元件 A 的寿命与状态
利用参数已知的负指数分布,随机产生元件 B 的寿命与状态