"Make It Work Make It Right Make It Fast"


ReinforcementLearning.jl, as the name says, is a package for reinforcement learning research in Julia.

Our design principles are:

  • Reusability and extensibility: Provide elaborately designed components and interfaces to help users implement new algorithms.
  • Easy experimentation: Make it easy for new users to run benchmark experiments, compare different algorithms, evaluate and diagnose agents.
  • Reproducibility: Facilitate reproducibility from traditional tabular methods to modern deep reinforcement learning algorithms.

๐Ÿน Get Started

julia> ] add ReinforcementLearning

julia> using ReinforcementLearning

julia> run(
           RandomPolicy(),
           CartPoleEnv(),
           StopAfterNSteps(1_000),
           TotalRewardPerEpisode()
       )

The above simple example demonstrates four core components in a general reinforcement learning experiment:

Check out the tutorial page to learn how these four components are assembled together to solve many interesting problems. We also write blog occasionally to explain the implementation details of some algorithms. Among them, the most recommended one is An Introduction to ReinforcementLearning.jl, which explains the design idea of this package.

๐Ÿ™‹ Why ReinforcementLearning.jl?

๐Ÿš€ Fast Speed

[TODO:]

๐Ÿงฐ Feature Rich

[TODO:]

๐ŸŒฒ Project Structure

ReinforcementLearning.jl itself is just a wrapper around several other subpackages. The relationship between them is depicted below:

+-----------------------------------------------------------------------------------+
|                                                                                   |
|  ReinforcementLearning.jl                                                         |
|                                                                                   |
|      +------------------------------+                                             |
|      | ReinforcementLearningBase.jl |                                             |
|      +----|-------------------------+                                             |
|           |                                                                       |
|           |     +--------------------------------------+                          |
|           +---->+ ReinforcementLearningEnvironments.jl |                          |
|           |     +--------------------------------------+                          |
|           |                                                                       |
|           |     +------------------------------+                                  |
|           +---->+ ReinforcementLearningCore.jl |                                  |
|                 +----|-------------------------+                                  |
|                      |                                                            |
|                      |     +-----------------------------+                        |
|                      +---->+ ReinforcementLearningZoo.jl |                        |
|                            +----|------------------------+                        |
|                                 |                                                 |
|                                 |     +-------------------------------------+     |
|                                 +---->+ DistributedReinforcementLearning.jl |     |
|                                       +-------------------------------------+     |
|                                                                                   |
+------|----------------------------------------------------------------------------+
       |
       |     +-------------------------------------+
       +---->+ ReinforcementLearningExperiments.jl |
       |     +-------------------------------------+
       |
       |     +----------------------------------------+
       +---->+ ReinforcementLearningAnIntroduction.jl |
             +----------------------------------------+

โœ‹ Getting Help

Are you looking for help with ReinforcementLearning.jl? Here are ways to find help:

  1. Read the online documentation! Most likely the answer is already provided in an example or in the API documents. Search using the search bar in the upper left.

<!โ€“ cspell:disable-next โ€“>

  1. Chat with us in Julia Slack in the #reinforcement-learnin channel.
  2. Post a question in the Julia discourse forum in the category "Machine Learning" and use "reinforcement-learning" as a tag.
  3. For issues with unexpected behavior or defects in ReinforcementLearning.jl, then please open an issue on the ReinforcementLearning GitHub page with a minimal working example and steps to reproduce.

๐Ÿ–– Supporting

ReinforcementLearning.jl is a MIT licensed open source project with its ongoing development made possible by many contributors in their spare time. However, modern reinforcement learning research requires huge computing resource, which is unaffordable for individual contributors. So if you or your organization could provide the computing resource in some degree and would like to cooperate in some way, please contact us!

This package is written in pure Julia. Please consider supporting the JuliaLang org if you find this package useful. โค

โœ๏ธ Citing

If you use ReinforcementLearning.jl in a scientific publication, we would appreciate references to the CITATION.bib.

โœจ Contributors

Thanks goes to these wonderful people (emoji key):


jbrea

๐Ÿ’ป ๐Ÿ“– ๐Ÿšง

Jun Tian

๐Ÿ’ป ๐Ÿ“– ๐Ÿšง ๐Ÿค”

Aman Bhatia

๐Ÿ“–

Alexander Terenin

๐Ÿ’ป

Sid-Bhatia-0

๐Ÿ’ป

norci

๐Ÿ’ป ๐Ÿšง

Sriram

๐Ÿ’ป

Pavan B Govindaraju

๐Ÿ’ป

Alex Lewandowski

๐Ÿ’ป

Raj Ghugare

๐Ÿ’ป

Roman Bange

๐Ÿ’ป

Felix Chalumeau

๐Ÿ’ป

Rishabh Varshney

๐Ÿ’ป

Zachary Sunberg

๐Ÿ’ป ๐Ÿ“– ๐Ÿšง ๐Ÿค”

Jonathan Laurent

๐Ÿค”

Andriy Drozdyuk

๐Ÿ“–

Ritchie Lee

๐Ÿ›

Xirui Zhao

๐Ÿ’ป

Nerd

๐Ÿ“–

Albin Heimerson

๐Ÿ’ป ๐Ÿ“– ๐Ÿšง

michelangelo21

๐Ÿ›

GuoYu Yang

๐Ÿ“– ๐Ÿ’ป ๐Ÿ›

Prasidh Srikumar

๐Ÿ’ป

Ilan Coulon

๐Ÿ’ป

Jinrae Kim

๐Ÿ“– ๐Ÿ›

luigiannelli

๐Ÿ›

Jacob Boerma

๐Ÿ’ป

Xavier Valcarce

๐Ÿ›

Ashwani Rathee

๐Ÿ’ป

Goran Nakerst

๐Ÿ’ป

ultradian

๐Ÿ“–

Ikko Ashimine

๐Ÿ“–

Krishna Bhogaonker

๐Ÿ›

Philipp A. Kienscherf

๐Ÿ›

Stefan Krastanov

๐Ÿ“–

LaarsOman

๐Ÿ“–

Bo Lu

๐Ÿ’ป

Peter Chen

๐Ÿ’ป ๐Ÿ“–

Shuhua Gao

๐Ÿ’ป ๐Ÿ’ฌ

johannes-fischer

๐Ÿ’ป

Tom Marty

๐Ÿ› ๐Ÿ’ป

Abhinav Bhatia

๐Ÿ› ๐Ÿ’ป

Harley Wiltzer

๐Ÿ’ป ๐Ÿ“– ๐Ÿ›

Dylan Asmar

๐Ÿ’ป

andreyzhitnikov

๐Ÿ›

Andrea PIERRร‰

๐Ÿ“–

Mo8it

๐Ÿ’ป

Benoรฎt Legat

๐Ÿ“–

Henri Dehaybe

๐Ÿ’ป ๐Ÿ“–

NPLawrence

๐Ÿ’ป

Bileam Scheuvens

๐Ÿ“–

Jarbus

๐Ÿ›

tyleringebrand

๐Ÿ›

baedan

๐Ÿ’ป

ll7

๐Ÿ“–

Matthew LeMay

๐Ÿ“–

Ludvig Killingberg

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!