Limbo is a lightweight framework for Bayesian Optimization, a powerful approach for global optimization of expensive, non-convex functions. Github page (to report issues and/or help us to improve the library): [Github repository]
The development of Limbo is funded by the ERC project ResiBots.
Limbo shares many ideas with Sferes2, a similar framework for evolutionary computation.
- Implementation of the classic algorithms (Bayesian optimization, many kernels, likelihood maximization, etc.)
- Modern C++-11
- Generic framework (template-based / policy-based design), which allows for easy customization, to test novel ideas
- Experimental framework that allows user to easily test variants of experiments, compare treatments, submit jobs to clusters (OAR scheduler), etc.
- High performance (in particular, Limbo can exploit multicore computers via Intel TBB and vectorize some operations via Eigen3)
- Purposely small to be easily maintained and quickly understood
- Limbo’s documentation
- Class Structure
- Sequence diagram
- File Structure
- Bayesian optimizers (bayes_opt)
- Acquisition functions (acqui)
- Init functions (init)
- Optimization functions (opt)
- Models / Gaussian processes (model)
- Kernel functions (kernel)
- Mean functions (mean)
- Stopping criteria (stop)
- Statistics (stats)
- Parallel tools (par)
- Misc tools (tools)
- Gaussian process regression benchmarks
- Bayesian optimization benchmarks
- Frequently Asked Questions
- Why waf (and not Cmake, or <insert your favorite build system>)?
- Where is the configuration file?
- Why am I getting “‘NoLFOpt’ should never be called!” assertion failure?
- Why am I getting “‘XXXLFOpt’ was never called!” errors?
- Why do I get “[NLOptNoGrad]: nlopt invalid argument”
- Why C++11? (and not <insert your favorite language>)?