go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
itk::CMAEvolutionStrategyOptimizer Class Reference

#include <itkCMAEvolutionStrategyOptimizer.h>

Inheritance diagram for itk::CMAEvolutionStrategyOptimizer:
Inheritance graph
[legend]
Collaboration diagram for itk::CMAEvolutionStrategyOptimizer:
Collaboration graph
[legend]

Public Types

typedef SmartPointer< const SelfConstPointer
typedef
Superclass::CostFunctionType 
CostFunctionType
typedef Superclass::DerivativeType DerivativeType
typedef Superclass::MeasureType MeasureType
typedef Superclass::ParametersType ParametersType
typedef SmartPointer< SelfPointer
typedef
Superclass::ScaledCostFunctionType 
ScaledCostFunctionType
typedef Superclass::ScalesType ScalesType
typedef
CMAEvolutionStrategyOptimizer 
Self
enum  StopConditionType {
  MetricError, MaximumNumberOfIterations, PositionToleranceMin, PositionToleranceMax,
  ValueTolerance, ZeroStepLength, Unknown
}
typedef
ScaledSingleValuedNonLinearOptimizer 
Superclass

Public Member Functions

virtual const char * GetClassName () const
virtual unsigned long GetCurrentIteration () const
virtual double GetCurrentMaximumD () const
virtual double GetCurrentMinimumD () const
virtual const ParametersTypeGetCurrentScaledStep ()
virtual double GetCurrentSigma () const
virtual double GetCurrentStepLength (void) const
virtual MeasureType GetCurrentValue () const
virtual double GetInitialSigma () const
virtual double GetMaximumDeviation () const
virtual unsigned long GetMaximumNumberOfIterations () const
virtual double GetMinimumDeviation () const
virtual unsigned int GetNumberOfParents () const
virtual unsigned int GetPopulationSize () const
virtual double GetPositionToleranceMax () const
virtual double GetPositionToleranceMin () const
virtual const char * GetRecombinationWeightsPreset () const
virtual double GetSigmaDecayA () const
virtual double GetSigmaDecayAlpha () const
virtual const StopConditionTypeGetStopCondition ()
virtual unsigned int GetUpdateBDPeriod () const
virtual bool GetUseCovarianceMatrixAdaptation () const
virtual bool GetUseDecayingSigma () const
virtual double GetValueTolerance () const
virtual void ResumeOptimization (void)
virtual void SetInitialSigma (double _arg)
virtual void SetMaximumDeviation (double _arg)
virtual void SetMaximumNumberOfIterations (unsigned long _arg)
virtual void SetMinimumDeviation (double _arg)
virtual void SetNumberOfParents (unsigned int _arg)
virtual void SetPopulationSize (unsigned int _arg)
virtual void SetPositionToleranceMax (double _arg)
virtual void SetPositionToleranceMin (double _arg)
virtual void SetRecombinationWeightsPreset (const char *_arg)
virtual void SetSigmaDecayA (double _arg)
virtual void SetSigmaDecayAlpha (double _arg)
virtual void SetUpdateBDPeriod (unsigned int _arg)
virtual void SetUseCovarianceMatrixAdaptation (bool _arg)
virtual void SetUseDecayingSigma (bool _arg)
virtual void SetValueTolerance (double _arg)
virtual void StartOptimization (void)
virtual void StopOptimization (void)

Static Public Member Functions

static Pointer New ()

Protected Types

typedef Array2D< doubleCovarianceMatrixType
typedef vnl_diag_matrix< doubleEigenValueMatrixType
typedef std::vector
< MeasureIndexPairType
MeasureContainerType
typedef std::deque< MeasureTypeMeasureHistoryType
typedef std::pair< MeasureType,
unsigned int
MeasureIndexPairType
typedef std::vector
< ParametersType
ParameterContainerType
typedef
itk::Statistics::MersenneTwisterRandomVariateGenerator 
RandomGeneratorType
typedef Array< doubleRecombinationWeightsType

Protected Member Functions

virtual void AdvanceOneStep (void)
 CMAEvolutionStrategyOptimizer ()
virtual void FixNumericalErrors (void)
virtual void GenerateOffspring (void)
virtual void InitializeBCD (void)
virtual void InitializeConstants (void)
virtual void InitializeProgressVariables (void)
void PrintSelf (std::ostream &os, Indent indent) const
virtual void SortCostFunctionValues (void)
virtual bool TestConvergence (bool firstCheck)
virtual void UpdateBD (void)
virtual void UpdateC (void)
virtual void UpdateConjugateEvolutionPath (void)
virtual void UpdateEvolutionPath (void)
virtual void UpdateHeaviside (void)
virtual void UpdateSigma (void)
virtual ~CMAEvolutionStrategyOptimizer ()

