00001 #ifndef _SSGA_H 00002 00003 #define _SSGA_H 1 00004 00005 #include <realea/common/iea.h> 00006 #include <realea/common/populationreal.h> 00007 #include <realea/common/cross.h> 00008 #include <realea/common/mutation.h> 00009 #include "select.h" 00010 #include "replace.h" 00011 00012 namespace realea { 00013 00020 class SSGA : public ICrossEAlgorithm { 00021 public: 00027 SSGA(Random *random); 00028 ~SSGA(void); 00029 unsigned init(void); 00030 unsigned realApply(tChromosomeReal &sol, tFitness &fitness); 00031 00032 unsigned getDefaultPopsize(void) { 00033 return 60; 00034 } 00035 00036 00042 void setSelect(ISelect *sel); 00047 void setReplacement(IReplace *replace); 00053 void setMutation(IMutation *mutation); 00054 00055 void setProblem(Problem *problem); 00056 00057 private: 00067 void cross(unsigned mom, unsigned dad, tChromosomeReal &crom); 00068 00069 unsigned m_initEval; 00070 00071 ISelect *m_select; 00072 IReplace *m_replace; 00073 Mutation *m_mutation; 00074 IMutation *m_imutation; 00075 }; 00076 00077 } 00078 00079 #endif