Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time

Real-World Reinforcement Learning (RWRL) Challenge Framework

The "Challenges of Real-World RL" paper identifies and describes a set of nine challenges that are currently preventing Reinforcement Learning (RL) agents from being utilized on real-world applications and products. It also describes an evaluation framework and a set of environments that can provide an evaluation of an RL algorithm’s potential applicability to real-world systems. It has since then been followed up with "An Empirical Investigation of the challenges of real-world reinforcement learning" which implements eight of the nine described challenges (excluding explainability) and analyses their effects on various state-of-the-art RL algorithms. This is the codebase used to perform this analysis, and is also intended as a common platform for easily reproducible experimentation around these challenges, it is referred to as the realworldrl-suite (Real-World Reinforcement Learning (RWRL) Suite).

Currently the suite is to comprised of five environments:

  • Cartpole
  • Walker
  • Quadriped
  • Manipulator (less tested)
  • Humanoid

The codebase is currently structured as:

  • environments/ -- the extended environments
  • utils/ -- wrapper classes for logging and standardized evaluations
  • analysis/ -- Notebook for training an agent and generating plots
  • examples/ -- Random policy and PPO agent example implementations
  • docs/ -- Documentation

Questions can be directed to the Real-World RL group e-mail [].

ℹ️ If you wish to test your agent in a principled fashion on related challenges in low-dimensional domains, we highly recommend using bsuite.


We overview the challenges here, but more thorough documentation on how to configure each challenge can be found here.

Starter examples are presented in the examples section.



Adds a set of constraints on the task. Returns an additional entry in the observations ('constraints') in the length of the number of the contraints, where each entry is True if the constraint is satisfied and False otherwise.


Action, observation and reward delays.

  • Action delay is the number of steps between passing the action to the environment to when it is actually performed.
  • Observation delay is the offset of freshness of the returned observation after performing a step.
  • Reward delay indicates the number of steps before receiving a reward after taking an action.


Action and observation noise. Different noise include:

  • White Gaussian action/observation noise
  • Dropped actions/observations
  • Stuck actions/observations
  • Repetitive actions

The noise specifications can be parameterized in the noise_spec dictionary.


Perturbs physical quantities of the environment. These perturbations are non-stationary and are governed by a scheduler.


Adds extra dummy features to observations to increase dimensionality of the state space.

Multi-Objective Rewards:

Adds additional objectives and specifies objectives interaction (e.g., sum).

Offline Learning

We provide our offline datasets through the RL Unplugged library. There is an example and an associated colab.

RWRL Combined Challenge Benchmarks:

Combines multiple challenges into the same environment. The challenges are divided into 'Easy', 'Medium' and 'Hard' which depend on the magnitude of the challenge effects applied along each challenge dimension.


  • Install pip:

  • Run the following commands:

    curl -o
  • Make sure pip is up to date.

    pip3 install --upgrade pip
  • (Optional) You may wish to create a Python virtual environment to manage your dependencies, so as not to clobber your system installation:

    sudo pip3 install virtualenv
    /usr/local/bin/virtualenv realworldrl_suite
    source ./realworldrl/bin/activate
  • Install MuJoCo (see dm_control -

  • To install realworldrl_suite:

    • Clone the repository by running:
    git clone
    • Ensure you are in the parent directory of realworldrl_suite
    • Run the command:
    pip3 install realworldrl_suite/

Running examples

We provide three example agents: a random agent, a PPO agent, and an ACME-based DMPO agent.

  • For PPO, running the examples requires installing the following packages:

    pip3 install tensorflow==1.15.0 dm2gym
    pip3 install git+git://
  • The PPO example can then be run with

    cd realworldrl_suite/examples
    mkdir /tmp/rwrl/
  • For DMPO, one can run the example by installing the following packages:

    pip install dm-acme
    pip install dm-acme[reverb]
    pip install dm-acme[tf]

    You may also have to install the following:

    pip install gym
    pip install jax
    pip install dm-sonnet
  • The examples look for the MuJoCo licence key in ~/.mujoco/mjkey.txt by default.

RWRL Combined Challenge Benchmark Instantiation:

As mentioned above, these benchmark challenges are divided into 'Easy', 'Medium' and 'Hard' difficulty levels. For the current state-of-the-art performance on these benchmarks, please see this paper.

Instantiating a combined challenge environment with 'Easy' difficulty is done as follows:

import realworldrl_suite.environments as rwrl
env = rwrl.load(
    environment_kwargs=dict(log_safety_vars=True, flat_observation=True))


If you use realworldrl_suite in your work, please cite:

           title={An empirical investigation of the challenges of real-world reinforcement learning},
           author={Dulac-Arnold, Gabriel and
                   Levine, Nir and
                   Mankowitz, Daniel J. and
                   Li, Jerry and
                   Paduraru, Cosmin and
                   Gowal, Sven and
                   Hester, Todd

Paper links