/ddpg-pytorch

PyTorch implementation of DDPG for continuous control tasks.

Primary LanguagePythonMIT LicenseMIT

ddpg-pytorch

PyTorch implementation of DDPG for continuous control tasks.

This is a PyTorch implementation of Deep Deterministic Policy Gradients developed in CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING.

This implementation is inspired by the OpenAI baseline of DDPG, the newer TD3 implementation and also various other resources about DDPG. But instead of parameter space noise this implementation uses the original Ornstein-Uhlenbeck noise process of the original DDPG implementation.

Tested environments (via OpenAI Gym)

Since 'Roboschool' is deprecated, I highly recommend using PyBullet instead (also recommended by OpenAI).

Requirements

Training

python train.py --env "RoboschoolInvertedPendulumSwingup-v1"

Testing

python test.py --env "RoboschoolInvertedPendulumSwingup-v1"

Pretrained models

Pretrained models can be found in the folder 'saved_models' for the 'RoboschoolInvertedPendulumSwingup-v1' and the 'RoboschoolInvertedPendulum-v1' environments.

Contributions

Contributions are welcome. If you find any bugs, know how to make the code better or want to implement other used methods regarding DDPG, please open an issue or a pull request.

Disclaimer

This repo is an attempt to reproduce results of Reinforcement Learning methods to gain a deeper understanding of the developed concepts. But even with quite numerus other reproductions, an own reproduction is a quite difficult task even today. In "Deep Reinforcement Learning that Matters" you can read more about reproducibility of Reinforcement Learning methods. I tried to reproduce the original paper and the OpenAI implementation as close as possible, but I wanted to use Roboschool also. This made the task more difficult, since there are no benchmarks for DDPG with Roboschool and thus the choice of hyperparameters was much more difficult.