version 0.4.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Ikarus::TrustRegion< F, preConditioner, UF > Class Template Reference

Trust Region solver for non-linear optimization problems. More...

#include <ikarus/solver/nonlinearsolver/trustregion.hh>

Inheritance diagram for Ikarus::TrustRegion< F, preConditioner, UF >:
[legend]

Public Types

using Settings = TRSettings
 Type of the settings for the TrustRegion solver. More...
 
using FTraits = typename F::Traits
 
using Domain = typename FTraits::Domain
 Type of the parameter vector of. More...
 
using CorrectionType = typename FTraits::template Range< 1 >
 Type of the correction of x += deltaX. More...
 
using UpdateFunction = UF
 Type of the update function. More...
 
using DifferentiableFunction = F
 Type of function to minimize. More...
 
using EnergyType = typename FTraits::template Range< 0 >
 Type of the scalar cost. More...
 
using GradientType = typename FTraits::template Range< 1 >
 Type of the gradient vector. More...
 
using HessianType = typename FTraits::template Range< 2 >
 Type of the Hessian matrix. More...
 
using State = NonlinearSolverStateType< F >
 

Public Member Functions

template<typename UF2 = UF>
 TrustRegion (const F &f, UF2 &&updateFunction={})
 Constructs a TrustRegion solver instance. More...
 
void setup (const Settings &settings)
 Sets up the TrustRegion solver with the provided settings and checks feasibility. More...
 
NonLinearSolverInformation solve (Domain &x)
 Solves the nonlinear optimization problem using the TrustRegion algorithm. More...
 
auto & energy ()
 Access the energy function. More...
 
auto residual ()
 Access the residual. More...
 
Broadcaster< M > & station ()
 
const Broadcaster< M > & station () const
 

Detailed Description

template<typename F, PreConditioner preConditioner, typename UF>
class Ikarus::TrustRegion< F, preConditioner, UF >

Refer to [5] for details of the algorithm.

This code is heavily inspired by the trust-region implementation of Manopt.

Template Parameters
FType of the differentiable function to solve.
preConditionerType of preconditioner to use (default is IncompleteCholesky).
UFType of the update function

Member Typedef Documentation

◆ CorrectionType

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::CorrectionType = typename FTraits::template Range<1>

◆ DifferentiableFunction

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::DifferentiableFunction = F

◆ Domain

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::Domain = typename FTraits::Domain

◆ EnergyType

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::EnergyType = typename FTraits::template Range<0>

◆ FTraits

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::FTraits = typename F::Traits

◆ GradientType

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::GradientType = typename FTraits::template Range<1>

◆ HessianType

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::HessianType = typename FTraits::template Range<2>

◆ Settings

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::Settings = TRSettings

◆ State

using Ikarus::NonlinearSolverBase< F, Args >::State = NonlinearSolverStateType<F>
inherited

◆ UpdateFunction

template<typename F , PreConditioner preConditioner, typename UF >
using Ikarus::TrustRegion< F, preConditioner, UF >::UpdateFunction = UF

Constructor & Destructor Documentation

◆ TrustRegion()

template<typename F , PreConditioner preConditioner, typename UF >
template<typename UF2 = UF>
Ikarus::TrustRegion< F, preConditioner, UF >::TrustRegion ( const F &  f,
UF2 &&  updateFunction = {} 
)
inlineexplicit
Parameters
fFunction to solve.
updateFunctionUpdate function

Member Function Documentation

◆ energy()

template<typename F , PreConditioner preConditioner, typename UF >
auto & Ikarus::TrustRegion< F, preConditioner, UF >::energy ( )
inline
Returns
Reference to the energy function.

◆ residual()

template<typename F , PreConditioner preConditioner, typename UF >
auto Ikarus::TrustRegion< F, preConditioner, UF >::residual ( )
inline
Returns
The residual by value.

◆ setup()

template<typename F , PreConditioner preConditioner, typename UF >
void Ikarus::TrustRegion< F, preConditioner, UF >::setup ( const Settings settings)
inline
Parameters
p_settingsTrustRegionSettings containing the solver configuration.

◆ solve()

template<typename F , PreConditioner preConditioner, typename UF >
NonLinearSolverInformation Ikarus::TrustRegion< F, preConditioner, UF >::solve ( Domain x)
inline
Parameters
xthe solution.
Returns
NonLinearSolverInformation containing information about the solver result.

◆ station() [1/2]

Broadcaster< M > & Ikarus::Broadcasters< Signatures >::station ( )
inlineinherited

◆ station() [2/2]

const Broadcaster< M > & Ikarus::Broadcasters< Signatures >::station ( ) const
inlineinherited

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