suanPan
LBFGS Class Referencefinal

The LBFGS class defines a solver using LBFGS iteration method. More...

#include <LBFGS.hpp>

Collaboration diagram for LBFGS:

Public Member Functions

 LBFGS (const unsigned MH=10, const unsigned MI=500, const double AT=1E-12, const double RT=1E-12)
 
template<Differentiable F>
int optimize (F &func, vec &x)
 

Detailed Description

The LBFGS class defines a solver using LBFGS iteration method.

The LBFGS method is a rank two quasi–Newton method which has a super linear convergence rate. The LBFGS class supports both conventional BFGS and LBFGS method which uses limited history information.

\begin{gather} K_{n+1}^{-1}=\left(I-\dfrac{\Delta{}UR^T}{R^T\Delta{}U}\right)K_n^{-1}\left(I-\dfrac{R\Delta{}U^T}{R^T\Delta{}U}\right)+\dfrac{\Delta{}U\Delta{}U^T}{R^T\Delta{}U}. \end{gather}

The \(I\) is identity matrix. The \(\Delta{}U\) is current displacement increment. The \(R\) is current residual. For brevity, in both terms, the subscript \(n\) representing current step is dropped.

Author
tlc
Date
13/07/2022
Version
0.1.0

Constructor & Destructor Documentation

◆ LBFGS()

LBFGS::LBFGS ( const unsigned  MH = 10,
const unsigned  MI = 500,
const double  AT = 1E-12,
const double  RT = 1E-12 
)
inlineexplicit

Member Function Documentation

◆ optimize()

template<Differentiable F>
int LBFGS::optimize ( F &  func,
vec &  x 
)
inline
Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: