19#ifndef itkCMAEvolutionStrategyOptimizer_h
20#define itkCMAEvolutionStrategyOptimizer_h
28#include "itkArray2D.h"
29#include "itkMersenneTwisterRandomVariateGenerator.h"
30#include <vnl/vnl_diag_matrix.h>
62 using Superclass::ParametersType;
63 using Superclass::DerivativeType;
64 using Superclass::CostFunctionType;
66 using Superclass::MeasureType;
90 itkGetConstMacro(CurrentIteration,
unsigned long);
93 itkGetConstMacro(CurrentValue, MeasureType);
99 itkGetConstMacro(CurrentSigma,
double);
102 itkGetConstMacro(CurrentMinimumD,
double);
105 itkGetConstMacro(CurrentMaximumD,
double);
120 itkGetConstReferenceMacro(CurrentScaledStep, ParametersType);
130 itkSetMacro(PopulationSize,
unsigned int);
131 itkGetConstMacro(PopulationSize,
unsigned int);
137 itkSetMacro(NumberOfParents,
unsigned int);
138 itkGetConstMacro(NumberOfParents,
unsigned int);
143 itkSetClampMacro(InitialSigma,
double, NumericTraits<double>::min(), NumericTraits<double>::max());
144 itkGetConstMacro(InitialSigma,
double);
149 itkSetClampMacro(MaximumDeviation,
double, 0.0, NumericTraits<double>::max());
150 itkGetConstMacro(MaximumDeviation,
double);
155 itkSetClampMacro(MinimumDeviation,
double, 0.0, NumericTraits<double>::max());
156 itkGetConstMacro(MinimumDeviation,
double);
167 itkSetMacro(UseDecayingSigma,
bool);
168 itkGetConstMacro(UseDecayingSigma,
bool);
172 itkSetClampMacro(SigmaDecayA,
double, 0.0, NumericTraits<double>::max());
173 itkGetConstMacro(SigmaDecayA,
double);
177 itkSetClampMacro(SigmaDecayAlpha,
double, 0.0, 1.0);
178 itkGetConstMacro(SigmaDecayAlpha,
double);
185 itkSetMacro(UseCovarianceMatrixAdaptation,
bool);
186 itkGetConstMacro(UseCovarianceMatrixAdaptation,
bool);
194 itkSetStringMacro(RecombinationWeightsPreset);
195 itkGetStringMacro(RecombinationWeightsPreset);
200 itkSetMacro(UpdateBDPeriod,
unsigned int);
201 itkGetConstMacro(UpdateBDPeriod,
unsigned int);
326 PrintSelf(std::ostream & os, Indent indent)
const override;
A Covariance Matrix Adaptation Evolution Strategy Optimizer.
RandomGeneratorType::Pointer m_RandomGenerator
unsigned int m_PopulationSize
unsigned int m_UpdateBDPeriod
Array< double > RecombinationWeightsType
virtual void UpdateSigma()
virtual double GetCurrentStepLength() const
double m_SigmaDampingConstant
MeasureHistoryType m_MeasureHistory
virtual void ResumeOptimization()
double m_EvolutionPathConstant
virtual void UpdateEvolutionPath()
unsigned long m_CurrentIteration
virtual void InitializeBCD()
double m_MaximumDeviation
virtual void SortCostFunctionValues()
vnl_diag_matrix< double > EigenValueMatrixType
ParameterContainerType m_SearchDirs
itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType
double m_ExpectationNormNormalDistribution
bool m_UseCovarianceMatrixAdaptation
ParametersType m_CurrentNormalizedStep
~CMAEvolutionStrategyOptimizer() override=default
StopConditionType m_StopCondition
Array2D< double > CovarianceMatrixType
@ MaximumNumberOfIterations
virtual void InitializeConstants()
ITK_DISALLOW_COPY_AND_MOVE(CMAEvolutionStrategyOptimizer)
virtual void UpdateHeaviside()
std::pair< MeasureType, unsigned int > MeasureIndexPairType
unsigned long m_MaximumNumberOfIterations
virtual double GetCurrentMaximumD() const
unsigned int m_NumberOfParents
virtual void GenerateOffspring()
std::vector< ParametersType > ParameterContainerType
MeasureType m_CurrentValue
CMAEvolutionStrategyOptimizer()
MeasureContainerType m_CostFunctionValues
std::string m_RecombinationWeightsPreset
unsigned long m_HistoryLength
double m_MinimumDeviation
SmartPointer< const Self > ConstPointer
virtual void InitializeProgressVariables()
virtual double GetCurrentSigma() const
ParametersType m_CurrentScaledStep
std::vector< MeasureIndexPairType > MeasureContainerType
virtual bool TestConvergence(bool firstCheck)
ParametersType m_ConjugateEvolutionPath
ParameterContainerType m_NormalizedSearchDirs
std::deque< MeasureType > MeasureHistoryType
void PrintSelf(std::ostream &os, Indent indent) const override
double m_ConjugateEvolutionPathConstant
ParametersType m_EvolutionPath
double m_CovarianceMatrixAdaptationWeight
virtual void AdvanceOneStep()
RecombinationWeightsType m_RecombinationWeights
double m_PositionToleranceMax
virtual void StopOptimization()
virtual void UpdateConjugateEvolutionPath()
double m_CovarianceMatrixAdaptationConstant
virtual void FixNumericalErrors()
void StartOptimization() override
double m_PositionToleranceMin
A cost function that applies a scaling to another cost function.
ScaledSingleValuedNonLinearOptimizer()
NonLinearOptimizer::ScalesType ScalesType