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
purecmaandCompactGA.
Related
- Project
- Project
- Project
- Project
- Project