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