The Boulder Opal Toolkits are currently in beta phase of development. Breaking changes may be introduced.

class Cmaes(initial_mean=None, initial_step_size=None, population_size=None, seed=None)

The covariance matrix adaptation evolution strategy (CMA-ES) optimizer.

  • initial_mean (np.ndarray, optional) – The array of the initial means of the parameters for the multivariate normal distribution. Defaults to None, in which case a random value inside the bounds is used for each parameter. If set, the value must be within the corresponding bounds for each parameter.

  • initial_step_size (float, optional) – The initial step size for the multivariate normal distribution from which new test points are sampled. Defaults to one.

  • population_size (int, optional) – The population size of the test candidates. It is recommended to use a population size of at least \(P = 4 + \lfloor 3 \times \log N \rfloor\), where \(N\) is the number of optimizable parameters, \(\log\) is the natural logarithm, and \(\lfloor x \rfloor\) is the floor function. Defaults to \(P\).

  • seed (int, optional) – Seed for the random number generator. Use this option to generate deterministic results from the optimizer.


The CMA-ES optimizer uses a multivariate normal distribution to generate new test points. From an initial_mean and initial_step_size, this distribution is continually updated using an evolutionary strategy, with each update depending on the previous values and the current set of results. New test points are sampled from the distribution until convergence is reached.

For more detail on CMA-ES see CMA-ES on Wikipedia.