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 LBFGSSettings & settings () const
 Access settings.
LBFGSSettings & settings ()

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);
LBFGS(const LBFGSSettings &settings={})
const LBFGSSettings & settings() const
Access settings.
Definition lbfgs.h:89
Eigen::VectorXd Vec
Definition linear_algebra.h:61

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:
  • /home/runner/work/occ/occ/include/occ/mults/lbfgs.h