suanPan
BFGS Class Referencefinal

The (L-)BFGS class defines a solver using BFGS iteration method. More...

#include <BFGS.h>

Inheritance diagram for BFGS:
Collaboration diagram for BFGS:

Public Member Functions

 BFGS (unsigned=0, unsigned=30)
 
int analyze () override
 
void print () override
 
- Public Member Functions inherited from Solver
 Solver (unsigned=0)
 
 Solver (const Solver &)=default
 
 Solver (Solver &&)=default
 
Solveroperator= (const Solver &)=delete
 
Solveroperator= (Solver &&)=delete
 
 ~Solver () override=default
 
virtual int initialize ()
 
virtual int analyze ()=0
 
virtual void set_step_size (double)
 
void set_step_amplifier (double)
 
double get_step_amplifier () const
 
void set_converger (const shared_ptr< Converger > &)
 
const shared_ptr< Converger > & get_converger () const
 
void set_integrator (const shared_ptr< Integrator > &)
 
const shared_ptr< Integrator > & get_integrator () const
 
bool constant_matrix () const
 
- Public Member Functions inherited from Tag
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&)=default
 
Tagoperator= (const Tag &)=delete
 
Tagoperator= (Tag &&)=delete
 
virtual ~Tag ()=default
 
void set_tag (unsigned) const
 
unsigned get_tag () const
 
void enable ()
 
void disable ()
 
void guard ()
 
void unguard ()
 
bool is_active () const
 
bool is_guarded () const
 
virtual void print ()
 

Detailed Description

The (L-)BFGS class defines a solver using BFGS iteration method.

The BFGS method is a rank two quasi–Newton method which has a super linear convergence rate. The (L-)BFGS class supports both conventional BFGS and L-BFGS 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
06/07/2018
Version
0.3.0

Constructor & Destructor Documentation

◆ BFGS()

BFGS::BFGS ( unsigned  T = 0,
unsigned  MH = 30 
)
explicit

Member Function Documentation

◆ analyze()

int BFGS::analyze ( )
overridevirtual

Implements Solver.

Here is the call graph for this function:

◆ print()

void BFGS::print ( )
overridevirtual

Reimplemented from Tag.


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