• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用Python实现二终端网络可靠度

    在网络可靠性中,一种较为经典且在实践中更为常用的可靠度计算便是二终端可靠度,即给定网络拓扑结构与边可靠度(假定节点完全可靠),计算网络中指定的两个节点之间的连通可靠度。

    在此,笔者依据最小路集思想给出此方法的python代码实现,该代码可以依据给定的输入矩阵、节点序号等设定值算出两节点间的连通可靠度。

    逻辑代码与测试用例如下:

    import itertools
    def min_path_sets(init_matrix,index_start,index_end):
        import re
        num_point = init_matrix.shape[0]
        min_path_list = []
        for i in range(num_point-1):
            temp = init_matrix**(i+1)
            item = expand(temp[index_start-1,index_end-1])
            list_given = re.sub('[ *123456789]',"",str(item)).split("+")
            
            #删除指定阶数下,路径长度不等于阶数的路
            index_to_delete = []
            for j in range(len(list_given)):
                if len(list_given[j])!=(i+1) or list_given[j]=='0':
                    index_to_delete.append(j)
            for counter, index in enumerate(index_to_delete):
                index = index - counter
                list_given.pop(index)
            
            min_path_list.extend(list_given)
        return min_path_list
    
    def str_de_duplication(pstr):
        a = ''
        for i in range(len(pstr)):
            if pstr[i] not in a:
                a+=pstr[i]
        return a
    
    def product_symbol(pstr,my_dict):
        import numpy as np
        value_list = []
        for i in pstr:
            value_list.append(my_dict[i])
        return np.prod(value_list)
    
    def generate_label(path_sets,my_dict):
        import numpy as np
        all_result = []
        for exp_num in range(len(path_sets)):
            item_Combination = list(itertools.combinations(path_sets, exp_num+1))
            item_list = list(map(lambda x: str_de_duplication("".join(x)),item_Combination))
            value_list = list(map(lambda x: product_symbol(x,my_dict),item_list))
            all_result.append(np.sum(value_list)*(-1)**(exp_num))
        return np.sum(all_result)
    
    def Matrix_label(init_matrix,my_dict,index_start,index_end):
        path_sets = min_path_sets(init_matrix,index_start,index_end)
        pro_value = generate_label(path_sets,my_dict)
        return pro_value
    
    from sympy import *
    from sympy.abc import A,B,C,D,E,F
    index_start = 2
    index_end = 1
    data = Matrix([[0,A,B],
                   [A,0,C],
                   [B,C,0]])
    my_dict = {'A':0.8,
               'B':0.9,
               'C':0.9}
    
    Matrix_label(data,my_dict,index_start,index_end)
    
    

    在前部分,主要定义了几个函数以便求出最小路集以及利用容斥原理计算二终端可靠度,最终外层函数为Matrix_label(data,my_dict,index_start,index_end):

    参数解释:

    以上就是使用Python实现二终端网络可靠度的详细内容,更多关于二终端网络可靠度 的资料请关注脚本之家其它相关文章!

    上一篇:python实现由数组生成对称矩阵
    下一篇:python3使用迭代生成器实现减少内存占用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用Python实现二终端网络可靠度 使用,Python,实现,二,终端,