00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freESDominantRecombinator_h
00023 #define __freESDominantRecombinator_h
00024
00025 #include "freESRecombinatorBase.h"
00026
00027 #include "itkMersenneTwisterRandomVariateGenerator.h"
00028
00029 namespace FREE
00030 {
00031 namespace ES
00032 {
00033
00044 template <class TIndividual>
00045 class ITK_EXPORT DominantRecombinator:
00046 public RecombinatorBase<TIndividual>
00047 {
00048 public:
00050 typedef DominantRecombinator<TIndividual> Self ;
00051 typedef RecombinatorBase<TIndividual> Superclass;
00052 typedef itk::SmartPointer<Self> Pointer;
00053 typedef itk::SmartPointer<const Self> ConstPointer;
00054
00056 itkNewMacro(Self);
00057
00059 itkTypeMacro(DominantRecombinator, RecombinatorBase);
00060
00061 typedef typename Superclass::IndividualType IndividualType;
00062 typedef typename IndividualType::Pointer IndividualPointer;
00063 typedef std::vector<IndividualPointer> ParentSelectionType;
00064 typedef std::vector<double> WeightVectorType;
00065
00066 IndividualPointer Recombine(const ParentSelectionType& parents) const;
00067
00068 WeightVectorType GetWeights(const unsigned long lParentCount) const;
00069
00070 protected:
00072 typedef itk::Statistics::MersenneTwisterRandomVariateGenerator VariateGeneratorType ;
00073 VariateGeneratorType::Pointer m_RandomGenerator ;
00074
00075 DominantRecombinator() ;
00076
00077 private:
00078 DominantRecombinator(Self const&);
00079
00080 } ;
00081
00082 }
00083 }
00084
00085
00086 #ifndef ITK_MANUAL_INSTANTIATION
00087 #include "freESDominantRecombinator.txx"
00088 #endif
00089
00090 #endif