parser.add_argument("-n", "--name", required=True, help="Run name") parser.add_argument( "--mode", default='forest', choices=['forest', 'double_attack'], help= "GridWorld mode, could be 'forest' or 'double_attack', default='forest'" ) args = parser.parse_args() config = args.mode # tweak count of agents in this mode to simplify exploration if args.mode == 'double_attack': COUNT_TIGERS = 20 COUNT_DEERS = 512 config = data.config_double_attack(MAP_SIZE) device = torch.device("cuda" if args.cuda else "cpu") saves_path = os.path.join("saves", args.name) os.makedirs(saves_path, exist_ok=True) m_env = magent.GridWorld(config, map_size=MAP_SIZE) # two groups of animal deer_handle, tiger_handle = m_env.get_handles() def reset_env(): m_env.reset() m_env.add_walls(method="random", n=MAP_SIZE * MAP_SIZE * WALLS_DENSITY) m_env.add_agents(deer_handle, method="random", n=COUNT_DEERS) m_env.add_agents(tiger_handle, method="random", n=COUNT_TIGERS)
default=50, help="Count of deers, default=50") parser.add_argument( "--mode", default='forest', choices=['forest', 'double_attack'], help= "GridWorld mode, could be 'forest' or 'double_attack', default='forest'" ) args = parser.parse_args() if args.mode == 'forest': config = data.config_forest(args.map_size) elif args.mode == 'double_attack': config = data.config_double_attack(args.map_size) else: config = None env = magent.GridWorld(config, map_size=args.map_size) env.set_render_dir(args.render) deer_handle, tiger_handle = env.get_handles() env.reset() env.add_walls(method="random", n=args.map_size * args.map_size * args.walls_density) env.add_agents(deer_handle, method="random", n=args.deers) env.add_agents(tiger_handle, method="random", n=args.tigers) v = env.get_view_space(tiger_handle) v = (v[-1], ) + v[:2]