00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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 } ;
00128
00129 }
00130 }
00131
00132 #endif