Matlab故障树的最小割集的计算
一、项目描述
来源于上课时教员要求我们编一个可以自动计算一颗故障树最小割集的程序,程序的输入为矩阵模式,输出为该故障树的最小割集。
二、求解思路
故障树求解最小割集有很多种方法,主要简单介绍一下上行法和下行法。上行法是从底层事件和中间事件出发,不断的由下面的公式迭代,最终得到顶事件的表达。
下行法顾名思义,从顶事件出发,将中间事件不断向下迭代,最终得到一个全部由底事件表达关于顶事件的等式。
故障树由四类有效元素构成:顶事件、中间事件、底层事件、逻辑门。其中,顶事件、中间事件、底层事件也可以归属到一起,为了方便求解,我们分开计算。
1.代码如下:
clc
clear
prompt='How many bottom events are there?\n ';
num_variables=input(prompt);
syms variables intermediates T intermedia
for i=1:num_variables
syms (['x',num2str(i)]);
variables(i)=['x',num2str(i)];
end
prompt2='How many intermediate events are there?\n';
num_mediate=input(prompt2);
intermedia(1)=T;
for j=1:num_mediate
syms (['M',num2str(j)]);
variables(num_variables+j)=['M',num2str(j)];
intermedia(j+1)=['M',num2str(j)];
end
prompt3='Please input the Adjacency Matrix of bottom and intermediate events\n';
prompt4='邻接矩阵为((中间事件个数+顶事件)*(底事件个数+中间事件个数)),本案例中即为7*14的矩阵';
d