libcmaes 0.10.2
A C++11 library for stochastic optimization with CMA-ES
Loading...
Searching...
No Matches
libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno > Class Template Reference

Surrogate base class, to be derived in order to create strategy to be used along with CMA-ES. More...

#include <libcmaes/surrogatestrategy.h>

Inheritance diagram for libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >:
libcmaes::ACMSurrogateStrategy< TStrategy, CovarianceUpdate, GenoPheno< NoBoundStrategy > > libcmaes::ACMSurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno > libcmaes::SimpleSurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno > libcmaes::RSVMSurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >

Public Member Functions

 SurrogateStrategy (FitFunc &func, CMAParameters< TGenoPheno > &parameters)
 constructor
 
int train (const std::vector< Candidate > &candidates, const dMat &cov)
 train a surrogate model
 
int predict (std::vector< Candidate > &candidates, const dMat &cov)
 predict from a surrogate model
 
double compute_error (const std::vector< Candidate > &test_set, const dMat &cov=dMat(0, 0))
 compute surrogate model error (copies and sorts the test_set)
 
bool do_train () const
 conditionals on training, to be specialized in inherited surrogate strategies
 
void set_ftrain (const CSurrFunc &train)
 sets the training function
 
void set_fpredict (const SurrFunc &predict)
 sets the prediction function
 
void set_l (const int &l)
 sets the size of the training set (number of points)
 
int get_l () const
 gets the size of the training set (number of points)
 
void set_exploit (const bool &exploit)
 sets whether to exploit the surrogate model
 
bool get_exploit () const
 gets the state of surrogate model exploitation
 
double get_train_error () const
 returns the surrogate model training error
 
double get_test_error () const
 returns the surrogate model test error
 
void set_train_error (const double &err)
 sets training error
 
void set_test_error (const double &err)
 sets the test error and updates the smoothed test err.
 
void add_to_training_set (const Candidate &c)
 adds a point to the training set (candidate = points + objective function value)
 
void set_nsteps (const int &nsteps)
 sets the lifelength of the surrogate, i.e. the number of steps in between to training steps
 
void reset_training_set ()
 resets training set and related information, useful when using algorithms with restarts
 
int get_nsteps () const
 returns the current surrogate lifelength
 

Protected Attributes

bool _exploit = true
 
int _l = 200
 
std::vector< Candidate_tset
 
CSurrFunc _train
 
SurrFunc _predict
 
double _train_err = 0.0
 
double _test_err = 0.0
 
double _smooth_test_err = 0.5
 
double _beta_err = 0.2
 
int _nsteps = 1
 
int _auto_nsteps = false
 

Detailed Description

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
class libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >

Surrogate base class, to be derived in order to create strategy to be used along with CMA-ES.

Constructor & Destructor Documentation

◆ SurrogateStrategy()

libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::SurrogateStrategy ( FitFunc &  func,
CMAParameters< TGenoPheno > &  parameters 
)

constructor

Parameters
funcobjective function to minimize
parametersoptimization parameters

Member Function Documentation

◆ add_to_training_set()

void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::add_to_training_set ( const Candidate c)

adds a point to the training set (candidate = points + objective function value)

Parameters
cpoint to add to the training set

◆ compute_error()

double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::compute_error ( const std::vector< Candidate > &  test_set,
const dMat &  cov = dMat(0,0) 
)

compute surrogate model error (copies and sorts the test_set)

Parameters
test_setthe candidate points along with their objective function values for model evaluation
covpossibly empty covariance matrix in order to re-scale the points before error estimation
Returns
surrogate model error estimate

◆ do_train()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
bool libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::do_train ( ) const
inline

conditionals on training, to be specialized in inherited surrogate strategies

Returns
whether to train surrogate

◆ get_exploit()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
bool libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::get_exploit ( ) const
inline

gets the state of surrogate model exploitation

Returns
whether the surrogate model is being exploited

◆ get_l()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::get_l ( ) const
inline

gets the size of the training set (number of points)

Returns
size of the training set

◆ get_nsteps()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::get_nsteps ( ) const
inline

returns the current surrogate lifelength

Returns
current surrogate lifelength

◆ get_test_error()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::get_test_error ( ) const
inline

returns the surrogate model test error

Returns
surrogate model test error

◆ get_train_error()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::get_train_error ( ) const
inline

returns the surrogate model training error

Returns
surrogate model training error

◆ predict()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::predict ( std::vector< Candidate > &  candidates,
const dMat &  cov 
)
inline

predict from a surrogate model

Parameters
candidatesset of points for which value is to be predicted
cova possibly empty covariance matrix in order to re-scale points before predicting
Returns
prediction status

◆ set_exploit()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_exploit ( const bool exploit)
inline

sets whether to exploit the surrogate model

Parameters
exploitwhether to exploit the surrogate model

◆ set_fpredict()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_fpredict ( const SurrFunc predict)
inline

sets the prediction function

Parameters
predictionfunction

◆ set_ftrain()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_ftrain ( const CSurrFunc train)
inline

sets the training function

Parameters
trainingfunction

◆ set_l()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_l ( const int l)
inline

sets the size of the training set (number of points)

Parameters
lsize of the training set

◆ set_nsteps()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_nsteps ( const int nsteps)
inline

sets the lifelength of the surrogate, i.e. the number of steps in between to training steps

Parameters
nstepssurrogate lifelength, -1 for automatic determination

◆ set_test_error()

sets the test error and updates the smoothed test err.

Parameters
errtest error

◆ set_train_error()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
void libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::set_train_error ( const double err)
inline

sets training error

Parameters
errtraining error

◆ train()

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::train ( const std::vector< Candidate > &  candidates,
const dMat &  cov 
)
inline

train a surrogate model

Parameters
candidatesset of points along with objective function value
cova possibly empty covariance matrix in order to re-scale points before training
Returns
training status

Member Data Documentation

◆ _auto_nsteps

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_auto_nsteps = false
protected

whether to automatically set the surrogate lifelength.

◆ _beta_err

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_beta_err = 0.2
protected

smoothing constant.

◆ _exploit

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
bool libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_exploit = true
protected

whether to exploit or test the surrogate.

◆ _l

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_l = 200
protected

number of training samples. set to floor(30*sqrt(n)) in constructor.

◆ _nsteps

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
int libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_nsteps = 1
protected

steps in between two training phases.

◆ _predict

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
SurrFunc libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_predict
protected

custom prediction function.

◆ _smooth_test_err

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_smooth_test_err = 0.5
protected

smoothed test error as (1-\beta_err)*_test_err + \beta_err * new_test_err

◆ _test_err

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_test_err = 0.0
protected

current surrogate model error estimate.

◆ _train

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
CSurrFunc libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_train
protected

custom training function.

◆ _train_err

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
double libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_train_err = 0.0
protected

current surrogate training error.

◆ _tset

template<template< class U, class V > class TStrategy, class TCovarianceUpdate = CovarianceUpdate, class TGenoPheno = GenoPheno<NoBoundStrategy>>
std::vector<Candidate> libcmaes::SurrogateStrategy< TStrategy, TCovarianceUpdate, TGenoPheno >::_tset
protected

current training set.


The documentation for this class was generated from the following files: