00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkExhaustiveOptimizer_h
00018 #define __itkExhaustiveOptimizer_h
00019
00020 #include "itkSingleValuedNonLinearOptimizer.h"
00021
00022 namespace itk
00023 {
00024
00081 class ITK_EXPORT ExhaustiveOptimizer :
00082 public SingleValuedNonLinearOptimizer
00083 {
00084 public:
00086 typedef ExhaustiveOptimizer Self;
00087 typedef SingleValuedNonLinearOptimizer Superclass;
00088 typedef SmartPointer<Self> Pointer;
00089 typedef SmartPointer<const Self> ConstPointer;
00090
00091 typedef Array< unsigned long > StepsType;
00093 itkNewMacro(Self);
00094
00096 itkTypeMacro( ExhaustiveOptimizer, SingleValuedNonLinearOptimizer );
00097
00098 virtual void StartOptimization( void );
00099
00100 void StartWalking( void );
00101 void ResumeWalking( void );
00102 void StopWalking(void);
00103
00104 itkSetMacro( StepLength, double );
00105 itkSetMacro( NumberOfSteps, StepsType );
00106 itkGetConstReferenceMacro( StepLength, double );
00107 itkGetConstReferenceMacro( NumberOfSteps, StepsType );
00108 itkGetConstReferenceMacro( CurrentValue, MeasureType );
00109 itkGetConstReferenceMacro( MaximumMetricValue, MeasureType );
00110 itkGetConstReferenceMacro( MinimumMetricValue, MeasureType );
00111 itkGetConstReferenceMacro( MinimumMetricValuePosition, ParametersType );
00112 itkGetConstReferenceMacro( MaximumMetricValuePosition, ParametersType );
00113 itkGetConstReferenceMacro( CurrentIndex, ParametersType );
00114 itkGetConstReferenceMacro( MaximumNumberOfIterations, unsigned long );
00115
00116
00117 protected:
00118 ExhaustiveOptimizer();
00119 virtual ~ExhaustiveOptimizer() {};
00120 void PrintSelf(std::ostream& os, Indent indent) const;
00121
00125 void AdvanceOneStep( void );
00126 void IncrementIndex( ParametersType & param );
00128
00129
00130
00131 private:
00132 ExhaustiveOptimizer(const Self&);
00133 void operator=(const Self&);
00134
00135 protected:
00136 MeasureType m_CurrentValue;
00137 StepsType m_NumberOfSteps;
00138 unsigned long m_CurrentIteration;
00139 bool m_Stop;
00140 unsigned int m_CurrentParameter;
00141 double m_StepLength;
00142 ParametersType m_CurrentIndex;
00143 unsigned long m_MaximumNumberOfIterations;
00144 MeasureType m_MaximumMetricValue;
00145 MeasureType m_MinimumMetricValue;
00146 ParametersType m_MinimumMetricValuePosition;
00147 ParametersType m_MaximumMetricValuePosition;
00148
00149 };
00150
00151 }
00152
00153 #endif
00154