freESAdaptiveCovarianceMutation.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Insight Segmentation & Registration Toolkit
00004   Module:    $RCSfile: freESAdaptiveCovarianceMutation.h,v $
00005 
00006   Date:      $Date: 2005/03/07 03:39:58 $
00007   Version:   $Revision: 1.22 $
00008 
00009   Copyright (c) Insight Software Consortium. All rights reserved.
00010   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
00011 
00012      This software is distributed WITHOUT ANY WARRANTY; without even 
00013      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00014      PURPOSE.  See the above copyright notices for more information.
00015 
00016 =========================================================================*/
00017 #ifndef __freESAdaptiveCovarianceMutation_h
00018 #define __freESAdaptiveCovarianceMutation_h
00019 
00020 #include "freESMutationBase.h"
00021 #include <itkArray.h>
00022 #include "itkNormalVariateGenerator.h"
00023 
00024 namespace FREE
00025 {
00026   namespace ES
00027   {
00028 
00056     template <class TIndividual>
00057     class ITK_EXPORT AdaptiveCovarianceMutation: 
00058       public MutationBase<TIndividual>
00059     {
00060     public:
00062       typedef AdaptiveCovarianceMutation<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(AdaptiveCovarianceMutation, MutationBase);
00072 
00073       void RegisterStrategicIndividualParameters(IndividualType& individual) const;
00074       void MutateStrategicIndividualParameters(IndividualType& individual, PopulationType& population) const;
00075 
00076       double MutateValue(const double& value);
00077 
00078       itkSetMacro( StrategicMutationVariance, double );
00079       itkGetMacro( StrategicMutationVariance, double );
00080 
00081       itkSetMacro( MutateValueVariance, double );
00082       itkGetMacro( MutateValueVariance, double );
00083 
00085             typedef itk::Statistics::NormalVariateGenerator VariateGeneratorType ;
00086       VariateGeneratorType& GetRandomGenerator() {return *(m_RandomGenerator.GetPointer());};
00087 
00088     protected:
00089       AdaptiveCovarianceMutation() ;
00090 
00092       double m_StrategicMutationVariance;
00094       double m_MutateValueVariance;
00095 
00096       VariateGeneratorType::Pointer m_RandomGenerator;
00097 
00098       void MutateObjectivParameters(IndividualType* pIndividual, PopulationType* pPopulation) const;
00099 
00100     private:
00101       AdaptiveCovarianceMutation(Self const&); // Purposely not implemented.
00102 
00103     } ; // end of class
00104 
00105   } // end of namespace ES
00106 } // end of namespace FREE
00107 
00108 
00109 #ifndef ITK_MANUAL_INSTANTIATION
00110 #include "freESAdaptiveCovarianceMutation.txx"
00111 #endif
00112 
00113 #endif

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