/limbo

A lightweight framework for Gaussian processes and Bayesian optimization of black-box functions (C++-11)

Primary LanguageC++OtherNOASSERTION

limbo Build Status DOI

Limbo (LIbrary for Model-Based Optimization) is an open-source C++11 library for Gaussian Processes and data-efficient optimization (e.g., Bayesian optimization) that is designed to be both highly flexible and very fast. It can be used as a state-of-the-art optimization library or to experiment with novel algorithms with "plugin" components.

logo

Documentation & Versions

The development branch is the master branch. For the latest stable release, check the release-2.1 branch. Documentation is available at: http://www.resibots.eu/limbo

Citing Limbo

If you use Limbo in a scientific paper, please cite:

Cully, A., Chatzilygeroudis, K., Allocati, F., and Mouret J.-B., (2018). Limbo: A Flexible High-performance Library for Gaussian Processes modeling and Data-Efficient Optimization. The Journal of Open Source Software.

In BibTex:

@article{cully2018limbo,
    title={{Limbo: A Flexible High-performance Library for Gaussian Processes modeling and Data-Efficient Optimization}},
    author={Cully, A. and Chatzilygeroudis, K. and Allocati, F.  and Mouret, J.-B.},
    year={2018},
    journal={{The Journal of Open Source Software}},
    publisher={The Open Journal},
    volume={3},
    number={26},
    pages={545},
    doi={10.21105/joss.00545}
}

Authors

Other contributors

  • Vaios Papaspyros (Inria)
  • Roberto Rama (Inria)

Limbo is partly funded by the ResiBots ERC Project (http://www.resibots.eu).

Main features

  • 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 multi-core computers via Intel TBB and vectorize some operations via Eigen3)
  • Purposely small to be easily maintained and quickly understood

Scientific articles that use Limbo

Research projects that use Limbo