def CombinationBetweennessClosenessExperiments(G, min_target, step, max_target, filename): print nx.info(G) print "Combination Indicator X :", UF.closeness_betweenness_combination_centrality(G) X_centrality = [] Y_nD = [] target = min_target while target <= max_target: copyG = G.copy() new_G = SimulatedAnnealing(G, target, combination_betweenness_closeness_centrality_cost_function) centrality = UF.closeness_betweenness_combination_centrality(new_G) nD = SCT.controllability(G) X_centrality.append(centrality) Y_nD.append(nD) print 'target = ', target, "X = ", centrality, "nD = ", nD target += step s = 'results/' + filename with open(s, "w") as f: for i in range(len(Y_nD)): print >> f, "%f %f"%(X_centrality[i], Y_nD[i]) return (X_centrality, Y_nD)
def combination_betweenness_closeness_centrality_cost_function(G, target): return math.fabs(UF.closeness_betweenness_combination_centrality(G) - target)
### NW Networks #n = 100 #for k in range(2, 8, 2): # for p in [0.1, 0.2, 0.3]: # G = NM.directed_newman_watts_strogatz_graph(n, k, p) # filename = "NW_CombinationX_n%dK%dp%f"%(n,k,p) # CombinationBetweennessClosenessExperiments(G, 0.05, 0.05, 0.99, filename) ## BA Networks #n = 100 #for m in range(2, 6): # G = NM.directed_barabasi_albert_graph(n, m) # filename = "BA_CombinationX_n%dm%d"%(n, m) # CombinationBetweennessClosenessExperiments(G, 0.05, 0.05, 0.99, filename) n = 1000; m = 3; G = NM.directed_barabasi_albert_graph(n, m) combine = UF.closeness_betweenness_combination_centrality(G) nD = SCT.controllability(G) print '************************ INIT INFO ************************\n' print nx.info(G) print 'average X: ', combine print 'Init ND:', nD print '************************ INIT INFO ************************\n' target = 0.15 new_G = SimulatedAnnealing(G, target, betweenness_centrality_cost_function) combine = UF.closeness_betweenness_combination_centrality(new_G) nD = SCT.controllability(new_G)