////////////////////////////////////////////////////////////////////// // // AxA3dNUMBFGSOptimizer.h: interface for MatrixItertiveMethods class // // Written by: Matthias Wacker // // ////////////////////////////////////////////////////////////////////// #ifndef _BFGS_OPTIMIZER_H_ #define _BFGS_OPTIMIZER_H_ #include "optimization/MatrixIterativeOptimizer.h" namespace OPTIMIZATION { /*! class for the BFGS HowToUse: * use setStepSize to specify the initial stepsize to compute the numerical gradient * use setParameters() to set the start point * call init() * call optimize() Implemented Abort criteria: * maximum number of iterations * time limit * parameter bounds * function value tolerance * parameter tolerance Additional return reason: */ class BFGSOptimizer : public MatrixIterativeOptimizer { public: typedef MatrixIterativeOptimizer SuperClass; typedef SuperClass::matrix_type matrix_type; /*! Constructor. \param loger : OptLogBase * to existing log class */ BFGSOptimizer(OptLogBase *loger=NULL); /*! Copy constructor \param opt .. optimizer to copy */ BFGSOptimizer( const BFGSOptimizer &opt); /*! operator = */ BFGSOptimizer & operator=(const BFGSOptimizer &opt); /*! Destructor. */ virtual ~BFGSOptimizer(); /*! internal initoializations */ void init(); protected: /*! \brief update the Iteration Matrix */ void updateIterationMatrix() ; }; //class }//namespace #endif