def test_creation_multienv(self): nb_env = 2 with warnings.catch_warnings(): warnings.filterwarnings("ignore") with make("rte_case5_example", test=True) as env: multi_envs = MultiEnvironment(env=env, nb_env=nb_env) obss, rewards, dones, infos = multi_envs.step( [env.action_space() for _ in range(nb_env)]) for ob in obss: assert isinstance(ob, CompleteObservation) obss = multi_envs.reset() for ob in obss: assert isinstance(ob, CompleteObservation) multi_envs.close()
def make_multi_env(env_init, nb_env): """ This function creates a multi environment compatible with what is expected in the baselines. In particular, it adds the observation_space, the action_space and the reward_range attribute. The way this function works is explained in the getting_started of grid2op. Attributes ----------- env_init: :class:`grid2op.Environment.Environment` The environment to duplicates nb_env: ``int`` The number of environment on with which you want to interact at the same time Returns ------- res: :class:`grid2op.Environment.MultiEnvironment` or :class:`grid2op.Environment.Environment` A copy of the initial environment (if nb_env = 1) or a MultiEnvironment based on the initial environment if nb_env >= 2. """ res = None nb_env = int(nb_env) if nb_env <= 0: raise RuntimeError( "Impossible to create a negative number of environments") if nb_env == 1: warnings.warn( "You asked to create 1 environment. We didn't use the MultiEnvironment for that. We instead " "created a copy of your initial environment.") res = Environment(**env_init.get_kwargs()) else: res = MultiEnvironment(nb_env=nb_env, env=env_init) res.observation_space = env_init.observation_space res.action_space = env_init.action_space res.reward_range = env_init.reward_range return res
def test_creation_multienv(self): nb_env = 1 with make("case5_example") as env: multi_envs = MultiEnvironment(env=env, nb_env=nb_env) multi_envs.close()
return res # Use custom params params = Parameters() # Create grid2op game environement env_init = None env = make(args.env_name, param=params, reward_class=MyReward, backend=backend) if args.nb_env > 1: env_init = env from grid2op.Environment import MultiEnvironment env = MultiEnvironment(int(args.nb_env), env) # TODO hack i'll fix in 0.9.0 env.action_space = env_init.action_space env.observation_space = env_init.observation_space env.fast_forward_chronics = lambda x: None env.chronics_handler = env_init.chronics_handler env.current_obs = env_init.current_obs nm_ = args.name if args.name is not None else DEFAULT_NAME try: train(env, name=nm_, iterations=args.num_train_steps, save_path=args.save_path, load_path=args.load_path, logs_dir=args.logs_dir,
def test_seeding(self): nb_env = 2 with warnings.catch_warnings(): warnings.filterwarnings("ignore") with make("rte_case5_example", test=True) as env: env.seed(2) multi_envs1 = MultiEnvironment(env=env, nb_env=nb_env) seeds_1 = multi_envs1.get_seeds() multi_envs1.close() multi_envs2 = MultiEnvironment(env=env, nb_env=nb_env) seeds_2 = multi_envs2.get_seeds() multi_envs2.close() env.seed(2) multi_envs3 = MultiEnvironment(env=env, nb_env=nb_env) seeds_3 = multi_envs3.get_seeds() multi_envs3.close() assert np.all(seeds_1 == seeds_3) assert np.any(seeds_1 != seeds_2)
def test_creation_multienv(self): nb_env = 2 with warnings.catch_warnings(): warnings.filterwarnings("ignore") with make("rte_case5_example", test=True) as env: multi_envs = MultiEnvironment(env=env, nb_env=nb_env) obss, rewards, dones, infos = multi_envs.step( [env.action_space() for _ in range(nb_env)]) for ob in obss: assert isinstance(ob, CompleteObservation) obss = multi_envs.reset() for ob in obss: assert isinstance(ob, CompleteObservation) # test some actions will not throw errors multi_envs.set_ff(7 * 288) multi_envs.set_chunk_size(128) obss = multi_envs.reset() seeds = multi_envs.get_seeds() multi_envs.close()