Beispiel #1
0
def create_collector_env_gym(seed):

    options = {
        "world_dim": int(16),
        "init_locator_type": int(3),
        "num_goals_green": int(1),
        "num_goals_red": int(1),
        "num_resources_green": int(0),
        "num_resources_red": int(0),
        "num_fuel": int(0),
        "num_obstacles": int(2),
        "goal_max": 20.0,
        "goal_init": 0.0,
        "agent_max_fuel": 100.0,
        "agent_init_fuel": 100.0,
        "agent_max_resources": 100.0,
        "agent_init_resources_green": 20.0,
        "agent_init_resources_red": 10.0,
    }

    kwargs = {
        "start_level":
        seed if seed is not None else 102,
        "num_levels":
        10,
        "additional_obs_spaces": [
            ProcgenEnv.C_Space("state_ship", False, (9, ), float, (-1e6, 1e6)),
            ProcgenEnv.C_Space(
                "state_goals", False,
                ((options["num_goals_green"] + options["num_goals_red"]) *
                 4, ), float, (-1e6, 1e6)),
            ProcgenEnv.C_Space("state_resources", False,
                               ((options["num_resources_green"] +
                                 options["num_resources_red"]) * 4, ), float,
                               (-1e6, 1e6)),
            ProcgenEnv.C_Space("state_obstacles", False,
                               (options["num_obstacles"] * 3, ), float,
                               (-1e6, 1e6))
        ],
        'max_episodes_per_game':
        0,
        "options":
        options
    }

    # env = gym.make('procgen:procgen-collector-v0',**kwargs)

    env = ProcgenEnv(num_envs=9, env_name="collector", **kwargs)
    dtv = DictToVec([
        space.name for space in kwargs["additional_obs_spaces"]
        if np.prod(space.shape) > 0
    ])
    env = StateTransformerEnv(env, dtv)
    return env
Beispiel #2
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--vision",
                        choices=["agent", "human"],
                        default="human")
    parser.add_argument("--record-dir", help="directory to record movies to")
    parser.add_argument(
        "--distribution-mode",
        default="hard",
        help="which distribution mode to use for the level generation")
    parser.add_argument("--level-seed",
                        type=int,
                        help="select an individual level to use")
    parser.add_argument("--use-generated-assets",
                        help="using autogenerated assets",
                        choices=["yes", "no"],
                        default="no")
    args = parser.parse_args()

    kwargs = {"distribution_mode": args.distribution_mode}
    kwargs["use_generated_assets"] = True if (args.use_generated_assets
                                              == "yes") else False

    if args.level_seed is not None:
        kwargs["start_level"] = args.level_seed
        kwargs["num_levels"] = 1

    world_dim = int(10)
    kwargs["additional_info_spaces"] = [
        ProcgenEnv.C_Space("state", False, (7 + world_dim * world_dim, ),
                           bytes, (0, 255))
    ]

    kwargs["options"] = {
        'world_dim': world_dim,
        'wall_chance': 0.5,
        'fire_chance': 0.3,
        'water_chance': 0.2,
        'num_keys': int(2),
        'num_doors': int(1),
        'with_grid_steps': True,
        'completion_bonus': 10.0,
        'fire_bonus': -5.0,
        'water_bonus': -2.0,
        'action_bonus': -1.0,
    }

    ia = ProcgenInteractive(args.vision, True, env_name="heistpp", **kwargs)

    ia.skip_info_out("state")

    step_cb = HeistppStatePlotter(world_dim, 1)

    ia.add_step_callback(step_cb)

    ia.run(record_dir=args.record_dir)
Beispiel #3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--vision", choices=["agent", "human"], default="human")
    parser.add_argument("--record-dir", help="directory to record movies to")
    parser.add_argument("--distribution-mode", default="hard", help="which distribution mode to use for the level generation")
    parser.add_argument("--level-seed", type=int, help="select an individual level to use")
    parser.add_argument("--use-generated-assets", help="using autogenerated assets", choices=["yes","no"], default="no")
    args = parser.parse_args()

    kwargs = {"distribution_mode": args.distribution_mode}
    kwargs["use_generated_assets"] = True if (args.use_generated_assets == "yes") else False
    if args.level_seed is not None:
        kwargs["start_level"] = args.level_seed
        kwargs["num_levels"] = 1

    world_dim = int(10)
    kwargs["additional_info_spaces"] = [ProcgenEnv.C_Space("state", False, (7+world_dim*world_dim,), bytes, (0,255))]

    kwargs["options"] = {
        'world_dim':world_dim,
        'wall_chance':0.5,
        'fire_chance':0.3,
        'water_chance':0.2,
        'num_keys':int(2),
        'num_doors':int(1),
        'with_grid_steps':True,
        'completion_bonus':10.0,
        'fire_bonus':-5.0,
        'water_bonus':-2.0,
        'action_bonus':-1.0,
        }

    env = gym.make('procgen:procgen-heistpp-v0')

    # env = ProcgenEnv(num_envs=1, env_name="heistpp", **kwargs)

    obs = env.reset()
    step = 0
    while True:
        env.render()
        obs, rew, done, info = env.step(np.array([env.action_space.sample()]))
        print(f"step {step} reward {rew} done {done}")
        # print(info[0]['state'])
        step += 1
        if done:
            break

    env.close()