CMA-ES/pycma

Python implementation of CMA-ES

What it solves

pycma is a Python implementation of the Covariance Matrix Adaptation Evolution Strategy (CMA-ES), designed to solve difficult numerical optimization problems. It specifically targets problems that are non-convex, ill-conditioned, multi-modal, rugged, or noisy, where traditional gradient-based methods may fail because they are derivative-free.

How it works

The library implements the CMA-ES algorithm, a randomized search strategy that adapts its covariance matrix to navigate search spaces. It supports various complex scenarios including:

  • Bound Constraints: Handled via specific options or a dedicated wrapper (BoundDomainTransform).
  • Mixed-Integer Search: Support for integer variables within continuous search spaces.
  • Constraints: Ability to handle both linear and nonlinear constraints.
  • Noise Handling: Built-in mechanisms to manage noisy objective functions.

Who it’s for

It is intended for researchers and engineers working on continuous and mixed-integer numerical optimization, particularly those dealing with "black-box" functions where derivatives are unavailable or the search space is highly irregular.

Highlights

  • Derivative-Free: Operates without needing gradients, making it suitable for rugged or noisy landscapes.
  • Flexible Constraints: Supports bound, linear, and nonlinear constraints.
  • Mixed-Integer Support: Can optimize across both continuous and integer variables.
  • CMA-ES Variants: Includes related tools like purecma and CompactGA.

Related

  • Project
  • Project
  • Project
  • Project
  • Project