• Main Page
  • Modules
  • Classes
  • Files
  • File List

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 
00018 class CrossoverOp
00019 {
00020 public:
00021     CrossoverOp()
00022     {   probability_ = 0;   }
00023 
00028     virtual bool mate(GenotypeP, GenotypeP, GenotypeP) = 0;
00029 
00031     virtual bool initialize(StateP)
00032     {   return true;    }
00033 
00035     virtual void registerParameters(StateP)
00036     {   }
00037 
00038     virtual ~CrossoverOp()
00039     {   }
00040 
00041     StateP state_;
00042     double probability_;     
00043     GenotypeP myGenotype_;   
00044 };
00045 typedef boost::shared_ptr<CrossoverOp> CrossoverOpP;
00046 
00047 
00056 class Crossover
00057 {
00058 public:
00059     bool mate(IndividualP ind1, IndividualP ind2, IndividualP child);
00060     void registerParameters(StateP);
00061     bool initialize(StateP);
00062 
00063     std::vector< std::vector<CrossoverOpP> > operators;   
00064     std::vector< std::vector<double> > opProb;            
00065 
00066 protected:
00067     StateP state_;
00068     uint crxGenotypes_;                                   
00069     std::vector<bool> protectedGenotypes_;                
00070 };
00071 typedef boost::shared_ptr<Crossover> CrossoverP;
00072 
00073 #endif // Crossover_h

Generated on Tue Nov 4 2014 13:04:30 for ECF by  doxygen 1.7.1