NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkUCLRegularStepOptimizer.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkUCLRegularStepOptimizer_h
16 #define itkUCLRegularStepOptimizer_h
17 
18 #include <NifTKConfigure.h>
20 
21 #include <itkSingleValuedNonLinearOptimizer.h>
22 
23 namespace itk
24 {
25 
33  public SingleValuedNonLinearOptimizer
34 {
35 public:
38  typedef SingleValuedNonLinearOptimizer Superclass;
39  typedef SmartPointer<Self> Pointer;
40  typedef SmartPointer<const Self> ConstPointer;
41 
43  itkNewMacro(Self);
44 
46  itkTypeMacro( UCLRegularStepOptimizer,
47  SingleValuedNonLinearOptimizer );
48 
50  typedef enum {
51  StepTooSmall = 1,
52  ImageNotAvailable = 2,
53  CostFunctionError = 3,
54  MaximumNumberOfIterations = 4,
55  Unknown = 5
56  } StopConditionType;
57 
59  itkSetMacro( Maximize, bool );
60  itkGetConstReferenceMacro( Maximize, bool );
61  itkBooleanMacro( Maximize );
62  bool GetMinimize( ) const
63  { return !m_Maximize; }
64  void SetMinimize(bool v)
65  { this->SetMaximize(!v); }
66  void MinimizeOn(void)
67  { SetMaximize( false ); }
68  void MinimizeOff(void)
69  { SetMaximize( true ); }
70 
72  void StartOptimization( void ) override;
73 
76  void ResumeOptimization( void );
77 
80  void StopOptimization( void );
81 
83  itkSetMacro( MaximumStepLength, double );
84  itkSetMacro( MinimumStepLength, double );
85  itkSetMacro( RelaxationFactor, double );
86  itkSetMacro( NumberOfIterations, unsigned long );
87  itkGetConstReferenceMacro( CurrentStepLength, double);
88  itkGetConstReferenceMacro( MaximumStepLength, double );
89  itkGetConstReferenceMacro( MinimumStepLength, double );
90  itkGetConstReferenceMacro( RelaxationFactor, double );
91  itkGetConstReferenceMacro( NumberOfIterations, unsigned long );
92  itkGetConstMacro( CurrentIteration, unsigned int );
93  itkGetConstReferenceMacro( StopCondition, StopConditionType );
94  itkGetConstReferenceMacro( Value, MeasureType );
95 
96 protected:
99  void PrintSelf(std::ostream& os, Indent indent) const override;
100 
101 private:
102  UCLRegularStepOptimizer(const Self&); //purposely not implemented
103  void operator=(const Self&);//purposely not implemented
104 
105 protected:
106  bool m_Stop;
108  MeasureType m_Value;
109  MeasureType m_BestSoFarValue;
110  ParametersType m_BestSoFarParameters;
116  unsigned long m_NumberOfIterations;
117  unsigned long m_CurrentIteration;
118 
119 
120 };
121 
122 } // end namespace itk
123 
124 #endif
SingleValuedNonLinearOptimizer Superclass
Definition: itkUCLRegularStepOptimizer.h:38
ParametersType m_BestSoFarParameters
Definition: itkUCLRegularStepOptimizer.h:110
UCLRegularStepOptimizer Self
Definition: itkUCLRegularStepOptimizer.h:37
void MinimizeOn(void)
Definition: itkUCLRegularStepOptimizer.h:66
#define NIFTKITK_WINEXPORT
Definition: niftkITKWin32ExportHeader.h:28
Definition: niftkITKAffineResampleImage.cxx:74
SmartPointer< const Self > ConstPointer
Definition: itkUCLRegularStepOptimizer.h:40
StopConditionType
Definition: itkUCLRegularStepOptimizer.h:50
MeasureType m_BestSoFarValue
Definition: itkUCLRegularStepOptimizer.h:109
double m_RelaxationFactor
Definition: itkUCLRegularStepOptimizer.h:114
double m_MaximumStepLength
Definition: itkUCLRegularStepOptimizer.h:111
unsigned long m_NumberOfIterations
Definition: itkUCLRegularStepOptimizer.h:116
Implement a Regular Step Size optimizer.
Definition: itkUCLRegularStepOptimizer.h:32
const GLdouble * v
Definition: glew.h:1375
bool GetMinimize() const
Definition: itkUCLRegularStepOptimizer.h:62
virtual ~UCLRegularStepOptimizer()
Definition: itkUCLRegularStepOptimizer.h:98
void MinimizeOff(void)
Definition: itkUCLRegularStepOptimizer.h:68
unsigned long m_CurrentIteration
Definition: itkUCLRegularStepOptimizer.h:117
StopConditionType m_StopCondition
Definition: itkUCLRegularStepOptimizer.h:115
double m_MinimumStepLength
Definition: itkUCLRegularStepOptimizer.h:112
double m_CurrentStepLength
Definition: itkUCLRegularStepOptimizer.h:113
MeasureType m_Value
Definition: itkUCLRegularStepOptimizer.h:108
void SetMinimize(bool v)
Definition: itkUCLRegularStepOptimizer.h:64
SmartPointer< Self > Pointer
Definition: itkUCLRegularStepOptimizer.h:39
bool m_Stop
Definition: itkUCLRegularStepOptimizer.h:106
bool m_Maximize
Definition: itkUCLRegularStepOptimizer.h:107