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)
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)