00001 #ifndef GLBASEGENETICALGORITHM_H_ 00002 #define GLBASEGENETICALGORITHM_H_ 00003 00004 #include "GLBaseBreeder.h" 00005 #include "GLBaseSelectionist.h" 00006 #include "GLBaseVariator.h" 00007 #include "GLBaseGaStopper.h" 00008 #include "GLConstants.h" 00009 class GLBaseCrossover; 00010 class GLBaseEvaluator; 00011 class GLBaseGaStatus; 00012 class GLBaseMutator; 00013 class GLBaseOrganismInitialiser; 00014 class GLBasePopulation; 00015 class GLBaseRanker; 00016 class GLFactory; 00017 00018 #include "GLParametersGeneticAlgorithm.h" 00019 00023 class GLBaseGeneticAlgorithm 00024 { 00025 public: 00033 GLBaseGeneticAlgorithm(const GLParametersGeneticAlgorithm& parameters, 00034 GLFactory* factory); 00035 00039 virtual ~GLBaseGeneticAlgorithm(); 00040 00045 GLBaseBreeder* getBreeder() 00046 { return m_breeder; } 00047 00052 const GLBaseBreeder* getBreeder() const 00053 { return m_breeder; } 00054 00059 GLBaseCrossover* getCrossover() 00060 { return getBreeder()->getCrossover(); } 00061 00066 const GLBaseCrossover* getCrossover() const 00067 { return getBreeder()->getCrossover(); } 00068 00072 GLBaseEvaluator* getEvaluator() const 00073 { return m_evaluator; } 00074 00079 GLBaseMutator* getMutator() 00080 { return getVariator()->getMutator(); } 00081 00086 const GLBaseMutator* getMutator() const 00087 { return getVariator()->getMutator(); } 00088 00093 const GLParametersGeneticAlgorithm* getParameters() const 00094 { return m_parameters; } 00099 GLBaseRanker* getRanker() 00100 { return getSelectionist()->getRanker(); } 00101 00106 const GLBaseRanker* getRanker() const 00107 { return getSelectionist()->getRanker(); } 00108 00113 GLBaseSelectionist* getSelectionist() 00114 { return m_selectionist; } 00115 00120 const GLBaseSelectionist* getSelectionist() const 00121 { return m_selectionist; } 00122 00127 virtual const GLBaseGaStatus* getStatus() const = 0; 00128 00133 GLBaseVariator* getVariator() 00134 { return m_variator; } 00135 00140 const GLBaseVariator* getVariator() const 00141 { return m_variator; } 00142 00150 virtual void reset(); 00151 00167 virtual const GLBaseGaStatus* runGA( 00168 GLBaseOrganismInitialiser* initialiser, 00169 GLBaseEvaluator* evaluator, 00170 const TListOfStoppers& stoppers, 00171 bool bool_operator = GLConstants::OR_OPERATOR) = 0; 00172 00173 protected: 00185 virtual bool toFinish(const TListOfStoppers& stoppers, 00186 bool bool_operator); 00187 private: 00193 void initialise(GLFactory* factory); 00194 protected: 00197 GLBaseEvaluator* m_evaluator; 00198 private: 00199 GLBaseBreeder* m_breeder; 00200 GLParametersGeneticAlgorithm* m_parameters; 00201 GLBaseSelectionist* m_selectionist; 00202 GLBaseVariator* m_variator; 00203 }; 00204 00205 #endif /* GLBASEGENETICALGORITHM_H_ */