예제 #1
0
    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()
예제 #2
0
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
예제 #3
0
 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()
예제 #4
0
            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,
예제 #5
0
 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)
예제 #6
0
    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()