00001 00006 #ifndef GENETIK_GP_ST_INDIVIDUAL 00007 #define GENETIK_GP_ST_INDIVIDUAL 00008 00009 /*Inlcue the standard GenetiK::Individual*/ 00010 #include "../Individual.h" 00011 00012 #include <list> 00013 00014 using namespace std; 00015 namespace genetiK 00016 { 00017 namespace gp 00018 { 00019 namespace st 00020 { 00021 00027 typedef unsigned char GeneType; 00028 class IndividualFactory; 00029 class Gene; 00030 00039 class Individual : public gp::Individual 00040 { 00041 protected: 00042 public: 00048 Individual(IndividualFactory* individualFactory); 00049 00055 Individual(const Individual& individual); 00058 virtual ~Individual(void); 00059 00065 virtual double fitness()=0; 00066 00073 virtual genetiK::Individual* copy()const=0; 00083 virtual int mutate(const double mutationProbabilty); 00084 00094 virtual int crossOver(genetiK::Individual* i,genetiK::Individual** child1,genetiK::Individual** child2); 00100 virtual list<Gene*> extractListByType(GeneType geneType); 00101 }; 00102 00103 } 00104 } 00105 } 00106 00107 #endif