Protected Attributes

CovarianceMatrixType m_B
CovarianceMatrixType m_C
ParametersType m_ConjugateEvolutionPath
double m_ConjugateEvolutionPathConstant
MeasureContainerType m_CostFunctionValues
double m_CovarianceMatrixAdaptationConstant
double m_CovarianceMatrixAdaptationWeight
unsigned long m_CurrentIteration
double m_CurrentMaximumD
double m_CurrentMinimumD
ParametersType m_CurrentNormalizedStep
ParametersType m_CurrentScaledStep
double m_CurrentSigma
MeasureType m_CurrentValue
EigenValueMatrixType m_D
double m_EffectiveMu
ParametersType m_EvolutionPath
double m_EvolutionPathConstant
double m_ExpectationNormNormalDistribution
bool m_Heaviside
unsigned long m_HistoryLength
MeasureHistoryType m_MeasureHistory
ParameterContainerType m_NormalizedSearchDirs
unsigned int m_NumberOfParents
unsigned int m_PopulationSize
RandomGeneratorType::Pointer m_RandomGenerator
RecombinationWeightsType m_RecombinationWeights
ParameterContainerType m_SearchDirs
double m_SigmaDampingConstant
bool m_Stop
StopConditionType m_StopCondition
unsigned int m_UpdateBDPeriod
bool m_UseCovarianceMatrixAdaptation

Private Member Functions

 CMAEvolutionStrategyOptimizer (const Self &)
void operator= (const Self &)

Private Attributes

double m_InitialSigma
double m_MaximumDeviation
unsigned long m_MaximumNumberOfIterations
double m_MinimumDeviation
double m_PositionToleranceMax
double m_PositionToleranceMin
std::string m_RecombinationWeightsPreset
double m_SigmaDecayA
double m_SigmaDecayAlpha
bool m_UseDecayingSigma
double m_ValueTolerance

Detailed Description

A Covariance Matrix Adaptation Evolution Strategy Optimizer.

Based on the work by Hansen:

Definition at line 47 of file itkCMAEvolutionStrategyOptimizer.h.


Member Typedef Documentation

Definition at line 221 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 220 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 227 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 223 of file itkCMAEvolutionStrategyOptimizer.h.

typedef std::pair< MeasureType, unsigned int > itk::CMAEvolutionStrategyOptimizer::MeasureIndexPairType [protected]

Definition at line 226 of file itkCMAEvolutionStrategyOptimizer.h.

Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.

Definition at line 65 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 222 of file itkCMAEvolutionStrategyOptimizer.h.

typedef itk::Statistics::MersenneTwisterRandomVariateGenerator itk::CMAEvolutionStrategyOptimizer::RandomGeneratorType [protected]

Definition at line 229 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 215 of file itkCMAEvolutionStrategyOptimizer.h.

Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.

Definition at line 64 of file itkCMAEvolutionStrategyOptimizer.h.

Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.

Definition at line 53 of file itkCMAEvolutionStrategyOptimizer.h.


Member Enumeration Documentation

Enumerator:
MetricError 
MaximumNumberOfIterations 
PositionToleranceMin 
PositionToleranceMax 
ValueTolerance 
ZeroStepLength 
Unknown 

Reimplemented in elastix::CMAEvolutionStrategy< TElastix >.

Definition at line 68 of file itkCMAEvolutionStrategyOptimizer.h.


Constructor & Destructor Documentation

Constructor

Destructor

Definition at line 314 of file itkCMAEvolutionStrategyOptimizer.h.


Member Function Documentation

virtual void itk::CMAEvolutionStrategyOptimizer::AdvanceOneStep ( void  ) [protected, virtual]

Compute the m_CurrentPosition = m(g+1), m_CurrentValue, and m_CurrentScaledStep

virtual void itk::CMAEvolutionStrategyOptimizer::FixNumericalErrors ( void  ) [protected, virtual]

Some checks, to be sure no numerical errors occur

  • Adjust too low/high deviation that otherwise would violate m_MinimumDeviation or m_MaximumDeviation.
  • Adjust too low deviations that otherwise would cause numerical problems (because of finite precision of the datatypes).
  • Check if "main axis standard deviation sigma*D(i,i) has effect" (?) (just another check whether the steps are not too small)
  • Adjust step size in case of equal function values (flat fitness)
  • Adjust step size in case of equal best function values over history
