Package cma
implements the CMA-ES (Covariance Matrix Adaptation
Evolution Strategy).
CMA-ES is a stochastic optimizer for robust non-linear non-convex derivative- and function-value-free numerical optimization.
This implementation can be used with Python versions >= 2.7, namely, it was tested with 2.7, 3.5, 3.6, 3.7, 3.8.
CMA-ES searches for a minimizer (a solution x in Rn) of an objective function f (cost function), such that f(x) is minimal. Regarding f, only a passably reliable ranking of the candidate solutions in each iteration is necessary. Neither the function values itself, nor the gradient of f need to be available or do matter (like in the downhill simplex Nelder-Mead algorithm). Some termination criteria however depend on actual f-values.
The cma
module provides two independent implementations of the
CMA-ES algorithm in the classes cma.CMAEvolutionStrategy
and
cma.purecma.CMAES
.
In each implementation two interfaces are provided:
- functions
fmin2
andpurecma.fmin
: - run a complete minimization of the passed objective function with
CMA-ES.
fmin
also provides optional restarts and noise handling.
- functions
- class
CMAEvolutionStrategy
andpurecma.CMAES
: - allow for minimization such that the control of the iteration loop remains with the user.
- class
The cma
package root provides shortcuts to these and other classes and
functions.
Used external packages are numpy
(only purecma
does not depend on
numpy
) and matplotlib.pyplot
(for plot
etc., optional but highly
recommended).
Install
To use the module, the folder cma only needs to be visible in the python path, e.g. in the current working directory.
To install the module from pipy, type:
pip install cma
from the command line.
To install the module from a cma folder:
pip install -e cma
To upgrade the currently installed version use additionally the -U option.
Testing
From the system shell:
python -m cma.test -h python -m cma.test python -c "import cma.test; cma.test.main()" # the same
or from any (i)python shell:
import cma.test cma.test.main()
should run without complaints in about between 20 and 100 seconds.
Example
From a python shell:
import cma help(cma) # "this" help message, use cma? in ipython help(cma.fmin) help(cma.CMAEvolutionStrategy) help(cma.CMAOptions) cma.CMAOptions('tol') # display 'tolerance' termination options cma.CMAOptions('verb') # display verbosity options res = cma.fmin(cma.ff.tablet, 15 * [1], 1) es = cma.CMAEvolutionStrategy(15 * [1], 1).optimize(cma.ff.tablet) help(es.result) res[0], es.result[0] # best evaluated solution res[5], es.result[5] # mean solution, presumably better with noise
Authors | |
Nikolaus Hansen, 2008- | |
Petr Baudis, 2014 | |
Youhei Akimoto, 2017- | |
See Also | |
fmin (), CMAOptions , CMAEvolutionStrategy | |
Unknown Field: license | |
BSD 3-Clause, see LICENSE file. |
Module | bbobbenchmarks |
BBOB noiseless testbed. |
Module | constraints |
A collection of boundary and (in future) constraints handling classes. |
Module | evolution |
CMA-ES (evolution strategy), the main sub-module of cma providing in particular CMAOptions , CMAEvolutionStrategy , and fmin2 |
Module | fitness |
versatile container for test objective functions. |
Module | fitness |
Fitness surrogate model classes and handler for incremental evaluations. |
Module | fitness |
Wrapper for objective functions like noise, rotation, gluing args |
Module | interfaces |
Very few interface defining base class definitions |
Module | logger |
logger class mainly to be used with CMAEvolutionStrategy |
Module | optimization |
Utility classes and functionalities loosely related to optimization |
Module | purecma |
A minimalistic implemention of CMA-ES without using numpy . |
Module | recombination |
RecombinationWeights is a list of recombination weights for the CMA-ES. |
Module | restricted |
VD-CMA and VkD-CMA |
Module | s |
versatile shortcuts for quick typing in an (i)python shell or even from cma.s import * in interactive sessions. |
Module | sampler |
Collection of classes that sample from parametrized distributions and provide an update mechanism of the distribution parameters. |
Module | sigma |
step-size adaptation classes, currently tightly linked to CMA, because hsig is computed in the base class |
Module | test |
test module of cma package. |
Module | transformations |
Search space transformation and encoding/decoding classes |
Package | utilities |
various unspecific utilities |
Module | wrapper |
Interface wrappers for the cma module. |
From __init__.py
:
Variable | __ |
Undocumented |
Variable | __license__ |
Undocumented |
Variable | __version__ |
Undocumented |