#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 = "IncreasingAdaptive";
fUseDefaultScale = kFALSE;
fUseDefaultTemperature = kFALSE;
DeclareOptionRef(fMaxCalls, "MaxCalls", "Maximum number of minimisation calls");
DeclareOptionRef(fInitialTemperature, "InitialTemperature", "Initial temperature");
DeclareOptionRef(fMinTemperature, "MinTemperature", "Mimimum temperature");
DeclareOptionRef(fEps, "Eps", "Epsilon");
DeclareOptionRef(fTemperatureScale, "TemperatureScale", "Temperature scale");
DeclareOptionRef(fAdaptiveSpeed, "AdaptiveSpeed", "Adaptive speed");
DeclareOptionRef(fTemperatureAdaptiveStep,"TemperatureAdaptiveStep","Step made in each generation temperature adaptive");
DeclareOptionRef(fUseDefaultScale, "UseDefaultScale", "Use default temperature scale for temperature minimisation algorithm");
DeclareOptionRef(fUseDefaultTemperature, "UseDefaultTemperature", "Use default initial temperature");
DeclareOptionRef(fKernelTemperatureS, "KernelTemperature", "Temperature minimisation algorithm");
AddPreDefVal(TString("IncreasingAdaptive"));
AddPreDefVal(TString("DecreasingAdaptive"));
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 )
{
fLogger << kINFO << "<SimulatedAnnealingFitter> Optimisation, please be patient ... " << Endl;
fLogger << 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;
}
Last change: Wed Jun 25 08:48:48 2008
Last generated: 2008-06-25 08:48
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.