28 #ifndef ROOT_TMVA_SimulatedAnnealing
29 #define ROOT_TMVA_SimulatedAnnealing
52 class SimulatedAnnealing {
56 SimulatedAnnealing( IFitterTarget& target,
const std::vector<TMVA::Interval*>& ranges );
57 virtual ~SimulatedAnnealing();
60 Double_t Minimize( std::vector<Double_t>& parameters );
63 void SetMaxCalls ( Int_t mc ) { fMaxCalls = mc; }
64 void SetInitTemp ( Double_t it ) { fInitialTemperature = it; }
65 void SetMinTemp ( Double_t min ) { fMinTemperature = min; }
66 void SetAccuracy ( Double_t eps ) { fEps = eps; }
67 void SetTemperatureScale ( Double_t scale ) { fTemperatureScale = scale; }
68 void SetAdaptiveSpeed ( Double_t speed ) { fAdaptiveSpeed = speed; }
70 void SetOptions( Int_t maxCalls, Double_t initialTemperature, Double_t minTemperature, Double_t eps,
71 TString kernelTemperatureS, Double_t temperatureScale, Double_t adaptiveSpeed,
72 Double_t temperatureAdaptiveStep, Bool_t useDefaultScale, Bool_t useDefaultTemperature );
75 void SetIPythonInteractive(
bool* ExitFromTraining, UInt_t *fIPyCurrentIter_){
76 fExitFromTraining = ExitFromTraining;
77 fIPyCurrentIter = fIPyCurrentIter_;
82 enum EKernelTemperature {
92 void FillWithRandomValues( std::vector<Double_t>& parameters );
93 void ReWriteParameters( std::vector<Double_t>& from, std::vector<Double_t>& to );
94 void GenerateNewTemperature(Double_t& currentTemperature, Int_t Iter );
95 void GenerateNeighbour( std::vector<Double_t>& parameters, std::vector<Double_t>& oldParameters, Double_t currentTemperature );
96 Bool_t ShouldGoIn( Double_t currentFit, Double_t localFit, Double_t currentTemperature );
97 void SetDefaultScale();
98 Double_t GenerateMaxTemperature( std::vector<Double_t>& parameters );
99 std::vector<Double_t> GenerateNeighbour( std::vector<Double_t>& parameters, Double_t currentTemperature );
101 IFitterTarget& fFitterTarget;
103 const std::vector<TMVA::Interval*>& fRanges;
107 Double_t fInitialTemperature;
108 Double_t fMinTemperature;
110 Double_t fTemperatureScale;
111 Double_t fAdaptiveSpeed;
114 Double_t fTemperatureAdaptiveStep;
116 Bool_t fUseDefaultScale;
117 Bool_t fUseDefaultTemperature;
119 mutable MsgLogger* fLogger;
120 MsgLogger& Log()
const {
return *fLogger; }
125 UInt_t *fIPyCurrentIter =
nullptr;
126 bool * fExitFromTraining =
nullptr;
128 ClassDef(SimulatedAnnealing,0);