virtual void itk::CMAEvolutionStrategyOptimizer::GenerateOffspring ( void  ) [protected, virtual]

GenerateOffspring: Fill m_SearchDirs, m_NormalizedSearchDirs, and m_CostFunctionValues

virtual const char* itk::CMAEvolutionStrategyOptimizer::GetClassName ( ) const [virtual]
virtual unsigned long itk::CMAEvolutionStrategyOptimizer::GetCurrentIteration ( ) const [virtual]

Get the current iteration number:

The current maximum square root eigen value

The current minimum square root eigen value

Get the last step taken ( scaledPos_{k+1} - scaledPos_{k} ) If you want the step taken in the space of unscaled parameters, simply use: CMAESOptimizer->GetScaledCostFunction()->ConvertScaledToUnscaledParameters( ... ) To obtain the magnitude of the step, use ->GetCurretScaledStep().magnitude().

The current value of sigma

virtual double itk::CMAEvolutionStrategyOptimizer::GetCurrentStepLength ( void  ) const [inline, virtual]

This function is just for convenience, since many optimizers have such a function. It return the current sigma times the current maximumD.

Definition at line 101 of file itkCMAEvolutionStrategyOptimizer.h.

Get the metric value at the current position

virtual unsigned long itk::CMAEvolutionStrategyOptimizer::GetMaximumNumberOfIterations ( ) const [virtual]

Setting: convergence condition: the maximum number of iterations. Default: 100

virtual unsigned int itk::CMAEvolutionStrategyOptimizer::GetNumberOfParents ( ) const [virtual]
virtual unsigned int itk::CMAEvolutionStrategyOptimizer::GetPopulationSize ( ) const [virtual]

Get the stop condition of the last run

virtual unsigned int itk::CMAEvolutionStrategyOptimizer::GetUpdateBDPeriod ( ) const [virtual]
virtual void itk::CMAEvolutionStrategyOptimizer::InitializeBCD ( void  ) [protected, virtual]

Initialize the covariance matrix and its eigen decomposition

virtual void itk::CMAEvolutionStrategyOptimizer::InitializeConstants ( void  ) [protected, virtual]

Compute the following constant variables:

  • m_PopulationSize (if not provided by the user)
  • m_NumberOfParents (if not provided by the user)
  • m_RecombinationWeights
  • m_EffectiveMu
  • m_ConjugateEvolutionPathConstant
  • m_SigmaDampingConstant
  • m_CovarianceMatrixAdaptationWeight
  • m_CovarianceMatrixAdaptationConstant
  • m_UpdateBDPeriod;
  • m_UseCovarianceMatrixAdaptation;
  • m_EvolutionPathConstant
  • m_ExpectationNormNormalDistribution
  • m_HistoryLength
virtual void itk::CMAEvolutionStrategyOptimizer::InitializeProgressVariables ( void  ) [protected, virtual]

Initialize the following 'progress' variables:

  • m_CurrentSigma
  • m_Heaviside
  • m_SearchDirs
  • m_NormalizedSearchDirs
  • m_CostFunctionValues
  • m_CurrentScaledStep
  • m_CurrentNormalizedStep
  • m_EvolutionPath
  • m_ConjugateEvolutionPath
  • m_MeasureHistory
  • m_CurrentMaximumD, m_CurrentMinimumD

Reimplemented in elastix::CMAEvolutionStrategy< TElastix >.

void itk::CMAEvolutionStrategyOptimizer::operator= ( const Self ) [private]
void itk::CMAEvolutionStrategyOptimizer::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected]

PrintSelf

Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.

virtual void itk::CMAEvolutionStrategyOptimizer::ResumeOptimization ( void  ) [virtual]

Setting: the initial standard deviation used to generate offspring Recommended value: 1/3 * the expected range of the parameters Default: 1.0;

Setting: the maximum deviation. It is ensured that: max_i( sigma*sqrt(C[i,i]) ) < MaximumDeviation Default: +infinity

virtual void itk::CMAEvolutionStrategyOptimizer::SetMaximumNumberOfIterations ( unsigned long  _arg) [virtual]

Setting: the minimum deviation. It is ensured that: min_i( sigma*sqrt(C[i,i]) ) > MinimumDeviation Default: 0.0

virtual void itk::CMAEvolutionStrategyOptimizer::SetNumberOfParents ( unsigned int  _arg) [virtual]

