00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freESRecombinatorBase_h
00023 #define __freESRecombinatorBase_h
00024
00025 #include "freESComponentBase.h"
00026
00027 namespace FREE
00028 {
00029 namespace ES
00030 {
00031
00041 template <class TIndividual>
00042 class ITK_EXPORT RecombinatorBase:
00043 public ComponentBase<TIndividual>
00044 {
00045 public:
00047 typedef RecombinatorBase<TIndividual> Self ;
00048 typedef ComponentBase<TIndividual> Superclass;
00049 typedef itk::SmartPointer<Self> Pointer;
00050 typedef itk::SmartPointer<const Self> ConstPointer;
00051
00053
00054
00056 itkTypeMacro(RecombinatorBase, ComponentBase);
00057
00058 typedef typename Superclass::IndividualType IndividualType;
00059 typedef typename IndividualType::Pointer IndividualPointer;
00060 typedef std::vector<IndividualPointer> ParentSelectionType;
00061 typedef std::vector<double> WeightVectorType;
00062
00063 virtual IndividualPointer Recombine(const ParentSelectionType& parents) const = 0;
00064
00065 virtual WeightVectorType GetWeights(const unsigned long lParentCount) const = 0;
00066
00067 protected:
00068 RecombinatorBase() ;
00069 virtual ~RecombinatorBase() ;
00070
00071 private:
00072 RecombinatorBase(Self const&);
00073
00074 } ;
00075
00076 }
00077 }
00078
00079
00080 #ifndef ITK_MANUAL_INSTANTIATION
00081 #include "freESRecombinatorBase.txx"
00082 #endif
00083
00084 #endif