123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #ifndef _MATRIX_ITERATIVE_OPTIMIZER_H_
- #define _MATRIX_ITERATIVE_OPTIMIZER_H_
- #include "optimization/DerivativeBasedOptimizer.h"
- #include "optimization/GoldenCutLineSearcher.h"
- #include "optimization/ArmijoLineSearcher.h"
- namespace OPTIMIZATION
- {
-
- class MatrixIterativeOptimizer : public DerivativeBasedOptimizer
- {
- public:
- typedef DerivativeBasedOptimizer SuperClass;
- typedef SuperClass::matrix_type matrix_type;
-
- MatrixIterativeOptimizer(OptLogBase *loger);
-
- MatrixIterativeOptimizer( const MatrixIterativeOptimizer &opt);
-
- MatrixIterativeOptimizer & operator=(const MatrixIterativeOptimizer &opt);
-
- virtual ~MatrixIterativeOptimizer();
-
- void setStepSize(const matrix_type & stepSize);
-
-
- ArmijoLineSearcher * getLineSearcher(){return &m_lin;};
-
- void init();
-
- int optimize();
- protected:
-
-
- virtual void updateIterationMatrix() = 0;
-
- matrix_type m_IterationMatrix;
-
- void computeDescentDirection();
-
-
- matrix_type m_hk;
-
- void ComputeStepLength();
-
- void resetMatrix();
-
- double m_lambdak;
-
-
-
- ArmijoLineSearcher m_lin;
-
-
- matrix_type m_stepSize;
-
- matrix_type m_oldParams;
-
- matrix_type m_oldGradient;
-
-
-
-
- };
- }
- #endif
|