#include "TMVA/SimulatedAnnealingFitter.h"
#include "TMVA/SimulatedAnnealing.h"
#include "TMVA/Interval.h"
ClassImp(TMVA::SimulatedAnnealingFitter)
TMVA::SimulatedAnnealingFitter::SimulatedAnnealingFitter( IFitterTarget& target,
const TString& name,
const std::vector<Interval*>& ranges,
const TString& theOption )
: TMVA::FitterBase( target, name, ranges, theOption )
{
DeclareOptions();
ParseOptions();
}
void TMVA::SimulatedAnnealingFitter::DeclareOptions()
{
fMaxCalls = 100000;
fInitialTemperature = 1e+6;
fMinTemperature = 1e-6;
fEps = 1e-10;
fTemperatureScale = 1.0;
fAdaptiveSpeed = 1.0;
fTemperatureAdaptiveStep = 0.009875;
fKernelTemperatureS = "IncAdaptive";
fUseDefaultScale = kFALSE;
fUseDefaultTemperature = kFALSE;
DeclareOptionRef(fMaxCalls, "MaxCalls", "Maximum number of minimisation calls");
DeclareOptionRef(fInitialTemperature, "InitialTemp", "Initial temperature");
DeclareOptionRef(fMinTemperature, "MinTemp", "Mimimum temperature");
DeclareOptionRef(fEps, "Eps", "Epsilon");
DeclareOptionRef(fTemperatureScale, "TempScale", "Temperature scale");
DeclareOptionRef(fAdaptiveSpeed, "AdaptiveSpeed", "Adaptive speed");
DeclareOptionRef(fTemperatureAdaptiveStep,"TempAdaptiveStep", "Step made in each generation temperature adaptive");
DeclareOptionRef(fUseDefaultScale, "UseDefaultScale", "Use default temperature scale for temperature minimisation algorithm");
DeclareOptionRef(fUseDefaultTemperature, "UseDefaultTemp", "Use default initial temperature");
DeclareOptionRef(fKernelTemperatureS, "KernelTemp", "Temperature minimisation algorithm");
AddPreDefVal(TString("IncAdaptive"));
AddPreDefVal(TString("DecAdaptive"));
AddPreDefVal(TString("Sqrt"));
AddPreDefVal(TString("Log"));
AddPreDefVal(TString("Sin"));
AddPreDefVal(TString("Homo"));
AddPreDefVal(TString("Geo"));
}
void TMVA::SimulatedAnnealingFitter::SetParameters( Int_t maxCalls,
Double_t initialTemperature,
Double_t minTemperature,
Double_t eps,
TString kernelTemperatureS,
Double_t temperatureScale,
Double_t temperatureAdaptiveStep,
Bool_t useDefaultScale,
Bool_t useDefaultTemperature)
{
fMaxCalls = maxCalls;
fInitialTemperature = initialTemperature;
fMinTemperature = minTemperature;
fEps = eps;
fKernelTemperatureS = kernelTemperatureS;
fTemperatureScale = temperatureScale;
fTemperatureAdaptiveStep = temperatureAdaptiveStep;
fUseDefaultScale = useDefaultScale;
fUseDefaultTemperature = useDefaultTemperature;
}
Double_t TMVA::SimulatedAnnealingFitter::Run( std::vector<Double_t>& pars )
{
Log() << kINFO << "<SimulatedAnnealingFitter> Optimisation, please be patient ... " << Endl;
Log() << kINFO << "(progress timing may be inaccurate for SA)" << Endl;
SimulatedAnnealing sa( GetFitterTarget(), fRanges );
sa.SetOptions( fMaxCalls, fInitialTemperature, fMinTemperature, fEps, fKernelTemperatureS,
fTemperatureScale, fAdaptiveSpeed, fTemperatureAdaptiveStep,
fUseDefaultScale, fUseDefaultTemperature );
Double_t fcn = sa.Minimize( pars );
return fcn;
}
SimulatedAnnealingFitter.cxx:1 SimulatedAnnealingFitter.cxx:2 SimulatedAnnealingFitter.cxx:3 SimulatedAnnealingFitter.cxx:4 SimulatedAnnealingFitter.cxx:5 SimulatedAnnealingFitter.cxx:6 SimulatedAnnealingFitter.cxx:7 SimulatedAnnealingFitter.cxx:8 SimulatedAnnealingFitter.cxx:9 SimulatedAnnealingFitter.cxx:10 SimulatedAnnealingFitter.cxx:11 SimulatedAnnealingFitter.cxx:12 SimulatedAnnealingFitter.cxx:13 SimulatedAnnealingFitter.cxx:14 SimulatedAnnealingFitter.cxx:15 SimulatedAnnealingFitter.cxx:16 SimulatedAnnealingFitter.cxx:17 SimulatedAnnealingFitter.cxx:18 SimulatedAnnealingFitter.cxx:19 SimulatedAnnealingFitter.cxx:20 SimulatedAnnealingFitter.cxx:21 SimulatedAnnealingFitter.cxx:22 SimulatedAnnealingFitter.cxx:23 SimulatedAnnealingFitter.cxx:24 SimulatedAnnealingFitter.cxx:25 SimulatedAnnealingFitter.cxx:26 SimulatedAnnealingFitter.cxx:27 SimulatedAnnealingFitter.cxx:28 SimulatedAnnealingFitter.cxx:29 SimulatedAnnealingFitter.cxx:30 SimulatedAnnealingFitter.cxx:31 SimulatedAnnealingFitter.cxx:32 SimulatedAnnealingFitter.cxx:33 SimulatedAnnealingFitter.cxx:34 SimulatedAnnealingFitter.cxx:35 SimulatedAnnealingFitter.cxx:36 SimulatedAnnealingFitter.cxx:37 SimulatedAnnealingFitter.cxx:38 SimulatedAnnealingFitter.cxx:39 SimulatedAnnealingFitter.cxx:40 SimulatedAnnealingFitter.cxx:41 SimulatedAnnealingFitter.cxx:42 SimulatedAnnealingFitter.cxx:43 SimulatedAnnealingFitter.cxx:44 SimulatedAnnealingFitter.cxx:45 SimulatedAnnealingFitter.cxx:46 SimulatedAnnealingFitter.cxx:47 SimulatedAnnealingFitter.cxx:48 SimulatedAnnealingFitter.cxx:49 SimulatedAnnealingFitter.cxx:50 SimulatedAnnealingFitter.cxx:51 SimulatedAnnealingFitter.cxx:52 SimulatedAnnealingFitter.cxx:53 SimulatedAnnealingFitter.cxx:54 SimulatedAnnealingFitter.cxx:55 SimulatedAnnealingFitter.cxx:56 SimulatedAnnealingFitter.cxx:57 SimulatedAnnealingFitter.cxx:58 SimulatedAnnealingFitter.cxx:59 SimulatedAnnealingFitter.cxx:60 SimulatedAnnealingFitter.cxx:61 SimulatedAnnealingFitter.cxx:62 SimulatedAnnealingFitter.cxx:63 SimulatedAnnealingFitter.cxx:64 SimulatedAnnealingFitter.cxx:65 SimulatedAnnealingFitter.cxx:66 SimulatedAnnealingFitter.cxx:67 SimulatedAnnealingFitter.cxx:68 SimulatedAnnealingFitter.cxx:69 SimulatedAnnealingFitter.cxx:70 SimulatedAnnealingFitter.cxx:71 SimulatedAnnealingFitter.cxx:72 SimulatedAnnealingFitter.cxx:73 SimulatedAnnealingFitter.cxx:74 SimulatedAnnealingFitter.cxx:75 SimulatedAnnealingFitter.cxx:76 SimulatedAnnealingFitter.cxx:77 SimulatedAnnealingFitter.cxx:78 SimulatedAnnealingFitter.cxx:79 SimulatedAnnealingFitter.cxx:80 SimulatedAnnealingFitter.cxx:81 SimulatedAnnealingFitter.cxx:82 SimulatedAnnealingFitter.cxx:83 SimulatedAnnealingFitter.cxx:84 SimulatedAnnealingFitter.cxx:85 SimulatedAnnealingFitter.cxx:86 SimulatedAnnealingFitter.cxx:87 SimulatedAnnealingFitter.cxx:88 SimulatedAnnealingFitter.cxx:89 SimulatedAnnealingFitter.cxx:90 SimulatedAnnealingFitter.cxx:91 SimulatedAnnealingFitter.cxx:92 SimulatedAnnealingFitter.cxx:93 SimulatedAnnealingFitter.cxx:94 SimulatedAnnealingFitter.cxx:95 SimulatedAnnealingFitter.cxx:96 SimulatedAnnealingFitter.cxx:97 SimulatedAnnealingFitter.cxx:98 SimulatedAnnealingFitter.cxx:99 SimulatedAnnealingFitter.cxx:100 SimulatedAnnealingFitter.cxx:101 SimulatedAnnealingFitter.cxx:102 SimulatedAnnealingFitter.cxx:103 SimulatedAnnealingFitter.cxx:104 SimulatedAnnealingFitter.cxx:105 SimulatedAnnealingFitter.cxx:106 SimulatedAnnealingFitter.cxx:107 SimulatedAnnealingFitter.cxx:108 SimulatedAnnealingFitter.cxx:109 SimulatedAnnealingFitter.cxx:110 SimulatedAnnealingFitter.cxx:111 SimulatedAnnealingFitter.cxx:112 SimulatedAnnealingFitter.cxx:113 SimulatedAnnealingFitter.cxx:114 SimulatedAnnealingFitter.cxx:115 SimulatedAnnealingFitter.cxx:116 SimulatedAnnealingFitter.cxx:117 SimulatedAnnealingFitter.cxx:118 SimulatedAnnealingFitter.cxx:119 SimulatedAnnealingFitter.cxx:120 SimulatedAnnealingFitter.cxx:121 SimulatedAnnealingFitter.cxx:122 SimulatedAnnealingFitter.cxx:123 SimulatedAnnealingFitter.cxx:124 SimulatedAnnealingFitter.cxx:125 SimulatedAnnealingFitter.cxx:126 SimulatedAnnealingFitter.cxx:127 SimulatedAnnealingFitter.cxx:128 SimulatedAnnealingFitter.cxx:129 SimulatedAnnealingFitter.cxx:130 SimulatedAnnealingFitter.cxx:131 SimulatedAnnealingFitter.cxx:132 SimulatedAnnealingFitter.cxx:133 SimulatedAnnealingFitter.cxx:134 SimulatedAnnealingFitter.cxx:135 SimulatedAnnealingFitter.cxx:136 SimulatedAnnealingFitter.cxx:137 SimulatedAnnealingFitter.cxx:138 SimulatedAnnealingFitter.cxx:139 SimulatedAnnealingFitter.cxx:140