Пример #1
0
 def preprocess(self, obs):
     pov = obs['pov'].astype(np.float) / 255.0
     item = np.concatenate([
         flatten(self.observation_space['equipped_items'],
                 obs['equipped_items']),
         flatten(self.observation_space['inventory'], obs['inventory'])
     ])
     return pov, item
Пример #2
0
def test_flatten(base_space: gym.Space):
    sparse_space = Sparse(base_space, sparsity=0.)
    base_space.seed(123)
    base_sample = base_space.sample()
    flattened_base_sample = flatten(base_space, base_sample)

    sparse_space.seed(123)
    sparse_sample = sparse_space.sample()
    flattened_sparse_sample = flatten(sparse_space, sparse_sample)

    assert equals(flattened_base_sample, flattened_sparse_sample)
Пример #3
0
 def _preprocess_transition(self, obs, act, next_obs):
     if self.density_type == STATE_DENSITY:
         return flatten(self.obs_space, obs)
     elif self.density_type == STATE_ACTION_DENSITY:
         return np.concatenate(
             [flatten(self.obs_space, obs),
              flatten(self.act_space, act)])
     elif self.density_type == STATE_STATE_DENSITY:
         return np.concatenate([
             flatten(self.obs_space, obs),
             flatten(self.obs_space, next_obs)
         ])
     else:
         raise ValueError(f"Unknown density type {self.density_type}")
Пример #4
0
def test_flatten(space, sample, expected_flattened_sample):
    assert sample in space

    flattened_sample = utils.flatten(space, sample)
    assert flattened_sample.shape == expected_flattened_sample.shape
    assert flattened_sample.dtype == expected_flattened_sample.dtype
    assert np.all(flattened_sample == expected_flattened_sample)
Пример #5
0
    def Step(self, request, context):  # StepRequest
        try:
            # Get action space
            action_space = envs.get_action_space_info(request.instanceId)
            actions = Unserializer.unserializeAction(action_space,
                                                     request.actions)

            # Returns 0 = obs_jsonable, 1 = reward, 2 = done, 3 = info in object (e.g. {'TimeLimit.truncated': True})
            observation, reward, isDone, info = envs.step(
                request.instanceId, actions, request.render)

            # Get Observation Space Info (gym.spaces)
            res_env = envs._lookup_env(request.instanceId)
            res_osi = res_env.observation_space

            # Flatten this so we can send over wire
            observation = gym_utils.flatten(
                res_osi, observation)  # @todo: res_osi should be cached

            # Encode Info (sometimes it can contain a bool)
            info = ProtoUtil.json_object_to_proto_map(info)
            res = api_v1.StepResponse(reward=reward,
                                      isDone=isDone,
                                      info=info,
                                      observation=observation)
        except:
            print(sys.exc_info())
            traceback.print_tb(sys.exc_info()[2])
            raise

        return res
Пример #6
0
def test_flat_space_contains_flat_points(space):
    some_samples = [space.sample() for _ in range(10)]
    flattened_samples = [utils.flatten(space, sample) for sample in some_samples]
    flat_space = utils.flatten_space(space)
    for i, flat_sample in enumerate(flattened_samples):
        assert (
            flat_sample in flat_space
        ), f"Expected sample #{i} {flat_sample} to be in {flat_space}"
Пример #7
0
def test_flat_space_contains_flat_points(space):
    some_samples = [space.sample() for _ in range(10)]
    flattened_samples = [
        utils.flatten(space, sample) for sample in some_samples
    ]
    flat_space = utils.flatten_space(space)
    for i, flat_sample in enumerate(flattened_samples):
        assert flat_sample in flat_space,\
            'Expected sample #{} {} to be in {}'.format(i, flat_sample, flat_space)
Пример #8
0
def test_flatten_roundtripping(space):
    some_samples = [space.sample() for _ in range(10)]
    flattened_samples = [utils.flatten(space, sample) for sample in some_samples]
    roundtripped_samples = [
        utils.unflatten(space, sample) for sample in flattened_samples
    ]
    for i, (original, roundtripped) in enumerate(
        zip(some_samples, roundtripped_samples)
    ):
        assert compare_nested(
            original, roundtripped
        ), f"Expected sample #{i} {original} to equal {roundtripped}"
Пример #9
0
    def Step(self, request, context): # StepRequest
        print("[Server] Step")

        # Unserialize Actions based on action_space
        action = Unserializer.unserializeAction(self.action_space_info, request.actions)

        # Take step
        observation, reward, isDone, info = self.step(action, request.render)

        # Flatten this so we can send over wire
        observation = gym_utils.flatten(self.observation_space_info, observation) # @todo: res_osi should be cached

        # Encode Info (sometimes it can contain a bool)
        info = ProtoUtil.json_object_to_proto_map(info)
        res = api_v1.StepResponse(reward=reward, isDone=isDone, info=info, observation=observation)

        return res
Пример #10
0
def test_dtypes(original_space, expected_flattened_dtype):
    flattened_space = utils.flatten_space(original_space)

    original_sample = original_space.sample()
    flattened_sample = utils.flatten(original_space, original_sample)
    unflattened_sample = utils.unflatten(original_space, flattened_sample)

    assert flattened_space.contains(
        flattened_sample
    ), "Expected flattened_space to contain flattened_sample"
    assert flattened_space.dtype == expected_flattened_dtype, "Expected flattened_space's dtype to equal " \
                                                              "{}".format(expected_flattened_dtype)

    assert flattened_sample.dtype == flattened_space.dtype, "Expected flattened_space's dtype to equal " \
                                                            "flattened_sample's dtype "

    compare_sample_types(original_space, original_sample, unflattened_sample)
Пример #11
0
def test_flatten_dim(space):
    sample = utils.flatten(space, space.sample())
    (single_dim,) = sample.shape
    flatdim = utils.flatdim(space)
    assert single_dim == flatdim, f"Expected {single_dim} to equal {flatdim}"
Пример #12
0
def map_raw_state_to_observation(observation_space, raw_game_state, player, opponent):
    return flatten(observation_space, map_raw_state_to_state(raw_game_state, player, opponent))
Пример #13
0
def test_flatten_dim(space):
    sample = utils.flatten(space, space.sample())
    (single_dim, ) = sample.shape
    flatdim = utils.flatdim(space)
    assert single_dim == flatdim, "Expected {} to equal {}".format(
        single_dim, flatdim)
Пример #14
0
def flatten_namedtuple_space_sample(space: NamedTupleSpace, x: NamedTuple):
    if isinstance(x, Batch):
        x = x.as_tuple()
    return np.concatenate(
        [flatten(s, x_part) for x_part, s in zip(x, space.spaces)])
Пример #15
0
 def _get_agent_obs(self, agent, local_env):
     return flatten(self.observation_space_n[0], self._draw_obs(agent, local_env))