43 if (ipar >=
fValues.size() )
return;
55 const std::vector<double> &
Transform(
const std::vector<double> & factors)
const {
61 for (
unsigned int i = 0, j = 0; i <
n ; ++i) {
72 const std::vector<double> &
x =
Transform( factors);
86 fNsteps = (defmaxiter > 0) ? defmaxiter : 100;
157 double lower =
value - (50 * step);
158 double upper =
value + (50 * step);
159 Info(
"GeneticMinimizer::SetVariable",
"Variables should be limited - set automatic range to 50 times step size for %s : [%f, %f]",
160 name.c_str(),lower,upper);
169 Error(
"GeneticMinimizer::SetFixedVariable",
"Function has not been set - cannot set fixed variables %s",
name.c_str());
230 Warning(
"GeneticMinimizer::SetOptions",
"No specific genetic minimizer options have been set");
247 Warning(
"GeneticMinimizer::SetOptions",
"max iterations value given different than than Steps - set equal to Steps %d",
fParameters.
fNsteps);
257 Error(
"GeneticMinimizer::Minimize",
"Fitness function has not been set");
268 std::cout <<
"GeneticMinimizer::Minimize - Start iterating - max iterations = " <<
MaxIterations()
273 unsigned int niter = 0;
287 std::cout <<
"New Iteration " << niter <<
" with parameter values :" << std::endl;
290 std::vector<Double_t> gvec;
292 for (
unsigned int i = 0; i < gvec.size(); ++i) {
293 std::cout << gvec[i] <<
" ";
295 std::cout << std::endl;
302 Info(
"GeneticMinimizer::Minimize",
"Max number of iterations %d reached - stop iterating",
MaxIterations());
311 std::vector<Double_t> gvec;
317 std::copy(transVec.begin(), transVec.end(),
fResult.begin() );
323 std::cout <<
"Finished Iteration (niter = " << niter <<
" with fitness function value = " <<
MinValue() << std::endl;
324 for (
unsigned int i = 0; i <
fResult.size(); ++i) {
325 std::cout <<
" Parameter-" << i <<
"\t=\t" <<
fResult[i] << std::endl;
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
class implementing generic options for a numerical algorithm Just store the options in a map of strin...
const double * X() const override
return pointer to X values at the minimum
unsigned int NDim() const override
this is <= Function().NDim() which is the total number of variables (free+ constrained ones)
double CovMatrix(unsigned int i, unsigned int j) const override
return covariance matrices element for variables ivar,jvar if the variable is fixed the return value ...
unsigned int NFree() const override
number of free variables (real dimension of the problem) this is <= Function().NDim() which is the to...
bool SetLimitedVariable(unsigned int, const std::string &, double, double, double, double) override
set a new upper/lower limited variable (override if minimizer supports them ) otherwise as default se...
virtual void SetOptions(const ROOT::Math::MinimizerOptions &opt)
double MinValue() const override
return minimum function value
const double * Errors() const override
return errors at the minimum
unsigned int NCalls() const override
number of function calls to reach the minimum
bool Minimize() override
method to perform the minimization
void GetGeneticOptions(ROOT::Math::MinimizerOptions &opt) const
bool ProvidesError() const override
minimizer provides error and error matrix
bool SetVariable(unsigned int ivar, const std::string &name, double val, double step) override
set a new free variable
std::vector< double > fResult
TMVA::IFitterTarget * fFitness
std::vector< TMVA::Interval * > fRanges
GeneticMinimizer(int i=0)
void SetParameters(const GeneticMinimizerParameters ¶ms)
const double * MinGradient() const override
return pointer to gradient values at the minimum
double Edm() const override
return expected distance reached from the minimum (re-implement if minimizer provides it
~GeneticMinimizer() override
void Clear() override
reset for consecutive minimization - implement if needed
ROOT::Math::MinimizerOptions Options() const override
retrieve the minimizer options (implement derived class if needed)
GeneticMinimizerParameters fParameters
void SetFunction(const ROOT::Math::IMultiGenFunction &func) override
set the function to minimize
bool SetFixedVariable(unsigned int ivar, const std::string &name, double val) override
set a new fixed variable (override if minimizer supports them )
Documentation for the abstract class IBaseFunctionMultiDim.
virtual unsigned int NDim() const =0
Retrieve the dimension of the function.
Generic interface for defining configuration options of a numerical algorithm.
void SetValue(const char *name, double val)
generic methods for retrieving options
bool GetValue(const char *name, T &t) const
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
void SetStrategy(int stra)
set the strategy
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
const IOptions * ExtraOptions() const
return extra options (NULL pointer if they are not present)
static ROOT::Math::IOptions * FindDefault(const char *name)
Find an extra options and return a nullptr if it is not existing.
double Tolerance() const
absolute tolerance
void SetMinimizerType(const char *type)
set minimizer type
static double DefaultTolerance()
void SetExtraOptions(const IOptions &opt)
set extra options (in this case pointer is cloned)
unsigned int MaxIterations() const
max iterations
void SetPrecision(double prec)
set the precision
int PrintLevel() const
non-static methods for retrieving options
void SetErrorDef(double err)
set error def
void SetPrintLevel(int level)
set print level
static int DefaultMaxIterations()
void SetMinimizerAlgorithm(const char *type)
set minimizer algorithm
void SetTolerance(double tol)
set the tolerance
double Tolerance() const
absolute tolerance
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
int fStatus
status of minimizer
unsigned int MaxIterations() const
max iterations
void SetTolerance(double tol)
set the tolerance
void SetPrintLevel(int level)
set print level
int PrintLevel() const
minimizer configuration parameters
Double_t EstimatorFunction(std::vector< double > &factors) override
MultiGenFunctionFitness(const ROOT::Math::IMultiGenFunction &function)
std::vector< int > fFixedParFlag
unsigned int NTotal() const
unsigned int NDims() const
unsigned int NCalls() const
void FixParameter(unsigned int ipar, double value, bool fix=true)
std::vector< double > fValues
const ROOT::Math::IMultiGenFunction & fFunc
const std::vector< double > & Transform(const std::vector< double > &factors) const
Double_t Evaluate(const std::vector< double > &factors) const
Base definition for genetic algorithm.
virtual Double_t SpreadControl(Int_t steps, Int_t ofSteps, Double_t factor)
this function provides the ability to change the stepSize of a mutation according to the success of t...
virtual Bool_t HasConverged(Int_t steps=10, Double_t ratio=0.1)
gives back true if the last "steps" steps have lead to an improvement of the "fitness" of the "indivi...
GeneticPopulation & GetGeneticPopulation()
void Init()
calls evolution, but if it is not the first time.
virtual Double_t CalculateFitness()
starts the evaluation of the fitness of all different individuals of the population.
Cut optimisation interface class for genetic algorithm.
std::vector< Double_t > & GetFactors()
void TrimPopulation()
trim the population to the predefined size
GeneticGenes * GetGenes(Int_t index)
gives back the "Genes" of the population with the given index.
Interface for a fitter 'target'.
The TMVA::Interval Class.
Namespace for new Math classes and functions.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
GeneticMinimizerParameters()