Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
SimulatedAnnealingFitter.cxx
Go to the documentation of this file.
1// @(#)root/tmva $Id$
2// Author: Andraes Hoecker, Kamil Kraszewski, Maciej Kruk
3
4/**********************************************************************************
5 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6 * Package: TMVA *
7 * Class : SimulatedAnnealingFitter *
8 * *
9 * *
10 * Description: *
11 * Implementation *
12 * *
13 * Authors (alphabetical): *
14 * Krzysztof Danielowski <danielow@cern.ch> - IFJ & AGH, Poland *
15 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
16 * Kamil Kraszewski <kalq@cern.ch> - IFJ & UJ, Poland *
17 * Maciej Kruk <mkruk@cern.ch> - IFJ & AGH, Poland *
18 * *
19 * Copyright (c) 2008: *
20 * IFJ-Krakow, Poland *
21 * CERN, Switzerland *
22 * MPI-K Heidelberg, Germany *
23 * *
24 * Redistribution and use in source and binary forms, with or without *
25 * modification, are permitted according to the terms listed in LICENSE *
26 * (see tmva/doc/LICENSE) *
27 **********************************************************************************/
28
29/*! \class TMVA::SimulatedAnnealingFitter
30\ingroup TMVA
31Fitter using a Simulated Annealing Algorithm
32*/
33
35
36#include "TMVA/Configurable.h"
37#include "TMVA/FitterBase.h"
38#include "TMVA/Interval.h"
39#include "TMVA/MsgLogger.h"
41#include "TMVA/Types.h"
42
43#include "Rtypes.h"
44#include "TString.h"
45
46
47////////////////////////////////////////////////////////////////////////////////
48/// constructor
49
51 const TString& name,
52 const std::vector<Interval*>& ranges,
53 const TString& theOption )
54: TMVA::FitterBase( target, name, ranges, theOption )
55{
56 // default parameters settings for Simulated Annealing algorithm
59}
60
61////////////////////////////////////////////////////////////////////////////////
62/// declare SA options.
63///
64/// - MaxCalls `<int>` maximum number of calls for simulated annealing
65/// - TemperatureGradient `<float>` temperature gradient for simulated annealing
66/// - UseAdaptiveTemperature `<bool>` use of adaptive temperature for simulated annealing
67/// - InitialTemperature `<float>` initial temperature for simulated annealing
68/// - MinTemperature `<float>` minimum temperature for simulated annealing
69/// - Eps `<int>` number of epochs for simulated annealing
70/// - NFunLoops `<int>` number of loops for simulated annealing
71/// - NEps `<int>` number of epochs for simulated annealing
72
74{
75
76 // default settings
77 fMaxCalls = 100000;
79 fMinTemperature = 1e-6;
80 fEps = 1e-10;
82 fAdaptiveSpeed = 1.0;
83 fTemperatureAdaptiveStep = 0.009875;
84 fKernelTemperatureS = "IncAdaptive";
87
88 DeclareOptionRef(fMaxCalls, "MaxCalls", "Maximum number of minimisation calls");
89 DeclareOptionRef(fInitialTemperature, "InitialTemp", "Initial temperature");
90 DeclareOptionRef(fMinTemperature, "MinTemp", "Minimum temperature");
91 DeclareOptionRef(fEps, "Eps", "Epsilon");
92 DeclareOptionRef(fTemperatureScale, "TempScale", "Temperature scale");
93 DeclareOptionRef(fAdaptiveSpeed, "AdaptiveSpeed", "Adaptive speed");
94 DeclareOptionRef(fTemperatureAdaptiveStep,"TempAdaptiveStep", "Step made in each generation temperature adaptive");
95 DeclareOptionRef(fUseDefaultScale, "UseDefaultScale", "Use default temperature scale for temperature minimisation algorithm");
96 DeclareOptionRef(fUseDefaultTemperature, "UseDefaultTemp", "Use default initial temperature");
97
98 DeclareOptionRef(fKernelTemperatureS, "KernelTemp", "Temperature minimisation algorithm");
99 AddPreDefVal(TString("IncAdaptive"));
100 AddPreDefVal(TString("DecAdaptive"));
101 AddPreDefVal(TString("Sqrt"));
102 AddPreDefVal(TString("Log"));
103 AddPreDefVal(TString("Sin"));
104 AddPreDefVal(TString("Homo"));
105 AddPreDefVal(TString("Geo"));
106}
107
108////////////////////////////////////////////////////////////////////////////////
109/// set SA configuration parameters
110
112 Double_t initialTemperature,
113 Double_t minTemperature,
114 Double_t eps,
115 TString kernelTemperatureS,
116 Double_t temperatureScale,
117 Double_t temperatureAdaptiveStep,
118 Bool_t useDefaultScale,
119 Bool_t useDefaultTemperature)
120{
121 fMaxCalls = maxCalls;
122 fInitialTemperature = initialTemperature;
123 fMinTemperature = minTemperature;
124 fEps = eps;
125 fKernelTemperatureS = kernelTemperatureS;
126 fTemperatureScale = temperatureScale;
127 fTemperatureAdaptiveStep = temperatureAdaptiveStep;
128 fUseDefaultScale = useDefaultScale;
129 fUseDefaultTemperature = useDefaultTemperature;
130}
131
132////////////////////////////////////////////////////////////////////////////////
133/// Execute fitting
134
135Double_t TMVA::SimulatedAnnealingFitter::Run( std::vector<Double_t>& pars )
136{
137 Log() << kHEADER << "<SimulatedAnnealingFitter> Optimisation, please be patient ... " << Endl;
138 Log() << kINFO << "(progress timing may be inaccurate for SA)" << Endl;
139
141
142 // set driving parameters
146
147 if (fIPyMaxIter){
150 }
151 // minimise
152 Double_t fcn = sa.Minimize( pars );
153
154 return fcn;
155}
#define e(i)
Definition RSha256.hxx:103
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
char name[80]
Definition TGX11.cxx:148
OptionBase * DeclareOptionRef(T &ref, const TString &name, const TString &desc="")
void AddPreDefVal(const T &)
virtual void ParseOptions()
options parser
UInt_t * fIPyCurrentIter
Definition FitterBase.h:94
FitterBase(IFitterTarget &target, const TString &name, const std::vector< TMVA::Interval * > ranges, const TString &theOption)
constructor
IFitterTarget & GetFitterTarget() const
Definition FitterBase.h:64
bool * fExitFromTraining
Definition FitterBase.h:95
MsgLogger & Log() const
Definition FitterBase.h:89
UInt_t * fIPyMaxIter
Definition FitterBase.h:94
Double_t Run()
estimator function interface for fitting
const std::vector< TMVA::Interval * > fRanges
Definition FitterBase.h:85
Interface for a fitter 'target'.
void SetParameters(Int_t fMaxCalls, Double_t fInitialTemperature, Double_t fMinTemperature, Double_t fEps, TString fKernelTemperatureS, Double_t fTemperatureScale, Double_t fTemperatureAdaptiveStep, Bool_t fUseDefaultScale, Bool_t fUseDefaultTemperature)
set SA configuration parameters
Bool_t fUseDefaultScale
if TRUE, SA calculates its own TemperatureScale
Int_t fMaxCalls
max number of FCN calls
void DeclareOptions() override
declare SA options.
Double_t fTemperatureScale
how fast temperature change
Bool_t fUseDefaultTemperature
if TRUE, SA calculates its own InitialTemperature (MinTemperautre)
TString fKernelTemperatureS
string just to set fKernelTemperature
Double_t fEps
relative required FCN accuracy at minimum
Double_t fAdaptiveSpeed
how fast temperature change in adaptive (in adaptive two variables describe the change of temperature...
Double_t fMinTemperature
minimum temperature before SA quit
SimulatedAnnealingFitter(IFitterTarget &target, const TString &name, const std::vector< TMVA::Interval * > &ranges, const TString &theOption)
constructor
Double_t fInitialTemperature
initial temperature (depends on FCN)
Double_t fTemperatureAdaptiveStep
used to calculate InitialTemperature if fUseDefaultTemperature
Base implementation of simulated annealing fitting procedure.
Double_t Minimize(std::vector< Double_t > &parameters)
minimisation algorithm
void SetOptions(Int_t maxCalls, Double_t initialTemperature, Double_t minTemperature, Double_t eps, TString kernelTemperatureS, Double_t temperatureScale, Double_t adaptiveSpeed, Double_t temperatureAdaptiveStep, Bool_t useDefaultScale, Bool_t useDefaultTemperature)
option setter
void SetIPythonInteractive(bool *ExitFromTraining, UInt_t *fIPyCurrentIter_)
Basic string class.
Definition TString.h:138
create variable transformations
MsgLogger & Endl(MsgLogger &ml)
Definition MsgLogger.h:148