////////////////////////////////////////////////////////////////////// // // 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)); }