ITK
4.6.0
Insight Segmentation and Registration Toolkit
|
#include <itkSPSAOptimizer.h>
An optimizer based on simultaneous perturbation...
This optimizer is an implementation of the Simultaneous Perturbation Stochastic Approximation method, described in:
Definition at line 43 of file itkSPSAOptimizer.h.
Public Member Functions | |
virtual void | AdvanceOneStep (void) |
virtual ::itk::LightObject::Pointer | CreateAnother (void) const |
virtual SizeValueType | GetCurrentIteration () const |
virtual const DerivativeType & | GetGradient () const |
virtual double | GetGradientMagnitude () const |
virtual double | GetLearningRate () const |
virtual const char * | GetNameOfClass () const |
virtual double | GetStateOfConvergence () const |
virtual StopConditionType | GetStopCondition () const |
virtual const std::string | GetStopConditionDescription () const ITK_OVERRIDE |
virtual MeasureType | GetValue (void) const |
virtual MeasureType | GetValue (const ParametersType ¶meters) const |
virtual void | GuessParameters (SizeValueType numberOfGradientEstimates, double initialStepSize) |
void | ResumeOptimization (void) |
virtual void | StartOptimization (void) ITK_OVERRIDE |
void | StopOptimization (void) |
virtual void | SetSa (double _arg) |
virtual double | GetSa () const |
void | Seta (double a) |
double | Geta () |
virtual void | SetSc (double _arg) |
virtual double | GetSc () const |
void | Setc (double c) |
double | Getc () |
virtual void | SetA (double _arg) |
virtual double | GetA () const |
virtual void | SetAlpha (double _arg) |
virtual double | GetAlpha () const |
virtual void | SetGamma (double _arg) |
virtual double | GetGamma () const |
virtual bool | GetMaximize () const |
virtual void | SetMaximize (bool _arg) |
virtual void | MaximizeOn () |
virtual void | MaximizeOff () |
bool | GetMinimize () const |
void | SetMinimize (bool v) |
void | MinimizeOn () |
void | MinimizeOff () |
virtual void | SetNumberOfPerturbations (SizeValueType _arg) |
virtual SizeValueType | GetNumberOfPerturbations () const |
virtual void | SetStateOfConvergenceDecayRate (double _arg) |
virtual double | GetStateOfConvergenceDecayRate () const |
virtual void | SetMinimumNumberOfIterations (SizeValueType _arg) |
virtual SizeValueType | GetMinimumNumberOfIterations () const |
virtual void | SetMaximumNumberOfIterations (SizeValueType _arg) |
virtual SizeValueType | GetMaximumNumberOfIterations () const |
virtual void | SetTolerance (double _arg) |
virtual double | GetTolerance () const |
Public Member Functions inherited from itk::SingleValuedNonLinearOptimizer | |
virtual const CostFunctionType * | GetCostFunction () const |
virtual CostFunctionType * | GetModifiableCostFunction () |
MeasureType | GetValue (const ParametersType ¶meters) const |
virtual void | SetCostFunction (CostFunctionType *costFunction) |
Public Member Functions inherited from itk::Optimizer | |
virtual const ParametersType & | GetCurrentPosition () const |
virtual const ParametersType & | GetInitialPosition () const |
virtual void | SetInitialPosition (const ParametersType ¶m) |
void | SetScales (const ScalesType &scales) |
virtual const ScalesType & | GetScales () const |
virtual const ScalesType & | GetInverseScales () const |
Public Member Functions inherited from itk::Object | |
unsigned long | AddObserver (const EventObject &event, Command *) |
unsigned long | AddObserver (const EventObject &event, Command *) const |
virtual void | DebugOff () const |
virtual void | DebugOn () const |
Command * | GetCommand (unsigned long tag) |
bool | GetDebug () const |
MetaDataDictionary & | GetMetaDataDictionary (void) |
const MetaDataDictionary & | GetMetaDataDictionary (void) const |
virtual ModifiedTimeType | GetMTime () const |
virtual const TimeStamp & | GetTimeStamp () const |
bool | HasObserver (const EventObject &event) const |
void | InvokeEvent (const EventObject &) |
void | InvokeEvent (const EventObject &) const |
virtual void | Modified () const |
virtual void | Register () const ITK_OVERRIDE |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) |
void | SetDebug (bool debugFlag) const |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
virtual void | SetReferenceCount (int) ITK_OVERRIDE |
virtual void | UnRegister () const ITK_OVERRIDE |
virtual void | SetObjectName (std::string _arg) |
virtual const std::string & | GetObjectName () const |
Public Member Functions inherited from itk::LightObject | |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
itkCloneMacro (Self) | |
void | Print (std::ostream &os, Indent indent=0) const |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::SingleValuedNonLinearOptimizer | |
static Pointer | New () |
Static Public Member Functions inherited from itk::NonLinearOptimizer | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Optimizer | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Protected Member Functions | |
virtual double | Compute_a (SizeValueType k) const |
virtual double | Compute_c (SizeValueType k) const |
virtual void | ComputeGradient (const ParametersType ¶meters, DerivativeType &gradient) |
virtual void | GenerateDelta (const unsigned int spaceDimension) |
virtual void | PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE |
SPSAOptimizer () | |
virtual | ~SPSAOptimizer () |
Protected Member Functions inherited from itk::SingleValuedNonLinearOptimizer | |
SingleValuedNonLinearOptimizer () | |
virtual | ~SingleValuedNonLinearOptimizer () |
Protected Member Functions inherited from itk::NonLinearOptimizer | |
NonLinearOptimizer () | |
virtual | ~NonLinearOptimizer () |
Protected Member Functions inherited from itk::Optimizer | |
Optimizer () | |
virtual void | SetCurrentPosition (const ParametersType ¶m) |
virtual | ~Optimizer () |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &time) |
virtual | ~Object () |
Protected Member Functions inherited from itk::LightObject | |
virtual LightObject::Pointer | InternalClone () const |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Protected Attributes | |
SizeValueType | m_CurrentIteration |
DerivativeType | m_Delta |
Statistics::MersenneTwisterRandomVariateGenerator::Pointer | m_Generator |
DerivativeType | m_Gradient |
double | m_LearningRate |
double | m_StateOfConvergence |
bool | m_Stop |
StopConditionType | m_StopCondition |
Protected Attributes inherited from itk::SingleValuedNonLinearOptimizer | |
CostFunctionPointer | m_CostFunction |
Protected Attributes inherited from itk::Optimizer | |
ParametersType | m_CurrentPosition |
bool | m_ScalesInitialized |
Protected Attributes inherited from itk::LightObject | |
InternalReferenceCountType | m_ReferenceCount |
SimpleFastMutexLock | m_ReferenceCountLock |
Private Member Functions | |
void | operator= (const Self &) |
SPSAOptimizer (const Self &) | |
Private Attributes | |
double | m_A |
double | m_Alpha |
double | m_Gamma |
double | m_GradientMagnitude |
bool | m_Maximize |
SizeValueType | m_MaximumNumberOfIterations |
SizeValueType | m_MinimumNumberOfIterations |
SizeValueType | m_NumberOfPerturbations |
double | m_Sa |
double | m_Sc |
double | m_StateOfConvergenceDecayRate |
double | m_Tolerance |
Additional Inherited Members | |
Protected Types inherited from itk::LightObject | |
typedef int | InternalReferenceCountType |
typedef SmartPointer< const Self > itk::SPSAOptimizer::ConstPointer |
Definition at line 52 of file itkSPSAOptimizer.h.
typedef SmartPointer< Self > itk::SPSAOptimizer::Pointer |
Definition at line 51 of file itkSPSAOptimizer.h.
Standard class typedefs.
Definition at line 49 of file itkSPSAOptimizer.h.
Definition at line 50 of file itkSPSAOptimizer.h.
Codes of stopping conditions
Enumerator | |
---|---|
Unknown | |
MaximumNumberOfIterations | |
BelowTolerance | |
MetricError |
Definition at line 61 of file itkSPSAOptimizer.h.
|
protected |
|
inlineprotectedvirtual |
Definition at line 213 of file itkSPSAOptimizer.h.
|
private |
|
virtual |
Advance one step following the gradient direction.
|
protectedvirtual |
Method to compute the learning rate at iteration k (a_k).
|
protectedvirtual |
Method to compute the gain factor for the perturbation at iteration k (c_k).
|
protectedvirtual |
Compute the gradient at a position. m_NumberOfPerturbations are used, and scales are taken into account.
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::SingleValuedNonLinearOptimizer.
|
protectedvirtual |
Method to generate a perturbation vector. Takes scales into account.
|
inline |
|
virtual |
Set/Get A.
|
virtual |
Set/Get alpha.
|
inline |
|
virtual |
Get the current iteration number.
|
virtual |
Set/Get gamma.
|
virtual |
Get the latest computed gradient
|
virtual |
Get the GradientMagnitude of the latest computed gradient
|
virtual |
Get the current LearningRate (a_k)
|
virtual |
Methods to configure the cost function.
|
virtual |
Set/Get the maximum number of iterations.
|
inline |
Methods to configure the cost function.
Definition at line 155 of file itkSPSAOptimizer.h.
References m_Maximize.
|
virtual |
Set/Get the minimum number of iterations
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::SingleValuedNonLinearOptimizer.
|
virtual |
Set/Get 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
|
virtual |
Set/Get a.
Referenced by Geta().
|
virtual |
Set/Get c.
Referenced by Getc().
|
virtual |
Get the state of convergence in the last iteration. When the StateOfConvergence is lower than the Tolerance, and the minimum number of iterations has been performed, the optimization stops.
The state of convergence (SOC) is initialized with 0.0 and updated after each iteration as follows: SOC *= SOCDecayRate SOC += a_k * GradientMagnitude
|
virtual |
Set/Get StateOfConvergenceDecayRate (number between 0 and 1).
|
virtual |
Get Stop condition.
|
virtual |
Get the reason for termination
Reimplemented from itk::Optimizer.
|
virtual |
Set/Get Tolerance
|
virtual |
Get the cost function value at the current position.
|
virtual |
Get the cost function value at any position
|
virtual |
Guess the parameters a and A. This function needs the number of GradientEstimates used for estimating a and A and and the expected initial step size (where step size is defined as the maximum of the absolute values of the parameter update). Make sure you set c, Alpha, Gamma, the MaximumNumberOfIterations, the Scales, and the the InitialPosition before calling this method.
Described in: Spall, J.C. (1998), "Implementation of the Simultaneous Perturbation Algorithm for Stochastic Optimization", IEEE Trans. Aerosp. Electron. Syst. 34(3), 817-823.
|
virtual |
Methods to configure the cost function.
Referenced by MinimizeOn().
|
virtual |
Methods to configure the cost function.
Referenced by MinimizeOff().
|
inline |
Methods to configure the cost function.
Definition at line 161 of file itkSPSAOptimizer.h.
References MaximizeOn().
|
inline |
Methods to configure the cost function.
Definition at line 159 of file itkSPSAOptimizer.h.
References MaximizeOff().
|
static |
Method for creation through the object factory.
|
private |
|
protectedvirtual |
PrintSelf method.
Reimplemented from itk::SingleValuedNonLinearOptimizer.
void itk::SPSAOptimizer::ResumeOptimization | ( | void | ) |
Resume previously stopped optimization with current parameters
|
inline |
|
virtual |
Set/Get A.
|
virtual |
Set/Get alpha.
|
inline |
|
virtual |
Set/Get gamma.
|
virtual |
Methods to configure the cost function.
Referenced by SetMinimize().
|
virtual |
Set/Get the maximum number of iterations.
|
inline |
Methods to configure the cost function.
Definition at line 157 of file itkSPSAOptimizer.h.
References SetMaximize().
|
virtual |
Set/Get the minimum number of iterations
|
virtual |
Set/Get 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
|
virtual |
Set/Get a.
Referenced by Seta().
|
virtual |
Set/Get c.
Referenced by Setc().
|
virtual |
Set/Get StateOfConvergenceDecayRate (number between 0 and 1).
|
virtual |
Set/Get Tolerance
|
virtual |
Start optimization.
Reimplemented from itk::Optimizer.
void itk::SPSAOptimizer::StopOptimization | ( | void | ) |
Stop optimization.
|
private |
Definition at line 273 of file itkSPSAOptimizer.h.
|
private |
Definition at line 274 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 231 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 223 of file itkSPSAOptimizer.h.
|
private |
Definition at line 275 of file itkSPSAOptimizer.h.
|
protected |
Random number generator
Definition at line 234 of file itkSPSAOptimizer.h.
|
protected |
Variables updated during optimization
Definition at line 219 of file itkSPSAOptimizer.h.
|
private |
Definition at line 267 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 221 of file itkSPSAOptimizer.h.
|
private |
Definition at line 266 of file itkSPSAOptimizer.h.
Referenced by GetMinimize().
|
private |
Definition at line 263 of file itkSPSAOptimizer.h.
|
private |
Settings.
Definition at line 262 of file itkSPSAOptimizer.h.
|
private |
Definition at line 268 of file itkSPSAOptimizer.h.
|
private |
Parameters, as described by Spall.
Definition at line 271 of file itkSPSAOptimizer.h.
|
private |
Definition at line 272 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 229 of file itkSPSAOptimizer.h.
|
private |
Definition at line 264 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 225 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 227 of file itkSPSAOptimizer.h.
|
private |
Definition at line 265 of file itkSPSAOptimizer.h.