garage._environment
¶
Base Garage Environment API.
- class InOutSpec[source]¶
Describes the input and output spaces of a primitive or module.
- input_space :akro.Space¶
- output_space :akro.Space¶
- class EnvSpec(observation_space, action_space, max_episode_length=None)[source]¶
Bases:
InOutSpec
Describes the observations, actions, and time horizon of an MDP.
- Parameters
observation_space (akro.Space) – The observation space of the env.
action_space (akro.Space) – The action space of the env.
max_episode_length (int) – The maximum number of steps allowed in an episode.
- property action_space¶
Get action space.
- Returns
Action space of the env.
- Return type
akro.Space
- property observation_space¶
Get observation space of the env.
- Returns
Observation space.
- Return type
akro.Space
- max_episode_length :int or None¶
- input_space :akro.Space¶
- output_space :akro.Space¶
- class EnvStep[source]¶
A tuple representing a single step returned by the environment.
- action¶
A numpy array of shape \((A^*)\) containing the action for the this time step. These must conform to
EnvStep.action_space
. None if step_type is StepType.FIRST, i.e. at the start of a sequence.- Type
numpy.ndarray
- reward¶
A float representing the reward for taking the action given the observation, at the this time step. None if step_type is StepType.FIRST, i.e. at the start of a sequence.
- Type
- observation¶
A numpy array of shape \((O^*)\) containing the observation for the this time step in the environment. These must conform to
EnvStep.observation_space
. The observation after applying the action.- Type
numpy.ndarray
- step_type¶
a StepType enum value. Can either be StepType.FIRST, StepType.MID, StepType.TERMINAL, StepType.TIMEOUT.
- Type
- env_spec :EnvSpec¶
- action :numpy.ndarray¶
- reward :float¶
- observation :numpy.ndarray¶
- env_info :Dict[str, np.ndarray or dict]¶
- step_type :garage._dtypes.StepType¶
- class Environment[source]¶
Bases:
abc.ABC
The main API for garage environments.
The public API methods are:
Functions
reset()
step()
render()
visualize()
close()
Set the following properties:
Properties
Description
action_space
The action space specification
observation_space
The observation space specification
spec
The environment specifications
render_modes
The list of supported render modes
Example of a simple rollout loop:
env = MyEnv() policy = MyPolicy() first_observation, episode_info = env.reset() env.visualize() # visualization window opened episode = [] # Determine the first action first_action = policy.get_action(first_observation, episode_info) episode.append(env.step(first_action)) while not episode[-1].last(): action = policy.get_action(episode[-1].observation) episode.append(env.step(action)) env.close() # visualization window closed
- Make sure your environment is pickle-able:
Garage pickles the environment via the cloudpickle module to save snapshots of the experiment. However, some environments may contain attributes that are not pickle-able (e.g. a client-server connection). In such cases, override __setstate__() and __getstate__() to add your custom pickle logic.
You might want to refer to the EzPickle module: https://github.com/openai/gym/blob/master/gym/utils/ezpickle.py for a lightweight way of pickle and unpickle via constructor arguments.
- abstract property action_space¶
The action space specification.
- Type
akro.Space
- abstract property observation_space¶
The observation space specification.
- Type
akro.Space
- abstract property render_modes¶
A list of string representing the supported render modes.
See render() for a list of modes.
- Type
- abstract reset()[source]¶
Resets the environment.
- Returns
- The first observation conforming to
observation_space.
- dict: The episode-level information.
Note that this is not part of env_info provided in step(). It contains information of he entire episode, which could be needed to determine the first action (e.g. in the case of goal-conditioned or MTRL.)
- Return type
numpy.ndarray
- abstract step(action)[source]¶
Steps the environment with the action and returns a EnvStep.
If the environment returned the last EnvStep of a sequence (either of type TERMINAL or TIMEOUT) at the previous step, this call to step() will start a new sequence and action will be ignored.
If spec.max_episode_length is reached after applying the action and the environment has not terminated the episode, step() should return a EnvStep with step_type==StepType.TIMEOUT.
If possible, update the visualization display as well.
- Parameters
action (object) – A NumPy array, or a nested dict, list or tuple of arrays conforming to action_space.
- Returns
The environment step resulting from the action.
- Return type
- Raises
RuntimeError – if step() is called after the environment has been constructed and reset() has not been called.
- abstract render(mode)[source]¶
Renders the environment.
The set of supported modes varies per environment. By convention, if mode is:
- rgb_array: Return an numpy.ndarray with shape (x, y, 3) and type
uint8, representing RGB values for an x-by-y pixel image, suitable for turning into a video.
- ansi: Return a string (str) or StringIO.StringIO containing a
terminal-style text representation. The text can include newlines and ANSI escape sequences (e.g. for colors).
Make sure that your class’s render_modes includes the list of supported modes.
For example:
class MyEnv(Environment): def render_modes(self): return ['rgb_array', 'ansi'] def render(self, mode): if mode == 'rgb_array': return np.array(...) # return RGB frame for video elif mode == 'ansi': ... # return text output else: raise ValueError('Supported render modes are {}, but ' 'got render mode {} instead.'.format( self.render_modes, mode))
- Parameters
mode (str) – the mode to render with. The string must be present in self.render_modes.
- abstract visualize()[source]¶
Creates a visualization of the environment.
This function should be called only once after reset() to set up the visualization display. The visualization should be updated when the environment is changed (i.e. when step() is called.)
Calling close() will deallocate any resources and close any windows created by visualize(). If close() is not explicitly called, the visualization will be closed when the environment is destructed (i.e. garbage collected).
- class Wrapper(env)[source]¶
Bases:
Environment
A wrapper for an environment that implements the Environment API.
- property action_space¶
The action space specification.
- Type
akro.Space
- property observation_space¶
The observation space specification.
- Type
akro.Space
- property unwrapped¶
The inner environment.
- Type
- step(action)[source]¶
Step the wrapped env.
- Parameters
action (np.ndarray) – An action provided by the agent.
- Returns
The environment step resulting from the action.
- Return type
- reset()[source]¶
Reset the wrapped env.
- Returns
- The first observation conforming to
observation_space.
- dict: The episode-level information.
Note that this is not part of env_info provided in step(). It contains information of he entire episode, which could be needed to determine the first action (e.g. in the case of goal-conditioned or MTRL.)
- Return type
numpy.ndarray