Setting: the number of parents (points for recombination, $\mu$) if set to 0, a default value is chosen: floor( populationSize / 2 ), which can be inspected after having started the optimisation. Default: 0

virtual void itk::CMAEvolutionStrategyOptimizer::SetPopulationSize ( unsigned int  _arg) [virtual]

Setting: the population size ( $\lambda$); if set to 0, a default value is chosen: 4 + floor( 3 ln(NumberOfParameters) ), which can be inspected after having started the optimisation. Default: 0

Setting: convergence condition: the maximum step size. 'convergence' is declared if: if ( sigma * sqrt(C[i,i]) > PositionToleranceMax*sigma0 for any i ) Default: 1e8

Setting: convergence condition: the minimum step size. convergence is declared if: if ( sigma * max( abs(p_c[i]), sqrt(C[i,i]) ) < PositionToleranceMin*sigma0 for all i ) where p_c is the evolution path Default: 1e-12

virtual void itk::CMAEvolutionStrategyOptimizer::SetRecombinationWeightsPreset ( const char *  _arg) [virtual]

Setting: how the recombination weights are chosen: "equal", "linear" or "superlinear" are supported equal: weights = ones(mu,1); linear: weights = mu+1-(1:mu)'; superlinear: weights = log(mu+1)-log(1:mu)'; Default: "superlinear"

Setting: the A parameter for the decaying sigma sequence. Default: 50

Setting: the alpha parameter for the decaying sigma sequence. Default: 0.602

virtual void itk::CMAEvolutionStrategyOptimizer::SetUpdateBDPeriod ( unsigned int  _arg) [virtual]

Setting: the number of iterations after which B and D are updated. If 0: a default value is computed: floor( 1.0 / c_cov / Nd / 10.0 ) This value can be inspected after calling StartOptimization

Setting: whether the covariance matrix adaptation scheme should be used. Default: true. If false: CovMatrix = Identity. This parameter may be changed by the optimiser, if it sees that the adaptation rate is nearly 0 (UpdateBDPeriod >= MaxNrOfIterations). This can be inspected calling StartOptimization()

Setting: Use a sigma that decays according to a predefined function, instead of the adaptive scheme proposed by Hansen et al. if true: currentsigma(k+1) = currentsigma(k) * (A+k)^alpha / (A+k+1)^alpha where: k = the current iteration A, alpha = user-specified parameters (see below)

Default: false

Setting: convergence condition: the minimum change of the cost function value over time. convergence is declared if: the range of the best cost function value measured over a period of M iterations was not greater than the valueTolerance, where: M = m_HistoryLength = min( maxnrofit, 10+ceil(3*10*N/lambda) ). Default: 1e-12

virtual void itk::CMAEvolutionStrategyOptimizer::SortCostFunctionValues ( void  ) [protected, virtual]

Sort the m_CostFunctionValues vector and update m_MeasureHistory

virtual void itk::CMAEvolutionStrategyOptimizer::StartOptimization ( void  ) [virtual]
virtual void itk::CMAEvolutionStrategyOptimizer::StopOptimization ( void  ) [virtual]
virtual bool itk::CMAEvolutionStrategyOptimizer::TestConvergence ( bool  firstCheck) [protected, virtual]

Check if convergence has occured:

  • Check if the maximum number of iterations will not be exceeded in the following iteration
  • Check if the step was not too large: if ( sigma * sqrt(C[i,i]) > PositionToleranceMax*sigma0 for any i )
  • Check for zero steplength (should never happen): if ( sigma * D[i] <= 0 for all i )
  • if firstCheck==true -> quit function
  • Check if the step was not too small: if ( sigma * max( abs(p_c[i]), sqrt(C[i,i]) ) < PositionToleranceMin*sigma0 for all i )
  • Check if the value tolerance is satisfied.
virtual void itk::CMAEvolutionStrategyOptimizer::UpdateBD ( void  ) [protected, virtual]

Update the eigen decomposition and m_CurrentMaximumD/m_CurrentMinimumD

virtual void itk::CMAEvolutionStrategyOptimizer::UpdateC ( void  ) [protected, virtual]

Update the covariance matrix C

virtual void itk::CMAEvolutionStrategyOptimizer::UpdateConjugateEvolutionPath ( void  ) [protected, virtual]

Update m_ConjugateEvolutionPath

virtual void itk::CMAEvolutionStrategyOptimizer::UpdateEvolutionPath ( void  ) [protected, virtual]

