17 #ifndef __itkSPSAOptimizer_h
18 #define __itkSPSAOptimizer_h
65 MetricError } StopConditionType;
68 virtual void AdvanceOneStep(
void );
71 void StartOptimization(
void );
75 void ResumeOptimization(
void );
79 void StopOptimization(
void );
82 virtual MeasureType GetValue(
void )
const;
85 virtual MeasureType GetValue(
const ParametersType & parameters )
const;
100 virtual void GuessParameters(
101 unsigned long numberOfGradientEstimates,
102 double initialStepSize);
105 itkGetConstMacro( CurrentIteration,
unsigned long );
108 itkGetConstMacro( StopCondition, StopConditionType );
111 itkGetConstMacro( LearningRate,
double);
114 itkGetConstMacro( GradientMagnitude,
double);
117 itkGetConstReferenceMacro( Gradient, DerivativeType);
120 itkSetMacro( Sa,
double );
121 itkGetConstMacro( Sa,
double );
123 void Seta (
double a) { SetSa(a);}
124 double Geta () {
return GetSa();}
127 itkSetMacro( Sc,
double );
128 itkGetConstMacro( Sc,
double );
130 void Setc (
double c) {SetSc(c);}
131 double Getc () {
return GetSc();}
134 itkSetMacro( A,
double );
135 itkGetConstMacro( A,
double );
138 itkSetMacro( Alpha,
double );
139 itkGetConstMacro( Alpha,
double );
142 itkSetMacro( Gamma,
double );
143 itkGetConstMacro( Gamma,
double );
146 itkGetConstMacro( Maximize,
bool );
147 itkSetMacro( Maximize,
bool );
148 itkBooleanMacro( Maximize );
149 bool GetMinimize( )
const
150 {
return !m_Maximize; }
151 void SetMinimize(
bool v)
152 { this->SetMaximize(!v); }
154 { this->MaximizeOff(); }
156 { this->MaximizeOn(); }
163 itkSetMacro( NumberOfPerturbations,
unsigned long );
164 itkGetConstMacro( NumberOfPerturbations,
unsigned long );
178 itkGetConstMacro( StateOfConvergence,
double );
181 itkSetMacro( StateOfConvergenceDecayRate,
double );
182 itkGetConstMacro( StateOfConvergenceDecayRate,
double );
185 itkSetMacro( MinimumNumberOfIterations,
unsigned long);
186 itkGetConstMacro( MinimumNumberOfIterations,
unsigned long);
189 itkSetMacro( MaximumNumberOfIterations,
unsigned long );
190 itkGetConstMacro( MaximumNumberOfIterations,
unsigned long );
193 itkSetMacro(Tolerance,
double);
194 itkGetConstMacro(Tolerance,
double);
197 const std::string GetStopConditionDescription()
const;
205 void PrintSelf( std::ostream& os,
Indent indent )
const;
220 virtual double Compute_a(
unsigned long k )
const;
226 virtual double Compute_c(
unsigned long k )
const;
229 virtual void GenerateDelta(
const unsigned int spaceDimension );
235 virtual void ComputeGradient(
237 DerivativeType & gradient);
242 void operator=(
const Self& );
264 #endif // end #ifndef __itkSPSAOptimizer_h