RLLib is a lightweight C++ template library that implements incremental
, standard
, and gradient temporal-difference
learning algorithms in Reinforcement Learning. It is an optimized library for robotic applications and embedded devices that operates under fast duty cycles (e.g., < 30 ms). RLLib has been tested and evaluated on RoboCup 3D soccer simulation agents, physical NAO V4 humanoid robots, and Tiva C series launchpad microcontrollers to predict, control, learn behaviors, and represent learnable knowledge. The implementation of the RLLib library is inspired by the RLPark API, which is a library of temporal-difference learning algorithms written in Java.
GTD(λ)
GTD(λ)True
GQ(λ)
Q(λ)
Greedy-GQ(λ)
Softmax-GQ(λ)
Off-PAC (can be used in on-policy setting)
TD(λ)
TD(λ)AlphaBound
TD(λ)True
Sarsa(λ)
Sarsa(λ)AlphaBound
Sarsa(λ)True
Sarsa(λ)Expected
Actor-Critic (continuous actions, discrete actions, discounted reward settting, averaged reward settings, and so on)
Adaline
IDBD
K1
SemiLinearIDBD
Autostep
Random
RandomX%Bias
Greedy
Epsilon-greedy
Boltzmann
Normal
Softmax
Mountain Car
Mountain Car 3D
Swinging Pendulum
Continuous Grid World
Bicycle
Cart Pole
Acrobot
Non-Markov Pole Balancing
Helicopter
the Robocup 3D simulator agent
, and on the NAO V4 (cognition thread)
). Open AI Gym is a toolkit for developing and comparing reinforcement learning algorithms. We have developed a bridge between Gym and RLLib to use all the functionalities provided by Gym, while writing the agents (on/off-policy) in RLLib. The directory, openai_gym, contains our bridge as well as RLLib agents that learn and control the classic control environments.
Extension for Tiva C Series EK-TM4C123GXL LaunchPad, and Tiva C Series TM4C129 Connected LaunchPad microcontrollers.
Tiva C series launchpad microcontrollers: https://github.com/samindaa/csc688
RLLib is a C++ template library. The header files are located in the include
directly. You can simply include/add this directory from your projects, e.g., -I./include
, to access the algorithms.
To access the control algorithms:
#include "ControlAlgorithm.h"
To access the predication algorithms:
#include "PredictorAlgorithm"
To access the supervised learning algorithms:
#include "SupervisedAlgorithm.h"
RLLib uses the namespace:
using namespace RLLib
RLLib provides a flexible testing framework. Follow these steps to quickly write a test case.
#include "HeaderTest.h"
#include "HeaderTest.h"
RLLIB_TEST(YourTest)
class YourTest Test: public YourTestBase
{
public:
YourTestTest() {}
virtual ~Test() {}
void run();
private:
void testYourMethod();
};
void YourTestBase::testYourMethod() {/** Your test code */}
void YourTestBase::run() { testYourMethod(); }
YourTest
to the test/test.cfg
file.@YourTest
to execute only YourTest
. For example, if you need to execute only MountainCar test cases, use @MountainCarTest.We are using CMAKE >= 2.8.7 to build and run the test suite.
RLLib provides a QT5 based Reinforcement Learning problems and algorithms visualization tool named RLLibViz
. Currently RLLibViz visualizes following problems and algorithms:
On-policy:
Off-policy:
In order to run the visualization tool, you need to have QT4.8 installed in your system.
In order to install RLLibViz:
visualization/RLLibViz
Documentation
Saminda Abeyruwan, PhD (saminda@cs.miami.edu, samindaa@gmail.com)