46 ClassImp(TMVA::SimulatedAnnealingFitter);
51 TMVA::SimulatedAnnealingFitter::SimulatedAnnealingFitter( IFitterTarget& target,
53 const std::vector<Interval*>& ranges,
54 const TString& theOption )
55 : TMVA::FitterBase( target, name, ranges, theOption )
74 void TMVA::SimulatedAnnealingFitter::DeclareOptions()
79 fInitialTemperature = 1e+6;
80 fMinTemperature = 1e-6;
82 fTemperatureScale = 1.0;
84 fTemperatureAdaptiveStep = 0.009875;
85 fKernelTemperatureS =
"IncAdaptive";
86 fUseDefaultScale = kFALSE;
87 fUseDefaultTemperature = kFALSE;
89 DeclareOptionRef(fMaxCalls,
"MaxCalls",
"Maximum number of minimisation calls");
90 DeclareOptionRef(fInitialTemperature,
"InitialTemp",
"Initial temperature");
91 DeclareOptionRef(fMinTemperature,
"MinTemp",
"Minimum temperature");
92 DeclareOptionRef(fEps,
"Eps",
"Epsilon");
93 DeclareOptionRef(fTemperatureScale,
"TempScale",
"Temperature scale");
94 DeclareOptionRef(fAdaptiveSpeed,
"AdaptiveSpeed",
"Adaptive speed");
95 DeclareOptionRef(fTemperatureAdaptiveStep,
"TempAdaptiveStep",
"Step made in each generation temperature adaptive");
96 DeclareOptionRef(fUseDefaultScale,
"UseDefaultScale",
"Use default temperature scale for temperature minimisation algorithm");
97 DeclareOptionRef(fUseDefaultTemperature,
"UseDefaultTemp",
"Use default initial temperature");
99 DeclareOptionRef(fKernelTemperatureS,
"KernelTemp",
"Temperature minimisation algorithm");
100 AddPreDefVal(TString(
"IncAdaptive"));
101 AddPreDefVal(TString(
"DecAdaptive"));
102 AddPreDefVal(TString(
"Sqrt"));
103 AddPreDefVal(TString(
"Log"));
104 AddPreDefVal(TString(
"Sin"));
105 AddPreDefVal(TString(
"Homo"));
106 AddPreDefVal(TString(
"Geo"));
112 void TMVA::SimulatedAnnealingFitter::SetParameters( Int_t maxCalls,
113 Double_t initialTemperature,
114 Double_t minTemperature,
116 TString kernelTemperatureS,
117 Double_t temperatureScale,
118 Double_t temperatureAdaptiveStep,
119 Bool_t useDefaultScale,
120 Bool_t useDefaultTemperature)
122 fMaxCalls = maxCalls;
123 fInitialTemperature = initialTemperature;
124 fMinTemperature = minTemperature;
126 fKernelTemperatureS = kernelTemperatureS;
127 fTemperatureScale = temperatureScale;
128 fTemperatureAdaptiveStep = temperatureAdaptiveStep;
129 fUseDefaultScale = useDefaultScale;
130 fUseDefaultTemperature = useDefaultTemperature;
136 Double_t TMVA::SimulatedAnnealingFitter::Run( std::vector<Double_t>& pars )
138 Log() << kHEADER <<
"<SimulatedAnnealingFitter> Optimisation, please be patient ... " << Endl;
139 Log() << kINFO <<
"(progress timing may be inaccurate for SA)" << Endl;
141 SimulatedAnnealing sa( GetFitterTarget(), fRanges );
144 sa.SetOptions( fMaxCalls, fInitialTemperature, fMinTemperature, fEps, fKernelTemperatureS,
145 fTemperatureScale, fAdaptiveSpeed, fTemperatureAdaptiveStep,
146 fUseDefaultScale, fUseDefaultTemperature );
149 *fIPyMaxIter = fMaxCalls;
150 sa.SetIPythonInteractive(fExitFromTraining, fIPyCurrentIter);
153 Double_t fcn = sa.Minimize( pars );