CMA-ES, Covariance Matrix Adaptation Evolution Strategy for non-linear numerical optimization in Python

optimization, CMA-ES, cmaes
pip install cma==2.6.0



A Python implementation of CMA-ES and a few related numerical optimization tools.

The Covariance Matrix Adaptation Evolution Strategy (CMA-ES) is a stochastic derivative-free numerical optimization algorithm for difficult (non-convex, ill-conditioned, multi-modal, rugged, noisy) optimization problems in continuous search spaces.

Useful links:

Installation of the latest release


  python -m pip install cma

in a system shell to install the latest release from the Python Package Index (PyPI). The release link also provides more installation hints and a quick start guide.

Installation of the current master branch

The quick way (requires git to be installed):

 pip install git+

The long version: download and unzip the code (see green button above) or git clone

  • Either, copy (or move) the cma source code folder into a folder visible to Python, namely a folder which is in the Python path (e.g. the current folder). Then, import cma works without any further installation.

  • Or, install the cma package by typing within the folder, where the cma source code folder is visible,

    pip install -e cma

    Moving the cma folder away from its location would invalidate this installation.

It may be necessary to replace pip with python -m pip and/or prefixing either of these with sudo.

Version History

  • Version 2.4.2 added the function cma.fmin2 which, similar to cma.purecma.fmin, returns (x_best:numpy.ndarray, es:cma.CMAEvolutionStrategy) instead of a 10-tuple like cma.fmin.

  • Version 2.2.0 added VkD CMA-ES to the master branch.

  • Version 2.* is a multi-file split-up of the original module.

  • Version 1.x.* is a one file implementation and not available in the history of this repository. The latest 1.* version ```1.1.7`` can be found here.