00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freLBFGSOptimizerController_h
00023 #define __freLBFGSOptimizerController_h
00024
00025 #include "freSVNonLinearVNLOptimizerControllerBase.h"
00026
00027 #include "itkLBFGSOptimizer.h"
00028
00029 namespace FREE
00030 {
00031
00041 freControllerIDMacro(LBFGSOptimizerController, "LBFGS Optimizer");
00042 class LBFGSOptimizerController : public SVNonLinearVNLOptimizerControllerBase<itk::LBFGSOptimizer>
00043 {
00044 public:
00045 itkTypeMacro(LBFGSOptimizerController, SVNonLinearVNLOptimizerControllerBase);
00046
00047 typedef itk::LBFGSOptimizer ComponentType;
00048 typedef SVNonLinearVNLOptimizerControllerBase<ComponentType> Superclass;
00049
00050 DeclareParameterMacro(GradConvTolerance);
00051 DeclareParameterMacro(LineSearchAccuracy);
00052 DeclareParameterMacro(DefaultStepLength);
00053 DeclareParameterMacro(TraceOn);
00054
00055 LBFGSOptimizerController();
00056
00057 protected:
00058 virtual void GenerateProfile(CtrlProfile::ControllerProfile& profile,
00059 const SessionComponentCache* pComponentCache,
00060 bool bRegardOldSetup) const;
00061
00062 virtual void ActualizeMainComponent(ComponentType* pMainComponent,
00063 SessionComponentCache* pComponentCache,
00064 SessionInfo* pSessionInfo,
00065 const unsigned int& iActLevel) const;
00066
00067
00068 virtual void SetStatisticEntryMainComponent(StatisticEntry& rStatisticEntry,
00069 ComponentType* pMainComponent,
00070 SessionComponentCache* pMainComponentCache,
00071 SessionInfo* pSessionInfo,
00072 StatisticDictionary& rDictionary) const;
00073 };
00074
00075
00076 }
00077
00078 #endif