Update m_EvolutionPath

virtual void itk::CMAEvolutionStrategyOptimizer::UpdateHeaviside ( void  ) [protected, virtual]

Update m_Heaviside

virtual void itk::CMAEvolutionStrategyOptimizer::UpdateSigma ( void  ) [protected, virtual]

Update the Sigma either by adaptation or using the predefined function


Field Documentation

B: eigen vector matrix

Definition at line 306 of file itkCMAEvolutionStrategyOptimizer.h.

C: covariance matrix

Definition at line 304 of file itkCMAEvolutionStrategyOptimizer.h.

$p_\sigma$

Definition at line 298 of file itkCMAEvolutionStrategyOptimizer.h.

$c_{\sigma}$

Definition at line 258 of file itkCMAEvolutionStrategyOptimizer.h.

cost function values for each $x_i = m + d_i$

Definition at line 290 of file itkCMAEvolutionStrategyOptimizer.h.

$c_{cov}$

Definition at line 262 of file itkCMAEvolutionStrategyOptimizer.h.

$\mu_{cov} = \mu_{eff}$

Definition at line 266 of file itkCMAEvolutionStrategyOptimizer.h.

The current iteration number

Definition at line 238 of file itkCMAEvolutionStrategyOptimizer.h.

The current maximum square root eigen value:

Definition at line 280 of file itkCMAEvolutionStrategyOptimizer.h.

The current minimum square root eigen value:

Definition at line 278 of file itkCMAEvolutionStrategyOptimizer.h.

$1/\sigma * D^{-1} * B' * m_CurrentScaledStep, needed for p_{\sigma}$

Definition at line 294 of file itkCMAEvolutionStrategyOptimizer.h.

$m(g+1) - m(g)$

Definition at line 292 of file itkCMAEvolutionStrategyOptimizer.h.

The current value of Sigma

Definition at line 275 of file itkCMAEvolutionStrategyOptimizer.h.

The value of the cost function at the current position

Definition at line 235 of file itkCMAEvolutionStrategyOptimizer.h.

D: sqrt(eigen values)

Definition at line 308 of file itkCMAEvolutionStrategyOptimizer.h.

Some other constants, without set/get methods These settings have default values. $\mu_{eff}$

Definition at line 256 of file itkCMAEvolutionStrategyOptimizer.h.

$p_c$

Definition at line 296 of file itkCMAEvolutionStrategyOptimizer.h.

$c_c$

Definition at line 264 of file itkCMAEvolutionStrategyOptimizer.h.

$chiN = E( \|N(0,I)\|$

Definition at line 268 of file itkCMAEvolutionStrategyOptimizer.h.

$h_{\sigma}$

Definition at line 283 of file itkCMAEvolutionStrategyOptimizer.h.

Length of the MeasureHistory deque

Definition at line 272 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 410 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 414 of file itkCMAEvolutionStrategyOptimizer.h.

Settings that are only inspected/changed by the associated get/set member functions.

Definition at line 408 of file itkCMAEvolutionStrategyOptimizer.h.

History of best measure values

Definition at line 301 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 415 of file itkCMAEvolutionStrategyOptimizer.h.

realisations of $N(0,I)$

Definition at line 288 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 249 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 248 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 416 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 417 of file itkCMAEvolutionStrategyOptimizer.h.

RandomGeneratorType::Pointer itk::CMAEvolutionStrategyOptimizer::m_RandomGenerator [protected]

The random number generator used to generate the offspring.

Definition at line 232 of file itkCMAEvolutionStrategyOptimizer.h.

array of $w_i$

Definition at line 270 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 413 of file itkCMAEvolutionStrategyOptimizer.h.

$d_i = x_i - m$

Definition at line 286 of file itkCMAEvolutionStrategyOptimizer.h.

$d_{\sigma}$

Definition at line 260 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 411 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 412 of file itkCMAEvolutionStrategyOptimizer.h.

Boolean that indicates whether the optimizer should stop

Definition at line 244 of file itkCMAEvolutionStrategyOptimizer.h.

The stop condition

Definition at line 241 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 250 of file itkCMAEvolutionStrategyOptimizer.h.

Settings that may be changed by the optimizer:

Definition at line 247 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 409 of file itkCMAEvolutionStrategyOptimizer.h.

Definition at line 418 of file itkCMAEvolutionStrategyOptimizer.h.



Generated on 11-05-2012 for elastix by doxygen 1.7.6.1 elastix logo