occ
Loading...
Searching...
No Matches
occ::mults::LBFGS Class Reference

L-BFGS optimizer for unconstrained minimization. More...

#include <lbfgs.h>

Public Types

using Objective = std::function< double(const Vec &, Vec &)>
 Objective function signature: f(x, gradient) -> energy.
 
using Callback = std::function< bool(int, const Vec &, double, const Vec &)>
 Optional callback after each iteration: callback(iter, x, f, g) -> continue?
 

Public Member Functions

 LBFGS (const LBFGSSettings &settings={})
 
LBFGSResult minimize (Objective f, const Vec &x0, int max_iter=200)
 Minimize the objective function starting from x0.
 
LBFGSResult minimize (Objective f, const Vec &x0, Callback callback, int max_iter=200)
 Minimize with iteration callback.
 
const LBFGSSettingssettings () const
 Access settings.
 
LBFGSSettingssettings ()
 

Detailed Description

L-BFGS optimizer for unconstrained minimization.

Implements the Limited-memory Broyden-Fletcher-Goldfarb-Shanno algorithm with strong Wolfe line search.

Usage:

LBFGS optimizer(settings);
auto result = optimizer.minimize(
[](const Vec& x, Vec& g) {
// Compute f(x) and gradient g
return f;
},
x0, max_iter);
L-BFGS optimizer for unconstrained minimization.
Definition lbfgs.h:57
const LBFGSSettings & settings() const
Access settings.
Definition lbfgs.h:89
Eigen::VectorXd Vec
Definition linear_algebra.h:62

Member Typedef Documentation

◆ Callback

using occ::mults::LBFGS::Callback = std::function<bool(int, const Vec&, double, const Vec&)>

Optional callback after each iteration: callback(iter, x, f, g) -> continue?

◆ Objective

using occ::mults::LBFGS::Objective = std::function<double(const Vec&, Vec&)>

Objective function signature: f(x, gradient) -> energy.

Constructor & Destructor Documentation

◆ LBFGS()

occ::mults::LBFGS::LBFGS ( const LBFGSSettings settings = {})
explicit

Member Function Documentation

◆ minimize() [1/2]

LBFGSResult occ::mults::LBFGS::minimize ( Objective  f,
const Vec x0,
Callback  callback,
int  max_iter = 200 
)

Minimize with iteration callback.

Parameters
fObjective function
x0Initial parameters
callbackCalled after each iteration; return false to stop
max_iterMaximum number of iterations
Returns
Optimization result

◆ minimize() [2/2]

LBFGSResult occ::mults::LBFGS::minimize ( Objective  f,
const Vec x0,
int  max_iter = 200 
)

Minimize the objective function starting from x0.

Parameters
fObjective function computing f(x) and storing gradient in g
x0Initial parameters
max_iterMaximum number of iterations
Returns
Optimization result

◆ settings() [1/2]

LBFGSSettings & occ::mults::LBFGS::settings ( )
inline

◆ settings() [2/2]

const LBFGSSettings & occ::mults::LBFGS::settings ( ) const
inline

Access settings.


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