Quality-Diversity algorithms in Python
Project description
Package qdpy implements recent Quality-Diversity algorithms: Map-Elites, CVT-Map-Elites, NSLC, SAIL, etc. QD algorithms can be accessed directly, but qdpy also includes building blocks that can be easily assembled together to build your own QD algorithms. It can be used with parallelism mechanisms and in distributed environments.
This package requires Python 3.6+.
- qdpy includes the following features:
Generic support for diverse Containers: Grids, Novelty-Archives, Populations, etc
Optimisation algorithms for QD: random search methods, quasi-random methods, evolutionary algorithms
Support for multi-objective optimisation methods
Possible to use optimisation methods not designed for QD, such as [CMA-ES](https://arxiv.org/pdf/1604.00772.pdf)
Parallelisation of evaluations, using parallelism libraries, such as multiprocessing, concurrent.futures or [SCOOP](https://github.com/soravux/scoop)
Easy integration with the popular [DEAP](https://github.com/DEAP/deap) evolutionary computation framework
Install
- qdpy requires Python 3.6+. It can be installed with:
pip3 install qdpy
- qdpy includes optional features that need extra packages to be installed:
cma for CMA-ES support
deap to integrate with the DEAP library
tables to output results files in the HDF5 format
tqdm to display a progress bar showing optimisation progress
colorama to add colours to pretty-printed outputs
- You can install qdpy and all of these optional dependencies with:
pip3 install qdpy[all]
- The latest version can be installed from the GitLab repository:
pip3 install git+https://gitlab.com/leo.cazenille/qdpy.git@master
Example
From a python shell:
from qdpy import algorithms, containers, benchmarks, plots # Create container and algorithm. Here we use MAP-Elites, by illuminating a Grid container by evolution. grid = containers.Grid(shape=(64,64), max_items_per_bin=1, fitness_domain=((0., 1.),), features_domain=((0., 1.), (0., 1.))) algo = algorithms.RandomSearchMutPolyBounded(grid, budget=60000, batch_size=500, dimension=3, optimisation_task="maximisation") # Create a logger to pretty-print everything and generate output data files logger = algorithms.AlgorithmLogger(algo) # Define evaluation function eval_fn = algorithms.partial(benchmarks.illumination_rastrigin_normalised, nb_features = len(grid.shape)) # Run illumination process ! best = algo.optimise(eval_fn) # Print results info print(algo.summary()) # Plot the results plots.default_plots_grid(logger) print("All results are available in the '%s' pickle file." % logger.final_filename)
Usage, Documentation
Please to go the GitLab repository main page (https://gitlab.com/leo.cazenille/qdpy) and the documentation main page (https://leo.cazenille.gitlab.io/qdpy/).
- Author:
Leo Cazenille, 2018-*
- License:
LGPLv3, see LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file qdpy-0.1.2.2.tar.gz
.
File metadata
- Download URL: qdpy-0.1.2.2.tar.gz
- Upload date:
- Size: 937.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9a8ee566f5b695123bc157be1179488bd311b1ac734a786796d0430f363c32f |
|
MD5 | 16f0249be612cd58b09391d888f80a6a |
|
BLAKE2b-256 | 75c956c6ba7e0678e26af27956e50e07085ea91bf2250646204c62b87408f154 |
File details
Details for the file qdpy-0.1.2.2-py3-none-any.whl
.
File metadata
- Download URL: qdpy-0.1.2.2-py3-none-any.whl
- Upload date:
- Size: 848.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce406636253a37c4e16889b5e01b5eb004a138d69b0f82b735216abcc34847bf |
|
MD5 | 6711e75428b89f318d7a4db0e15bd3ee |
|
BLAKE2b-256 | bf74b2428cf484151c636c52e7ff857347fffa1807dffe079e0f2cc5ba28b82d |