qdax


Nameqdax JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/adaptive-intelligent-robotics/QDax
SummaryA Python Library for Quality-Diversity and NeuroEvolution
upload_time2024-01-25 16:15:07
maintainer
docs_urlNone
authorAIRL and InstaDeep Ltd
requires_python
licenseMIT
keywords quality-diversity neuroevolution reinforcement learning jax
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<img src="docs/img/qdax_logo.png" alt="qdax_logo" width="140"></img>
</div>


# QDax: Accelerated Quality-Diversity

[![Documentation Status](https://readthedocs.org/projects/qdax/badge/?version=latest)](https://qdax.readthedocs.io/en/latest/?badge=latest)
![pytest](https://github.com/adaptive-intelligent-robotics/QDax/actions/workflows/ci.yaml/badge.svg?branch=main)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/adaptive-intelligent-robotics/QDax/blob/main/LICENSE)
[![codecov](https://codecov.io/gh/adaptive-intelligent-robotics/QDax/branch/feat/add-codecov/graph/badge.svg)](https://codecov.io/gh/adaptive-intelligent-robotics/QDax)


QDax is a tool to accelerate Quality-Diversity (QD) and neuro-evolution algorithms through hardware accelerators and massive parallelization. QD algorithms usually take days/weeks to run on large CPU clusters. With QDax, QD algorithms can now be run in minutes! ⏩ ⏩ 🕛

QDax has been developed as a research framework: it is flexible and easy to extend and build on and can be used for any problem setting. Get started with simple example and run a QD algorithm in minutes here! [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)

- QDax [paper](https://arxiv.org/abs/2202.01258)
- QDax [documentation](https://qdax.readthedocs.io/en/latest/)


## Installation
QDax is available on PyPI and can be installed with:
```bash
pip install qdax
```
Alternatively, the latest commit of QDax can be installed directly from source with:
```bash
pip install git+https://github.com/adaptive-intelligent-robotics/QDax.git@main
```
Installing QDax via ```pip``` installs a CPU-only version of JAX by default. To use QDax with NVidia GPUs, you must first install [CUDA, CuDNN, and JAX with GPU support](https://github.com/google/jax#installation).

However, we also provide and recommend using either Docker or conda environments to use the repository which by default provides GPU support. Detailed steps to do so are available in the [documentation](https://qdax.readthedocs.io/en/latest/installation/).

## Basic API Usage
For a full and interactive example to see how QDax works, we recommend starting with the tutorial-style [Colab notebook](./examples/mapelites.ipynb). It is an example of the MAP-Elites algorithm used to evolve a population of controllers on a chosen Brax environment (Walker by default).

However, a summary of the main API usage is provided below:
```python
import jax
import functools
from qdax.core.map_elites import MAPElites
from qdax.core.containers.mapelites_repertoire import compute_euclidean_centroids
from qdax.tasks.arm import arm_scoring_function
from qdax.core.emitters.mutation_operators import isoline_variation
from qdax.core.emitters.standard_emitters import MixingEmitter
from qdax.utils.metrics import default_qd_metrics

seed = 42
num_param_dimensions = 100  # num DoF arm
init_batch_size = 100
batch_size = 1024
num_iterations = 50
grid_shape = (100, 100)
min_param = 0.0
max_param = 1.0
min_bd = 0.0
max_bd = 1.0

# Init a random key
random_key = jax.random.PRNGKey(seed)

# Init population of controllers
random_key, subkey = jax.random.split(random_key)
init_variables = jax.random.uniform(
    subkey,
    shape=(init_batch_size, num_param_dimensions),
    minval=min_param,
    maxval=max_param,
)

# Define emitter
variation_fn = functools.partial(
    isoline_variation,
    iso_sigma=0.05,
    line_sigma=0.1,
    minval=min_param,
    maxval=max_param,
)
mixing_emitter = MixingEmitter(
    mutation_fn=lambda x, y: (x, y),
    variation_fn=variation_fn,
    variation_percentage=1.0,
    batch_size=batch_size,
)

# Define a metrics function
metrics_fn = functools.partial(
    default_qd_metrics,
    qd_offset=0.0,
)

# Instantiate MAP-Elites
map_elites = MAPElites(
    scoring_function=arm_scoring_function,
    emitter=mixing_emitter,
    metrics_function=metrics_fn,
)

# Compute the centroids
centroids = compute_euclidean_centroids(
    grid_shape=grid_shape,
    minval=min_bd,
    maxval=max_bd,
)

# Initializes repertoire and emitter state
repertoire, emitter_state, random_key = map_elites.init(init_variables, centroids, random_key)

# Run MAP-Elites loop
for i in range(num_iterations):
    (repertoire, emitter_state, metrics, random_key,) = map_elites.update(
        repertoire,
        emitter_state,
        random_key,
    )

# Get contents of repertoire
repertoire.genotypes, repertoire.fitnesses, repertoire.descriptors
```


## QDax core algorithms
QDax currently supports the following algorithms:


| Algorithm                                                                                                                     | Example                                                                                                                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [MAP-Elites](https://arxiv.org/abs/1504.04909)                                                                                | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)  |
| [CVT MAP-Elites](https://arxiv.org/abs/1610.05729)                                                                            | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)  |
| [Policy Gradient Assisted MAP-Elites (PGA-ME)](https://hal.archives-ouvertes.fr/hal-03135723v2/file/PGA_MAP_Elites_GECCO.pdf) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/pgame.ipynb)      |
| [QDPG](https://arxiv.org/abs/2006.08505)                                                                                      | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/qdpg.ipynb)       |
| [CMA-ME](https://arxiv.org/pdf/1912.02400.pdf)                                                                                | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/cmame.ipynb)      |
| [OMG-MEGA](https://arxiv.org/abs/2106.03894)                                                                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/omgmega.ipynb)    |
| [CMA-MEGA](https://arxiv.org/abs/2106.03894)                                                                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/cmamega.ipynb)    |
| [Multi-Objective MAP-Elites (MOME)](https://arxiv.org/abs/2202.03057)                                                         | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mome.ipynb)       |
| [MAP-Elites Evolution Strategies (MEES)](https://dl.acm.org/doi/pdf/10.1145/3377930.3390217)                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mees.ipynb)       |
| [MAP-Elites PBT (ME-PBT)](https://openreview.net/forum?id=CBfYffLqWqb)                                                        | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/me_sac_pbt.ipynb) |
| [MAP-Elites Low-Spread (ME-LS)](https://dl.acm.org/doi/abs/10.1145/3583131.3590433)                                           | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/me_ls.ipynb)      |


## QDax baseline algorithms
The QDax library also provides implementations for some useful baseline algorithms:

| Algorithm  | Example |
| --- | --- |
| [DIAYN](https://arxiv.org/abs/1802.06070) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/diayn.ipynb) |
| [DADS](https://arxiv.org/abs/1907.01657) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/dads.ipynb) |
| [SMERL](https://arxiv.org/abs/2010.14484) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/smerl.ipynb) |
| [NSGA2](https://ieeexplore.ieee.org/document/996017) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/nsga2_spea2.ipynb) |
| [SPEA2](https://www.semanticscholar.org/paper/SPEA2%3A-Improving-the-strength-pareto-evolutionary-Zitzler-Laumanns/b13724cb54ae4171916f3f969d304b9e9752a57f) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/nsga2_spea2.ipynb) |
| [Population Based Training (PBT)](https://arxiv.org/abs/1711.09846)                                                           | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/sac_pbt.ipynb)    |

## QDax Tasks
The QDax library also provides numerous implementations for several standard Quality-Diversity tasks.

All those implementations, and their descriptions are provided in the [tasks directory](./qdax/tasks).

## Contributing
Issues and contributions are welcome. Please refer to the [contribution guide](https://qdax.readthedocs.io/en/latest/guides/CONTRIBUTING/) in the documentation for more details.

## Related Projects
- [EvoJAX: Hardware-Accelerated Neuroevolution](https://github.com/google/evojax). EvoJAX is a scalable, general purpose, hardware-accelerated neuroevolution toolkit. [Paper](https://arxiv.org/abs/2202.05008)
- [evosax: JAX-Based Evolution Strategies](https://github.com/RobertTLange/evosax)

## Citing QDax
If you use QDax in your research and want to cite it in your work, please use:
```
@misc{chalumeau2023qdax,
    title={QDax: A Library for Quality-Diversity and Population-based Algorithms with Hardware Acceleration},
    author={Felix Chalumeau and Bryan Lim and Raphael Boige and Maxime Allard and Luca Grillotti and Manon Flageat and Valentin Macé and Arthur Flajolet and Thomas Pierrot and Antoine Cully},
    year={2023},
    eprint={2308.03665},
    archivePrefix={arXiv},
    primaryClass={cs.AI}
}
```

## Contributors

QDax was developed and is maintained by the [Adaptive & Intelligent Robotics Lab (AIRL)](https://www.imperial.ac.uk/adaptive-intelligent-robotics/) and [InstaDeep](https://www.instadeep.com/).

<div align="center">
<img align="center" src="docs/img/AIRL_logo.png" alt="AIRL_Logo" width="220"/> <img align="center" src="docs/img/instadeep_logo.png" alt="InstaDeep_Logo" width="220"/>
</div>

<div align="center">
<a href="https://github.com/limbryan" title="Bryan Lim"><img src="https://github.com/limbryan.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/maxiallard" title="Maxime Allard"><img src="https://github.com/maxiallard.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/Lookatator" title="Luca Grilloti"><img src="https://github.com/Lookatator.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/manon-but-yes" title="Manon Flageat"><img src="https://github.com/manon-but-yes.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/Aneoshun" title="Antoine Cully"><img src="https://github.com/Aneoshun.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/felixchalumeau" title="Felix Chalumeau"><img src="https://github.com/felixchalumeau.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/ranzenTom" title="Thomas Pierrot"><img src="https://github.com/ranzenTom.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/Egiob" title="Raphael Boige"><img src="https://github.com/Egiob.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/valentinmace" title="Valentin Mace"><img src="https://github.com/valentinmace.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/GRichard513" title="Guillaume Richard"><img src="https://github.com/GRichard513.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/flajolet" title="Arthur Flajolet"><img src="https://github.com/flajolet.png" height="auto" width="50" style="border-radius:50%"></a>
<a href="https://github.com/remidebette" title="Rémi Debette"><img src="https://github.com/remidebette.png" height="auto" width="50" style="border-radius:50%"></a>
</div>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/adaptive-intelligent-robotics/QDax",
    "name": "qdax",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "Quality-Diversity,NeuroEvolution,Reinforcement Learning,JAX",
    "author": "AIRL and InstaDeep Ltd",
    "author_email": "adaptive.intelligent.robotics@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/4c/c5/e2532cd9e8f82c114af223998ddb7638d62be5c8dc0aff0a35ebef47f2c0/qdax-0.3.0.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<img src=\"docs/img/qdax_logo.png\" alt=\"qdax_logo\" width=\"140\"></img>\n</div>\n\n\n# QDax: Accelerated Quality-Diversity\n\n[![Documentation Status](https://readthedocs.org/projects/qdax/badge/?version=latest)](https://qdax.readthedocs.io/en/latest/?badge=latest)\n![pytest](https://github.com/adaptive-intelligent-robotics/QDax/actions/workflows/ci.yaml/badge.svg?branch=main)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/adaptive-intelligent-robotics/QDax/blob/main/LICENSE)\n[![codecov](https://codecov.io/gh/adaptive-intelligent-robotics/QDax/branch/feat/add-codecov/graph/badge.svg)](https://codecov.io/gh/adaptive-intelligent-robotics/QDax)\n\n\nQDax is a tool to accelerate Quality-Diversity (QD) and neuro-evolution algorithms through hardware accelerators and massive parallelization. QD algorithms usually take days/weeks to run on large CPU clusters. With QDax, QD algorithms can now be run in minutes! \u23e9 \u23e9 \ud83d\udd5b\n\nQDax has been developed as a research framework: it is flexible and easy to extend and build on and can be used for any problem setting. Get started with simple example and run a QD algorithm in minutes here! [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)\n\n- QDax [paper](https://arxiv.org/abs/2202.01258)\n- QDax [documentation](https://qdax.readthedocs.io/en/latest/)\n\n\n## Installation\nQDax is available on PyPI and can be installed with:\n```bash\npip install qdax\n```\nAlternatively, the latest commit of QDax can be installed directly from source with:\n```bash\npip install git+https://github.com/adaptive-intelligent-robotics/QDax.git@main\n```\nInstalling QDax via ```pip``` installs a CPU-only version of JAX by default. To use QDax with NVidia GPUs, you must first install [CUDA, CuDNN, and JAX with GPU support](https://github.com/google/jax#installation).\n\nHowever, we also provide and recommend using either Docker or conda environments to use the repository which by default provides GPU support. Detailed steps to do so are available in the [documentation](https://qdax.readthedocs.io/en/latest/installation/).\n\n## Basic API Usage\nFor a full and interactive example to see how QDax works, we recommend starting with the tutorial-style [Colab notebook](./examples/mapelites.ipynb). It is an example of the MAP-Elites algorithm used to evolve a population of controllers on a chosen Brax environment (Walker by default).\n\nHowever, a summary of the main API usage is provided below:\n```python\nimport jax\nimport functools\nfrom qdax.core.map_elites import MAPElites\nfrom qdax.core.containers.mapelites_repertoire import compute_euclidean_centroids\nfrom qdax.tasks.arm import arm_scoring_function\nfrom qdax.core.emitters.mutation_operators import isoline_variation\nfrom qdax.core.emitters.standard_emitters import MixingEmitter\nfrom qdax.utils.metrics import default_qd_metrics\n\nseed = 42\nnum_param_dimensions = 100  # num DoF arm\ninit_batch_size = 100\nbatch_size = 1024\nnum_iterations = 50\ngrid_shape = (100, 100)\nmin_param = 0.0\nmax_param = 1.0\nmin_bd = 0.0\nmax_bd = 1.0\n\n# Init a random key\nrandom_key = jax.random.PRNGKey(seed)\n\n# Init population of controllers\nrandom_key, subkey = jax.random.split(random_key)\ninit_variables = jax.random.uniform(\n    subkey,\n    shape=(init_batch_size, num_param_dimensions),\n    minval=min_param,\n    maxval=max_param,\n)\n\n# Define emitter\nvariation_fn = functools.partial(\n    isoline_variation,\n    iso_sigma=0.05,\n    line_sigma=0.1,\n    minval=min_param,\n    maxval=max_param,\n)\nmixing_emitter = MixingEmitter(\n    mutation_fn=lambda x, y: (x, y),\n    variation_fn=variation_fn,\n    variation_percentage=1.0,\n    batch_size=batch_size,\n)\n\n# Define a metrics function\nmetrics_fn = functools.partial(\n    default_qd_metrics,\n    qd_offset=0.0,\n)\n\n# Instantiate MAP-Elites\nmap_elites = MAPElites(\n    scoring_function=arm_scoring_function,\n    emitter=mixing_emitter,\n    metrics_function=metrics_fn,\n)\n\n# Compute the centroids\ncentroids = compute_euclidean_centroids(\n    grid_shape=grid_shape,\n    minval=min_bd,\n    maxval=max_bd,\n)\n\n# Initializes repertoire and emitter state\nrepertoire, emitter_state, random_key = map_elites.init(init_variables, centroids, random_key)\n\n# Run MAP-Elites loop\nfor i in range(num_iterations):\n    (repertoire, emitter_state, metrics, random_key,) = map_elites.update(\n        repertoire,\n        emitter_state,\n        random_key,\n    )\n\n# Get contents of repertoire\nrepertoire.genotypes, repertoire.fitnesses, repertoire.descriptors\n```\n\n\n## QDax core algorithms\nQDax currently supports the following algorithms:\n\n\n| Algorithm                                                                                                                     | Example                                                                                                                                                                                         |\n|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [MAP-Elites](https://arxiv.org/abs/1504.04909)                                                                                | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)  |\n| [CVT MAP-Elites](https://arxiv.org/abs/1610.05729)                                                                            | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mapelites.ipynb)  |\n| [Policy Gradient Assisted MAP-Elites (PGA-ME)](https://hal.archives-ouvertes.fr/hal-03135723v2/file/PGA_MAP_Elites_GECCO.pdf) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/pgame.ipynb)      |\n| [QDPG](https://arxiv.org/abs/2006.08505)                                                                                      | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/qdpg.ipynb)       |\n| [CMA-ME](https://arxiv.org/pdf/1912.02400.pdf)                                                                                | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/cmame.ipynb)      |\n| [OMG-MEGA](https://arxiv.org/abs/2106.03894)                                                                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/omgmega.ipynb)    |\n| [CMA-MEGA](https://arxiv.org/abs/2106.03894)                                                                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/cmamega.ipynb)    |\n| [Multi-Objective MAP-Elites (MOME)](https://arxiv.org/abs/2202.03057)                                                         | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mome.ipynb)       |\n| [MAP-Elites Evolution Strategies (MEES)](https://dl.acm.org/doi/pdf/10.1145/3377930.3390217)                                  | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/mees.ipynb)       |\n| [MAP-Elites PBT (ME-PBT)](https://openreview.net/forum?id=CBfYffLqWqb)                                                        | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/me_sac_pbt.ipynb) |\n| [MAP-Elites Low-Spread (ME-LS)](https://dl.acm.org/doi/abs/10.1145/3583131.3590433)                                           | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/me_ls.ipynb)      |\n\n\n## QDax baseline algorithms\nThe QDax library also provides implementations for some useful baseline algorithms:\n\n| Algorithm  | Example |\n| --- | --- |\n| [DIAYN](https://arxiv.org/abs/1802.06070) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/diayn.ipynb) |\n| [DADS](https://arxiv.org/abs/1907.01657) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/dads.ipynb) |\n| [SMERL](https://arxiv.org/abs/2010.14484) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/smerl.ipynb) |\n| [NSGA2](https://ieeexplore.ieee.org/document/996017) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/nsga2_spea2.ipynb) |\n| [SPEA2](https://www.semanticscholar.org/paper/SPEA2%3A-Improving-the-strength-pareto-evolutionary-Zitzler-Laumanns/b13724cb54ae4171916f3f969d304b9e9752a57f) | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/nsga2_spea2.ipynb) |\n| [Population Based Training (PBT)](https://arxiv.org/abs/1711.09846)                                                           | [![Open All Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adaptive-intelligent-robotics/QDax/blob/main/examples/sac_pbt.ipynb)    |\n\n## QDax Tasks\nThe QDax library also provides numerous implementations for several standard Quality-Diversity tasks.\n\nAll those implementations, and their descriptions are provided in the [tasks directory](./qdax/tasks).\n\n## Contributing\nIssues and contributions are welcome. Please refer to the [contribution guide](https://qdax.readthedocs.io/en/latest/guides/CONTRIBUTING/) in the documentation for more details.\n\n## Related Projects\n- [EvoJAX: Hardware-Accelerated Neuroevolution](https://github.com/google/evojax). EvoJAX is a scalable, general purpose, hardware-accelerated neuroevolution toolkit. [Paper](https://arxiv.org/abs/2202.05008)\n- [evosax: JAX-Based Evolution Strategies](https://github.com/RobertTLange/evosax)\n\n## Citing QDax\nIf you use QDax in your research and want to cite it in your work, please use:\n```\n@misc{chalumeau2023qdax,\n    title={QDax: A Library for Quality-Diversity and Population-based Algorithms with Hardware Acceleration},\n    author={Felix Chalumeau and Bryan Lim and Raphael Boige and Maxime Allard and Luca Grillotti and Manon Flageat and Valentin Mac\u00e9 and Arthur Flajolet and Thomas Pierrot and Antoine Cully},\n    year={2023},\n    eprint={2308.03665},\n    archivePrefix={arXiv},\n    primaryClass={cs.AI}\n}\n```\n\n## Contributors\n\nQDax was developed and is maintained by the [Adaptive & Intelligent Robotics Lab (AIRL)](https://www.imperial.ac.uk/adaptive-intelligent-robotics/) and [InstaDeep](https://www.instadeep.com/).\n\n<div align=\"center\">\n<img align=\"center\" src=\"docs/img/AIRL_logo.png\" alt=\"AIRL_Logo\" width=\"220\"/> <img align=\"center\" src=\"docs/img/instadeep_logo.png\" alt=\"InstaDeep_Logo\" width=\"220\"/>\n</div>\n\n<div align=\"center\">\n<a href=\"https://github.com/limbryan\" title=\"Bryan Lim\"><img src=\"https://github.com/limbryan.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/maxiallard\" title=\"Maxime Allard\"><img src=\"https://github.com/maxiallard.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/Lookatator\" title=\"Luca Grilloti\"><img src=\"https://github.com/Lookatator.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/manon-but-yes\" title=\"Manon Flageat\"><img src=\"https://github.com/manon-but-yes.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/Aneoshun\" title=\"Antoine Cully\"><img src=\"https://github.com/Aneoshun.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/felixchalumeau\" title=\"Felix Chalumeau\"><img src=\"https://github.com/felixchalumeau.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/ranzenTom\" title=\"Thomas Pierrot\"><img src=\"https://github.com/ranzenTom.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/Egiob\" title=\"Raphael Boige\"><img src=\"https://github.com/Egiob.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/valentinmace\" title=\"Valentin Mace\"><img src=\"https://github.com/valentinmace.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/GRichard513\" title=\"Guillaume Richard\"><img src=\"https://github.com/GRichard513.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/flajolet\" title=\"Arthur Flajolet\"><img src=\"https://github.com/flajolet.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n<a href=\"https://github.com/remidebette\" title=\"R\u00e9mi Debette\"><img src=\"https://github.com/remidebette.png\" height=\"auto\" width=\"50\" style=\"border-radius:50%\"></a>\n</div>\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Python Library for Quality-Diversity and NeuroEvolution",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/adaptive-intelligent-robotics/QDax"
    },
    "split_keywords": [
        "quality-diversity",
        "neuroevolution",
        "reinforcement learning",
        "jax"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7b919787f15b18bff2d827d57ac6a1745bc514a2bec442c2a422287cb632899e",
                "md5": "bf0c816714d4cb462c59554e1cbaada1",
                "sha256": "8deb884ac6b6b7a8634917ae62d6fb8c98a474236104bde45c6c05e3832ccbcd"
            },
            "downloads": -1,
            "filename": "qdax-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bf0c816714d4cb462c59554e1cbaada1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 197431,
            "upload_time": "2024-01-25T16:15:05",
            "upload_time_iso_8601": "2024-01-25T16:15:05.007142Z",
            "url": "https://files.pythonhosted.org/packages/7b/91/9787f15b18bff2d827d57ac6a1745bc514a2bec442c2a422287cb632899e/qdax-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4cc5e2532cd9e8f82c114af223998ddb7638d62be5c8dc0aff0a35ebef47f2c0",
                "md5": "e6fbbabc4a7c696df038db611ad5269c",
                "sha256": "447add0288d8a1c4134d34b1acb5cfcf39c24399cf8dcbacce097aa63686e985"
            },
            "downloads": -1,
            "filename": "qdax-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e6fbbabc4a7c696df038db611ad5269c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 137746,
            "upload_time": "2024-01-25T16:15:07",
            "upload_time_iso_8601": "2024-01-25T16:15:07.275729Z",
            "url": "https://files.pythonhosted.org/packages/4c/c5/e2532cd9e8f82c114af223998ddb7638d62be5c8dc0aff0a35ebef47f2c0/qdax-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-25 16:15:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "adaptive-intelligent-robotics",
    "github_project": "QDax",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "qdax"
}
        
Elapsed time: 0.17110s