Skip to content

Using Surrogates for expensive objective functions

beniz edited this page Oct 8, 2014 · 8 revisions

A surrogate is a replacement model of the true original objective function. This surrogate can be learnt by using a machine learning algorithm from a reduced number of points collected from calls to the true objective function.

Surrogates are mostly useful when calling the true objective function is expensive. They provide a way to optimize the function while drastically reducing the overall number of calls.

Libcmaes supports surrogates and provide an easy way of setting them up. In libcmaes, the use of a surrogate requires two pieces:

  • a strategy, that defines how and when to train the surrogate model, and when to exploit it. Libcmaes provides a few well-tested strategies from the literature. Experienced users can easily craft custom ones;
  • a machine learning algorithm, and libcmaes provides a ranking SVM implementation. Other machine algorithms can be plugged to the framework without much difficulties.

This means that for non-expert users, it is rather straightforward to use surrogate in order to optimize expensive objective functions.

Quick start

Using an external / custom machine learning algorithm

Defining new strategies for surrogate training & exploitation