```// @(#)root/mathcore:\$Id

/**********************************************************************
*                                                                    *
* Copyright (c) 2006  LCG ROOT Math Team, CERN/PH-SFT                *
*                                                                    *
*                                                                    *
**********************************************************************/

// Header file for class GeneticMinimizer

#ifndef ROOT_Math_GeneticMinimizer
#define ROOT_Math_GeneticMinimizer

#include <vector>

#include "Math/Minimizer.h"

#include "TMVA/IFitterTarget.h"
#include "TMVA/Interval.h"

namespace ROOT {
namespace Math {

//_______________________________________________________________________________
/*
structure containing the parameters of the genetic minimizer
*/
struct GeneticMinimizerParameters {

Int_t fPopSize;
Int_t fNsteps;
Int_t fCycles;
Int_t fSC_steps;
Int_t fSC_rate;
Double_t fSC_factor;
Double_t fConvCrit;
Int_t fSeed;

// constructor with default value
GeneticMinimizerParameters();
};

//_______________________________________________________________________________
/**
GeneticMinimizer

@ingroup MultiMin
*/
class GeneticMinimizer: public ROOT::Math::Minimizer {

public:

//GeneticMinimizer (int = 0);
GeneticMinimizer (int i = 0);
virtual ~GeneticMinimizer ();

virtual void Clear();
using ROOT::Math::Minimizer::SetFunction;
virtual void SetFunction(const ROOT::Math::IMultiGenFunction & func);

virtual bool SetLimitedVariable(unsigned int , const std::string& , double , double , double, double);
virtual bool SetVariable(unsigned int ivar, const std::string & name, double val, double step);
virtual bool SetFixedVariable(unsigned int ivar  , const std::string & name , double val);

virtual  bool Minimize();
virtual double MinValue() const;
virtual double Edm() const;
virtual const double *  X() const;
virtual const double *  MinGradient() const;
virtual unsigned int NCalls() const;

virtual unsigned int NDim() const;
virtual unsigned int NFree() const;

virtual bool ProvidesError() const;
virtual const double * Errors() const;

virtual double CovMatrix(unsigned int i, unsigned int j) const;

void SetParameters(const GeneticMinimizerParameters & params );

void SetRandomSeed(int seed) { fParameters.fSeed = seed; }

const GeneticMinimizerParameters & MinimizerParameters() const { return fParameters; }

virtual ROOT::Math::MinimizerOptions Options() const;

virtual void SetOptions(const ROOT::Math::MinimizerOptions & opt);

protected:

void GetGeneticOptions(ROOT::Math::MinimizerOptions & opt) const;

std::vector<TMVA::Interval*> fRanges;
TMVA::IFitterTarget* fFitness;
double fMinValue;
std::vector<double> fResult;

GeneticMinimizerParameters fParameters;

};

} // end namespace Math
} // end namespace ROOT

#endif /* ROOT_Math_GeneticMinimizer */
```
GeneticMinimizer.h:1
GeneticMinimizer.h:2
GeneticMinimizer.h:3
GeneticMinimizer.h:4
GeneticMinimizer.h:5
GeneticMinimizer.h:6
GeneticMinimizer.h:7
GeneticMinimizer.h:8
GeneticMinimizer.h:9
GeneticMinimizer.h:10
GeneticMinimizer.h:11
GeneticMinimizer.h:12
GeneticMinimizer.h:13
GeneticMinimizer.h:14
GeneticMinimizer.h:15
GeneticMinimizer.h:16
GeneticMinimizer.h:17
GeneticMinimizer.h:18
GeneticMinimizer.h:19
GeneticMinimizer.h:20
GeneticMinimizer.h:21
GeneticMinimizer.h:22
GeneticMinimizer.h:23
GeneticMinimizer.h:24
GeneticMinimizer.h:25
GeneticMinimizer.h:26
GeneticMinimizer.h:27
GeneticMinimizer.h:28
GeneticMinimizer.h:29
GeneticMinimizer.h:30
GeneticMinimizer.h:31
GeneticMinimizer.h:32
GeneticMinimizer.h:33
GeneticMinimizer.h:34
GeneticMinimizer.h:35
GeneticMinimizer.h:36
GeneticMinimizer.h:37
GeneticMinimizer.h:38
GeneticMinimizer.h:39
GeneticMinimizer.h:40
GeneticMinimizer.h:41
GeneticMinimizer.h:42
GeneticMinimizer.h:43
GeneticMinimizer.h:44
GeneticMinimizer.h:45
GeneticMinimizer.h:46
GeneticMinimizer.h:47
GeneticMinimizer.h:48
GeneticMinimizer.h:49
GeneticMinimizer.h:50
GeneticMinimizer.h:51
GeneticMinimizer.h:52
GeneticMinimizer.h:53
GeneticMinimizer.h:54
GeneticMinimizer.h:55
GeneticMinimizer.h:56
GeneticMinimizer.h:57
GeneticMinimizer.h:58
GeneticMinimizer.h:59
GeneticMinimizer.h:60
GeneticMinimizer.h:61
GeneticMinimizer.h:62
GeneticMinimizer.h:63
GeneticMinimizer.h:64
GeneticMinimizer.h:65
GeneticMinimizer.h:66
GeneticMinimizer.h:67
GeneticMinimizer.h:68
GeneticMinimizer.h:69
GeneticMinimizer.h:70
GeneticMinimizer.h:71
GeneticMinimizer.h:72
GeneticMinimizer.h:73
GeneticMinimizer.h:74
GeneticMinimizer.h:75
GeneticMinimizer.h:76
GeneticMinimizer.h:77
GeneticMinimizer.h:78
GeneticMinimizer.h:79
GeneticMinimizer.h:80
GeneticMinimizer.h:81
GeneticMinimizer.h:82
GeneticMinimizer.h:83
GeneticMinimizer.h:84
GeneticMinimizer.h:85
GeneticMinimizer.h:86
GeneticMinimizer.h:87
GeneticMinimizer.h:88
GeneticMinimizer.h:89
GeneticMinimizer.h:90
GeneticMinimizer.h:91
GeneticMinimizer.h:92
GeneticMinimizer.h:93
GeneticMinimizer.h:94
GeneticMinimizer.h:95
GeneticMinimizer.h:96
GeneticMinimizer.h:97
GeneticMinimizer.h:98
GeneticMinimizer.h:99
GeneticMinimizer.h:100
GeneticMinimizer.h:101
GeneticMinimizer.h:102
GeneticMinimizer.h:103
GeneticMinimizer.h:104
GeneticMinimizer.h:105
GeneticMinimizer.h:106
GeneticMinimizer.h:107
GeneticMinimizer.h:108
GeneticMinimizer.h:109
GeneticMinimizer.h:110
GeneticMinimizer.h:111
GeneticMinimizer.h:112