from globals import * from functions import * from functions_plotting import * def run_mapf_alg(alg, params, final_render: bool = True): # set_seed(random_seed_bool=False, seed=5) # set_seed(random_seed_bool=False, seed=123) # set_seed(random_seed_bool=False, seed=2953) set_seed(random_seed_bool=True) # img_dir = '10_10_my_rand.map' # img_dir = '15-15-two-rooms.map' # img_dir = '15-15-four-rooms.map' # img_dir = '15-15-six-rooms.map' # img_dir = '15-15-eight-rooms.map' # img_dir = '10_10_my_corridor.map' # img_dir = 'empty-32-32.map' # img_dir = 'random-32-32-10.map' img_dir = 'random-32-32-20.map' # img_dir = 'maze-32-32-4.map' # img_dir = 'maze-32-32-2.map' # img_dir = 'room-32-32-4.map' # n_agents = 700 # n_agents = 600 # n_agents = 550 # n_agents = 500 # n_agents = 450 # n_agents = 400 # n_agents = 350 # n_agents = 300 # n_agents = 250 # n_agents = 200 # n_agents = 170 # n_agents = 150 # n_agents = 100 n_agents = 80 # n_agents = 70 # n_agents = 50 # n_agents = 40 # n_agents = 15 # n_agents = 10 # n_agents = 3 path_to_maps: str = '../maps' path_to_heuristics: str = '../logs_for_heuristics' path_to_sv_maps: str = '../logs_for_freedom_maps' img_np, (height, width) = get_np_from_dot_map(f'{path_to_maps}/{img_dir}') map_dim = (height, width) nodes, nodes_dict = build_graph_from_np(img_np, show_map=False) h_dict: Dict[str, np.ndarray] = exctract_h_dict(img_dir[:-4]) # blocked_sv_map: np.ndarray = get_blocked_sv_map(img_dir, folder_dir=path_to_sv_maps) # sv_map: np.ndarray = get_sv_map(img_dir, folder_dir=path_to_sv_maps) start_nodes: List[Node] = random.sample(nodes, n_agents) goal_nodes: List[Node] = random.sample(nodes, n_agents) # start_nodes: List[Node] = [nodes_dict['4_8'], nodes_dict['4_4'], nodes_dict['8_8']] # goal_nodes: List[Node] = [nodes_dict['4_2'], nodes_dict['4_4'], nodes_dict['8_8']] # start_nodes: List[Node] = [nodes_dict['4_8'], nodes_dict['4_4']] # goal_nodes: List[Node] = [nodes_dict['4_2'], nodes_dict['4_4']] # goal_nodes: List[Node] = [nodes_dict['4_1'], nodes_dict['4_0']] # start_nodes: List[Node] = [nodes_dict['4_0'], nodes_dict['4_1'], nodes_dict['4_2']] # goal_nodes: List[Node] = [nodes_dict['4_1'], nodes_dict['4_0'], nodes_dict['4_2']] # start_nodes: List[Node] = [nodes_dict['4_0'], nodes_dict['4_1'], nodes_dict['4_2'], nodes_dict['4_3']] # goal_nodes: List[Node] = [nodes_dict['4_1'], nodes_dict['4_0'], nodes_dict['4_2'], nodes_dict['4_3']] params['img_np'] = img_np params['to_render'] = False # params['sv_map'] = sv_map # params['blocked_sv_map'] = blocked_sv_map paths_dict, info = alg( start_nodes, goal_nodes, nodes, nodes_dict, h_dict, map_dim, params ) # plot if final_render and paths_dict is not None: agents: List = info['agents'] plt.close() fig, ax = plt.subplots(1, 2, figsize=(14, 7)) plot_rate = 0.001 # plot_rate = 0.5 # plot_rate = 1 max_path_len = max([len(a.path) for a in agents]) soc = sum([len(a.path) for a in agents]) print(f'\n{max_path_len=}') print(f'{soc=}') for i in range(max_path_len): # update curr nodes for a in agents: a.update_curr_node(i) # plot the iteration i_agent = agents[0] plot_info = { 'img_np': img_np, 'agents': agents, 'i_agent': i_agent, 'iteration': i, } plot_step_in_env(ax[0], plot_info) plt.pause(plot_rate) plt.show()