系统工程中利用python求解可达矩阵
在系统工程书中,建立解释结构模型中求解可达矩阵是必不可少的一环故利用python写了一段求解可达矩阵的代码,只需要输入邻接矩阵便可计算得到可达矩阵代码如下:
import numpy as npdef change(a): '''乘以自身,并将非零整数变为1''' b=np.dot(a,a) m=a.shape for i in range(m[0]): for j in range(m[1]): if b[i,j]!=0: b[i,j]=1 return bdef reachability_matrix(adja_matrix): '''生成可达矩阵''' m=adja_matrix.shape unit_adja=np.eye(m[0]) K1=adja_matrix+unit_adja #邻接矩阵加单位矩阵得到矩阵K1for i in range(m[0]): KN=change(K1) #K1乘以自身并归一化得到矩阵KN if np.array_equal(KN,K1)==True: break K1=KN print(K1) return K1if __name__ == '__main__':adjacency_matrix=np.array([[0,0,0,0,0,0,0,0,0,0], [1,0,1,1,0,0,0,0,0,1], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [1,0,0,0,0,1,0,0,0,0], [1,0,0,0,1,0,0,0,0,0], [1,1,0,0,0,0,0,1,0,0], [1,0,1,1,0,0,0,0,0,1], [1,1,0,1,1,1,0,1,0,0], [1,0,1,1,0,0,0,1,0,0]],dtype=int) #n*n的邻接矩阵,注意别输入错reachability_matrix(adjacency_matrix)
可以得到运算结果可达矩阵结果.