123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- //////////////////////////////////////////////////////////////////////
- //
- // NewtonMethodOptimizer.cpp: Implementation of the NewtonMethodOptimizer
- // Optimizer class.
- //
- // Written by Matthias Wacker
- //
- //////////////////////////////////////////////////////////////////////
- #include "optimization/BFGSOptimizer.h"
- using namespace OPTIMIZATION;
- BFGSOptimizer::BFGSOptimizer(OptLogBase *loger) : SuperClass(loger)
- {
- }
- BFGSOptimizer::BFGSOptimizer( const BFGSOptimizer &opt) : SuperClass(opt)
- {
- }
- BFGSOptimizer::~BFGSOptimizer()
- {
- }
- void BFGSOptimizer::init()
- {
- SuperClass::init();
- }
- BFGSOptimizer & BFGSOptimizer::operator=(const BFGSOptimizer &opt)
- {
- /*
- avoid self-copy
- */
- if(this != &opt)
- {
-
- /*
- =operator of SuperClass
- */
- SuperClass::operator=(opt);
- }
- return *this;
- }
- void BFGSOptimizer::updateIterationMatrix()
- {
- matrix_type pk = m_parameters - m_oldParams;
- matrix_type rk = m_gradient - m_oldGradient;
- matrix_type rkt= rk.transpose();
- matrix_type pkt= pk.transpose();
- m_IterationMatrix = m_IterationMatrix
- + (rk * rkt) * (1.0/ (rkt * pk)(0,0))
- - (m_IterationMatrix * pk * pkt * m_IterationMatrix) * (1.0/ (pkt * m_IterationMatrix * pk)(0,0));
- }
|