ARIA is a plug-and-play approach that improves the reproducibility of solutions present in an archive. It can be applied to any set of solutions returned by a Quality-Diversity (QD) or Evolution Strategy (ES) algorithm. For more details, see our paper on arXiv.
| Solution from MAP-Elites | After using ARIA | Solution from PGA-ME | After using ARIA |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
We require Python 3.10 or higher, and recommend to install the dependencies in a virtual environment.
- First, create and activate a virtual environment:
python -m venv aria_env
source aria_env/bin/activate- Once the virtual environment is activated, install the required dependencies:
pip install -r requirements.txtIf you want to leverage hardware acceleration and run the code on your GPU, you can install JAX with CUDA support:
pip install -U "jax[cuda12]==<version_in_requirements.txt>"The general command structure to run the algorithm is:
python main.py +task=<task_name> +algo=<algorithm_name> task.seed=<seed> [additional_parameters]arm: A planar robotic arm task, where the goal is to reach different final positions with an 8 Degrees of Freedom (DoF) arm.ant_omni: An ant robot task, where a four-legged robot needs to reach diverse final positions.walker_uni: A bipedal walker task, where the goal is to find diverse ways to move forward as fast as possible.
aria_es_init: The Archive Reproducibility Improvement Algorithm (ARIA) initialized with a single genotype optimized via an Evolution Strategy (ES) algorithm.aria_mapelites_init: ARIA initialized with a MAP-Elites archive.aria_pga_init: ARIA initialized with a Policy Gradient Assisted MAP-Elites (PGA-ME) archive.aria_linearcomb: A variant of ARIA using a linear combination objective function. This algorithm requiresalgo.weight_fitness_obj=<value>, where<value>balances the importance of the fitness and reproducibility objectives. That value should be between 0 and 1.map_elites: The standard MAP-Elites algorithm.naive_sampling: A baseline algorithm that uses naive sampling. Requiresalgo.weight_fitness_obj=<value>too.mome_reproducibility: Multi-Objective MAP-Elites with Reproducibility consideration.
Note: The arm task is incompatible with PGA-based algorithms (i.e., aria_pga_init).
main.py: The main script to run the algorithm.aria/:aria_es_init.py: Implementation of ARIA initialized with an ES genotype.aria_mapelites_init.py: Implementation of ARIA initialized with a MAP-Elites (or PGA-ME) archive.reproducibility_improvers: Contains the optimizers used to improve the reproducibility of the archive.algos: Contains all baselines and algorithm factory
If you use this work in your research, please cite our paper:
@inproceedings{grillotti2023aria,
title={Don't bet on luck alone: Enhancing behavioral reproducibility of quality-diversity solutions in uncertain domains},
author={Grillotti, Luca and Flageat, Manon and Lim, Bryan and Cully, Antoine},
booktitle={Proceedings of the Genetic and Evolutionary Computation Conference},
pages={156--164},
year={2023}
}


