#include <itkSPSAOptimizer.h>
Inheritance diagram for itk::SPSAOptimizer:


This optimizer is an implementation of the Simultaneous Perturbation Stochastic Approximation method, described in:
Definition at line 27 of file itkSPSAOptimizer.h.
Public Types | |
| typedef SmartPointer< const Self > | ConstPointer |
| typedef CostFunctionType::Pointer | CostFunctionPointer |
| typedef SingleValuedCostFunction | CostFunctionType |
| typedef CostFunctionType::DerivativeType | DerivativeType |
| typedef CostFunctionType::MeasureType | MeasureType |
| typedef Superclass::ParametersType | ParametersType |
| typedef SmartPointer< Self > | Pointer |
| typedef Superclass::ScalesType | ScalesType |
| typedef SPSAOptimizer | Self |
| enum | StopConditionType { Unknown, MaximumNumberOfIterations, BelowTolerance, MetricError } |
| typedef SingleValuedNonLinearOptimizer | Superclass |
Public Member Functions | |
| virtual void | AdvanceOneStep (void) |
| virtual LightObject::Pointer | CreateAnother () const |
| virtual void | DebugOff () const |
| virtual void | DebugOn () const |
| virtual void | Delete () |
| virtual double | GetA () const |
| virtual double | Geta () const |
| virtual double | GetAlpha () const |
| virtual double | Getc () const |
| Command * | GetCommand (unsigned long tag) |
| virtual const CostFunctionType * | GetCostFunction () |
| virtual unsigned long | GetCurrentIteration () const |
| virtual const ParametersType & | GetCurrentPosition () |
| bool | GetDebug () const |
| virtual double | GetGamma () const |
| virtual const DerivativeType & | GetGradient () |
| virtual double | GetGradientMagnitude () const |
| virtual const ParametersType & | GetInitialPosition () |
| virtual double | GetLearningRate () const |
| Methods to configure the cost function *virtual bool | GetMaximize () const |
| virtual unsigned long | GetMaximumNumberOfIterations () const |
| const MetaDataDictionary & | GetMetaDataDictionary (void) const |
| MetaDataDictionary & | GetMetaDataDictionary (void) |
| bool | GetMinimize () const |
| virtual unsigned long | GetMinimumNumberOfIterations () const |
| virtual unsigned long | GetMTime () const |
| virtual const char * | GetNameOfClass () const |
| virtual unsigned long | GetNumberOfPerturbations () const |
| virtual int | GetReferenceCount () const |
| virtual const ScalesType & | GetScales () |
| virtual double | GetStateOfConvergence () const |
| virtual double | GetStateOfConvergenceDecayRate () const |
| virtual StopConditionType | GetStopCondition () const |
| virtual double | GetTolerance () const |
| virtual MeasureType | GetValue (const ParametersType ¶meters) const |
| virtual MeasureType | GetValue (void) const |
| virtual void | GuessParameters (unsigned long numberOfGradientEstimates, double initialStepSize) |
| bool | HasObserver (const EventObject &event) const |
| void | InvokeEvent (const EventObject &) const |
| void | InvokeEvent (const EventObject &) |
| virtual void | MaximizeOff () |
| virtual void | MaximizeOn () |
| void | MinimizeOff () |
| void | MinimizeOn () |
| virtual void | Modified () const |
| void | Print (std::ostream &os, Indent indent=0) const |
| virtual void | Register () const |
| void | RemoveAllObservers () |
| void | RemoveObserver (unsigned long tag) |
| void | ResumeOptimization (void) |
| Set Get A *virtual void | SetA (double _arg) |
| Set Get a *virtual void | Seta (double _arg) |
| Set Get alpha *virtual void | SetAlpha (double _arg) |
| Set Get c *virtual void | Setc (double _arg) |
| virtual void | SetCostFunction (CostFunctionType *costFunction) |
| void | SetDebug (bool debugFlag) const |
| Set Get gamma *virtual void | SetGamma (double _arg) |
| virtual void | SetInitialPosition (const ParametersType ¶m) |
| virtual void | SetMaximize (bool _arg) |
| Set Get the maximum number of iterations *virtual void | SetMaximumNumberOfIterations (unsigned long _arg) |
| void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
| void | SetMinimize (bool v) |
| Set Get the minimum number of iterations *virtual void | SetMinimumNumberOfIterations (unsigned long _arg) |
| virtual void | SetReferenceCount (int) |
| void | SetScales (const ScalesType &scales) |
| Set Get Tolerance *virtual void | SetTolerance (double _arg) |
| void | StartOptimization (void) |
| Set Get | StateOfConvergenceDecayRate (number between 0 and 1).*/virtual void SetStateOfConvergenceDecayRate(double _arg) |
| void | StopOptimization (void) |
| virtual void | UnRegister () const |
Static Public Member Functions | |
| static void | BreakOnError () |
| static bool | GetGlobalWarningDisplay () |
| static void | GlobalWarningDisplayOff () |
| static void | GlobalWarningDisplayOn () |
| static Pointer | New () |
| This is a global flag that controls whether any warning *or error messages are displayed *static void | SetGlobalWarningDisplay (bool flag) |
Public Attributes | |
| Allow people to add remove invoke observers(callbacks) to any ITK *object.This is an implementation of the subject/observer design *pattern.An observer is added by specifying an event to respond to *and an itk unsigned lon | AddObserver )(const EventObject &event, Command *) const |
| This is a global flag that controls whether any | debug |
| Set Get the number of perturbation used to construct *a gradient estimate g_k * | q |
Protected Member Functions | |
| virtual double | Compute_a (unsigned long k) const |
| virtual double | Compute_c (unsigned long k) const |
| virtual void | ComputeGradient (const ParametersType ¶meters, DerivativeType &gradient) |
| virtual void | GenerateDelta (const unsigned int spaceDimension) |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| void | PrintSelf (std::ostream &os, Indent indent) const |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
| virtual void | SetCurrentPosition (const ParametersType ¶m) |
| SPSAOptimizer () | |
| virtual | ~SPSAOptimizer () |
Protected Attributes | |
| CostFunctionPointer | m_CostFunction |
| unsigned long | m_CurrentIteration |
| DerivativeType | m_Delta |
| Statistics::MersenneTwisterRandomVariateGenerator::Pointer | m_Generator |
| DerivativeType | m_Gradient |
| double | m_LearningRate |
| int | m_ReferenceCount |
| SimpleFastMutexLock | m_ReferenceCountLock |
| bool | m_ScalesInitialized |
| double | m_StateOfConvergence |
| bool | m_Stop |
| StopConditionType | m_StopCondition |
| Methods invoked by virtual Print() to print information about the object *including superclasses.Typically not called by the user(use Print()*instead) but used in the hierarchical print process to combine the *output of several classes.*/virtual void PrintSelf(std voi | PrintHeader )(std::ostream &os, Indent indent) const |
|
|
Reimplemented from itk::SingleValuedNonLinearOptimizer. Definition at line 36 of file itkSPSAOptimizer.h. |
|
|
Reimplemented in itk::FRPROptimizer, itk::LBFGSBOptimizer, itk::OnePlusOneEvolutionaryOptimizer, itk::PowellOptimizer, and itk::RegularStepGradientDescentOptimizer. Definition at line 56 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Type of the Cost Function Reimplemented in itk::FRPROptimizer, itk::LBFGSBOptimizer, itk::OnePlusOneEvolutionaryOptimizer, itk::PowellOptimizer, and itk::RegularStepGradientDescentOptimizer. Definition at line 55 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Derivative type. It defines a type used to return the cost function derivative. Definition at line 64 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Measure type. It defines a type used to return the cost function value. Reimplemented in itk::LBFGSBOptimizer. Definition at line 60 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Parameters type. It defines a position in the optimization search space. Reimplemented from itk::NonLinearOptimizer. Reimplemented in itk::AmoebaOptimizer, itk::FRPROptimizer, itk::PowellOptimizer, and itk::QuaternionRigidTransformGradientDescentOptimizer. Definition at line 48 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Reimplemented from itk::SingleValuedNonLinearOptimizer. Definition at line 35 of file itkSPSAOptimizer.h. |
|
|
Scale type. This array defines scale to be applied to parameters before being evaluated in the cost function. This allows to map to a more convenient space. In particular this is used to normalize parameter spaces in which some parameters have a different dynamic range. Reimplemented from itk::Optimizer. Definition at line 52 of file itkNonLinearOptimizer.h. |
|
|
Standard class typedefs. Reimplemented from itk::SingleValuedNonLinearOptimizer. Definition at line 33 of file itkSPSAOptimizer.h. |
|
|
Reimplemented from itk::SingleValuedNonLinearOptimizer. Definition at line 34 of file itkSPSAOptimizer.h. |
|
|
Codes of stopping conditions Definition at line 45 of file itkSPSAOptimizer.h. |
|
|
|
|
|
Definition at line 188 of file itkSPSAOptimizer.h. |
|
|
Advance one step following the gradient direction. |
|
|
This method is called when itkExceptionMacro executes. It allows the debugger to break on error. |
|
|
Method to compute the learning rate at iteration k (a_k). |
|
|
Method to compute the gain factor for the perturbation at iteration k (c_k). |
|
||||||||||||
|
Compute the gradient at a position. m_NumberOfPerturbations are used, and scales are taken into account. |
|
|
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::LightObject. |
|
|
Turn debugging output off. |
|
|
Turn debugging output on. |
|
|
Delete an itk object. This method should always be used to delete an object when the new operator was used to create it. Using the C delete method will not work with reference counting. |
|
|
Method to generate a perturbation vector. Takes scales into account. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Get the command associated with the given tag. NOTE: This returns a pointer to a Command, but it is safe to asign this to a Command::Pointer. Since Command inherits from LightObject, at this point in the code, only a pointer or a reference to the Command can be used. |
|
|
Get the cost function. |
|
|
Get the current iteration number. |
|
|
Get current position of the optimization. |
|
|
Get the value of the debug flag. |
|
|
|
|
|
|
|
|
Get the latest computed gradient |
|
|
Get the GradientMagnitude of the latest computed gradient |
|
|
Get the position to initialize the optimization. |
|
|
Get the current LearningRate (a_k) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 132 of file itkSPSAOptimizer.h. |
|
|
|
|
|
|
Run-time type information (and related methods). Reimplemented from itk::SingleValuedNonLinearOptimizer. |
|
|
|
|
|
Gets the reference count on this object. Definition at line 98 of file itkLightObject.h. |
|
|
Get current parameters scaling. |
|
|
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 |
|
|
|
|
|
Get Stop condition. |
|
|
|
|
|
Get the cost function value at any position Reimplemented from itk::SingleValuedNonLinearOptimizer. |
|
|
Get the cost function value at the current position. |
|
|
Definition at line 100 of file itkObject.h. References itk::Object::SetGlobalWarningDisplay(). |
|
|
Definition at line 98 of file itkObject.h. References itk::Object::SetGlobalWarningDisplay(). |
|
||||||||||||
|
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. |
|
|
Return true if an observer is registered for this event. |
|
|
Call Execute on all the Commands observing this event id. The actions triggered by this call doesn't modify this object. |
|
|
Call Execute on all the Commands observing this event id. |
|
|
Referenced by MinimizeOn(). |
|
|
Referenced by MinimizeOff(). |
|
|
Definition at line 138 of file itkSPSAOptimizer.h. References MaximizeOn(). |
|
|
Definition at line 136 of file itkSPSAOptimizer.h. References MaximizeOff(). |
|
|
|
Method for creation through the object factory. Reimplemented from itk::SingleValuedNonLinearOptimizer. |
|
||||||||||||
|
Cause the object to print itself out. |
|
||||||||||||
|
|
|
||||||||||||
|
PrintSelf method. Reimplemented from itk::SingleValuedNonLinearOptimizer. |
|
||||||||||||
|
|
|
|
Increase the reference count (mark as used by another object). Reimplemented from itk::LightObject. |
|
|
Remove all observers . |
|
|
Remove the observer with this tag value. |
|
|
Resume previously stopped optimization with current parameters
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set the cost function. |
|
|
Set the current position. |
|
|
Set the value of the debug flag. A non-zero value turns debugging on. |
|
|
|
|
|
Referenced by itk::Object::GlobalWarningDisplayOff(), and itk::Object::GlobalWarningDisplayOn(). |
|
|
Set the position to initialize the optimization. |
|
|
Referenced by SetMinimize(). |
|
|
|
|
|
|
|
|
Definition at line 134 of file itkSPSAOptimizer.h. References SetMaximize(). |
|
|
|
|
|
Sets the reference count (use with care) Reimplemented from itk::LightObject. |
|
|
Set current parameters scaling. Reimplemented in itk::LBFGSBOptimizer. |
|
|
|
|
|
Start optimization. Reimplemented from itk::Optimizer. |
|
|
|
|
|
Stop optimization.
|
|
|
Decrease the reference count (release by another object). Reimplemented from itk::LightObject. |
|
|
|
|
|
Definition at line 94 of file itkObject.h. |
|
|
Definition at line 80 of file itkSingleValuedNonLinearOptimizer.h. |
|
|
Definition at line 200 of file itkSPSAOptimizer.h. |
|
|
Definition at line 196 of file itkSPSAOptimizer.h. |
|
|
Random number generator Definition at line 203 of file itkSPSAOptimizer.h. |
|
|
Variables updated during optimization Definition at line 194 of file itkSPSAOptimizer.h. |
|
|
Definition at line 195 of file itkSPSAOptimizer.h. |
|
|
Number of uses of this object by other objects. Definition at line 119 of file itkLightObject.h. |
|
|
Mutex lock to protect modification to the reference count Definition at line 122 of file itkLightObject.h. |
|
|
Definition at line 90 of file itkOptimizer.h. |
|
|
Definition at line 199 of file itkSPSAOptimizer.h. |
|
|
Definition at line 197 of file itkSPSAOptimizer.h. |
|
|
Definition at line 198 of file itkSPSAOptimizer.h. |
|
|
|
|
|
Initial value: NumberOfPerturbations
* g_k = 1/q sum_{j=1..q} g^(j)_k
*/
virtual void SetNumberOfPerturbations ( unsigned long _arg)
Definition at line 144 of file itkSPSAOptimizer.h. |
1.4.2 written by Dimitri van Heesch,
© 1997-2000