#ifndef ROOT_TMVA_GeneticPopulation
#define ROOT_TMVA_GeneticPopulation
#include <string>
#include <vector>
#include <map>
#ifndef ROOT_TMVA_GeneticGenes
#include "TMVA/GeneticGenes.h"
#endif
#ifndef ROOT_TMVA_Interval
#include "TMVA/Interval.h"
#endif
#ifndef ROOT_TMVA_GeneticRange
#include "TMVA/GeneticRange.h"
#endif
#ifndef ROOT_TMVA_MsgLogger
#include "TMVA/MsgLogger.h"
#endif
class TH1F;
namespace TMVA {
class GeneticPopulation {
public:
GeneticPopulation();
virtual ~GeneticPopulation();
typedef std::pair<const Double_t, GeneticGenes > entry;
void SetRandomSeed( UInt_t seed = 0);
void CreatePopulation( Int_t size );
void AddPopulation( GeneticPopulation *genePool );
void AddPopulation( GeneticPopulation &genePool );
void TrimPopulation();
void GiveHint( std::vector< Double_t >& hint, Double_t fitness = 0 );
void MakeChildren();
void MakeCopies( int number );
GeneticGenes MakeSex( GeneticGenes male, GeneticGenes female );
void MakeMutants( Double_t probability = 30, Bool_t near = kFALSE,
Double_t spread = 0.1, Bool_t mirror = kFALSE );
void Mutate( Double_t probability = 20, Int_t startIndex = 0, Bool_t near = kFALSE,
Double_t spread = 0.1, Bool_t mirror = kFALSE );
GeneticGenes Mutate( GeneticGenes individual, Double_t probability, Bool_t near,
Double_t spread, Bool_t mirror );
void NextGeneration();
void AddFactor( Interval *interval );
GeneticGenes* GetGenes();
GeneticGenes* GetGenes( Int_t index );
void ClearResults( );
void Reset();
Bool_t SetFitness( GeneticGenes *g, Double_t fitness, Bool_t add = kTRUE );
Double_t GetFitness( Int_t index );
Double_t GetFitness( );
void Print( Int_t untilIndex = -1 );
void Print( ostream & out, Int_t utilIndex = -1 );
TH1F* VariableDistribution( Int_t varNumber, Int_t bins, Int_t min, Int_t max );
std::vector< Double_t > VariableDistribution( Int_t varNumber );
Double_t GetCounterFitness() const { return fCounterFitness; }
Int_t GetPopulationSize() const { return fPopulationSize; }
std::multimap<Double_t, GeneticGenes>* GetGenePool() const { return fGenePool; }
std::multimap<Double_t, GeneticGenes>* GetNewGenePool() const { return fNewGenePool; }
std::vector<TMVA::GeneticRange*>& GetRanges() { return fRanges; }
private:
Double_t fCounterFitness;
Int_t fPopulationSize;
std::multimap<Double_t, GeneticGenes>* fGenePool;
std::multimap<Double_t, GeneticGenes>* fNewGenePool;
std::vector<GeneticRange*> fRanges;
std::multimap<Double_t, GeneticGenes>::iterator fCounter;
TRandom *fRandomGenerator;
mutable MsgLogger fLogger;
ClassDef(GeneticPopulation,0)
};
}
#endif
Last change: Wed Jun 25 08:48:12 2008
Last generated: 2008-06-25 08:48
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.