00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freSPSAOptimizerController_h
00023 #define __freSPSAOptimizerController_h
00024
00025 #include "freSVNonLinearOptimizerControllerBase.h"
00026
00027 #include "itkSPSAOptimizer.h"
00028
00029 namespace FREE
00030 {
00031
00032
00041 freControllerIDMacro(SPSAOptimizerController, "SPSA Optimizer");
00042 class SPSAOptimizerController : public SVNonLinearOptimizerControllerBase<itk::SPSAOptimizer>
00043 {
00044 public:
00045 itkTypeMacro(SPSAOptimizerController, SVNonLinearOptimizerControllerBase);
00046
00047 typedef itk::SPSAOptimizer ComponentType;
00048 typedef SVNonLinearOptimizerControllerBase<ComponentType> Superclass;
00049
00050 DeclareParameterMacro(MinimumNumberOfIteration);
00051 DeclareParameterMacro(MaximumNumberOfIteration);
00052 DeclareParameterMacro(a);
00053 DeclareParameterMacro(A);
00054 DeclareParameterMacro(c);
00055 DeclareParameterMacro(Alpha);
00056 DeclareParameterMacro(Gamma);
00057 DeclareParameterMacro(NumberOfPertubations);
00058 DeclareParameterMacro(ConvergenceDecayRate);
00059 DeclareParameterMacro(Tolerance);
00060 DeclareParameterMacro(GuessParameters);
00061 DeclareParameterMacro(Guess_GradientEstimates);
00062 DeclareParameterMacro(Guess_InitialStepSize);
00063
00064 virtual MeasuresType GetCurrentValue(ComponentType* pOptimizer) const;
00065
00066 SPSAOptimizerController();
00067
00068 protected:
00069 virtual void GenerateProfile(CtrlProfile::ControllerProfile& profile,
00070 const SessionComponentCache* pComponentCache,
00071 bool bRegardOldSetup) const;
00072
00073 virtual void ActualizeMainComponent(ComponentType* pMainComponent,
00074 SessionComponentCache* pComponentCache,
00075 SessionInfo* pSessionInfo,
00076 const unsigned int& iActLevel) const;
00077
00078
00079 virtual void SetStatisticEntryMainComponent(StatisticEntry& rStatisticEntry,
00080 ComponentType* pMainComponent,
00081 SessionComponentCache* pMainComponentCache,
00082 SessionInfo* pSessionInfo,
00083 StatisticDictionary& rDictionary) const;
00084
00085 virtual void ActualizeFinalization(ComponentType* pMainComponent,
00086 SessionComponentCache* pComponentCache,
00087 SessionInfo* pSessionInfo,
00088 const unsigned int& iActLevel) const;
00089
00090 };
00091
00092 }
00093
00094 #endif