academia.environments.base
To use a custom environment with academia package, a wrapper needs to be created to make the environment compatible with package's environment API. This can be achieved by extending one of the classes provided by this module.
The most basic class for environments is ScalableEnvironment
, which defines the environment API used throughout academia package. However there are also some generic wrappers which can speed up the process of creating wrappers for custom environments.
If your environment is compliant with Gymnasium's API, check out GenericGymnasiumWrapper
. It contains implementations for all methods exposed by academia's environment API. You only need to take care of a few things:
- Override the constructor and handle the
difficulty
setting logic there; - Provide an implementation for a protected
_transform_state
method, which transforms a state returned by the underlying environment to a NumPy array, which is the format used in academia package. - (Optional) Provide an implementation for a protected
_transform_state
method to make sure that there are no unused states (seeacademia.environments.DoorKey
's source code for an example use case).
The two other generic wrappers, GenericMiniGridWrapper
and GenericAtariWrapper
work similarly but have some extra functionalities which can help to set up some more specific environments. The former makes it easier to handle the difficulty
parameter for MiniGrid environments while the latter provides a default _transform_state
implementation for Gymnasium's Atari environments.
Feel free to browse package's source code to see how these base classes are used in practise.