go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elastix::SimultaneousPerturbation< TElastix > Class Template Reference

#include <elxSimultaneousPerturbation.h>

Detailed Description

template<class TElastix>
class elastix::SimultaneousPerturbation< TElastix >

An optimizer based on the itk::SPSAOptimizer.

The ITK doxygen help gives more information about this optimizer.

This optimizer supports the NewSamplesEveryIteration parameter.

The parameters used in this class are:

Parameters

Optimizer: Select this optimizer as follows:
(Optimizer "SimultaneousPerturbation")

MaximumNumberOfIterations: The maximum number of iterations in each resolution.
example: (MaximumNumberOfIterations 100 100 50)
Default value: 500.

NumberOfPerturbations: The number of perturbation used to construct a gradient estimate $g_k$.
$q =$ NumberOfPerturbations
$g_k = 1/q \sum_{j = 1..q} g^(j)_k$
This parameter can be defined for each resolution.
example: (NumberOfPerturbations 1 1 2)
Default value: 1.

SP_a: The gain $a(k)$ at each iteration $k$ is defined by
$a(k) =  SP\_a / (SP\_A + k + 1)^{SP\_alpha}$.
SP_a can be defined for each resolution.
example: (SP_a 3200.0 3200.0 1600.0)
The default value is 400.0. Tuning this variable for you specific problem is recommended.

SP_A: The gain $a(k)$ at each iteration $k$ is defined by
$a(k) =  SP\_a / (SP\_A + k + 1)^{SP\_alpha}$.
SP_A can be defined for each resolution.
example: (SP_A 50.0 50.0 100.0)
The default/recommended value is 50.0.

SP_alpha: The gain $a(k)$ at each iteration $k$ is defined by
$a(k) =  SP\_a / (SP\_A + k + 1)^{SP\_alpha}$.
SP_alpha can be defined for each resolution.
example: (SP_alpha 0.602 0.602 0.602)
The default/recommended value is 0.602.

SP_c: The perturbation step size $c(k)$ at each iteration $k$ is defined by
$c(k) =  SP\_c / ( k + 1)^{SP\_gamma}$.
SP_c can be defined for each resolution.
example: (SP_c 2.0 1.0 1.0)
The default value is 1.0.

SP_gamma: The perturbation step size $c(k)$ at each iteration $k$ is defined by
$c(k) =  SP\_c / ( k + 1)^{SP\_gamma}$.
SP_gamma can be defined for each resolution.
example: (SP_gamma 0.101 0.101 0.101)
The default/recommended value is 0.101.

ShowMetricValues: Defines whether to compute/show the metric value in each iteration.
This flag can NOT be defined for each resolution.
example: (ShowMetricValues "true" )
Default value: "false". Note that turning this flag on increases computation time.

Definition at line 83 of file elxSimultaneousPerturbation.h.

Inheritance diagram for elastix::SimultaneousPerturbation< TElastix >:

Public Types

using ConstPointer = itk::SmartPointer<const Self>
 
using ITKBaseType = typename Superclass2::ITKBaseType
 
using Pointer = itk::SmartPointer<Self>
 
using Self = SimultaneousPerturbation
 
using Superclass1 = SPSAOptimizer
 
using Superclass2 = OptimizerBase<TElastix>
 
- Public Types inherited from elastix::OptimizerBase< TElastix >
using ElastixType
 
using ITKBaseType = itk::Optimizer
 
using ParametersType = typename ITKBaseType::ParametersType
 
using RegistrationType
 
using Self = OptimizerBase
 
using Superclass = BaseComponentSE<TElastix>
 
- Public Types inherited from elastix::BaseComponentSE< TElastix >
using ElastixType = TElastix
 
using RegistrationType = typename ElastixType::RegistrationBaseType
 
using Self = BaseComponentSE
 
using Superclass = BaseComponent
 

Public Member Functions

void AfterEachIteration () override
 
void AfterEachResolution () override
 
void AfterRegistration () override
 
void BeforeEachResolution () override
 
void BeforeRegistration () override
 
 elxClassNameMacro ("SimultaneousPerturbation")
 
virtual const char * GetClassName () const
 
 ITK_DISALLOW_COPY_AND_MOVE (SimultaneousPerturbation)
 
void SetInitialPosition (const ParametersType &param) override
 
- Public Member Functions inherited from elastix::OptimizerBase< TElastix >
void AfterRegistrationBase () override
 
void BeforeEachResolutionBase () override
 
ITKBaseTypeGetAsITKBaseType ()
 
const ITKBaseTypeGetAsITKBaseType () const
 
 ITK_DISALLOW_COPY_AND_MOVE (OptimizerBase)
 
virtual void SetCurrentPositionPublic (const ParametersType &param)
 
virtual void SetSinusScales (double amplitude, double frequency, unsigned long numberOfParameters)
 
- Public Member Functions inherited from elastix::BaseComponentSE< TElastix >
void AddTargetCellToIterationInfo (const char *const name)
 
const ConfigurationGetConfiguration () const
 
ElastixTypeGetElastix () const
 
auto & GetIterationInfoAt (const char *const name)
 
RegistrationTypeGetRegistration () const
 
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponentSE)
 
void RemoveTargetCellFromIterationInfo (const char *const name)
 
void SetConfiguration (const Configuration *_arg)
 
void SetElastix (ElastixType *_arg)
 
- Public Member Functions inherited from elastix::BaseComponent
virtual void AfterEachIterationBase ()
 
virtual void AfterEachResolutionBase ()
 
virtual int BeforeAll ()
 
virtual int BeforeAllBase ()
 
