freESAdaptiveNormalMutation.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: freESAdaptiveNormalMutation.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 __freESAdaptiveNormalMutation_h
00023 #define __freESAdaptiveNormalMutation_h
00024 
00025 #include "freESMutationBase.h"
00026 #include <itkArray.h>
00027 #include "itkNormalVariateGenerator.h"
00028 
00029 namespace FREE
00030 {
00031   namespace ES
00032   {
00033 
00056     template <class TIndividual>
00057     class ITK_EXPORT AdaptiveNormalMutation: 
00058       public MutationBase<TIndividual>
00059     {
00060     public:
00062       typedef AdaptiveNormalMutation<TIndividual>     Self ;
00063       typedef MutationBase<TIndividual>        Superclass;
00064       typedef itk::SmartPointer<Self>                  Pointer;
00065       typedef itk::SmartPointer<const Self>            ConstPointer;
00066 
00068       itkNewMacro(Self);
00069 
00071       itkTypeMacro(AdaptiveNormalMutation, MutationBase);
00072 
00073       typedef typename Superclass::IndividualType   IndividualType;
00074       typedef typename IndividualType::Pointer      IndividualPointer;
00075       typedef typename Superclass::PopulationType   PopulationType;
00076       typedef typename PopulationType::Pointer      PopulationPointer;
00077 
00078       void RegisterStrategicIndividualParameters(IndividualType& individual) const;
00079       void MutateStrategicIndividualParameters(IndividualType& individual, PopulationType& population) const;
00080 
00081       double MutateValue(const double& value);
00082 
00083       itkSetMacro( StrategicMutationVariance, double );
00084       itkGetMacro( StrategicMutationVariance, double );
00085 
00086       itkSetMacro( MutateValueVariance, double );
00087       itkGetMacro( MutateValueVariance, double );
00088 
00090             typedef itk::Statistics::NormalVariateGenerator VariateGeneratorType ;
00091       VariateGeneratorType& GetRandomGenerator() {return *(m_RandomGenerator.GetPointer());};
00092 
00093     protected:
00094       AdaptiveNormalMutation() ;
00095 
00097       double m_StrategicMutationVariance;
00099       double m_MutateValueVariance;
00100 
00101       VariateGeneratorType::Pointer m_RandomGenerator;
00102 
00103       void MutateObjectivParameters(IndividualType* pIndividual, PopulationType* pPopulation) const;
00104 
00105     private:
00106       AdaptiveNormalMutation(Self const&); // Purposely not implemented.
00107 
00108     } ; // end of class
00109 
00110   } // end of namespace ES
00111 } // end of namespace FREE
00112 
00113 
00114 #ifndef ITK_MANUAL_INSTANTIATION
00115 #include "freESAdaptiveNormalMutation.txx"
00116 #endif
00117 
00118 #endif

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