00001 // @(#)root/mathcore:$Id 00002 00003 /********************************************************************** 00004 * * 00005 * Copyright (c) 2006 LCG ROOT Math Team, CERN/PH-SFT * 00006 * * 00007 * * 00008 **********************************************************************/ 00009 00010 // Header file for class GeneticMinimizer 00011 00012 #ifndef ROOT_Math_GeneticMinimizer 00013 #define ROOT_Math_GeneticMinimizer 00014 00015 #include <vector> 00016 00017 #include "Math/Minimizer.h" 00018 00019 #include "TMVA/IFitterTarget.h" 00020 #include "TMVA/Interval.h" 00021 00022 namespace ROOT { 00023 namespace Math { 00024 00025 00026 //_______________________________________________________________________________ 00027 /* 00028 structure containing the parameters of the genetic minimizer 00029 */ 00030 struct GeneticMinimizerParameters { 00031 00032 Int_t fPopSize; 00033 Int_t fNsteps; 00034 Int_t fCycles; 00035 Int_t fSC_steps; 00036 Int_t fSC_rate; 00037 Double_t fSC_factor; 00038 Double_t fConvCrit; 00039 00040 // constructor with default value 00041 GeneticMinimizerParameters(); 00042 }; 00043 00044 00045 00046 //_______________________________________________________________________________ 00047 /** 00048 GeneticMinimizer 00049 00050 @ingroup MultiMin 00051 */ 00052 class GeneticMinimizer: public ROOT::Math::Minimizer { 00053 00054 public: 00055 00056 GeneticMinimizer (int = 0); 00057 virtual ~GeneticMinimizer (); 00058 00059 virtual void Clear(); 00060 using ROOT::Math::Minimizer::SetFunction; 00061 virtual void SetFunction(const ROOT::Math::IMultiGenFunction & func); 00062 00063 virtual bool SetLimitedVariable(unsigned int , const std::string& , double , double , double, double); 00064 virtual bool SetVariable(unsigned int ivar, const std::string & name, double val, double step); 00065 00066 virtual bool Minimize(); 00067 virtual double MinValue() const; 00068 virtual double Edm() const; 00069 virtual const double * X() const; 00070 virtual const double * MinGradient() const; 00071 virtual unsigned int NCalls() const; 00072 00073 virtual unsigned int NDim() const; 00074 virtual unsigned int NFree() const; 00075 00076 virtual bool ProvidesError() const; 00077 virtual const double * Errors() const; 00078 00079 virtual double CovMatrix(unsigned int i, unsigned int j) const; 00080 00081 void SetParameters(const GeneticMinimizerParameters & params ); 00082 00083 virtual ROOT::Math::MinimizerOptions Options() const; 00084 00085 virtual void SetOptions(const ROOT::Math::MinimizerOptions & opt); 00086 00087 protected: 00088 00089 void GetGeneticOptions(ROOT::Math::MinimizerOptions & opt) const; 00090 00091 std::vector<TMVA::Interval*> fRanges; 00092 TMVA::IFitterTarget* fFitness; 00093 00094 std::vector<double> fResult; 00095 00096 GeneticMinimizerParameters fParameters; 00097 00098 }; 00099 00100 00101 } // end namespace Math 00102 } // end namespace ROOT 00103 00104 #endif /* ROOT_Math_GeneticMinimizer */