def BetweennessCentralityExperiment(G, min_target, max_target, filename):
    print nx.info(G)
    print 'average betweenness centrality: ', UF.average_betweenness_centrality(G)

    X_betweenness_centrality = []
    Y_nD = []

    target = min_target
    while target <= max_target:       
        copyG = G.copy()
        new_G = SimulatedAnnealing(copyG, target, betweenness_centrality_cost_function)
        betweenness_centrality = UF.average_betweenness_centrality(new_G)
        nD = SCT.controllability(new_G)

        X_betweenness_centrality.append(betweenness_centrality)
        Y_nD.append(nD)

        print "target = ", target, " BC = ", betweenness_centrality, 'nD = ', nD
        
        target += 0.01

    s = 'results/' + filename
    with open(s, "w") as f:
        for i in range(len(Y_nD)):
            print >> f, "%f %f"%(X_betweenness_centrality[i], Y_nD[i])

    return (X_betweenness_centrality, Y_nD)
Example #2
0
    N_rm = int(N * remove_fraction)
    nodes = nx.nodes(G)
    print "Before Removing:\n"
    print "N = ", N
    print "L = ", L

    random.shuffle(nodes)

    rm_nodes = nodes[0:N_rm]
    G.remove_nodes_from(rm_nodes)

    print "\n after removing:"
    print "N = ", G.number_of_nodes()
    print "L = ", G.number_of_edges()
    print "<k> = ", float(2 * G.number_of_edges()) / G.number_of_nodes()

    avg_deg = UF.average_degree(G);
    print "<k>: ", avg_deg;
    avg_bet = UF.average_betweenness_centrality(G);
    print "<B>: ", avg_bet;
    #APL = nx.average_shortest_path_length(G)
    #print "APL: ", APL

    N_core = nx.core_number(G)
    core_values = N_core.values()
    leaves = [x for x in core_values if x <= 1]
    print "#leaves:", len(leaves)
    print "#core:", G.number_of_nodes() - len(leaves)
    print "#core/#N:", (G.number_of_nodes() - len(leaves))/float(G.number_of_nodes())

def betweenness_centrality_cost_function(G, target):
    return math.fabs(UF.average_betweenness_centrality(G) - target)