25#include <libcmaes/eo_matrix.h>
26#include <libcmaes/candidate.h>
27#include <libcmaes/eigenmvn.h>
32 typedef std::function<double (
const double*,
const int &n)> FitFunc;
33 typedef std::function<dVec (
const double*,
const int &n)> GradFunc;
35 typedef std::function<void(
const dMat&,
const dMat&)> EvalFunc;
36 typedef std::function<dMat(
void)> AskFunc;
37 typedef std::function<void(
void)> TellFunc;
39 template<
class TParameters,
class TSolutions>
40 using ProgressFunc = std::function<int (
const TParameters&,
const TSolutions&)>;
42 template<
class TParameters,
class TSolutions>
43 using PlotFunc = std::function<int (
const TParameters&,
const TSolutions&, std::ofstream &fplotstream)>;
50 template<
class TParameters,
class TSolutions,
class TStopCriteria>
98 void eval(
const dMat &candidates,
133 void update_fevals(
const int &
evals);
156 _parameters.set_x0(
sol.best_candidate().get_x_dvec());
174 dVec gradf(
const dVec &
x);
181 dVec gradgp(
const dVec &
x)
const;
207 double fitfunc(
const double *
x,
const int N) {
return _func(
x,
N); }
213 void uncertainty_handling();
233 void set_candidates_uh(
const std::vector<RankedCandidate>&
nvcandidates);
245 void set_initial_elitist(
const bool &
e) { _initial_elitist =
e; }
254 GradFunc _gfunc =
nullptr;
257 bool _initial_elitist =
false;
261 std::uniform_real_distribution<> _uhunif;
Definition eigenmvn.h:109
candidate solution point, in function parameter space.
Definition candidate.h:34
Main class describing an evolutionary optimization strategy. Every algorithm in libcmaes descends fro...
Definition esostrategy.h:52
int _nevals
Definition esostrategy.h:249
FitFunc _func
Definition esostrategy.h:248
ProgressFunc< TParameters, TSolutions > _pfunc
Definition esostrategy.h:253
double fitfunc(const double *x, const int N)
execute objective function
Definition esostrategy.h:207
TParameters _parameters
Definition esostrategy.h:252
TSolutions & get_solutions()
returns reference to current solution object
Definition esostrategy.h:193
TSolutions _solutions
Definition esostrategy.h:251
TParameters & get_parameters()
returns reference to current optimization parameters object
Definition esostrategy.h:199
void set_progress_func(ProgressFunc< TParameters, TSolutions > &pfunc)
Sets the possibly custom progress function, that is called in between every search step,...
Definition esostrategy.h:148
bool stop()
Decides whether to stop the search for solutions.
std::mt19937 _uhgen
Definition esostrategy.h:260
int _niter
Definition esostrategy.h:250
int optimize(const EvalFunc &evalf, const AskFunc &askf, const TellFunc &tellf)
Finds the minimum of the objective function. It makes alternative calls to ask(), tell() and stop() u...
void set_plot_func(PlotFunc< TParameters, TSolutions > &pffunc)
Sets the possibly custom plot to file function, that is useful for storing into file various possibly...
Definition esostrategy.h:167
void tell()
Updates the state of the stochastic search, and prepares for the next iteration.
ESOStrategy()
dummy constructor.
Definition esostrategy.h:57
void set_gradient_func(GradFunc &gfunc)
sets the gradient function, if available.
Definition esostrategy.h:139
PlotFunc< TParameters, TSolutions > _pffunc
Definition esostrategy.h:255
dMat ask()
Generates a set of candidate points.
void start_from_solution(const TSolutions &sol)
starts optimization from a given solution object.
Definition esostrategy.h:154
an optimizer main class.
Definition esoptimizer.h:72
ESOptimizer()
dummy constructor
Definition esoptimizer.h:77
linear scaling of the parameter space to achieve similar sensitivity across all components.
Definition acovarianceupdate.h:30