{ "info": { "author": "Christian Hidber, Oliver Zeigermann", "author_email": "christian.hidber@bsquare.ch", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "### Reinforcement Learning for Practitioners (v1.2, 19Q4)\n![Travis_Status](https://travis-ci.com/christianhidber/easyagents.svg?branch=master)\n![License](https://img.shields.io/github/license/christianhidber/easyagents)\n\nStatus: under active development, breaking changes may occur. [Release notes](documentation/README.md).\n\n![EasyAgents logo](images/EazyAgentsIcon.png)\n\nEasyAgents is a high level reinforcement learning api focusing on ease of use and simplicity.\nWritten in Python and running on top of established reinforcement learning libraries like\n[tf-Agents](https://github.com/tensorflow/agents), \n[tensorforce](https://github.com/tensorforce/tensorforce) or \n[keras-rl](https://github.com/keras-rl/keras-rl).\nEnvironments are implemented in [OpenAI gym](https://github.com/openai/gym). \n\nIn collaboration with [Oliver Zeigermann](http://zeigermann.eu/). \n\n### Features \n* provides the **same, simple api across all libraries**. Thus you can easily switch between different implementations\n and you don't have to learn for each of them a new api.\n* to create and run any algorithm you only need **2 lines of code**, all the parameters are named\n consistently across all algorithms.\n* supports a broad set of different algorithms\n* runs inside **jupyter notebooks** as well as stand-alone, easy to install requiring only a single 'pip install'.\n* easy to understand, **ready-made plots** and logs to investigate the algorithms and environments behaviour\n\n### Try it on colab\n* [1. Introduction (CartPole on colab)](https://colab.research.google.com/github/christianhidber/easyagents/blob/master/jupyter_notebooks/easyagents_cartpole.ipynb):\n training, plotting, switching algorithms & backends. based on the classic reinforcement learning example \n balancing a stick on a cart.\n* [2. Next steps & backend switching (Orso on colab)](https://colab.research.google.com/github/christianhidber/easyagents/blob/master/jupyter_notebooks/easyagents_orso.ipynb):\n custom training, creating a movie & switching backends. gym environment based on a routing problem.\n* [3. Creating your own environment (LineWorld on colab)](https://colab.research.google.com/github/christianhidber/easyagents/blob/master/jupyter_notebooks/easyagents_line.ipynb):\n implement a gym environment from scratch, workshop example.\n* [4. Logging, seeding & plot clearing (on colab)](https://colab.research.google.com/github/christianhidber/easyagents/blob/master/jupyter_notebooks/easyagents_logging.ipynb): \n Investigate how an agents api and how it interacts with the gym environment; \n how to set seeds; controlling jupyter output cell clearing\n\n### Scenario: simple\n````\nfrom easyagents.agents import PpoAgent\nfrom easyagents.callbacks import plot\n\nppoAgent = PpoAgent('CartPole-v0')\nppoAgent.train([plot.State(), plot.Loss(), plot.Rewards()])\n````\n![Scenario_Simple](images/Scenario_simple.png)\n\n### Scenario: more detailed\n````\nfrom easyagents.agents import PpoAgent\nfrom easyagents.callbacks import plot\n\nppoAgent = PpoAgent( 'Orso-v1',fc_layers=(500,500,500))\nppoAgent.train([plot.State(), plot.Loss(), plot.Rewards(), plot.Actions(), \n plot.StepRewards(), plot.Steps(), plot.ToMovie()], \n learning_rate = 0.0001, num_iterations = 500, max_steps_per_episode=50 )\n````\n\n![Scenario_Detailed](images/Scenario_detailed.gif)\n\n### Available Algorithms and Backends\n\n|algorithm | [tf-Agents](https://github.com/tensorflow/agents) | [tensorforce](https://github.com/tensorforce/tensorforce) | [keras-rl](https://github.com/keras-rl/keras-rl) | easyagents class name |\n|----------|:---------:|:-----------:|:--------:| :---: | \n|[CEM](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.81.6579&rep=rep1&type=pdf) |`not available` |`not available` |`yes` | CemAgent | \n|[Dqn](https://arxiv.org/abs/1312.5602) |`yes` |`yes` |`yes` | DqnAgent | \n|[Double Dqn](https://arxiv.org/abs/1509.06461) |`open` |`not available` |`yes` | DoubleDqnAgent|\n|[Dueling Dqn](https://arxiv.org/abs/1511.06581) | `not available` |`not available` |`yes` | DuelingDqnAgent|\n|[Ppo](https://arxiv.org/abs/1707.06347) |`yes` |`yes` |`not available` | PpoAgent |\n|Random |`yes` |`yes` |`not available` | RandomAgent |\n|[REINFORCE](www-anw.cs.umass.edu/~barto/courses/cs687/williams92simple.pdf) |`yes` |`yes` |`not available`| ReinforceAgent | \n|[SAC](https://arxiv.org/abs/1801.01290) |`preview` |`not available`|`not available`|SacAgent|\n\n[191001]\n\n* if you are interested in other algorithms, backends or hyperparameters let us know by\n [creating an issue](https://github.com/christianhidber/easyagents/issues/new/choose). \n We'll try our best to support you.\n* keras-rl is not compatible with tensorflow eager execution mode.\nThus keras-rl based agents should run in a different python / jupyter notebook instance \nthan tf-agents or tensorforce based agents.\n\n\n### Guiding Principles\n* **easily train, evaluate & debug policies for (you own) gym environment** over \"designing new algorithms\"\n* **simple & consistent** over \"flexible & powerful\"\n* **inspired by keras**: \n * same api across all algorithms\n * support different implementations of the same algorithm \n * extensible (pluggable backends, plots & training schemes) \n\n### Installation\nInstall from pypi using pip:\n\n```python\npip install easyagents\n```\n\n### Documentation\n[release notes, class diagram](documentation/README.md)\n\n### EasyAgents may not be ideal if\n\n* you would like to leverage implementation specific advantages of an algorithm\n* you want to do distributed or in parallel reinforcement learning\n\n### Note\n\n* This repository is under active development and in an early stage. \n Thus any- and everything may (and probably should) change.\n* If you have any difficulties in installing or using easyagents please let us know by \n [creating an issue](https://github.com/christianhidber/easyagents/issues/new/choose).\n We'll try our best to help you.\n* Any ideas, help, suggestions, comments etc in python / open source development / reinforcement learning / whatever\n are more than welcome. Thanks a lot in advance.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/christianhidber/easyagents", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "easyagents", "package_url": "https://pypi.org/project/easyagents/", "platform": "", "project_url": "https://pypi.org/project/easyagents/", "project_urls": { "Homepage": "https://github.com/christianhidber/easyagents" }, "release_url": "https://pypi.org/project/easyagents/1.2.2/", "requires_dist": null, "requires_python": "", "summary": "reinforcement learning for practitioners.", "version": "1.2.2" }, "last_serial": 5989548, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "b589ea16d3e3a4e64c4d43dd59508ae0", "sha256": "6cc0366b8e8dd7b1da17007365f9336bf9b1fd364ec5f3e2e735e19ad6c18765" }, "downloads": -1, "filename": "easyagents-0.0.1.zip", "has_sig": false, "md5_digest": "b589ea16d3e3a4e64c4d43dd59508ae0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14851, "upload_time": "2019-06-19T16:31:36", "url": "https://files.pythonhosted.org/packages/7e/0d/370a740793d6b8cae92a76f88073f1cfdfea183877a85e246e5273a497a9/easyagents-0.0.1.zip" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "5a4573a256171b04c9ae9013b56bd204", "sha256": "ec6e2724646502990f97eecb66bd9e9758f1cec783131c986c26ac5a75d20b66" }, "downloads": -1, "filename": "easyagents-0.0.20.zip", "has_sig": false, "md5_digest": "5a4573a256171b04c9ae9013b56bd204", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24064, "upload_time": "2019-07-05T14:28:34", "url": "https://files.pythonhosted.org/packages/82/bb/3f524fbcf7e4aa9061e0f05e88ac419d8ef82ca8c5d67c1eae2732032273/easyagents-0.0.20.zip" } ], "0.0.38": [ { "comment_text": "", "digests": { "md5": "ae80c1445fc6945a6d0246ba54fdd95d", "sha256": "239233301254aa5707285fc203e3fe005759a085658e6690897eef171cba1b75" }, "downloads": -1, "filename": "easyagents-0.0.38.zip", "has_sig": false, "md5_digest": "ae80c1445fc6945a6d0246ba54fdd95d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29555, "upload_time": "2019-07-31T08:38:01", "url": "https://files.pythonhosted.org/packages/d8/8d/8b390c797d218cb4669fe454f381d8ce363c6b2bf9505e1390d1fc254ee0/easyagents-0.0.38.zip" } ], "0.0.41": [ { "comment_text": "", "digests": { "md5": "48a10df4f2d8007f779446b6265127de", "sha256": "db912b7ba1fb263811ce0c8a4603437494648c55e2d00672a23b2cbcb77df9f5" }, "downloads": -1, "filename": "easyagents-0.0.41.zip", "has_sig": false, "md5_digest": "48a10df4f2d8007f779446b6265127de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33382, "upload_time": "2019-08-19T18:09:05", "url": "https://files.pythonhosted.org/packages/b4/ef/fac75a7053f2a93c52a990f63ac2738c80490b2454c59716138309d72103/easyagents-0.0.41.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e0cd839f82ad115e4cb32cbff10ba282", "sha256": "56f98443e7d5ab7c81fc4cf59cc2743ce1559f93a00242ab4492273ef938113c" }, "downloads": -1, "filename": "easyagents-1.0.1.zip", "has_sig": false, "md5_digest": "e0cd839f82ad115e4cb32cbff10ba282", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45801, "upload_time": "2019-09-11T17:07:31", "url": "https://files.pythonhosted.org/packages/54/34/3645f2ee1fe9c6a049942650275c797418b176e07e1d51d72177024d5fe8/easyagents-1.0.1.zip" } ], "1.1.11": [ { "comment_text": "", "digests": { "md5": "fd9c006f75f14794c3a75429157b2eb3", "sha256": "bcda72e2a4241e91056eadd54d17a0a5e2462b57a61d471131001dbf6dfd1ce2" }, "downloads": -1, "filename": "easyagents-1.1.11.zip", "has_sig": false, "md5_digest": "fd9c006f75f14794c3a75429157b2eb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48487, "upload_time": "2019-09-17T15:35:53", "url": "https://files.pythonhosted.org/packages/6d/fa/2a5760aba2391823a0aa825b5a39334dfe3ac6e2a32ea59ebb6a97e9675c/easyagents-1.1.11.zip" } ], "1.1.13": [ { "comment_text": "", "digests": { "md5": "0e95314f10464e3cb6075cc90931c23c", "sha256": "759f915d3b5b1abfd689ad1e36991e90365c939cdd894f26ece4ed3637389bf2" }, "downloads": -1, "filename": "easyagents-1.1.13.zip", "has_sig": false, "md5_digest": "0e95314f10464e3cb6075cc90931c23c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50923, "upload_time": "2019-09-27T09:13:57", "url": "https://files.pythonhosted.org/packages/48/89/93b25643b96bf470fbb4fefc05509f051507458d3f6b906cad5d8d1c4d77/easyagents-1.1.13.zip" } ], "1.1.23": [ { "comment_text": "", "digests": { "md5": "79dde6e00999eade3bb7deb311488aca", "sha256": "feae827009ba7d63fa0556079e329d9c1063a724e91c2aee25b13d1f438f3476" }, "downloads": -1, "filename": "easyagents-1.1.23.zip", "has_sig": false, "md5_digest": "79dde6e00999eade3bb7deb311488aca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66343, "upload_time": "2019-10-08T07:55:32", "url": "https://files.pythonhosted.org/packages/b9/eb/46f6e818522e640bf31ca23af1a78be40dd4a88229824a4d9d1f61709618/easyagents-1.1.23.zip" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "e82acfc05395d9325b62ba3c07d5a626", "sha256": "31ca32e85aae010079906bf746579689997374c55ce6aecd9e5259499ef089f0" }, "downloads": -1, "filename": "easyagents-1.2.0.zip", "has_sig": false, "md5_digest": "e82acfc05395d9325b62ba3c07d5a626", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66179, "upload_time": "2019-10-08T14:11:06", "url": "https://files.pythonhosted.org/packages/94/ef/ab8dd5588da2692c23043cbbbb96a08907e2a8e2cfc19fe925d9fd519ce9/easyagents-1.2.0.zip" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "9cc8735a3831ebaa8913eb145b8e58bc", "sha256": "1595ffd9c5a5659e8838137e1bf9a069ea88905102742d81667fd7cb7fb5c24e" }, "downloads": -1, "filename": "easyagents-1.2.2.zip", "has_sig": false, "md5_digest": "9cc8735a3831ebaa8913eb145b8e58bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65915, "upload_time": "2019-10-09T14:44:14", "url": "https://files.pythonhosted.org/packages/dc/f1/3b43df258cc813dfe3fd286ccfd227166d7befbb30d665eb06a9536f5246/easyagents-1.2.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9cc8735a3831ebaa8913eb145b8e58bc", "sha256": "1595ffd9c5a5659e8838137e1bf9a069ea88905102742d81667fd7cb7fb5c24e" }, "downloads": -1, "filename": "easyagents-1.2.2.zip", "has_sig": false, "md5_digest": "9cc8735a3831ebaa8913eb145b8e58bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65915, "upload_time": "2019-10-09T14:44:14", "url": "https://files.pythonhosted.org/packages/dc/f1/3b43df258cc813dfe3fd286ccfd227166d7befbb30d665eb06a9536f5246/easyagents-1.2.2.zip" } ] }