virtual void BeforeRegistrationBase ()
 
virtual const char * elxGetClassName () const
 
const char * GetComponentLabel () const
 
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponent)
 
 itkTypeMacroNoParent (BaseComponent)
 
void SetComponentLabel (const char *label, unsigned int idx)
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from elastix::BaseComponent
template<typename TBaseComponent >
static auto AsITKBaseType (TBaseComponent *const baseComponent) -> decltype(baseComponent->GetAsITKBaseType())
 
static void InitializeElastixExecutable ()
 
static bool IsElastixLibrary ()
 

Protected Member Functions

 SimultaneousPerturbation ()
 
 ~SimultaneousPerturbation () override=default
 
- Protected Member Functions inherited from elastix::OptimizerBase< TElastix >
virtual bool GetNewSamplesEveryIteration () const
 
 OptimizerBase ()=default
 
virtual void SelectNewSamples ()
 
 ~OptimizerBase () override=default
 
- Protected Member Functions inherited from elastix::BaseComponentSE< TElastix >
 BaseComponentSE ()=default
 
 ~BaseComponentSE () override=default
 
- Protected Member Functions inherited from elastix::BaseComponent
 BaseComponent ()=default
 
virtual ~BaseComponent ()=default
 

Protected Attributes

bool m_ShowMetricValues
 
- Protected Attributes inherited from elastix::BaseComponentSE< TElastix >
Configuration::ConstPointer m_Configuration {}
 
itk::WeakPointer< TElastix > m_Elastix {}
 
RegistrationTypem_Registration {}
 

Private Attributes

 elxOverrideGetSelfMacro
 

Additional Inherited Members

- Protected Types inherited from elastix::OptimizerBase< TElastix >
using SettingsVectorType = typename std::vector<SettingsType>
 
- Static Protected Member Functions inherited from elastix::OptimizerBase< TElastix >
static void PrintSettingsVector (const SettingsVectorType &settings)
 

Member Typedef Documentation

◆ ConstPointer

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 95 of file elxSimultaneousPerturbation.h.

◆ ITKBaseType

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType

Definition at line 116 of file elxSimultaneousPerturbation.h.

◆ Pointer

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::Pointer = itk::SmartPointer<Self>

Definition at line 94 of file elxSimultaneousPerturbation.h.

◆ Self

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::Self = SimultaneousPerturbation

Standard ITK.

Definition at line 91 of file elxSimultaneousPerturbation.h.

◆ Superclass1

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::Superclass1 = SPSAOptimizer

Definition at line 92 of file elxSimultaneousPerturbation.h.

◆ Superclass2

template<class TElastix >
using elastix::SimultaneousPerturbation< TElastix >::Superclass2 = OptimizerBase<TElastix>

Definition at line 93 of file elxSimultaneousPerturbation.h.

Constructor & Destructor Documentation

◆ SimultaneousPerturbation()

template<class TElastix >
elastix::SimultaneousPerturbation< TElastix >::SimultaneousPerturbation ( )
protected

◆ ~SimultaneousPerturbation()

template<class TElastix >
elastix::SimultaneousPerturbation< TElastix >::~SimultaneousPerturbation ( )
overrideprotecteddefault

Member Function Documentation

◆ AfterEachIteration()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::AfterEachIteration ( )
overridevirtual

Reimplemented from elastix::BaseComponent.

◆ AfterEachResolution()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::AfterEachResolution ( )
overridevirtual

Reimplemented from elastix::BaseComponent.

◆ AfterRegistration()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::AfterRegistration ( )
overridevirtual

Reimplemented from elastix::BaseComponent.

◆ BeforeEachResolution()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::BeforeEachResolution ( )
overridevirtual

Reimplemented from elastix::BaseComponent.

◆ BeforeRegistration()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::BeforeRegistration ( )
overridevirtual

Methods that take care of setting parameters and printing progress information.

Reimplemented from elastix::BaseComponent.

◆ elxClassNameMacro()

template<class TElastix >
elastix::SimultaneousPerturbation< TElastix >::elxClassNameMacro ( "SimultaneousPerturbation< TElastix >" )

Name of this class. Use this name in the parameter file to select this specific optimizer.
example: (Optimizer "SimultaneousPerturbation")

◆ GetClassName()

template<class TElastix >
virtual const char * elastix::SimultaneousPerturbation< TElastix >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from elastix::OptimizerBase< TElastix >.

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<class TElastix >
elastix::SimultaneousPerturbation< TElastix >::ITK_DISALLOW_COPY_AND_MOVE ( SimultaneousPerturbation< TElastix > )

◆ New()

template<class TElastix >
static Pointer elastix::SimultaneousPerturbation< TElastix >::New ( )
static

Method for creation through the object factory.

◆ SetInitialPosition()

template<class TElastix >
void elastix::SimultaneousPerturbation< TElastix >::SetInitialPosition ( const ParametersType & param)
override

Override the SetInitialPosition. Override the implementation in itkOptimizer.h, to ensure that the scales array and the parameters array have the same size.

Field Documentation

◆ elxOverrideGetSelfMacro

template<class TElastix >
elastix::SimultaneousPerturbation< TElastix >::elxOverrideGetSelfMacro
private

Definition at line 151 of file elxSimultaneousPerturbation.h.

◆ m_ShowMetricValues

template<class TElastix >
bool elastix::SimultaneousPerturbation< TElastix >::m_ShowMetricValues
protected

Definition at line 148 of file elxSimultaneousPerturbation.h.



Generated on 2024-07-17 for elastix by doxygen 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) elastix logo