• Main Page
  • Classes
  • Files
  • File List

D:/Radagast_D/Projekt/ECF_trunk/ECF/Crossover.h

00001 #ifndef Crossover_h
00002 #define Crossover_h
00003 
00004 #include "Individual.h"
00005 
00006 class Individual;
00007 typedef boost::shared_ptr<Individual> IndividualP;
00008 class Genotype;
00009 typedef boost::shared_ptr<Genotype>  GenotypeP;
00010 
00017 class CrossoverOp
00018 {
00019 public:
00020     CrossoverOp()
00021     {   probability_ = 0;   }
00022 
00027     virtual bool mate(GenotypeP, GenotypeP, GenotypeP) = 0;
00028 
00032     virtual bool initialize(StateP)
00033     {   return true;    }
00034 
00038     virtual void registerParameters(StateP)
00039     {   }
00040 
00041     virtual ~CrossoverOp()
00042     {   }
00043 
00044     StateP state_;
00045     double probability_;    
00046     GenotypeP myGenotype_;
00047 };
00048 typedef boost::shared_ptr<CrossoverOp> CrossoverOpP;
00049 
00050 
00057 class Crossover
00058 {
00059 public:
00060     bool mate(IndividualP ind1, IndividualP ind2, IndividualP child);
00061     void registerParameters(StateP);
00062     bool initialize(StateP);
00063 
00064     std::vector< std::vector<CrossoverOpP> > operators;   
00065     std::vector< std::vector<double> > opProb;            
00066 
00067 protected:
00068     StateP state_;
00069     uint crxGenotypes_;                                   
00070     std::vector<bool> protectedGenotypes_;                
00071 };
00072 typedef boost::shared_ptr<Crossover> CrossoverP;
00073 
00074 #endif // Crossover_h

Generated on Wed Sep 1 2010 14:31:21 for ECF by  doxygen 1.7.1