Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:11:10

0001 // @(#)root/tmva $Id$
0002 // Author: Andreas Hoecker, Krzysztof Danielowski, Kamil Kraszewski, Maciej Kruk
0003 
0004 /**********************************************************************************
0005  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
0006  * Package: TMVA                                                                  *
0007  * Class  : SimulatedAnnealingFitter                                              *
0008  *                                             *
0009  *                                                                                *
0010  * Description:                                                                   *
0011  *       Fitter using Simulated Annealing algorithm                               *
0012  *                                                                                *
0013  * Authors (alphabetical):                                                        *
0014  *      Krzysztof Danielowski <danielow@cern.ch>       - IFJ & AGH, Poland        *
0015  *      Andreas Hoecker       <Andreas.Hocker@cern.ch> - CERN, Switzerland        *
0016  *      Kamil Kraszewski      <kalq@cern.ch>           - IFJ & UJ, Poland         *
0017  *      Maciej Kruk           <mkruk@cern.ch>          - IFJ & AGH, Poland        *
0018  *                                                                                *
0019  * Copyright (c) 2008:                                                            *
0020  *      IFJ-Krakow, Poland                                                        *
0021  *      CERN, Switzerland                                                         *
0022  *      MPI-K Heidelberg, Germany                                                 *
0023  *                                                                                *
0024  * Redistribution and use in source and binary forms, with or without             *
0025  * modification, are permitted according to the terms listed in LICENSE           *
0026  * (see tmva/doc/LICENSE)                                          *
0027  **********************************************************************************/
0028 
0029 #ifndef ROOT_TMVA_SimulatedAnnealingFitter
0030 #define ROOT_TMVA_SimulatedAnnealingFitter
0031 
0032 //////////////////////////////////////////////////////////////////////////
0033 //                                                                      //
0034 // SimulatedAnnealingFitter                                             //
0035 //                                                                      //
0036 // Fitter using a Simulated Annealing Algorithm                         //
0037 //                                                                      //
0038 //////////////////////////////////////////////////////////////////////////
0039 
0040 #include "TMVA/FitterBase.h"
0041 
0042 #include <vector>
0043 
0044 namespace TMVA {
0045 
0046    class IFitterTarget;
0047    class Interval;
0048 
0049    class SimulatedAnnealingFitter : public FitterBase {
0050 
0051    public:
0052 
0053       SimulatedAnnealingFitter( IFitterTarget& target, const TString& name,
0054                                 const std::vector<TMVA::Interval*>& ranges, const TString& theOption );
0055 
0056       virtual ~SimulatedAnnealingFitter() {}
0057 
0058       void SetParameters( Int_t    fMaxCalls,
0059                           Double_t fInitialTemperature,
0060                           Double_t fMinTemperature,
0061                           Double_t fEps,
0062                           TString  fKernelTemperatureS,
0063                           Double_t fTemperatureScale,
0064                           Double_t fTemperatureAdaptiveStep,
0065                           Bool_t   fUseDefaultScale,
0066                           Bool_t   fUseDefaultTemperature );
0067 
0068       Double_t Run( std::vector<Double_t>& pars );
0069 
0070    private:
0071 
0072       void DeclareOptions();
0073 
0074       Int_t              fMaxCalls;                ///< max number of FCN calls
0075       Double_t           fInitialTemperature;      ///< initial temperature (depends on FCN)
0076       Double_t           fMinTemperature;          ///< minimum temperature before SA quit
0077       Double_t           fEps;                     ///< relative required FCN accuracy at minimum
0078       TString            fKernelTemperatureS;      ///< string just to set fKernelTemperature
0079       Double_t           fTemperatureScale;        ///< how fast temperature change
0080       Double_t           fAdaptiveSpeed;           ///< how fast temperature change in adaptive (in adaptive two variables describe
0081                                                    /// the change of temperature, but fAdaptiveSpeed should be 1.0 and its not
0082                                                    /// recommended to change it)
0083       Double_t           fTemperatureAdaptiveStep; ///< used to calculate InitialTemperature if fUseDefaultTemperature
0084       Bool_t             fUseDefaultScale;         ///< if TRUE, SA calculates its own TemperatureScale
0085       Bool_t             fUseDefaultTemperature;   ///< if TRUE, SA calculates its own InitialTemperature (MinTemperautre)
0086 
0087       ClassDef(SimulatedAnnealingFitter,0); // Fitter using a Simulated Annealing Algorithm
0088    };
0089 
0090 } // namespace TMVA
0091 
0092 #endif
0093 
0094