Image

"Make It Work Make It Right Make It Fast"

Image Image Image Image Image Image


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):

Image
jbrea

💻 📖 🚧
Image
Jun Tian

💻 📖 🚧 🤔
Image
Aman Bhatia

📖
Image
Alexander Terenin

💻
Image
Sid-Bhatia-0

💻
Image
norci

💻 🚧
Image
Sriram

💻
Image
Pavan B Govindaraju

💻
Image
Alex Lewandowski

💻
Image
Raj Ghugare

💻
Image
Roman Bange

💻
Image
Felix Chalumeau

💻
Image
Rishabh Varshney

💻
Image
Zachary Sunberg

💻 📖 🚧 🤔
Image
Jonathan Laurent

🤔
Image
Andriy Drozdyuk

📖
Image
Ritchie Lee

🐛
Image
Xirui Zhao

💻
Image
Nerd

📖
Image
Albin Heimerson

💻 📖 🚧
Image
michelangelo21

🐛
Image
GuoYu Yang

📖 💻 🐛
Image
Prasidh Srikumar

💻
Image
Ilan Coulon

💻
Image
Jinrae Kim

📖 🐛
Image
luigiannelli

🐛
Image
Jacob Boerma

💻
Image
Xavier Valcarce

🐛
Image
Ashwani Rathee

💻
Image
Goran Nakerst

💻
Image
ultradian

📖
Image
Ikko Ashimine

📖
Image
Krishna Bhogaonker

🐛
Image
Philipp A. Kienscherf

🐛
Image
Stefan Krastanov

📖
Image
LaarsOman

📖
Image
Bo Lu

💻
Image
Peter Chen

💻 📖
Image
Shuhua Gao

💻 💬
Image
johannes-fischer

💻
Image
Tom Marty

🐛 💻
Image
Abhinav Bhatia

🐛 💻
Image
Harley Wiltzer

💻 📖 🐛
Image
Dylan Asmar

💻
Image
andreyzhitnikov

🐛
Image
Andrea PIERRÉ

📖
Image
Mo8it

💻
Image
Benoît Legat

📖
Image
Henri Dehaybe

💻 📖
Image
NPLawrence

💻
Image
Bileam Scheuvens

📖
Image
Jarbus

🐛
Image
tyleringebrand

🐛
Image
baedan

💻
Image
ll7

📖
Image
Matthew LeMay

📖
Image
Ludvig Killingberg

💻

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