tinyopt 700
Tinyopt, a lightweight, header only optimization library
Loading...
Searching...
No Matches
tinyopt::solvers::SolverDogLeg< Hessian_t > Class Template Reference
Inheritance diagram for tinyopt::solvers::SolverDogLeg< Hessian_t >:
tinyopt::solvers::SolverGN< MatX > tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>

Public Types

using Base = SolverGN<Hessian_t>
using Scalar = typename Base::Scalar
using Grad_t = typename Base::Grad_t
using H_t = typename Base::H_t
Public Types inherited from tinyopt::solvers::SolverGN< MatX >
using Base
using Scalar
using H_t
using Grad_t
Public Types inherited from tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>
using Scalar

Public Member Functions

 SolverDogLeg (const Options &options={})
void reset () override
 Reset the solver state and clear gradient & hessian.
template<typename X_t, typename AccFunc>
bool Build (const X_t &x, const AccFunc &acc, bool resize_and_clear=true)
std::optional< Vector< Scalar, Dims > > Solve () const override
 Solve the linear system dx = -H^-1 * grad, returns nullopt on failure.
Scalar TrustRegionRadius () const
Public Member Functions inherited from tinyopt::solvers::SolverGN< MatX >
 SolverGN (const Options &options={})
void InitWith (const Grad_t &g, const H_t &h)
 Initialize solver with specific gradient and hessian.
bool resize (int dims)
 Resize H and grad if needed, return true if they were resized.
void clear ()
 Set gradient and hessian to 0s.
bool ResizeIfNeeded (const X_t &x)
 Check whether we need to resize the system (gradient), return true if it did.
Scalar Evaluate (const X_t &x, const AccFunc &acc, bool save)
 Accumulate residuals and return the final error.
bool Accumulate (const X_t &x, const AccFunc &acc)
 Accumulate residuals and update the gradient, returns true on success.
bool Build (const X_t &x, const AccFunc &acc_func, bool resize_and_clear=true)
std::optional< Vector< Scalar, Dims > > Solve () const override
 Solve the linear system dx = -H^-1 * grad, returns nullopt on failure.
virtual Index dims () const override
Scalar MaxStdDev (bool use_damped=true) const
virtual std::optional< H_t > Covariance () const
 Latest Covariance estimate.
const H_t & Hessian () const
 Latest, eventually damped Hessian approximation (JtJ).
const H_t & H () const
const Grad_t & Gradient () const
Scalar GradientNorm () const
Scalar GradientSquaredNorm () const
Public Member Functions inherited from tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>
 SolverBase (const Options &options={})
bool Clamp (Grad_t &g, Scalar minmax) const
 Clamp the gradient 'g' to within [-minmax, minmax], if minmax is not 0. Returns true if 'g' was clamped.
void NormalizeCost (Cost &cost)
 Eventually normalize the cost.
virtual void GoodStep (Scalar=0.0f)
virtual void BadStep (Scalar=0.0f)
virtual void FailedStep ()
virtual void Rebuild (bool)
virtual std::string stateAsString () const
const Cost & cost () const

Static Public Attributes

static constexpr Index Dims = Base::Dims
static constexpr bool IsNLLS = true
static constexpr bool FirstOrder = false
Static Public Attributes inherited from tinyopt::solvers::SolverGN< MatX >
static constexpr bool IsNLLS
static constexpr bool FirstOrder
static constexpr Index Dims
Static Public Attributes inherited from tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>
static constexpr Index Dims

Additional Inherited Members

Public Attributes inherited from tinyopt::solvers::SolverGN< MatX >
const Options options_
Protected Attributes inherited from tinyopt::solvers::SolverGN< MatX >
H_t H_
Grad_t grad_
Protected Attributes inherited from tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>
const Options options_
Cost cost_

Member Function Documentation

◆ reset()

template<typename Hessian_t = MatX>
void tinyopt::solvers::SolverDogLeg< Hessian_t >::reset ( )
inlineoverridevirtual

Reset the solver state and clear gradient & hessian.

Reimplemented from tinyopt::solvers::SolverGN< MatX >.

◆ Solve()

template<typename Hessian_t = MatX>
std::optional< Vector< Scalar, Dims > > tinyopt::solvers::SolverDogLeg< Hessian_t >::Solve ( ) const
inlineoverridevirtual

Solve the linear system dx = -H^-1 * grad, returns nullopt on failure.

Implements tinyopt::solvers::SolverBase< MatX::Scalar, SQRT(traits::params_trait< MatX >::Dims)>.


The documentation for this class was generated from the following file:
  • include/tinyopt/solvers/dl.h