资源简介

建立网络,绘制网络图,计算网络抗毁性指标; 在随机攻击和蓄意攻击下,仿真网络抗毁性指标变化情况。(Establish network, draw network diagram and calculate network invulnerability index; Under random attack and intentional atta

资源截图

代码片段和文件信息

import networkx as nx
import numpy as np
import random

#  计算全局网络效率
def network_eff(G n):
    sum_eff = 0
    for u in G.nodes():  # 遍历流量图F的每个点
        path = nx.shortest_path_length(G source=u)  # 在网络G中计算从u开始到其他所有节点(注意包含自身)的最短路径长度。如果两个点之间没有路径,那path里也不会存储这个目标节点(比前面的代码又省了判断是否has_path的过程)
        for v in path.keys():  # path是一个字典,里面存了所有目的地节点到u的最短路径长度
            if u != v:  # 如果起终点不同才累加计算效率
                sum_eff += 1 / path[v]
    sum_eff = (1 / (n * (n - 1))) * sum_eff  # 计算网络剩余效率
    return sum_eff


#  计算最大连通子图节点数
def max_connect_num(G):
    largest_components = max(nx.connected_components(G) key=len)  # 高效找出最大的联通成分
    return len(largest_components)



#  计算两点之间的空间距离
def dis(x1 y1 x2 y2):
    dx = x1-x2
    dy = y1-y2
    d = np.sqrt(dx*dx+dy*dy)
    return d


def MaxMinNormalization(xMaxMin):
    x = (x - Min) / (Max - Min)
    return x


def creategraph(Graph G_node R_com X_axis Y_axis node):
    is_connect = False
    while not is_connect:
        #  产生随机分布的随机点
        for i in range(0 G_node):
            #  随机分布
            node[i][0] = (X_axis[1] - X_axis[0])*random.random()
            node[i][1] = (Y_axis[1] - Y_axis[0])*random.random()
            #  正态分布
            # node[i][0] = random.normalvariate((X_axis[1] + X_axis[0])/2 30)  # random.random()
            # node[i][1] = random.normalvariate((Y_axis[1] + Y_axis[0])/2 30)  # random.random()
            Graph.add_node(i+1)
        #  建立网络中的连边
        for i in range(0 G_node):
            for j in range(0 G_node):
                if i != j and dis(node[i][0] node[i][1] node[j][0] node[j][1]) <= R_com:
                    Graph.add_edge(i+1 j+1)
        if max_connect_num(Graph) == G_node:
            is_connect = True
    return Graph

#  求图中最大节点度的序号
def index_max_degree(G G_node):
    node_degree_G = np.zeros(G_node)  # 图G节点度
    for node in G.nodes():
        node_degree_G[node-1] = G.degree(node)
    node_degree_G_list = node_degree_G.tolist()
    num = np.int32(node_degree_G_list.index(max(node_degree_G_list)))
    return num+1




# G.add_node(4)  # 添加一个节点
# G.add_nodes_from([‘b‘ ‘c‘ ‘d‘ ‘e‘])    #加点集合
# G.add_node(2)
# G.add_nodes_from([3 4 5 6])  # 添加一个节点列表
# G.add_edge(1 3)  # 添加边
# G.add_edges_from([(1 3) (3 4) (3 2)])  # 添加多条边
# print(“图中有哪些节点:“ G.nodes())
# print(“图中有哪些边:“ G.edges())
# print(G.neighbors(1))
# print(“节点的度:“ G.degree())
# print(“节点的度中心性:“ nx.degree_centrality(G))
# print(“节点的接近中心性:“ nx.closeness_centrality(G))
# print(“节点的介数中心性:“ nx.betweenness_centrality(G))
# print(“节点的特征向量中心性:“ nx.eigenvector_centrality_numpy(G))

# #開始画各个小图
# plt.subplot(221)
# nx.draw(Gposfont_size=8)
# plt.subplot(222)
# nx.draw(Gposnode_color=‘k‘node_size=0with_labels=False)
# plt.subplot(223)
# nx.draw(Gposnode_color=‘g‘node_size=250with_labels=Falsewidth=6)
# #最后一幅子图转为有向图
# plt.subplot(224)
# H=G.to_directed()
# nx.draw(Hposnode_co

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        294  2020-02-16 16:10  NetAnalyze\.idea\misc.xml

     文件        279  2020-02-16 16:07  NetAnalyze\.idea\modules.xml

     文件        441  2020-02-16 16:10  NetAnalyze\.idea\NetAnalyze.iml

     文件      13463  2020-03-13 10:22  NetAnalyze\.idea\workspace.xml

     文件      13081  2020-03-12 19:14  NetAnalyze\G.pdf

     文件      13117  2020-03-12 19:15  NetAnalyze\H.pdf

     文件       9077  2020-03-01 11:56  NetAnalyze\NetBuild

     文件       5501  2020-02-21 10:52  NetAnalyze\netfun.py

     文件      14654  2020-03-12 19:15  NetAnalyze\Node Degree Attack-Network Efficiency.pdf

     文件      14079  2020-03-12 19:15  NetAnalyze\Node Degree Attack-Number of nodes in MCS.pdf

     文件      14653  2020-03-12 19:15  NetAnalyze\Random Attack-Network Efficiency.pdf

     文件      14094  2020-03-12 19:15  NetAnalyze\Random Attack-Number of nodes in MCS.pdf

     文件       1780  2020-02-21 10:55  NetAnalyze\__pycache__\netfun.cpython-37.pyc

     目录          0  2020-03-13 10:22  NetAnalyze\.idea

     目录          0  2020-02-21 10:55  NetAnalyze\__pycache__

     目录          0  2020-03-01 11:56  NetAnalyze

----------- ---------  ---------- -----  ----

               114513                    16


评论

共有 条评论