////////////////////////////////////////////////////////////////////// // // AxA3dNUMNewtonMethodOptimizer.h: interface for MatrixItertiveMethods class // // Written by: Matthias Wacker // // ////////////////////////////////////////////////////////////////////// #ifndef _NEWTON_METHOD_OPTIMIZER_H_ #define _NEWTON_METHOD_OPTIMIZER_H_ #include "optimization/MatrixIterativeOptimizer.h" namespace OPTIMIZATION { /*! class for the newton method Note: your objective function has to have analytical Hessian computation implemented! 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 NewtonMethodOptimizer : public MatrixIterativeOptimizer { public: typedef MatrixIterativeOptimizer SuperClass; typedef SuperClass::matrix_type matrix_type; /// /// Constructor. /// \param loger : OptLogBase * to existing log class /// NewtonMethodOptimizer(OptLogBase *loger); /// /// Copy constructor /// \param opt .. optimizer to copy /// NewtonMethodOptimizer( const NewtonMethodOptimizer &opt); /// /// operator = /// NewtonMethodOptimizer & operator=(const NewtonMethodOptimizer &opt); /// /// Destructor. /// virtual ~NewtonMethodOptimizer(); /// /// internal initializations /// void init(); protected: /*! \brief update the Iteration Matrix */ void updateIterationMatrix() ; }; //class }//namespace #endif