freEvolutionaryStrategyOptimizerBase.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: freEvolutionaryStrategyOptimizerBase.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 __freEvolutionaryStrategyOptimizerBase_h
00023 #define __freEvolutionaryStrategyOptimizerBase_h
00024 
00025 #include <itkSingleValuedNonLinearOptimizer.h>
00026 
00027 namespace FREE
00028 {
00029   namespace ES
00030   {
00031 
00041     class ITK_EXPORT EvolutionaryStrategyOptimizerBase: 
00042       public itk::SingleValuedNonLinearOptimizer
00043     {
00044     public:
00046       typedef EvolutionaryStrategyOptimizerBase     Self ;
00047       typedef itk::SingleValuedNonLinearOptimizer      Superclass;
00048       typedef itk::SmartPointer<Self>                  Pointer;
00049       typedef itk::SmartPointer<const Self>            ConstPointer;
00050 
00052       itkTypeMacro(EvolutionaryStrategyOptimizerBase, SingleValuedNonLinearOptimizer );
00053 
00055       typedef  itk::SingleValuedCostFunction         CostFunctionType;
00056       typedef  CostFunctionType::Pointer        CostFunctionPointer;
00057 
00059       itkSetMacro( MaximumIteration, unsigned int );
00060       itkGetConstReferenceMacro( MaximumIteration, unsigned int );
00061 
00063       itkGetConstReferenceMacro( CurrentCost, MeasureType );
00064       MeasureType GetValue() const { return this->GetCurrentCost(); }
00065 
00067       itkGetConstReferenceMacro( CurrentIteration, unsigned int) ;
00068 
00070       itkSetMacro( Maximize, bool );
00071       itkGetConstMacro( Maximize, bool );
00072       itkBooleanMacro( Maximize );
00073       bool GetMinimize( ) const
00074         { return !m_Maximize; }
00075       void SetMinimize(bool v)
00076         { this->SetMaximize(!v); }
00077       void    MinimizeOn(void) 
00078         { SetMaximize( false ); }
00079       void    MinimizeOff(void) 
00080         { SetMaximize( true ); }
00081 
00085       virtual void StartOptimization() = 0;
00086 
00090       virtual void StopOptimization() 
00091       { m_Stop = true ; }
00092 
00097       virtual void ResumeOptimization();
00098 
00099     protected:
00100       EvolutionaryStrategyOptimizerBase() ;
00101       EvolutionaryStrategyOptimizerBase(const EvolutionaryStrategyOptimizerBase&) ;
00102       virtual ~EvolutionaryStrategyOptimizerBase() ;
00103       void PrintSelf(std::ostream& os, itk::Indent indent) const;
00104 
00109       bool m_Stop ;
00110 
00114       bool m_Started;
00115 
00117       unsigned int m_CurrentIteration ;
00118 
00120       MeasureType       m_CurrentCost;
00121 
00122     private:
00124       unsigned int m_MaximumIteration ;
00125 
00126       bool m_Maximize;
00127     } ; // end of class
00128 
00129   } // end of namespace ES
00130 } // end of namespace FREE
00131 
00132 #endif

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