Guest User

Untitled

a guest
Jul 21st, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.40 KB | None | 0 0
  1. from multiprocessing.dummy import Pool as ThreadPool
  2. def simulation(prob):
  3.     N = 100
  4.     graph = Graph()
  5.     graph.generate_vertices(N, prob[0])
  6.  
  7.     # dodajemy sąsiadów jak w automacie
  8.     graph.add_all_neighbors(N)
  9.     states = []
  10.     active_components = []
  11.     iterations = [i for i in range(200)]
  12.     states.append(graph.get_active_vertices())
  13.     active_components.append(graph.vertices_in_strongly_connected_component())
  14.     for i in range(199):
  15.         graph.simulate()
  16.         states.append(graph.get_active_vertices())
  17.         active_components.append(graph.vertices_in_strongly_connected_component())
  18.        
  19.     percent = [x/y for x,y in zip(active_components, states)]
  20.  
  21.     plt.figure(figsize=(10.0,10.0))
  22.     plt.title("Liczba aktywnych wierzchołków w danej iteracji")
  23.     plt.plot(iterations,states, label="układ 1")
  24.     plt.savefig('aktywne_wierzcholki_' + str(prob[0]) + str(prob[1]) + '.png')
  25.    
  26.     with open('aktywne_wierzcholki_' + str(prob[0]) + '.csv', mode='a') as active_file:
  27.         active_writer = csv.writer(active_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  28.         active_writer.writerow(states)
  29.  
  30.     plt.figure(figsize=(10.0,10.0))
  31.     plt.title("Największy silnie połączony komponent w danej iteracji")
  32.     plt.plot(iterations,active_components, label="układ 1")
  33.     plt.savefig('strongest_' + str(prob[0]) + str(prob[1]) + '.png')
  34.  
  35.     with open('strongest_' + str(prob[0]) + '.csv', mode='a') as strongest_file:
  36.         strongest_writer = csv.writer(strongest_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  37.         strongest_writer.writerow(active_components)
  38.  
  39.     plt.figure(figsize=(10.0,10.0))
  40.     plt.title("Wierzchołki znajdujące się w silnie połączonym komponencie w danej iteracji")
  41.     plt.plot(iterations,percent, label="układ 1")
  42.     plt.savefig('procent' + str(prob[0]) + str(prob[1]) + '.png')
  43.    
  44.     with open('procent' + str(prob[0]) + '.csv', mode='a') as percent_file:
  45.         percent_writer = csv.writer(percent_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  46.         percent_writer.writerow(active_components)
  47.  
  48.  
  49. pool = ThreadPool(8)
  50. #tutaj generuję listę parametrów, dla których chcę wykonać symulację
  51. probs = [(round((i%6 + 1)*0.1, 1), int(i/6) ) for i in range(10)]
  52. pool.map(simulation, probs)
  53. #close the pool and wait for the work to finish
  54. pool.close()
  55. pool.join()
Advertisement
Add Comment
Please, Sign In to add comment