def _build_wrapped_situation_space_from_ling_vars(self, ling_vars): situation_space_builder = DataSpaceBuilder() for ling_var in ling_vars: dim_upper = (len(ling_var.membership_funcs) - 1) dim = Dimension(lower=0, upper=dim_upper) situation_space_builder.add_dim(dim) return situation_space_builder.create_space()
def _gen_continuous_obs_space(self, wrapped_env): lower_vector = wrapped_env.observation_space.low upper_vector = wrapped_env.observation_space.high obs_space_builder = DataSpaceBuilder() for (lower, upper) in zip(lower_vector, upper_vector): obs_space_builder.add_dim(Dimension(lower, upper)) return obs_space_builder.create_space()
def create_obs_space(self): """Need to build obs space for real mux manually because its randomly generated data may not cover the entire [0.0, 1.0] range on one or all feautre dimensions. Automatic obs space generation in ClassificationEnvironment may therefore not create the truly correct obs space, hence creating it here is necessary.""" num_features = self._total_bits obs_space_builder = DataSpaceBuilder() for _ in range(num_features): obs_space_builder.add_dim(Dimension(0.0, 1.0)) return obs_space_builder.create_space()
def _gen_custom_obs_space(self): obs_space_builder = DataSpaceBuilder() # order of dims is [cart_pos, cart_vel, pole_ang, pole_vel] obs_space_builder.add_dim(Dimension(_CART_POS_LOWER, _CART_POS_UPPER)) obs_space_builder.add_dim(Dimension(_CART_VEL_LOWER, _CART_VEL_UPPER)) obs_space_builder.add_dim(Dimension(_POLE_ANG_LOWER, _POLE_ANG_UPPER)) obs_space_builder.add_dim(Dimension(_POLE_VEL_LOWER, _POLE_VEL_UPPER)) return obs_space_builder.create_space()
def _gen_obs_space(self, data): obs_space_builder = DataSpaceBuilder() for column_idx in range(self._num_features): feature_vec = data.iloc[:, column_idx] obs_space_builder.add_dim(self._make_obs_space_dim(feature_vec)) return obs_space_builder.create_space()
def _make_single_dim_situation_space(dim): builder = DataSpaceBuilder() builder.add_dim(dim) return builder.create_space()
def _gen_x_y_coordinates_obs_space(self, grid_size): obs_space_builder = DataSpaceBuilder() for _ in range(2): # x, y obs_space_builder.add_dim(Dimension(0, grid_size - 1)) return obs_space_builder.create_space()
def _gen_discrete_obs_space(self, wrapped_env): num_obss = wrapped_env.observation_space.n obs_space_builder = DataSpaceBuilder() obs_space_builder.add_dim(Dimension(lower=0, upper=(num_obss - 1))) return obs_space_builder.create_space()
def _gen_unit_hypercube_obs_space(self, num_dimensions): obs_space_builder = DataSpaceBuilder() for _ in range(num_dimensions): obs_space_builder.add_dim(Dimension(0.0, 1.0)) return obs_space_builder.create_space()
def _gen_custom_obs_space(self): obs_space_builder = DataSpaceBuilder() # order of dims is [pos, vel] obs_space_builder.add_dim(Dimension(_POS_LOWER, _POS_UPPER)) obs_space_builder.add_dim(Dimension(_VEL_LOWER, _VEL_UPPER)) return obs_space_builder.create_space()