freESMutationBase.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freESMutationBase.h,v $
00007   Language:  C++
00008 
00009 
00010 
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016 
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
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       //itkNewMacro(Self); //it is an abstract class, so no New method
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&); // Purposely not implemented.
00099 
00100     } ; // end of class
00101 
00102   } // end of namespace ES
00103 } // end of namespace FREE
00104 
00105 
00106 #ifndef ITK_MANUAL_INSTANTIATION
00107 #include "freESMutationBase.txx"
00108 #endif
00109 
00110 #endif

Generated at Sat Oct 13 15:53:37 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000