-
Notifications
You must be signed in to change notification settings - Fork 81
Home
libcmaes is a multithreaded C++11 library for high performance blackbox stochastic optimization using the CMA-ES algorithm for Covariance Matrix Adaptation Evolution Strategy.
It is especially useful and efficient for finding minimums and maximums of possibly complex, non-separable, non-derivable functions.
The library exposes a set of simple structures to the user. Below, the function to be optimized is refered to as the objective function, whose parameters define the state-space into which the search for solution takes place. The hyper-parameters are the set of parameters that govern the CMA-ES algorithm: some have their value determined automatically, and others can be overridden by the user.
Dependencies:
- eigen for all matrix operations;
- glog for logging events and debug (optional);
- gflags for command line parsing (optional);
- gtest for unit testing (optional).
sudo apt-get install libgoogle-glog-dev libgflags-dev libeigen3-dev
For compiling with basic options enabled:
./autogen.sh
./configure
make
To specify the location of your Eigen header repository, do:
./configure --with-eigen3-include=/path/to/eigen3
make
In order to install in a repository of your choice, for instance your home, do:
./configure --prefix=/home/username
make
make install
The installed files will be found in /home/username/include and /home/username/lib
All available options to configure can be listed with:
./configure --help
- Optimizing a function
- Visualizing optimization results and convergence
- Defining and using bounds on parameters
- Using parameter space transforms known as genotype/phenotype transforms
- Using a custom progress function
- Using a user-defined gradient function
- Defining a custom algorithm based on libcmaes primitives
- Compiling and running BBOB'2013 benchmark