https://github.com/aig-upf/gridenvs
Create new gridworld gym environments easily
https://github.com/aig-upf/gridenvs
gridworld gym-environments planning-environments rl-environments
Last synced: 9 months ago
JSON representation
Create new gridworld gym environments easily
- Host: GitHub
- URL: https://github.com/aig-upf/gridenvs
- Owner: aig-upf
- Created: 2018-10-11T15:07:33.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-07-02T08:34:37.000Z (about 6 years ago)
- Last Synced: 2024-01-27T23:36:12.894Z (over 2 years ago)
- Topics: gridworld, gym-environments, planning-environments, rl-environments
- Language: Python
- Homepage:
- Size: 196 KB
- Stars: 4
- Watchers: 6
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Gridenvs
Gridenvs is an open-source library that allows to easily create [gym](https://github.com/openai/gym) gridworld environments. To test some [examples](gridenvs/examples), run `keyboard_agent.py`.
## Creating your own environments
You can easily create an environment by implementing the following three functions:
* get_init_state(): returns a dictionary containing the internal state of the environment. The state dict will contain all the necessary information of the game, and has to come with at least two elements: "world" (the GridWorld object) and "hero" (the agent GridObject).
* get_next_state(state, action): implements the logic of the environment, and returns a tuple `(state, reward, end_of_episode, info)` just as gym's env.step() function, except for the observation, that is automatically generated from the returned state.
* get_gridstate(state): returns a tuple consisting of the grid size and a list of objects to be rendered. This is used to generate the observation from the state.
Most environments consist of a single agent that moves in a grid (i.e. action affect a single object). If this is your case, consider inheriting from the [HeroEnv](gridenvs/hero.py) class.
To easily create a grid map, we provide a function that takes as input a list of strings, such as:
["WWWWWWWWWW",
"WD.W....KW",
"W..W.....W",
"W..W..WWWW",
"W........W",
"W........W",
"W..WWWW..W",
"W........W",
"WH.......W",
"WWWWWWWWWW"]
See, for instance, the [key-door examples](gridenvs/examples/key_door.py).
To be able to create your environment with gym.make() you will need to register it. See gym's [creating environments guide](https://github.com/openai/gym/blob/master/docs/creating-environments.md) or check `examples/__init__.py`.
For other types of games, consider deriving directly from the [Env](gridenvs/env.py) class.
## Installation
Clone the repository:
git clone https://github.com/aig-upf/gridenvs.git
cd gridenvs
(Optional) If you want to create a virtual environment, you can do it by:
python3 -m venv my_venv
source my_venv/bin/activate
Install gridenvs:
pip3 install -r requirements.txt
When using it in other projects, make sure gridenvs is in your `$PYTHONPATH` (e.g. by adding it with `export PYTHONPATH=\my\path\to\gridenvs`).
If you are using an environment from the examples package, import it so that environments get registered to gym (i.e. `import gridenvs.examples`).