go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkCMAEvolutionStrategyOptimizer.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright UMC Utrecht and contributors
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 
19 #ifndef __itkCMAEvolutionStrategyOptimizer_h
20 #define __itkCMAEvolutionStrategyOptimizer_h
21 
23 #include <vector>
24 #include <utility>
25 #include <deque>
26 
27 #include "itkArray.h"
28 #include "itkArray2D.h"
29 #include "itkMersenneTwisterRandomVariateGenerator.h"
30 #include "vnl/vnl_diag_matrix.h"
31 
32 namespace itk
33 {
51 {
52 public:
53 
57  typedef SmartPointer< const Self > ConstPointer;
58 
59  itkNewMacro( Self );
60  itkTypeMacro( CMAEvolutionStrategyOptimizer,
62 
69 
70  typedef enum {
77  Unknown
79 
80  virtual void StartOptimization( void );
81 
82  virtual void ResumeOptimization( void );
83 
84  virtual void StopOptimization( void );
85 
87  itkGetConstMacro( CurrentIteration, unsigned long );
88 
90  itkGetConstMacro( CurrentValue, MeasureType );
91 
93  itkGetConstReferenceMacro( StopCondition, StopConditionType );
94 
96  itkGetConstMacro( CurrentSigma, double );
97 
99  itkGetConstMacro( CurrentMinimumD, double );
100 
102  itkGetConstMacro( CurrentMaximumD, double );
103 
106  virtual double GetCurrentStepLength( void ) const
107  { return this->GetCurrentSigma() * this->GetCurrentMaximumD(); }
108 
114  itkGetConstReferenceMacro( CurrentScaledStep, ParametersType );
115 
117  itkGetConstMacro( MaximumNumberOfIterations, unsigned long );
118  itkSetClampMacro( MaximumNumberOfIterations, unsigned long,
119  1, NumericTraits< unsigned long >::max() );
120 
125  itkSetMacro( PopulationSize, unsigned int );
126  itkGetConstMacro( PopulationSize, unsigned int );
127 
132  itkSetMacro( NumberOfParents, unsigned int );
133  itkGetConstMacro( NumberOfParents, unsigned int );
134 
138  itkSetClampMacro( InitialSigma, double, NumericTraits< double >::min(), NumericTraits< double >::max() );
139  itkGetConstMacro( InitialSigma, double );
140 
144  itkSetClampMacro( MaximumDeviation, double, 0.0, NumericTraits< double >::max() );
145  itkGetConstMacro( MaximumDeviation, double );
146 
150  itkSetClampMacro( MinimumDeviation, double, 0.0, NumericTraits< double >::max() );
151  itkGetConstMacro( MinimumDeviation, double );
152 
162  itkSetMacro( UseDecayingSigma, bool );
163  itkGetConstMacro( UseDecayingSigma, bool );
164 
167  itkSetClampMacro( SigmaDecayA, double, 0.0, NumericTraits< double >::max() );
168  itkGetConstMacro( SigmaDecayA, double );
169 
172  itkSetClampMacro( SigmaDecayAlpha, double, 0.0, 1.0 );
173  itkGetConstMacro( SigmaDecayAlpha, double );
174 
180  itkSetMacro( UseCovarianceMatrixAdaptation, bool );
181  itkGetConstMacro( UseCovarianceMatrixAdaptation, bool );
182 
189  itkSetStringMacro( RecombinationWeightsPreset );
190  itkGetStringMacro( RecombinationWeightsPreset );
191 
195  itkSetMacro( UpdateBDPeriod, unsigned int );
196  itkGetConstMacro( UpdateBDPeriod, unsigned int );
197 
203  itkSetMacro( PositionToleranceMin, double );
204  itkGetConstMacro( PositionToleranceMin, double );
205 
210  itkSetMacro( PositionToleranceMax, double );
211  itkGetConstMacro( PositionToleranceMax, double );
212 
219  itkSetMacro( ValueTolerance, double );
220  itkGetConstMacro( ValueTolerance, double );
221 
222 protected:
223 
224  typedef Array< double > RecombinationWeightsType;
225  typedef vnl_diag_matrix< double > EigenValueMatrixType;
226  typedef Array2D< double > CovarianceMatrixType;
227  typedef std::vector< ParametersType > ParameterContainerType;
228  typedef std::deque< MeasureType > MeasureHistoryType;
229 
230  typedef
231  std::pair< MeasureType, unsigned int > MeasureIndexPairType;
232  typedef std::vector< MeasureIndexPairType > MeasureContainerType;
233 
234  typedef itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType;
235 
237  RandomGeneratorType::Pointer m_RandomGenerator;
238 
241 
243  unsigned long m_CurrentIteration;
244 
247 
249  bool m_Stop;
250 
253  unsigned int m_PopulationSize;
254  unsigned int m_NumberOfParents;
255  unsigned int m_UpdateBDPeriod;
256 
277  unsigned long m_HistoryLength;
278 
281 
286 
289 
304 
307 
314 
317 
320 
322  void PrintSelf( std::ostream & os, Indent indent ) const;
323 
338  virtual void InitializeConstants( void );
339 
352  virtual void InitializeProgressVariables( void );
353 
355  virtual void InitializeBCD( void );
356 
359  virtual void GenerateOffspring( void );
360 
362  virtual void SortCostFunctionValues( void );
363 
365  virtual void AdvanceOneStep( void );
366 
368  virtual void UpdateConjugateEvolutionPath( void );
369 
371  virtual void UpdateHeaviside( void );
372 
374  virtual void UpdateEvolutionPath( void );
375 
377  virtual void UpdateC( void );
378 
380  virtual void UpdateSigma( void );
381 
383  virtual void UpdateBD( void );
384 
394  virtual void FixNumericalErrors( void );
395 
406  virtual bool TestConvergence( bool firstCheck );
407 
408 private:
409 
410  CMAEvolutionStrategyOptimizer( const Self & ); // purposely not implemented
411  void operator=( const Self & ); // purposely not implemented
412 
425 
426 };
427 
428 } // end namespace itk
429 
430 #endif //#ifndef __itkCMAEvolutionStrategyOptimizer_h
itk::CMAEvolutionStrategyOptimizer::CostFunctionType
Superclass::CostFunctionType CostFunctionType
Definition: itkCMAEvolutionStrategyOptimizer.h:65
itk::CMAEvolutionStrategyOptimizer::m_SearchDirs
ParameterContainerType m_SearchDirs
Definition: itkCMAEvolutionStrategyOptimizer.h:291
itk::CMAEvolutionStrategyOptimizer::UpdateConjugateEvolutionPath
virtual void UpdateConjugateEvolutionPath(void)
itk::CMAEvolutionStrategyOptimizer::m_CurrentScaledStep
ParametersType m_CurrentScaledStep
Definition: itkCMAEvolutionStrategyOptimizer.h:297
itk::CMAEvolutionStrategyOptimizer::Pointer
SmartPointer< Self > Pointer
Definition: itkCMAEvolutionStrategyOptimizer.h:56
itk::CMAEvolutionStrategyOptimizer::CMAEvolutionStrategyOptimizer
CMAEvolutionStrategyOptimizer(const Self &)
itk::CMAEvolutionStrategyOptimizer::m_CurrentMinimumD
double m_CurrentMinimumD
Definition: itkCMAEvolutionStrategyOptimizer.h:283
itk::CMAEvolutionStrategyOptimizer::ScaledCostFunctionType
Superclass::ScaledCostFunctionType ScaledCostFunctionType
Definition: itkCMAEvolutionStrategyOptimizer.h:66
itk::ScaledSingleValuedNonLinearOptimizer::ScaledCostFunctionType
ScaledSingleValuedCostFunction ScaledCostFunctionType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:87
itk::CMAEvolutionStrategyOptimizer::m_EvolutionPathConstant
double m_EvolutionPathConstant
Definition: itkCMAEvolutionStrategyOptimizer.h:269
SmartPointer< Self >
itk::CMAEvolutionStrategyOptimizer::MeasureHistoryType
std::deque< MeasureType > MeasureHistoryType
Definition: itkCMAEvolutionStrategyOptimizer.h:228
itk::CMAEvolutionStrategyOptimizer::m_HistoryLength
unsigned long m_HistoryLength
Definition: itkCMAEvolutionStrategyOptimizer.h:277
itk::CMAEvolutionStrategyOptimizer::m_CovarianceMatrixAdaptationConstant
double m_CovarianceMatrixAdaptationConstant
Definition: itkCMAEvolutionStrategyOptimizer.h:267
itk::CMAEvolutionStrategyOptimizer::RecombinationWeightsType
Array< double > RecombinationWeightsType
Definition: itkCMAEvolutionStrategyOptimizer.h:220
itk::CMAEvolutionStrategyOptimizer::m_D
EigenValueMatrixType m_D
Definition: itkCMAEvolutionStrategyOptimizer.h:313
itk::CMAEvolutionStrategyOptimizer::m_SigmaDecayA
double m_SigmaDecayA
Definition: itkCMAEvolutionStrategyOptimizer.h:417
itk::CMAEvolutionStrategyOptimizer::m_SigmaDecayAlpha
double m_SigmaDecayAlpha
Definition: itkCMAEvolutionStrategyOptimizer.h:418
itk::CMAEvolutionStrategyOptimizer::SortCostFunctionValues
virtual void SortCostFunctionValues(void)
itk::CMAEvolutionStrategyOptimizer::m_InitialSigma
double m_InitialSigma
Definition: itkCMAEvolutionStrategyOptimizer.h:416
itk::CMAEvolutionStrategyOptimizer::m_CovarianceMatrixAdaptationWeight
double m_CovarianceMatrixAdaptationWeight
Definition: itkCMAEvolutionStrategyOptimizer.h:271
itk::CMAEvolutionStrategyOptimizer::m_ValueTolerance
double m_ValueTolerance
Definition: itkCMAEvolutionStrategyOptimizer.h:424
itk::CMAEvolutionStrategyOptimizer::ParameterContainerType
std::vector< ParametersType > ParameterContainerType
Definition: itkCMAEvolutionStrategyOptimizer.h:227
itk::CMAEvolutionStrategyOptimizer::Self
CMAEvolutionStrategyOptimizer Self
Definition: itkCMAEvolutionStrategyOptimizer.h:54
itk::CMAEvolutionStrategyOptimizer::m_UseCovarianceMatrixAdaptation
bool m_UseCovarianceMatrixAdaptation
Definition: itkCMAEvolutionStrategyOptimizer.h:252
itk::CMAEvolutionStrategyOptimizer::m_EffectiveMu
double m_EffectiveMu
Definition: itkCMAEvolutionStrategyOptimizer.h:261
itk::CMAEvolutionStrategyOptimizer::m_Stop
bool m_Stop
Definition: itkCMAEvolutionStrategyOptimizer.h:249
itk::ScaledSingleValuedNonLinearOptimizer::DerivativeType
Superclass::DerivativeType DerivativeType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:83
itk::CMAEvolutionStrategyOptimizer::Unknown
@ Unknown
Definition: itkCMAEvolutionStrategyOptimizer.h:77
itk::CMAEvolutionStrategyOptimizer::m_MaximumNumberOfIterations
unsigned long m_MaximumNumberOfIterations
Definition: itkCMAEvolutionStrategyOptimizer.h:414
itk::CMAEvolutionStrategyOptimizer::m_PositionToleranceMin
double m_PositionToleranceMin
Definition: itkCMAEvolutionStrategyOptimizer.h:423
itk::CMAEvolutionStrategyOptimizer::m_RecombinationWeightsPreset
std::string m_RecombinationWeightsPreset
Definition: itkCMAEvolutionStrategyOptimizer.h:419
itk::CMAEvolutionStrategyOptimizer::m_ExpectationNormNormalDistribution
double m_ExpectationNormNormalDistribution
Definition: itkCMAEvolutionStrategyOptimizer.h:273
itk::CMAEvolutionStrategyOptimizer::MetricError
@ MetricError
Definition: itkCMAEvolutionStrategyOptimizer.h:71
itk::CMAEvolutionStrategyOptimizer::StopOptimization
virtual void StopOptimization(void)
itk::CMAEvolutionStrategyOptimizer::PositionToleranceMax
@ PositionToleranceMax
Definition: itkCMAEvolutionStrategyOptimizer.h:74
itk::CMAEvolutionStrategyOptimizer::m_CurrentSigma
double m_CurrentSigma
Definition: itkCMAEvolutionStrategyOptimizer.h:280
itk::CMAEvolutionStrategyOptimizer::DerivativeType
Superclass::DerivativeType DerivativeType
Definition: itkCMAEvolutionStrategyOptimizer.h:64
itk::CMAEvolutionStrategyOptimizer::StartOptimization
virtual void StartOptimization(void)
itk::CMAEvolutionStrategyOptimizer::~CMAEvolutionStrategyOptimizer
virtual ~CMAEvolutionStrategyOptimizer()
Definition: itkCMAEvolutionStrategyOptimizer.h:319
itk::CMAEvolutionStrategyOptimizer::EigenValueMatrixType
vnl_diag_matrix< double > EigenValueMatrixType
Definition: itkCMAEvolutionStrategyOptimizer.h:225
itk::CMAEvolutionStrategyOptimizer::m_EvolutionPath
ParametersType m_EvolutionPath
Definition: itkCMAEvolutionStrategyOptimizer.h:301
itk::CMAEvolutionStrategyOptimizer::ConstPointer
SmartPointer< const Self > ConstPointer
Definition: itkCMAEvolutionStrategyOptimizer.h:57
itk::CMAEvolutionStrategyOptimizer::m_Heaviside
bool m_Heaviside
Definition: itkCMAEvolutionStrategyOptimizer.h:288
itk::CMAEvolutionStrategyOptimizer::m_CurrentIteration
unsigned long m_CurrentIteration
Definition: itkCMAEvolutionStrategyOptimizer.h:243
itk::CMAEvolutionStrategyOptimizer::m_PositionToleranceMax
double m_PositionToleranceMax
Definition: itkCMAEvolutionStrategyOptimizer.h:422
itk::CMAEvolutionStrategyOptimizer::m_C
CovarianceMatrixType m_C
Definition: itkCMAEvolutionStrategyOptimizer.h:309
itk::CMAEvolutionStrategyOptimizer::GenerateOffspring
virtual void GenerateOffspring(void)
itkScaledSingleValuedNonLinearOptimizer.h
itk::CMAEvolutionStrategyOptimizer::InitializeConstants
virtual void InitializeConstants(void)
itk::CMAEvolutionStrategyOptimizer::GetCurrentStepLength
virtual double GetCurrentStepLength(void) const
Definition: itkCMAEvolutionStrategyOptimizer.h:106
itk::CMAEvolutionStrategyOptimizer::UpdateSigma
virtual void UpdateSigma(void)
itk::CMAEvolutionStrategyOptimizer::m_CurrentValue
MeasureType m_CurrentValue
Definition: itkCMAEvolutionStrategyOptimizer.h:240
itk::CMAEvolutionStrategyOptimizer::m_CurrentMaximumD
double m_CurrentMaximumD
Definition: itkCMAEvolutionStrategyOptimizer.h:285
itk::ScaledSingleValuedNonLinearOptimizer::CostFunctionType
Superclass::CostFunctionType CostFunctionType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:84
itk::ScaledSingleValuedNonLinearOptimizer::MeasureType
Superclass::MeasureType MeasureType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:78
itk::CMAEvolutionStrategyOptimizer::ScalesType
Superclass::ScalesType ScalesType
Definition: itkCMAEvolutionStrategyOptimizer.h:68
itk::CMAEvolutionStrategyOptimizer::operator=
void operator=(const Self &)
itk::ScaledSingleValuedNonLinearOptimizer
Definition: itkScaledSingleValuedNonLinearOptimizer.h:64
itk::CMAEvolutionStrategyOptimizer::UpdateBD
virtual void UpdateBD(void)
itk::CMAEvolutionStrategyOptimizer::m_MeasureHistory
MeasureHistoryType m_MeasureHistory
Definition: itkCMAEvolutionStrategyOptimizer.h:306
itk::CMAEvolutionStrategyOptimizer::m_StopCondition
StopConditionType m_StopCondition
Definition: itkCMAEvolutionStrategyOptimizer.h:246
itk::CMAEvolutionStrategyOptimizer::MeasureIndexPairType
std::pair< MeasureType, unsigned int > MeasureIndexPairType
Definition: itkCMAEvolutionStrategyOptimizer.h:231
itk::CMAEvolutionStrategyOptimizer::ZeroStepLength
@ ZeroStepLength
Definition: itkCMAEvolutionStrategyOptimizer.h:76
itk::CMAEvolutionStrategyOptimizer::MaximumNumberOfIterations
@ MaximumNumberOfIterations
Definition: itkCMAEvolutionStrategyOptimizer.h:72
itk::CMAEvolutionStrategyOptimizer::m_B
CovarianceMatrixType m_B
Definition: itkCMAEvolutionStrategyOptimizer.h:311
itk::CMAEvolutionStrategyOptimizer::InitializeBCD
virtual void InitializeBCD(void)
itk::CMAEvolutionStrategyOptimizer::m_UseDecayingSigma
bool m_UseDecayingSigma
Definition: itkCMAEvolutionStrategyOptimizer.h:415
itk::CMAEvolutionStrategyOptimizer::ValueTolerance
@ ValueTolerance
Definition: itkCMAEvolutionStrategyOptimizer.h:75
itk::CMAEvolutionStrategyOptimizer::m_CostFunctionValues
MeasureContainerType m_CostFunctionValues
Definition: itkCMAEvolutionStrategyOptimizer.h:295
itk::CMAEvolutionStrategyOptimizer::m_MaximumDeviation
double m_MaximumDeviation
Definition: itkCMAEvolutionStrategyOptimizer.h:420
itk::CMAEvolutionStrategyOptimizer::m_NormalizedSearchDirs
ParameterContainerType m_NormalizedSearchDirs
Definition: itkCMAEvolutionStrategyOptimizer.h:293
itk::CMAEvolutionStrategyOptimizer::CMAEvolutionStrategyOptimizer
CMAEvolutionStrategyOptimizer()
itk::CMAEvolutionStrategyOptimizer::ResumeOptimization
virtual void ResumeOptimization(void)
itk::CMAEvolutionStrategyOptimizer::GetCurrentSigma
virtual double GetCurrentSigma() const
itk::CMAEvolutionStrategyOptimizer::ParametersType
Superclass::ParametersType ParametersType
Definition: itkCMAEvolutionStrategyOptimizer.h:61
itk::CMAEvolutionStrategyOptimizer::TestConvergence
virtual bool TestConvergence(bool firstCheck)
itk::CMAEvolutionStrategyOptimizer::m_PopulationSize
unsigned int m_PopulationSize
Definition: itkCMAEvolutionStrategyOptimizer.h:253
itk::CMAEvolutionStrategyOptimizer::FixNumericalErrors
virtual void FixNumericalErrors(void)
itk
Definition: itkAdvancedImageToImageMetric.h:40
itk::CMAEvolutionStrategyOptimizer::GetCurrentMaximumD
virtual double GetCurrentMaximumD() const
itk::CMAEvolutionStrategyOptimizer::m_UpdateBDPeriod
unsigned int m_UpdateBDPeriod
Definition: itkCMAEvolutionStrategyOptimizer.h:255
itk::CMAEvolutionStrategyOptimizer::CovarianceMatrixType
Array2D< double > CovarianceMatrixType
Definition: itkCMAEvolutionStrategyOptimizer.h:226
itk::CMAEvolutionStrategyOptimizer::InitializeProgressVariables
virtual void InitializeProgressVariables(void)
itk::CMAEvolutionStrategyOptimizer::m_ConjugateEvolutionPath
ParametersType m_ConjugateEvolutionPath
Definition: itkCMAEvolutionStrategyOptimizer.h:303
itk::ScaledSingleValuedNonLinearOptimizer::ParametersType
Superclass::ParametersType ParametersType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:82
itk::CMAEvolutionStrategyOptimizer::MeasureType
Superclass::MeasureType MeasureType
Definition: itkCMAEvolutionStrategyOptimizer.h:67
itk::CMAEvolutionStrategyOptimizer::Superclass
ScaledSingleValuedNonLinearOptimizer Superclass
Definition: itkCMAEvolutionStrategyOptimizer.h:55
itk::CMAEvolutionStrategyOptimizer::m_RecombinationWeights
RecombinationWeightsType m_RecombinationWeights
Definition: itkCMAEvolutionStrategyOptimizer.h:275
itk::CMAEvolutionStrategyOptimizer::m_RandomGenerator
RandomGeneratorType::Pointer m_RandomGenerator
Definition: itkCMAEvolutionStrategyOptimizer.h:237
itk::CMAEvolutionStrategyOptimizer
A Covariance Matrix Adaptation Evolution Strategy Optimizer.
Definition: itkCMAEvolutionStrategyOptimizer.h:51
itk::CMAEvolutionStrategyOptimizer::StopConditionType
StopConditionType
Definition: itkCMAEvolutionStrategyOptimizer.h:70
itk::CMAEvolutionStrategyOptimizer::m_CurrentNormalizedStep
ParametersType m_CurrentNormalizedStep
Definition: itkCMAEvolutionStrategyOptimizer.h:299
itk::CMAEvolutionStrategyOptimizer::RandomGeneratorType
itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType
Definition: itkCMAEvolutionStrategyOptimizer.h:234
itk::CMAEvolutionStrategyOptimizer::AdvanceOneStep
virtual void AdvanceOneStep(void)
itk::CMAEvolutionStrategyOptimizer::m_SigmaDampingConstant
double m_SigmaDampingConstant
Definition: itkCMAEvolutionStrategyOptimizer.h:265
itk::ScaledSingleValuedNonLinearOptimizer::ScalesType
NonLinearOptimizer::ScalesType ScalesType
Definition: itkScaledSingleValuedNonLinearOptimizer.h:86
itk::CMAEvolutionStrategyOptimizer::m_NumberOfParents
unsigned int m_NumberOfParents
Definition: itkCMAEvolutionStrategyOptimizer.h:254
itk::CMAEvolutionStrategyOptimizer::UpdateHeaviside
virtual void UpdateHeaviside(void)
itk::CMAEvolutionStrategyOptimizer::m_MinimumDeviation
double m_MinimumDeviation
Definition: itkCMAEvolutionStrategyOptimizer.h:421
itk::CMAEvolutionStrategyOptimizer::PrintSelf
void PrintSelf(std::ostream &os, Indent indent) const
itk::CMAEvolutionStrategyOptimizer::UpdateEvolutionPath
virtual void UpdateEvolutionPath(void)
itk::CMAEvolutionStrategyOptimizer::m_ConjugateEvolutionPathConstant
double m_ConjugateEvolutionPathConstant
Definition: itkCMAEvolutionStrategyOptimizer.h:263
itk::CMAEvolutionStrategyOptimizer::MeasureContainerType
std::vector< MeasureIndexPairType > MeasureContainerType
Definition: itkCMAEvolutionStrategyOptimizer.h:232
itk::CMAEvolutionStrategyOptimizer::UpdateC
virtual void UpdateC(void)
itk::CMAEvolutionStrategyOptimizer::PositionToleranceMin
@ PositionToleranceMin
Definition: itkCMAEvolutionStrategyOptimizer.h:73


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo