# -----------------------------------------------------------------------------# # initialize graph if not load_data: graph = nx.connected_watts_strogatz_graph(num_nodes, 3, 0.7) else: graph = pickle.load(open(load_prefix+"graph.p", "rb")) # get the adjencency matrix adjacency_m = nx.to_numpy_matrix(graph) adjacency_m = np.squeeze(np.asarray(adjacency_m)) if plot_graph: plt.axis('equal') fig1 = nxmod.draw_circular(deploy_traits_init, graph,linewidths=3) plt.show() plt.axis('equal') fig2 = nxmod.draw_circular(deploy_traits_desired, graph, linewidths=3) plt.show() # -----------------------------------------------------------------------------# # optimization num_timesteps = int(t_max_sim / delta_t) traj_ratio = {}
deploy_traits_init_0 = pickle.load(open(prefix+"ti_0.p", "rb")) deploy_traits_desired_0 = pickle.load(open(prefix+"td_0.p", "rb")) deploy_traits_init_1 = pickle.load(open(prefix+"ti_1.p", "rb")) deploy_traits_desired_1 = pickle.load(open(prefix+"td_1.p", "rb")) deploy_traits_init_2 = pickle.load(open(prefix+"ti_2.p", "rb")) deploy_traits_desired_2 = pickle.load(open(prefix+"td_2.p", "rb")) delta_t = 0.04 # time step # -----------------------------------------------------------------------------# # Plot initial and final graphs fig1 = nxmod.draw_circular(deploy_traits_init_0, graph, linewidths=3) plt.axis('equal') plt.show() fig2 = nxmod.draw_circular(deploy_traits_desired_0,graph, linewidths=3) plt.axis('equal') plt.show() fig3 = nxmod.draw_circular(deploy_traits_desired_1,graph, linewidths=3) plt.axis('equal') plt.show() fig4 = nxmod.draw_circular(deploy_traits_desired_2,graph, linewidths=3) plt.axis('equal') plt.show() # -----------------------------------------------------------------------------#
adjacency_m = nx.to_numpy_matrix(graph) adjacency_m = np.squeeze(np.asarray(adjacency_m)) # Build trait-species matrix. rk = 0 while rk != num_species: species_traits, rk, s = generate_Q(num_species, num_traits) # Build trait distribution. deploy_robots_init = np.random.randint(0, 100, size=(num_nodes, num_species)) deploy_robots_init = deploy_robots_init * total_num_robots / np.sum(np.sum(deploy_robots_init, axis=0)) sum_species = np.sum(deploy_robots_init, axis=0) deploy_traits_init = np.dot(deploy_robots_init, species_traits) fig = plt.figure() nxmod.draw_circular(deploy_robots_init, graph, linewidths=3) plt.axis("equal") plt.title("nhops = infinity") plt.show() fig.savefig("./plots/nhops_all.eps") for nhops in range(5): neighbor_nodes = GetNeighbors(adjacency_m, nhops) deploy_robots_init_hops = BuildLocalDistribution(deploy_robots_init, node_of_interest, neighbor_nodes) fig = plt.figure() nxmod.draw_circular(deploy_robots_init_hops, graph, linewidths=3) plt.axis("equal") plt.title("nhops = %d" % nhops) plt.show() fig.savefig("./plots/nhops_%d.eps" % nhops)
# allocate the following intial distribs as previous final deploy_robots_init_1 = deploy_robots_final_0.copy() deploy_robots_init_2 = deploy_robots_final_1.copy() # calculate trait distribs deploy_traits_init_0 = np.dot(deploy_robots_init_0, species_traits) deploy_traits_desired_0 = np.dot(deploy_robots_final_0, species_traits) deploy_traits_desired_1 = np.dot(deploy_robots_final_1, species_traits) deploy_traits_desired_2 = np.dot(deploy_robots_final_2, species_traits) # -----------------------------------------------------------------------------# # plot graph nxmod.draw_circular(deploy_traits_desired_0,graph, linewidths=3) plt.axis('equal') plt.show() # -----------------------------------------------------------------------------# # find optimal transition matrix init_transition_values = np.array([]) if do_optimize: print "****" print "Optimizing 1st transition matrix" transition_m_0 = optimal_transition_matrix(init_transition_values, adjacency_m, deploy_robots_init_0, deploy_traits_desired_0, species_traits, t_max, max_rate, l_norm, match, optimizing_t=True, force_steady_state=FSS)