<div align="center">
<img src="https://github.com/zombie-einstein/esquilax/raw/main/.github/images/text_logo.png" />
<br>
<em>JAX Multi-Agent RL, A-Life, and Simulation Framework</em>
</div>
<br>
Esquilax is set of transformations and utilities
intended to allow developers and researchers to
quickly implement models of multi-agent systems
for rl-training, evolutionary methods, and a-life.
It is intended for systems involving large number of
agents, and to work alongside other JAX packages
like [Flax](https://github.com/google/flax) and
[Evosax](https://github.com/RobertTLange/evosax).
**Full documentation can be found
[here](https://zombie-einstein.github.io/esquilax/)**
## Features
- ***Built on top of JAX***
This has the benefits of JAX; high-performance, built in
GPU support etc., but also means Esquilax can interoperate
with existing JAX ML and RL libraries.
- ***Interaction Algorithm Implementations***
Implements common agent interaction patterns. This
allows users to concentrate on model design instead of low-level
algorithm implementation details.
- ***Scale and Performance***
JIT compilation and GPU support enables simulations and multi-agent
systems containing large numbers of agents whilst maintaining
performance and training throughput.
- ***Functional Patterns***
Esquilax is designed around functional patterns, ensuring models
can be readily parallelised, but also aiding composition
and readability
- ***Built-in RL and Evolutionary Training***
Esquilax provides functionality for running multi-agent RL
and multi-strategy neuro-evolution training, within Esquilax
simulations.
## Should I Use Esquilax?
Esquilax is intended for time-stepped models of large scale systems
with fixed numbers of entities, where state is updated in parallel.
As such you should probably *not* use Esquilax if:
- You want to use something other than stepped updates, e.g.
continuous time, event driven models, or where agents are intended to
update in sequence.
- You need variable numbers of entities or temporary entities, e.g.
message passing.
- You need a high-fidelity physics/robotics simulation.
## Getting Started
Esquilax can be installed from pip using
``` bash
pip install esquilax
```
You may need to manually install JAXlib, especially for GPU support.
Installation instructions for JAX can be found
[here](https://github.com/google/jax?tab=readme-ov-file#installation).
## Examples
Example models and multi-agent policy training implemented using Esquilax
can be found [here](https://github.com/zombie-einstein/esquilax/tree/main/examples).
For a larger project using Esquilax see this
[Boid flock RL environment](https://github.com/zombie-einstein/flock_env).
## Contributing
### Issues
Please report any issues or feature suggestions
[here](https://github.com/zombie-einstein/esquilax/issues).
### Developers
Developer notes can be found
[here](https://github.com/zombie-einstein/esquilax/blob/main/.github/docs/developers.md),
Esquilax is under active development and contributions are very welcome!
Raw data
{
"_id": null,
"home_page": "https://zombie-einstein.github.io/esquilax",
"name": "esquilax",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "agent-based modelling, simulation, reinforcement-learning",
"author": "Zombie-Einstein",
"author_email": "zombie-einstein@proton.me",
"download_url": "https://files.pythonhosted.org/packages/61/67/fa2d29a69b301e1f21c6321f00776b20e0c69cca73138ce6b69db0650729/esquilax-1.0.2.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n <img src=\"https://github.com/zombie-einstein/esquilax/raw/main/.github/images/text_logo.png\" />\n <br>\n <em>JAX Multi-Agent RL, A-Life, and Simulation Framework</em>\n</div>\n<br>\n\nEsquilax is set of transformations and utilities\nintended to allow developers and researchers to\nquickly implement models of multi-agent systems\nfor rl-training, evolutionary methods, and a-life.\n\nIt is intended for systems involving large number of\nagents, and to work alongside other JAX packages\nlike [Flax](https://github.com/google/flax) and\n[Evosax](https://github.com/RobertTLange/evosax).\n\n**Full documentation can be found\n[here](https://zombie-einstein.github.io/esquilax/)**\n\n## Features\n\n- ***Built on top of JAX***\n\n This has the benefits of JAX; high-performance, built in\n GPU support etc., but also means Esquilax can interoperate\n with existing JAX ML and RL libraries.\n\n- ***Interaction Algorithm Implementations***\n\n Implements common agent interaction patterns. This\n allows users to concentrate on model design instead of low-level\n algorithm implementation details.\n\n- ***Scale and Performance***\n\n JIT compilation and GPU support enables simulations and multi-agent\n systems containing large numbers of agents whilst maintaining\n performance and training throughput.\n\n- ***Functional Patterns***\n\n Esquilax is designed around functional patterns, ensuring models\n can be readily parallelised, but also aiding composition\n and readability\n\n- ***Built-in RL and Evolutionary Training***\n\n Esquilax provides functionality for running multi-agent RL\n and multi-strategy neuro-evolution training, within Esquilax\n simulations.\n\n## Should I Use Esquilax?\n\nEsquilax is intended for time-stepped models of large scale systems\nwith fixed numbers of entities, where state is updated in parallel.\nAs such you should probably *not* use Esquilax if:\n\n- You want to use something other than stepped updates, e.g.\n continuous time, event driven models, or where agents are intended to\n update in sequence.\n- You need variable numbers of entities or temporary entities, e.g.\n message passing.\n- You need a high-fidelity physics/robotics simulation.\n\n## Getting Started\n\nEsquilax can be installed from pip using\n\n``` bash\npip install esquilax\n```\n\nYou may need to manually install JAXlib, especially for GPU support.\nInstallation instructions for JAX can be found\n[here](https://github.com/google/jax?tab=readme-ov-file#installation).\n\n## Examples\n\nExample models and multi-agent policy training implemented using Esquilax\ncan be found [here](https://github.com/zombie-einstein/esquilax/tree/main/examples).\n\nFor a larger project using Esquilax see this\n[Boid flock RL environment](https://github.com/zombie-einstein/flock_env).\n\n## Contributing\n\n### Issues\n\nPlease report any issues or feature suggestions\n[here](https://github.com/zombie-einstein/esquilax/issues).\n\n### Developers\n\nDeveloper notes can be found\n[here](https://github.com/zombie-einstein/esquilax/blob/main/.github/docs/developers.md),\nEsquilax is under active development and contributions are very welcome!\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "JAX multi-agent simulation and ML toolset",
"version": "1.0.2",
"project_urls": {
"Documentation": "https://zombie-einstein.github.io/esquilax",
"Homepage": "https://zombie-einstein.github.io/esquilax",
"Repository": "https://github.com/zombie-einstein/esquilax"
},
"split_keywords": [
"agent-based modelling",
" simulation",
" reinforcement-learning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "868b0410a53f3f2e01ce3946c8ad9d54b81ce702e9d1f059d240d6da6fda7356",
"md5": "8ba2d28a5e384176dc96aeee16eab601",
"sha256": "9696e8cfee6206566dd41dc4c75de3982fac20924a5e6e1be6176fcf316678c2"
},
"downloads": -1,
"filename": "esquilax-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ba2d28a5e384176dc96aeee16eab601",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 38604,
"upload_time": "2024-11-01T20:43:00",
"upload_time_iso_8601": "2024-11-01T20:43:00.607230Z",
"url": "https://files.pythonhosted.org/packages/86/8b/0410a53f3f2e01ce3946c8ad9d54b81ce702e9d1f059d240d6da6fda7356/esquilax-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6167fa2d29a69b301e1f21c6321f00776b20e0c69cca73138ce6b69db0650729",
"md5": "4315e9b111caccde5b51202bb8d203b0",
"sha256": "8a0bfecf267cc5ba04ddd67627f9c7b4f172e9fdd69f709f99fb574a81eacad4"
},
"downloads": -1,
"filename": "esquilax-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "4315e9b111caccde5b51202bb8d203b0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 28238,
"upload_time": "2024-11-01T20:43:01",
"upload_time_iso_8601": "2024-11-01T20:43:01.546559Z",
"url": "https://files.pythonhosted.org/packages/61/67/fa2d29a69b301e1f21c6321f00776b20e0c69cca73138ce6b69db0650729/esquilax-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-01 20:43:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zombie-einstein",
"github_project": "esquilax",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "esquilax"
}