ITK
6.0.0
Insight 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 65 of file itkSPSAOptimizer.h.
Public Member Functions | |
virtual void | AdvanceOneStep () |
virtual SizeValueType | GetCurrentIteration () const |
virtual const DerivativeType & | GetGradient () const |
virtual double | GetGradientMagnitude () const |
virtual double | GetLearningRate () const |
const char * | GetNameOfClass () const override |
virtual double | GetStateOfConvergence () const |
virtual StopConditionSPSAOptimizerEnum | GetStopCondition () const |
std::string | GetStopConditionDescription () const override |
virtual MeasureType | GetValue () const |
virtual MeasureType | GetValue (const ParametersType ¶meters) const |
virtual void | GuessParameters (SizeValueType numberOfGradientEstimates, double initialStepSize) |
void | ResumeOptimization () |
void | StartOptimization () override |
void | StopOptimization () |
virtual void | SetSa (double _arg) |
virtual double | GetSa () const |
void | Seta (double a) |
double | Geta () const |
virtual void | SetSc (double _arg) |
virtual double | GetSc () const |
void | Setc (double c) |
double | Getc () const |
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 () |
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 CostFunctionType * | GetModifiableCostFunction () |
const char * | GetNameOfClass () const override |
MeasureType | GetValue (const ParametersType ¶meters) const |
virtual void | SetCostFunction (CostFunctionType *costFunction) |
const char * | GetNameOfClass () const override |
Public Member Functions inherited from itk::Optimizer | |
virtual const ParametersType & | GetCurrentPosition () const |
virtual const ParametersType & | GetInitialPosition () const |
const char * | GetNameOfClass () const override |
virtual std::string | GetStopConditionDescription () const |
virtual void | SetInitialPosition (const ParametersType ¶m) |
void | SetScales (const ScalesType &scales) |
virtual void | StartOptimization () |
virtual const ScalesType & | GetScales () const |
virtual const ScalesType & | GetInverseScales () const |
Public Member Functions inherited from itk::Object | |
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
LightObject::Pointer | CreateAnother () const override |
virtual void | DebugOff () const |
virtual void | DebugOn () const |
Command * | GetCommand (unsigned long tag) |
bool | GetDebug () const |
MetaDataDictionary & | GetMetaDataDictionary () |
const MetaDataDictionary & | GetMetaDataDictionary () const |
virtual ModifiedTimeType | GetMTime () const |
const char * | GetNameOfClass () const override |
virtual const TimeStamp & | GetTimeStamp () const |
bool | HasObserver (const EventObject &event) const |
void | InvokeEvent (const EventObject &) |
void | InvokeEvent (const EventObject &) const |
virtual void | Modified () const |
void | Register () const override |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) const |
void | SetDebug (bool debugFlag) const |
void | SetReferenceCount (int) override |
void | UnRegister () const noexcept override |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
virtual void | SetObjectName (std::string _arg) |
virtual const std::string & | GetObjectName () const |
Public Member Functions inherited from itk::LightObject | |
Pointer | Clone () const |
virtual Pointer | CreateAnother () const |
virtual void | Delete () |
virtual const char * | GetNameOfClass () const |
virtual int | GetReferenceCount () const |
void | Print (std::ostream &os, Indent indent=0) const |
virtual void | Register () const |
virtual void | SetReferenceCount (int) |
virtual void | UnRegister () const noexcept |
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 val) |
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) |
void | PrintSelf (std::ostream &os, Indent indent) const override |
SPSAOptimizer () | |
~SPSAOptimizer () override=default | |
Protected Member Functions inherited from itk::SingleValuedNonLinearOptimizer | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
SingleValuedNonLinearOptimizer () | |
~SingleValuedNonLinearOptimizer () override=default | |
Protected Member Functions inherited from itk::NonLinearOptimizer | |
NonLinearOptimizer ()=default | |
~NonLinearOptimizer () override | |
Protected Member Functions inherited from itk::Optimizer | |
Optimizer () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
virtual void | SetCurrentPosition (const ParametersType ¶m) |
~Optimizer () override=default | |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
void | PrintSelf (std::ostream &os, Indent indent) const override |
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
~Object () override | |
Protected Member Functions inherited from itk::LightObject | |
virtual LightObject::Pointer | InternalClone () const |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintSelf (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 { false } |
StopConditionSPSAOptimizerEnum | m_StopCondition {} |
Protected Attributes inherited from itk::SingleValuedNonLinearOptimizer | |
CostFunctionPointer | m_CostFunction {} |
Protected Attributes inherited from itk::Optimizer | |
ParametersType | m_CurrentPosition {} |
bool | m_ScalesInitialized { false } |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount {} |
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 {} |
using itk::SPSAOptimizer::ConstPointer = SmartPointer<const Self> |
Definition at line 74 of file itkSPSAOptimizer.h.
using itk::SPSAOptimizer::Pointer = SmartPointer<Self> |
Definition at line 73 of file itkSPSAOptimizer.h.
Standard class type aliases.
Definition at line 71 of file itkSPSAOptimizer.h.
using itk::SPSAOptimizer::StopConditionSPSAOptimizerEnum = SPSAOptimizerEnums::StopConditionSPSAOptimizer |
Definition at line 82 of file itkSPSAOptimizer.h.
Definition at line 72 of file itkSPSAOptimizer.h.
|
protected |
|
overrideprotecteddefault |
|
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.
|
protectedvirtual |
Generate a perturbation vector delta.
The elements are drawn from a Bernoulli distribution (+-1).
Takes scales into account.
|
inline |
Set/Get a.
Definition at line 159 of file itkSPSAOptimizer.h.
|
virtual |
Set/Get A.
|
virtual |
Set/Get alpha.
|
inline |
Set/Get c.
Definition at line 175 of file itkSPSAOptimizer.h.
|
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 201 of file itkSPSAOptimizer.h.
|
virtual |
Set/Get the minimum number of iterations
|
overridevirtual |
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.
|
virtual |
Set/Get c.
|
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.
|
overridevirtual |
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.
|
inline |
Methods to configure the cost function.
Definition at line 216 of file itkSPSAOptimizer.h.
|
inline |
Methods to configure the cost function.
Definition at line 211 of file itkSPSAOptimizer.h.
|
static |
Method for creation through the object factory.
|
overrideprotectedvirtual |
PrintSelf method.
Reimplemented from itk::SingleValuedNonLinearOptimizer.
void itk::SPSAOptimizer::ResumeOptimization | ( | ) |
Resume previously stopped optimization with current parameters
|
virtual |
Set/Get A.
|
inline |
Set/Get a.
Definition at line 154 of file itkSPSAOptimizer.h.
|
virtual |
Set/Get alpha.
|
inline |
Set/Get c.
Definition at line 170 of file itkSPSAOptimizer.h.
|
virtual |
Set/Get gamma.
|
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 206 of file itkSPSAOptimizer.h.
|
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.
|
virtual |
Set/Get c.
|
virtual |
Set/Get StateOfConvergenceDecayRate (number between 0 and 1).
|
virtual |
Set/Get Tolerance
|
overridevirtual |
Start optimization.
Reimplemented from itk::Optimizer.
void itk::SPSAOptimizer::StopOptimization | ( | ) |
Stop optimization.
|
private |
Definition at line 334 of file itkSPSAOptimizer.h.
|
private |
Definition at line 335 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 289 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 281 of file itkSPSAOptimizer.h.
|
private |
Definition at line 336 of file itkSPSAOptimizer.h.
|
protected |
Random number generator
Definition at line 292 of file itkSPSAOptimizer.h.
|
protected |
Variables updated during optimization
Definition at line 277 of file itkSPSAOptimizer.h.
|
private |
Definition at line 328 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 279 of file itkSPSAOptimizer.h.
|
private |
Definition at line 327 of file itkSPSAOptimizer.h.
|
private |
Definition at line 324 of file itkSPSAOptimizer.h.
|
private |
Settings.
Definition at line 323 of file itkSPSAOptimizer.h.
|
private |
Definition at line 329 of file itkSPSAOptimizer.h.
|
private |
Parameters, as described by Spall.
Definition at line 332 of file itkSPSAOptimizer.h.
|
private |
Definition at line 333 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 287 of file itkSPSAOptimizer.h.
|
private |
Definition at line 325 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 283 of file itkSPSAOptimizer.h.
|
protected |
Definition at line 285 of file itkSPSAOptimizer.h.
|
private |
Definition at line 326 of file itkSPSAOptimizer.h.