rlberry-py / rlberry

An easy-to-use reinforcement learning library for research and education.
https://rlberry-py.github.io/rlberry
MIT License
161 stars 30 forks source link

Support environments on rlberry? #74

Closed mmcenta closed 1 year ago

mmcenta commented 2 years ago

Currently, rlberry supports some environments, but we would like to add other environments developed by the SCOOL group to the repository. This raises the question of whether we should have environments as part of rlberry or not. An alternative would be to create another repository (like an RL Baselines Zoo for rlberry) in which we would put code for the environments (and possibly other things such as default hyperparameters).

I think it would be cleaner to separate the two repositories so that we can keep rlberry concise. In that case, we would still need to:

  1. Decide what things will go into this new repository (trained agents, default hyperparameters, etc..)
  2. Give the new repository a name
  3. Create issues to remove what isn't needed here
omardrwch commented 2 years ago

Since one of the principles of the library is to help people design their agents, and environments are a key part of algorithmic design, I think it is important to keep environments in rlberry, but not all environments.

For instance, grid worlds (continuous or discrete) are very useful to debug agents, and I think that environments for debugging/analysis of agents should not only be kept, but developed.

However, I think that application-specific environments (as some that are developed by the team to simulate crops, for instance) should be kept in another repository, because their purpose is to solve a specific applied problem, rather than helping people to debug/develop general agents.

To summarize:

Some other points that are useful in rlberry environments:

mmcenta commented 2 years ago

You're right, I hadn't thought about the use case of debugging agents. Currently, we have:

Should all these environments be kept? Also, I think it would be better to avoid reimplementing environments from other libraries unless they're simple - the less complex code we need to maintain, the better.