Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def simulation(prob):
- N = 100
- graph = Graph()
- graph.generate_vertices(N, prob[0])
- # dodajemy sąsiadów jak w automacie
- graph.add_all_neighbors(N)
- states = []
- active_components = []
- iterations = [i for i in range(200)]
- states.append(graph.get_active_vertices())
- active_components.append(graph.vertices_in_strongly_connected_component())
- for i in range(199):
- graph.simulate()
- states.append(graph.get_active_vertices())
- active_components.append(graph.vertices_in_strongly_connected_component())
- percent = [x/y for x,y in zip(active_components, states)]
- plt.figure(figsize=(10.0,10.0))
- plt.title("Liczba aktywnych wierzchołków w danej iteracji")
- plt.plot(iterations,states, label="układ 1")
- plt.savefig('aktywne_wierzcholki_' + str(prob[0]) + str(prob[1]) + '.png')
- with open('aktywne_wierzcholki_' + str(prob[0]) + '.csv', mode='a') as active_file:
- active_writer = csv.writer(active_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
- active_writer.writerow(states)
- plt.figure(figsize=(10.0,10.0))
- plt.title("Największy silnie połączony komponent w danej iteracji")
- plt.plot(iterations,active_components, label="układ 1")
- plt.savefig('strongest_' + str(prob[0]) + str(prob[1]) + '.png')
- with open('strongest_' + str(prob[0]) + '.csv', mode='a') as strongest_file:
- strongest_writer = csv.writer(strongest_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
- strongest_writer.writerow(active_components)
- plt.figure(figsize=(10.0,10.0))
- plt.title("Wierzchołki znajdujące się w silnie połączonym komponencie w danej iteracji")
- plt.plot(iterations,percent, label="układ 1")
- plt.savefig('procent' + str(prob[0]) + str(prob[1]) + '.png')
- with open('procent' + str(prob[0]) + '.csv', mode='a') as percent_file:
- percent_writer = csv.writer(percent_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
- percent_writer.writerow(active_components)
- pool = ThreadPool(8)
- probs = [(round((i%6 + 1)*0.1, 1), int(i/6) ) for i in range(10)]
- pool.map(simulation, probs)
- #close the pool and wait for the work to finish
- pool.close()
- pool.join()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement