Exemple #1
0
def init_env_sampler(env_name,
                     seed=None,
                     experiment_id=None,
                     default_env=False,
                     init_dist_params=None,
                     test_dist_params=[[0.0, 0.1], 100],
                     dist_type='gaussian',
                     rescale=True):
    if env_name == "cartpole":
        # the context distribution corresponds to the cart mass, pole mass and
        # pole length
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([1.0, 0.1, 0.5], 1e-1)

        env_constructor = cartpole.Cartpole

    elif env_name == "reacher1D":
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([1.0], 1e-1)

        env_constructor = reacher_constructor

    elif env_name == 'lunar-lander':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([120.0, 20.0, 0.6], 1e-1)

        env_constructor = lunar_lander_constructor if not default_env \
            else lunar_lander.LunarLander

    elif env_name == 'mountain-car':
        # the conxtext distribution corresponds to min_position, max_position,
        # max_speed, goal_position, thrust magnitude and gravity
        if dist_type == 'gaussian' and init_dist_params is None:
            # Is the 1e-2 important?
            # S = 1e-1 * S.mm(S.t()) + 1e-2 * ...
            init_dist_params = create_def_gaussian(
                [1.2, 0.6, 0.07, 0.001, -0.0025], 1e-1)
        env_constructor = mountain_car.MountainCarEnv

    elif env_name.startswith('cartpole-swingup-pole-only'):
        env_constructor = cartpole_swingup_pole_only_constructor
        default_params = [0.5, 1.0]
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian(default_params, 1e-2)

    elif env_name.startswith('cartpole-swingup'):
        if env_name.endswith('-pl'):
            env_constructor = cartpole_swingup_pole_length_constructor
            idx = slice(0, 1)
        elif env_name.endswith('-pm'):
            env_constructor = cartpole_swingup_pole_mass_constructor
            idx = slice(1, 2)
        elif env_name.endswith('-cm'):
            env_constructor = cartpole_swingup_cart_mass_constructor
            idx = slice(2, 3)
        elif env_name.endswith('-cd'):
            env_constructor = cartpole_swingup_cart_damp_constructor
            idx = slice(3, 4)
        else:
            env_constructor = cartpole_swingup_constructor
            idx = slice(0, 4)

        default_params = [0.5, 0.5, 1.0, 0.1]
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian(default_params[idx], 1e-2)

    elif env_name == 'hopper':
        # Context order : foot friction, torso size, joint damping
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([2.0, 0.05, 1.0], 1e-1)

        env_constructor = partial(hopper_constructor,
                                  experiment_id=experiment_id
                                  ) if not default_env else hopper.HopperEnv()

    elif env_name == 'hopper-torso-only':
        # Context is only torso size
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.05], 1e-1)

        env_constructor = partial(hopper_torso_only_constructor,
                                  experiment_id=experiment_id
                                  ) if not default_env else hopper.HopperEnv()

    elif env_name == 'hopper-density-only':
        # Context is only torso size
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([1000.0], 1e-1)

        env_constructor = partial(hopper_density_only_constructor,
                                  experiment_id=experiment_id
                                  ) if not default_env else hopper.HopperEnv()

    elif env_name == 'hopper-damping-only':
        # Context is only damping
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.0], 1e-1)

        env_constructor = partial(hopper_damping_only_constructor,
                                  experiment_id=experiment_id
                                  ) if not default_env else hopper.HopperEnv()

    elif env_name == 'hopper-friction-only':
        # Context is only friction
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([2.0], 1e-1)

        env_constructor = partial(hopper_friction_only_constructor,
                                  experiment_id=experiment_id
                                  ) if not default_env else hopper.HopperEnv()

    elif env_name == 'half-cheetah':
        # Context order : torso_size, joint damping, friction
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.046, 0.01, 0.0], 1e-1)

        env_constructor = partial(
            half_cheetah_constructor, experiment_id=experiment_id
        ) if not default_env else half_cheetah.HalfCheetahEnv()

    elif env_name == 'half-cheetah-torso':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.046], 1e-1)

        env_constructor = partial(
            half_cheetah_torso_only_constructor, experiment_id=experiment_id
        ) if not default_env else half_cheetah.HalfCheetahEnv()

    elif env_name == 'half-cheetah-density':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([1000.0], 1e-1)

        env_constructor = partial(
            half_cheetah_density_constructor, experiment_id=experiment_id
        ) if not default_env else half_cheetah.HalfCheetahEnv()

    elif env_name == 'half-cheetah-damping':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.0], 1e-1)

        env_constructor = partial(
            half_cheetah_damping_only_constructor, experiment_id=experiment_id
        ) if not default_env else half_cheetah.HalfCheetahEnv()

    elif env_name == 'half-cheetah-friction':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([0.4], 1e-1)

        env_constructor = partial(
            half_cheetah_friction_constructor, experiment_id=experiment_id
        ) if not default_env else half_cheetah.HalfCheetahEnv()

    elif env_name == 'humanoid':
        if dist_type == 'gaussian' and init_dist_params is None:
            init_dist_params = create_def_gaussian([40, 9.8, 0.1], 1e-1)

        env_constructor = humanoid_constructor
    else:
        raise ValueError('Environment not supported!')

    dist, init_dist_params, test_dist = init_dist(init_dist_params,
                                                  test_dist_params,
                                                  dist_type,
                                                  rescale=rescale)
    init_dist_params = list(init_dist_params)

    return EnvSampler(env_constructor, dist, init_dist_params, seed, env_name,
                      test_dist)
Exemple #2
0
def hopper_friction_only_constructor(z1, experiment_id=None):

    return hopper.HopperEnv(foot_friction=z1, experiment_id=experiment_id)
Exemple #3
0
def hopper_damping_only_constructor(z1, experiment_id=None):

    return hopper.HopperEnv(joint_damping=z1, experiment_id=experiment_id)
Exemple #4
0
def hopper_density_only_constructor(z1, experiment_id=None):

    return hopper.HopperEnv(torso_density=z1, experiment_id=experiment_id)
Exemple #5
0
def hopper_torso_only_constructor(z1, experiment_id=None):

    return hopper.HopperEnv(torso_size=z1, experiment_id=experiment_id)
Exemple #6
0
def hopper_constructor(z1, z2, z3, experiment_id=None):

    return hopper.HopperEnv(foot_friction=z1,
                            torso_size=z2,
                            joint_damping=z3,
                            experiment_id=experiment_id)