# Create a fully connected graph G = nx.complete_graph(12) # Both node and edge dynamics are required G.graph['node_dyn'] = True G.graph['edge_dyn'] = True # All nodes are chaotic Lorenz oscillators netevo.set_all_node_dynamics(G, lorenz_node_dyn) # All edges follow the adaptive rule netevo.set_all_edge_dynamics(G, adaptive_law_edge_dyn) # Randomly assign node states netevo.rnd_uniform_node_states(G, [(0.1, 20.0), (0.1, 20.0), (0.1, 20.0)]) # Edges all start with a very weak strength netevo.rnd_uniform_edge_states(G, [(0.00000001, 0.00000001)]) #========================================= # DEFINE THE VISUAL REPORTER #========================================= # Create the figure to display the visualization fig = plt.figure(figsize=(6.5,6.5)) # Node positions to use for the visualization pos = nx.circular_layout(G) # Function to generate the visualisation of the network def visual_reporter (G, t): plt.clf() n_sizes = [] for i in G.nodes(): new_size = 100.0 * G.node[i]['state'][0]
G.node[n]['color'] = 'b' G.node[12]['color'] = 'r' # Both node and edge dynamics are required G.graph['node_dyn'] = True G.graph['edge_dyn'] = True # All nodes are chaotic Lorenz oscillators netevo.set_all_node_dynamics(G, lorenz_node_dyn) # All edges follow the adaptive rule netevo.set_all_edge_dynamics(G, netevo.no_edge_dyn) # Randomly assign node states netevo.rnd_uniform_node_states (G, [(3.0, 10.0), (3.0, 10.0), (3.0, 10.0)]) # Edges all start with a very weak strength netevo.rnd_uniform_edge_states (G, [(0.3, 0.3)]) # Our pinning node has no dynamics just fixed states that change G.node[12]['state'] = [30.0, 30.0, 30.0] G.node[12]['dyn'] = pinner_node_dyn #========================================= # DEFINE THE VISUAL REPORTER #========================================= # Turn on animation in pylab # http://stackoverflow.com/questions/8965055/basic-animation-with-matplotlibs-pyplot pylab.ion() # Create the figure to display the visualization fig = plt.figure(figsize=(6.5,6.5)) # Node positions to use for the visualization