def ClosenessCentralityExperiment(G, min_target, max_target, filename): print nx.info(G) print 'average closeness centrality: ', UF.average_closeness_centrality(G) X_closeness_centrality = [] Y_nD = [] target = min_target while target <= max_target: copyG = G.copy() new_G = SimulatedAnnealing(copyG, target, closeness_centrality_cost_function) closeness_centrality = UF.average_closeness_centrality(new_G) nD = SCT.controllability(new_G) X_closeness_centrality.append(closeness_centrality) Y_nD.append(nD) print "target = ", target, " ClosenessC = ", closeness_centrality, 'nD = ', nD target += 0.05 s = 'results/' + filename with open(s, "w") as f: for i in range(len(Y_nD)): print >> f, "%f %f"%(X_closeness_centrality[i], Y_nD[i]) return (X_closeness_centrality, Y_nD)
def closeness_centrality_cost_function(G, target): return math.fabs(UF.average_closeness_centrality(G) - target)