00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freESMutationBase_h
00023 #define __freESMutationBase_h
00024
00025 #include "freESComponentBase.h"
00026 #include "freESPopulation.h"
00027
00028 #include <itkArray.h>
00029
00030 namespace FREE
00031 {
00032 namespace ES
00033 {
00034
00041 template <class TIndividual>
00042 class ITK_EXPORT MutationBase:
00043 public ComponentBase<TIndividual>
00044 {
00045 public:
00047 typedef MutationBase<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(MutationBase, ComponentBase);
00057
00058 typedef typename Superclass::IndividualType IndividualType;
00059 typedef typename IndividualType::Pointer IndividualPointer;
00060 typedef Population<IndividualType> PopulationType;
00061
00065 typedef itk::Array<double> ScalesType;
00066
00069 void Mutate(IndividualType* pIndividual, PopulationType* pPopulation) const;
00070
00074 virtual double MutateValue(const double& value) = 0;
00075
00076 itkGetMacro(MutateValueScale, double);
00077 itkSetMacro(MutateValueScale, double);
00078
00080 void SetGeneralObjectiveScales(const ScalesType & scales);
00082 itkGetConstReferenceMacro( GeneralObjectiveScales, ScalesType );
00083
00084 protected:
00085 MutationBase() ;
00086 virtual ~MutationBase() ;
00087
00088 ScalesType m_GeneralObjectiveScales;
00089 bool m_ScalesInitialized;
00090
00092 virtual void MutateObjectivParameters(IndividualType* pIndividual, PopulationType* pPopulation) const =0;
00093
00095 double m_MutateValueScale;
00096
00097 private:
00098 MutationBase(Self const&);
00099
00100 } ;
00101
00102 }
00103 }
00104
00105
00106 #ifndef ITK_MANUAL_INSTANTIATION
00107 #include "freESMutationBase.txx"
00108 #endif
00109
00110 #endif