{ "info": { "author": "Seoul AI", "author_email": "m.kersner@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Seoul AI Gym\n\n**Seoul AI Gym is a toolkit for developing AI algorithms.**\nThis `gym` simulates environments and enables you to apply any teaching technique on agent.\n\n[![Build Status](https://api.travis-ci.com/seoulai/gym.svg?branch=master)](https://travis-ci.com/seoulai/gym)\n\nSeoul AI Gym was inspired by [OpenAI gym](https://github.com/openai/gym) and tries to follow its API very closely.\n\n\n### Contents\n* [Basics](https://github.com/seoulai/gym#basics)\n* [Installation](https://github.com/seoulai/gym#installation)\n * [`pip3`](https://github.com/seoulai/gym#pip3)\n * [From source](https://github.com/seoulai/gym#from-source)\n* [Environments](https://github.com/seoulai/gym#environments)\n* [Examples](https://github.com/seoulai/gym#examples)\n* [Testing](https://github.com/seoulai/gym#testing)\n\n## Basics\nThere are two terms that are important to understand: *Environment* and *Agent*.\n\nAn environment is a world (simulation) with which an agent can interact.\nAn agent can observe a world and act based on its decision.\n\n`seoulai-gym` provides environments.\nAn example of creating environment:\n\n```python\nimport seoulai_gym as gym\nenv = gym.make(\"Checkers\")\n```\n\nEvery environment has three important methods: `reset`, `step` and `render`.\n\n##### `reset(self) -> observation`\nReset an environment to default state and return `observation` of default state.\n`observation` data structure depends on environment and is described separately for each environment.\n\n##### `step(self, agent, action) -> observation, reward, done, info`\nPerform an `action` on behalf of `agent` in environment lastly observed by either `reset` or `step`.\nAn `action` can differ among different environments but the return value of `step` method is always same.\nA `reward` is given to an agent when action that was done in the current step or some of the previous steps have led to a positive outcome for an agent (e.g winning a game).\nAn `info` is a dictionary containing extra information about performed `action`.\n\n##### `render(self) -> None`\nDisplay state of game on a screen.\n\n\n## Installation\nThere are two ways to install `seoulai-gym`.\n\n#### `pip3`\nThe recommended way for developers creating an agent is to install `seoulai-gym` using `pip3`.\n```\npip3 install seoulai-gym\n```\n\n#### From source\nYou can also clone and install `seoulai-gym` from source.\nThis option is for developers that want to create new environments or modify existing ones.\n\n```shell\ngit clone https://github.com/seoulai/gym.git\ncd gym\npip3 install -e .\n```\n\n#### Supported systems\n`seoulai-gym` requires to have at least Python 3.6 and was tested on Arch Linux, macOS High Sierra and Windows 10.\n\n## Environments\nCurrently, environment simulating game of [Checkers](https://en.wikipedia.org/wiki/Draughts), [Mighty] (https://en.wikipedia.org/wiki/Mighty_(card_game)), and Market are provided.\n\n* Checkers\n ```python\n import seoulai_gym as gym\n env = gym.make(\"Checkers\")\n env.reset()\n env.render()\n ```\n\n* Mighty\n ```python\n import seoulai_gym as gym\n from seoulai_gym.envs.mighty.agent.RandomAgent import RandomAgent\n\n env = gym.make(\"Mighty\")\n players = [RandomAgent(\"Agent 1\", 0),\n RandomAgent(\"Agent 2\", 1),\n RandomAgent(\"Agent 3\", 2),\n RandomAgent(\"Agent 4\", 3),\n RandomAgent(\"Agent 5\", 4)]\n obs = env.reset()\n obs[\"game\"].players = [\n players[0]._name,\n players[1]._name,\n players[2]._name,\n players[3]._name,\n players[4]._name,\n ]\n env.render()\n\n* Market\n\n ```python\n import seoulai_gym as gym\n from seoulai_gym.envs.traders.agents import RandomAgentBuffett\n\n # make enviroment\n env = gym.make(\"Market\")\n\n # select exchange\n env.select(\"upbit\")\n\n init_cash = 100000000 # KRW\n a1 = RandomAgentBuffett(\"Buffett\", init_cash)\n current_agent = a1\n\n env.reset()\n env.render()\n ```\n\n## Examples\n\n* Checkers\n * https://github.com/seoulai/gym/blob/master/examples/checkers_example.py\n\n [![Watch the video](https://i.ytimg.com/vi/O-Q9hg7Vng8/hqdefault.jpg)](https://youtu.be/O-Q9hg7Vng8)\n\n* Mighty\n * https://github.com/seoulai/gym/blob/master/examples/mighty_example.py\n\n [![Watch the video](http://img.youtube.com/vi/M3GCt8evGkQ/0.jpg)](https://youtu.be/M3GCt8evGkQ?t=0s)\n\n* Market\n * https://github.com/seoulai/gym/blob/master/examples/trader_example.py\n\n\n## Testing\nAll test are written using [pytest](http://doc.pytest.org/).\nYou can run them via:\n\n```\npytest\n```\n\n\n", "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/seoulai/gym", "keywords": "gym,ai,machine-learning,artificial-intelligence", "license": "The MIT License", "maintainer": "", "maintainer_email": "", "name": "seoulai-gym", "package_url": "https://pypi.org/project/seoulai-gym/", "platform": "", "project_url": "https://pypi.org/project/seoulai-gym/", "project_urls": { "Homepage": "https://github.com/seoulai/gym" }, "release_url": "https://pypi.org/project/seoulai-gym/0.1.2/", "requires_dist": [ "pygame (>=1.9.3)", "numpy (>=1.14.2)", "pytest (>=3.6.0)", "flake8 (>=3.5.0)", "PyQt5 (>=5)", "pandas (>=0.23.4)", "matplotlib (>=2.2.3)", "flake8-quotes (>=1.0.0)" ], "requires_python": "", "summary": "The Seoul AI Gym: Seoul AI Gym is a toolkit for developing AI algorithms.", "version": "0.1.2" }, "last_serial": 4370742, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "e38a3be568378ff4b6e7369692394c7a", "sha256": "1218897ebdcc2c8975af178e101966032d9a026b3c6dcde686a7d38f090313fa" }, "downloads": -1, "filename": "seoulai_gym-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e38a3be568378ff4b6e7369692394c7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22170, "upload_time": "2018-06-06T08:44:11", "url": "https://files.pythonhosted.org/packages/95/71/745d312e18279c63a5fc753d508d6bb6ecfbc7ebfd6ec1b5771a2c4defcd/seoulai_gym-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5d5d0652d3140f97311d3e83e1b02b8", "sha256": "c41ec0c88f19b44a245a16d4a5b09740bfdf648b954ea0fa05c6cf09845ab01b" }, "downloads": -1, "filename": "seoulai-gym-0.1.tar.gz", "has_sig": false, "md5_digest": "e5d5d0652d3140f97311d3e83e1b02b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20617, "upload_time": "2018-06-06T08:44:13", "url": "https://files.pythonhosted.org/packages/4c/7e/73e0b2bc784c525cdf4c311e9d54f77904f1d82b6171788039cb2c8685fa/seoulai-gym-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "233ab0566129b8ff16712f022f8e06b4", "sha256": "33e6c37380ca985847cc59e074ad8dbc8f200fb6f3cd91119d9ff2987a71241a" }, "downloads": -1, "filename": "seoulai_gym-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "233ab0566129b8ff16712f022f8e06b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1648463, "upload_time": "2018-09-10T13:01:45", "url": "https://files.pythonhosted.org/packages/2e/8a/18c152c10e85098f30978cf4d999ba8e076f13f11b2815990eb43f728235/seoulai_gym-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c6d5b6575fa1c5ca30bc452a938d440", "sha256": "238c575a7c7a9eec7c63c6891a627ea643e61470b7b17cdd5f038c48d7e734cc" }, "downloads": -1, "filename": "seoulai-gym-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2c6d5b6575fa1c5ca30bc452a938d440", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1631459, "upload_time": "2018-09-10T13:01:49", "url": "https://files.pythonhosted.org/packages/38/11/00e0af80ddc2a26e5e9524b81b71d5afe5e4245fd5a2088ca00ca5f2614b/seoulai-gym-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "d721da4e251b8135aa661490d44e5c71", "sha256": "23135845981244199b8239f74be898c697c3c2ee3ef83e2b2529d5e148d5869d" }, "downloads": -1, "filename": "seoulai_gym-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d721da4e251b8135aa661490d44e5c71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1642489, "upload_time": "2018-10-13T02:20:59", "url": "https://files.pythonhosted.org/packages/b1/75/4af010c197c74435db5ec780cd081d9fae912c5402aff7f988a5134668db/seoulai_gym-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d226d14c8e1c2e0012e71788a0bc35f", "sha256": "dd3135bc12cda0a40eac69d9eab459fb2e9b6d60217f6230f7230e127f16c405" }, "downloads": -1, "filename": "seoulai-gym-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9d226d14c8e1c2e0012e71788a0bc35f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1624885, "upload_time": "2018-10-13T02:21:02", "url": "https://files.pythonhosted.org/packages/5b/bf/854799ed30b8a989ee7c3d53578d8fa1b413295425f67379bcff821a25ba/seoulai-gym-0.1.2.tar.gz" } ], "0.1.2.1.dev0": [ { "comment_text": "", "digests": { "md5": "d66ce4e6b655bf9e8c7ac3aedd252298", "sha256": "2edb56cf0c8ab016ee9c04eb15ba8c1db4ca6942864db2015e000e6c9411c348" }, "downloads": -1, "filename": "seoulai_gym-0.1.2.1.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "d66ce4e6b655bf9e8c7ac3aedd252298", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1642556, "upload_time": "2018-10-13T02:20:33", "url": "https://files.pythonhosted.org/packages/b8/7a/f939ec8236f7dc2fac1c49359cd2c9581f1a2fb3431e86226ce01c923017/seoulai_gym-0.1.2.1.dev0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d721da4e251b8135aa661490d44e5c71", "sha256": "23135845981244199b8239f74be898c697c3c2ee3ef83e2b2529d5e148d5869d" }, "downloads": -1, "filename": "seoulai_gym-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d721da4e251b8135aa661490d44e5c71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1642489, "upload_time": "2018-10-13T02:20:59", "url": "https://files.pythonhosted.org/packages/b1/75/4af010c197c74435db5ec780cd081d9fae912c5402aff7f988a5134668db/seoulai_gym-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d226d14c8e1c2e0012e71788a0bc35f", "sha256": "dd3135bc12cda0a40eac69d9eab459fb2e9b6d60217f6230f7230e127f16c405" }, "downloads": -1, "filename": "seoulai-gym-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9d226d14c8e1c2e0012e71788a0bc35f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1624885, "upload_time": "2018-10-13T02:21:02", "url": "https://files.pythonhosted.org/packages/5b/bf/854799ed30b8a989ee7c3d53578d8fa1b413295425f67379bcff821a25ba/seoulai-gym-0.1.2.tar.gz" } ] }