MiniTensor Version of the Day
Loading...
Searching...
No Matches
Solvers and Optimization

Nonlinear system solvers, unconstrained and constrained optimization methods, and benchmark test functions. More...

Classes

struct  minitensor::Function_Base< FunctionDerived, S, M >
 
struct  minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >
 
struct  minitensor::Inequality_Constraint< ConstraintDerived, S, NC, NV >
 
struct  minitensor::Bounds< T, N >
 
struct  minitensor::Minimizer< T, N >
 
struct  minitensor::NewtonLineSearch< T, N >
 
struct  minitensor::BacktrackingLineSearch< T, N >
 
struct  minitensor::TrustRegionSubproblemBase< T, N >
 
struct  minitensor::TrustRegionExactValue< T, N >
 
struct  minitensor::TrustRegionExactGradient< T, N >
 
struct  minitensor::TrustRegionDogLegValue< T, N >
 
struct  minitensor::TrustRegionDogLegGradient< T, N >
 
struct  minitensor::StepBase< FN, T, N >
 
struct  minitensor::NewtonStep< FN, T, N >
 
struct  minitensor::NewtonWithLineSearchStep< FN, T, N >
 
struct  minitensor::TrustRegionStep< FN, T, N >
 
struct  minitensor::ConjugateGradientStep< FN, T, N >
 
struct  minitensor::LineSearchRegularizedStep< FN, T, N >
 
class  minitensor::SquareRoot< S, M >
 
class  minitensor::Quadratic< S, M >
 
class  minitensor::Gaussian< S, M >
 
class  minitensor::Banana< S, M >
 
class  minitensor::Matyas< S, M >
 
class  minitensor::McCormick< S, M >
 
class  minitensor::StyblinskiTang< S, M >
 
class  minitensor::Paraboloid< S, M >
 
class  minitensor::Rosenbrock< S, M >
 
class  minitensor::Beale< S, M >
 
class  minitensor::Booth< S, M >
 
class  minitensor::GoldsteinPrice< S, M >
 
class  minitensor::Failure< S, M >
 
class  minitensor::Mesa< S, M >
 
class  minitensor::Sigmoid< S, M >
 
class  minitensor::Identity< S, NC, NV >
 
class  minitensor::Nonlinear01< S, NC, NV >
 
class  minitensor::Circumference< S, NC, NV >
 
class  minitensor::Circle< S, NC, NV >
 

Typedefs

template<typename T , int N>
using minitensor::FAD = Sacado::Fad::SLFad< T, N >
 The Fad type to use.
 

Enumerations

enum class  minitensor::StepType {
  minitensor::StepType::UNDEFINED = 0 , minitensor::StepType::NEWTON = 1 , minitensor::StepType::NEWTON_LS = 2 , minitensor::StepType::TRUST_REGION = 3 ,
  minitensor::StepType::CG = 4 , minitensor::StepType::LINE_SEARCH_REG = 5
}
 

Functions

 minitensor::Function_Base< FunctionDerived, S, M >::Function_Base ()
 
template<typename T , Index N>
minitensor::Function_Base< FunctionDerived, S, M >::value (FunctionDerived &f, Vector< T, N > const &x)
 
template<typename T , Index N>
Vector< T, N > minitensor::Function_Base< FunctionDerived, S, M >::gradient (FunctionDerived &f, Vector< T, N > const &x)
 
template<typename T , Index N>
Vector< T, N > minitensor::Function_Base< FunctionDerived, S, M >::residual (FunctionDerived &f, Vector< T, N > const &x)
 
template<typename T , Index N>
Tensor< T, N > minitensor::Function_Base< FunctionDerived, S, M >::hessian (FunctionDerived &f, Vector< T, N > const &x)
 
void minitensor::Function_Base< FunctionDerived, S, M >::set_failed (char const *const msg=nullptr)
 
bool minitensor::Function_Base< FunctionDerived, S, M >::get_failed ()
 
void minitensor::Function_Base< FunctionDerived, S, M >::clear_failed ()
 
void minitensor::Function_Base< FunctionDerived, S, M >::set_failure_message (char const *const msg=nullptr)
 
char const * minitensor::Function_Base< FunctionDerived, S, M >::get_failure_message ()
 
 minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::Equality_Constraint ()
 
template<typename T , Index N>
Vector< T, NC > minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::value (ConstraintDerived &c, Vector< T, N > const &x)
 
template<typename T , Index N>
Matrix< T, NC, NV > minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::gradient (ConstraintDerived &c, Vector< T, N > const &x)
 
 minitensor::Bounds< T, N >::Bounds (Vector< T, N > const &l, Vector< T, N > const &u)
 
 minitensor::Minimizer< T, N >::Minimizer ()
 
template<typename STEP , typename FN >
void minitensor::Minimizer< T, N >::solve (STEP &step_method, FN &fn, Vector< T, N > &x)
 
void minitensor::Minimizer< T, N >::printReport (std::ostream &os)
 
void minitensor::Minimizer< T, N >::updateConvergenceCriterion (T const abs_error)
 
void minitensor::Minimizer< T, N >::updateDivergenceCriterion (T const fn_value)
 
bool minitensor::Minimizer< T, N >::continueSolve () const
 
template<typename FN >
void minitensor::Minimizer< T, N >::recordFinals (FN &fn, Vector< T, N > const &x)
 
template<typename FN >
Vector< T, N > minitensor::NewtonLineSearch< T, N >::step (FN &fn, Vector< T, N > const &direction, Vector< T, N > const &soln)
 
template<typename FN >
Vector< T, N > minitensor::BacktrackingLineSearch< T, N >::step (FN &fn, Vector< T, N > const &direction, Vector< T, N > const &soln)
 
Vector< T, N > minitensor::TrustRegionSubproblemBase< T, N >::lin_solve (Tensor< T, N > const &A, Vector< T, N > const &b)
 
Vector< T, N > minitensor::TrustRegionExactValue< T, N >::step (Tensor< T, N > const &Hessian, Vector< T, N > const &gradient)
 
Vector< T, N > minitensor::TrustRegionExactGradient< T, N >::step (Tensor< T, N > const &Hessian, Vector< T, N > const &gradient)
 
Vector< T, N > minitensor::TrustRegionDogLegValue< T, N >::step (Tensor< T, N > const &Hessian, Vector< T, N > const &gradient)
 
Vector< T, N > minitensor::TrustRegionDogLegGradient< T, N >::step (Tensor< T, N > const &Hessian, Vector< T, N > const &gradient)
 
 minitensor::StepBase< FN, T, N >::StepBase ()
 
virtual char const * minitensor::StepBase< FN, T, N >::name ()=0
 
virtual void minitensor::StepBase< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)=0
 
virtual Vector< T, N > minitensor::StepBase< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)=0
 
virtual minitensor::StepBase< FN, T, N >::~StepBase ()
 
Vector< T, N > minitensor::StepBase< FN, T, N >::lin_solve (Tensor< T, N > const &A, Vector< T, N > const &b)
 
template<typename FN , typename T , Index N>
std::unique_ptr< StepBase< FN, T, N > > minitensor::stepFactory (StepType step_type)
 
virtual char const * minitensor::NewtonStep< FN, T, N >::name ()
 
virtual void minitensor::NewtonStep< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual Vector< T, N > minitensor::NewtonStep< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual minitensor::NewtonStep< FN, T, N >::~NewtonStep ()
 
virtual char const * minitensor::NewtonWithLineSearchStep< FN, T, N >::name ()
 
virtual void minitensor::NewtonWithLineSearchStep< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual Vector< T, N > minitensor::NewtonWithLineSearchStep< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual minitensor::NewtonWithLineSearchStep< FN, T, N >::~NewtonWithLineSearchStep ()
 
virtual char const * minitensor::TrustRegionStep< FN, T, N >::name ()
 
virtual void minitensor::TrustRegionStep< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual Vector< T, N > minitensor::TrustRegionStep< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual minitensor::TrustRegionStep< FN, T, N >::~TrustRegionStep ()
 
virtual char const * minitensor::ConjugateGradientStep< FN, T, N >::name ()
 
virtual void minitensor::ConjugateGradientStep< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual Vector< T, N > minitensor::ConjugateGradientStep< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual minitensor::ConjugateGradientStep< FN, T, N >::~ConjugateGradientStep ()
 
virtual char const * minitensor::LineSearchRegularizedStep< FN, T, N >::name ()
 
virtual void minitensor::LineSearchRegularizedStep< FN, T, N >::initialize (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual Vector< T, N > minitensor::LineSearchRegularizedStep< FN, T, N >::step (FN &fn, Vector< T, N > const &x, Vector< T, N > const &r)
 
virtual minitensor::LineSearchRegularizedStep< FN, T, N >::~LineSearchRegularizedStep ()
 

Variables

static constexpr Index minitensor::Function_Base< FunctionDerived, S, M >::DIMENSION {M}
 
bool minitensor::Function_Base< FunctionDerived, S, M >::failed {false}
 
char const * minitensor::Function_Base< FunctionDerived, S, M >::failure_message {nullptr}
 Keep a message to inform what went wrong above.
 
static constexpr bool minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::IS_EQUALITY {true}
 
bool minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::failed {false}
 
static constexpr Index minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::NUM_CONSTR {NC}
 
static constexpr Index minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::NUM_VAR {NV}
 
static constexpr bool minitensor::Inequality_Constraint< ConstraintDerived, S, NC, NV >::IS_EQUALITY {false}
 
Vector< T, N > minitensor::Bounds< T, N >::lower
 
Vector< T, N > minitensor::Bounds< T, N >::upper
 
Index minitensor::Minimizer< T, N >::max_num_iter {256}
 
Index minitensor::Minimizer< T, N >::min_num_iter {0}
 
Index minitensor::Minimizer< T, N >::num_iter {0}
 
Index minitensor::Minimizer< T, N >::num_stagnation_iter {0}
 
Index minitensor::Minimizer< T, N >::max_stagnation_iter {0}
 
minitensor::Minimizer< T, N >::initial_norm {1.0}
 
minitensor::Minimizer< T, N >::rel_tol {1.0e-12}
 
minitensor::Minimizer< T, N >::rel_error {1.0}
 
minitensor::Minimizer< T, N >::abs_tol {1.0e-12}
 
minitensor::Minimizer< T, N >::acc_tol {1.0e-12}
 
minitensor::Minimizer< T, N >::stagnation_tol {1.0}
 
minitensor::Minimizer< T, N >::abs_error {1.0}
 
minitensor::Minimizer< T, N >::growth_limit {1.0}
 
minitensor::Minimizer< T, N >::initial_value {0.0}
 
minitensor::Minimizer< T, N >::previous_value {0.0}
 
minitensor::Minimizer< T, N >::final_value {0.0}
 
bool minitensor::Minimizer< T, N >::failed {false}
 
bool minitensor::Minimizer< T, N >::warning {false}
 
bool minitensor::Minimizer< T, N >::converged {false}
 
bool minitensor::Minimizer< T, N >::monotonic {true}
 
bool minitensor::Minimizer< T, N >::bounded {true}
 
bool minitensor::Minimizer< T, N >::non_stagnant {true}
 
bool minitensor::Minimizer< T, N >::enforce_monotonicity {false}
 
bool minitensor::Minimizer< T, N >::enforce_boundedness {false}
 
bool minitensor::Minimizer< T, N >::enforce_non_stagnation {false}
 
Vector< T, N > minitensor::Minimizer< T, N >::initial_guess
 
Vector< T, N > minitensor::Minimizer< T, N >::final_soln
 
Vector< T, N > minitensor::Minimizer< T, N >::final_gradient
 
Tensor< T, N > minitensor::Minimizer< T, N >::final_hessian
 
char const * minitensor::Minimizer< T, N >::step_method_name {nullptr}
 
char const * minitensor::Minimizer< T, N >::function_name {nullptr}
 
char const * minitensor::Minimizer< T, N >::failure_message {"No failure detected"}
 
char const * minitensor::Minimizer< T, N >::warning_message {"No warning detected"}
 
Index minitensor::NewtonLineSearch< T, N >::max_num_iter {16}
 
minitensor::NewtonLineSearch< T, N >::tolerance {1.0e-6}
 
Index minitensor::BacktrackingLineSearch< T, N >::max_num_iter {100}
 
Index minitensor::BacktrackingLineSearch< T, N >::max_line_iter {10}
 
minitensor::BacktrackingLineSearch< T, N >::search_parameter {0.5}
 
minitensor::BacktrackingLineSearch< T, N >::search_increment {0.1}
 
minitensor::BacktrackingLineSearch< T, N >::alpha {1.0}
 
minitensor::BacktrackingLineSearch< T, N >::tolerance {1.0e-6}
 
PreconditionerType minitensor::TrustRegionSubproblemBase< T, N >::preconditioner_type {PreconditionerType::IDENTITY}
 
Index minitensor::TrustRegionExactValue< T, N >::max_num_iter {4}
 
minitensor::TrustRegionExactValue< T, N >::region_size {1.0}
 
Index minitensor::TrustRegionExactGradient< T, N >::max_num_iter {4}
 
minitensor::TrustRegionExactGradient< T, N >::region_size {1.0}
 
minitensor::TrustRegionDogLegValue< T, N >::region_size {1.0}
 
minitensor::TrustRegionDogLegGradient< T, N >::region_size {1.0}
 
PreconditionerType minitensor::StepBase< FN, T, N >::preconditioner_type {PreconditionerType::IDENTITY}
 
static constexpr char const *const minitensor::NewtonStep< FN, T, N >::NAME {"Newton"}
 
static constexpr char const *const minitensor::NewtonWithLineSearchStep< FN, T, N >::NAME {"Newton with Line Search"}
 
static constexpr char const *const minitensor::TrustRegionStep< FN, T, N >::NAME {"Trust Region"}
 
minitensor::TrustRegionStep< FN, T, N >::max_region_size {10.0}
 
minitensor::TrustRegionStep< FN, T, N >::initial_region_size {10.0}
 
minitensor::TrustRegionStep< FN, T, N >::min_reduction {0.0}
 
minitensor::TrustRegionStep< FN, T, N >::region_size {0.0}
 
static constexpr char const *const minitensor::ConjugateGradientStep< FN, T, N >::NAME {"Preconditioned Conjugate Gradient"}
 
Index minitensor::ConjugateGradientStep< FN, T, N >::restart_directions_interval {32}
 
Vector< T, N > minitensor::ConjugateGradientStep< FN, T, N >::search_direction
 
Vector< T, N > minitensor::ConjugateGradientStep< FN, T, N >::precon_resi
 
minitensor::ConjugateGradientStep< FN, T, N >::projection_new {0.0}
 
Index minitensor::ConjugateGradientStep< FN, T, N >::restart_directions_counter {0}
 
static constexpr char const *const minitensor::LineSearchRegularizedStep< FN, T, N >::NAME {"Line Search Regularized"}
 
minitensor::LineSearchRegularizedStep< FN, T, N >::step_length {1.0}
 
minitensor::LineSearchRegularizedStep< FN, T, N >::hessian_cond_tol {1.0e+08}
 

Detailed Description

Nonlinear system solvers, unconstrained and constrained optimization methods, and benchmark test functions.

Typedef Documentation

◆ FAD

template<typename T , int N>
using minitensor::FAD = typedef Sacado::Fad::SLFad<T, N>

The Fad type to use.

Definition at line 27 of file MiniTensor_Solvers.h.

Enumeration Type Documentation

◆ StepType

enum class minitensor::StepType
strong

The step types

Enumerator
UNDEFINED 
NEWTON 
NEWTON_LS 
TRUST_REGION 
CG 
LINE_SEARCH_REG 

Definition at line 728 of file MiniTensor_Solvers.h.

Function Documentation

◆ Function_Base()

template<typename FunctionDerived , typename S , Index M>
minitensor::Function_Base< FunctionDerived, S, M >::Function_Base ( )
inline

Definition at line 46 of file MiniTensor_Solvers.h.

◆ value() [1/2]

template<typename FunctionDerived , typename S , Index M>
template<typename T , Index N>
T minitensor::Function_Base< FunctionDerived, S, M >::value ( FunctionDerived &  f,
Vector< T, N > const &  x 
)

By default use merit function 0.5 dot(residual,residual) as the target to optimize if only the residual is provided.

Definition at line 1038 of file MiniTensor_Solvers.h.

◆ gradient() [1/2]

template<typename FunctionDerived , typename S , Index M>
template<typename T , Index N>
Vector< T, N > minitensor::Function_Base< FunctionDerived, S, M >::gradient ( FunctionDerived &  f,
Vector< T, N > const &  x 
)

By default compute gradient with AD from value().

Definition at line 1055 of file MiniTensor_Solvers.h.

◆ residual()

template<typename FunctionDerived , typename S , Index M>
template<typename T , Index N>
Vector< T, N > minitensor::Function_Base< FunctionDerived, S, M >::residual ( FunctionDerived &  f,
Vector< T, N > const &  x 
)

Defined explicitly.

Definition at line 1091 of file MiniTensor_Solvers.h.

◆ hessian()

template<typename FunctionDerived , typename S , Index M>
template<typename T , Index N>
Tensor< T, N > minitensor::Function_Base< FunctionDerived, S, M >::hessian ( FunctionDerived &  f,
Vector< T, N > const &  x 
)

By default compute Hessian with AD from gradient().

Definition at line 1103 of file MiniTensor_Solvers.h.

◆ set_failed()

template<typename FunctionDerived , typename S , Index M>
void minitensor::Function_Base< FunctionDerived, S, M >::set_failed ( char const *const  msg = nullptr)

Mark the function as failed and optionally set a failure message.

Definition at line 1140 of file MiniTensor_Solvers.h.

◆ get_failed()

template<typename FunctionDerived , typename S , Index M>
bool minitensor::Function_Base< FunctionDerived, S, M >::get_failed ( )

Return whether the function has failed.

Definition at line 1153 of file MiniTensor_Solvers.h.

◆ clear_failed()

template<typename FunctionDerived , typename S , Index M>
void minitensor::Function_Base< FunctionDerived, S, M >::clear_failed ( )

Clear the failure flag.

Definition at line 1164 of file MiniTensor_Solvers.h.

◆ set_failure_message()

template<typename FunctionDerived , typename S , Index M>
void minitensor::Function_Base< FunctionDerived, S, M >::set_failure_message ( char const *const  msg = nullptr)

Set the failure message.

Definition at line 1176 of file MiniTensor_Solvers.h.

◆ get_failure_message()

template<typename FunctionDerived , typename S , Index M>
char const * minitensor::Function_Base< FunctionDerived, S, M >::get_failure_message ( )

Return the failure message.

Definition at line 1188 of file MiniTensor_Solvers.h.

◆ Equality_Constraint()

template<typename ConstraintDerived , typename S , Index NC, Index NV>
minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::Equality_Constraint ( )
inline

Definition at line 130 of file MiniTensor_Solvers.h.

◆ value() [2/2]

template<typename ConstraintDerived , typename S , Index NC, Index NV>
template<typename T , Index N>
Vector< T, NC > minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::value ( ConstraintDerived &  c,
Vector< T, N > const &  x 
)

Return the value of the constraints at point x.

Definition at line 1200 of file MiniTensor_Solvers.h.

◆ gradient() [2/2]

template<typename ConstraintDerived , typename S , Index NC, Index NV>
template<typename T , Index N>
Matrix< T, NC, NV > minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::gradient ( ConstraintDerived &  c,
Vector< T, N > const &  x 
)

By default compute gradient with AD from value().

Definition at line 1213 of file MiniTensor_Solvers.h.

◆ Bounds()

template<typename T , Index N>
minitensor::Bounds< T, N >::Bounds ( Vector< T, N > const &  l,
Vector< T, N > const &  u 
)

Construct bounds from lower bound l and upper bound u.

Definition at line 1252 of file MiniTensor_Solvers.h.

◆ Minimizer()

template<typename T , Index N>
minitensor::Minimizer< T, N >::Minimizer ( )

Definition at line 1262 of file MiniTensor_Solvers.h.

◆ solve()

template<typename T , Index N>
template<typename STEP , typename FN >
void minitensor::Minimizer< T, N >::solve ( STEP &  step_method,
FN &  fn,
Vector< T, N > &  x 
)

Minimize the function fn starting from x using the given step method. On return x contains the solution found.

Definition at line 1279 of file MiniTensor_Solvers.h.

◆ printReport()

template<typename T , Index N>
void minitensor::Minimizer< T, N >::printReport ( std::ostream &  os)

Print a summary report of the minimization to the stream os.

Definition at line 1336 of file MiniTensor_Solvers.h.

◆ updateConvergenceCriterion()

template<typename T , Index N>
void minitensor::Minimizer< T, N >::updateConvergenceCriterion ( T const  abs_error)
private

Update the absolute and relative errors and the convergence status.

Definition at line 1376 of file MiniTensor_Solvers.h.

◆ updateDivergenceCriterion()

template<typename T , Index N>
void minitensor::Minimizer< T, N >::updateDivergenceCriterion ( T const  fn_value)
private

Update the monotonicity, stagnation and boundedness status with the latest function value.

Definition at line 1407 of file MiniTensor_Solvers.h.

◆ continueSolve()

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::continueSolve ( ) const
private

Return whether the iteration loop should continue.

Definition at line 1451 of file MiniTensor_Solvers.h.

◆ recordFinals()

template<typename T , Index N>
template<typename FN >
void minitensor::Minimizer< T, N >::recordFinals ( FN &  fn,
Vector< T, N > const &  x 
)
private

Record the final solution, function value, gradient and Hessian.

Definition at line 1490 of file MiniTensor_Solvers.h.

◆ step() [1/12]

template<typename T , Index N>
template<typename FN >
Vector< T, N > minitensor::NewtonLineSearch< T, N >::step ( FN &  fn,
Vector< T, N > const &  direction,
Vector< T, N > const &  soln 
)

Perform a Newton line search from soln along direction and return the resulting step.

Definition at line 1755 of file MiniTensor_Solvers.h.

◆ step() [2/12]

template<typename T , Index N>
template<typename FN >
Vector< T, N > minitensor::BacktrackingLineSearch< T, N >::step ( FN &  fn,
Vector< T, N > const &  direction,
Vector< T, N > const &  soln 
)

Perform a back-tracking line search from soln along direction and return the resulting step.

Definition at line 1809 of file MiniTensor_Solvers.h.

◆ lin_solve() [1/2]

template<typename T , Index N>
Vector< T, N > minitensor::TrustRegionSubproblemBase< T, N >::lin_solve ( Tensor< T, N > const &  A,
Vector< T, N > const &  b 
)

Solve the linear system \( A x = b \) with preconditioning.

Definition at line 1515 of file MiniTensor_Solvers.h.

◆ step() [3/12]

template<typename T , Index N>
Vector< T, N > minitensor::TrustRegionExactValue< T, N >::step ( Tensor< T, N > const &  Hessian,
Vector< T, N > const &  gradient 
)

Compute the trust-region step for the given Hessian and gradient.

Definition at line 1527 of file MiniTensor_Solvers.h.

◆ step() [4/12]

template<typename T , Index N>
Vector< T, N > minitensor::TrustRegionExactGradient< T, N >::step ( Tensor< T, N > const &  Hessian,
Vector< T, N > const &  gradient 
)

Compute the trust-region step for the given Hessian and gradient.

Definition at line 1591 of file MiniTensor_Solvers.h.

◆ step() [5/12]

template<typename T , Index N>
Vector< T, N > minitensor::TrustRegionDogLegValue< T, N >::step ( Tensor< T, N > const &  Hessian,
Vector< T, N > const &  gradient 
)

Compute the dog-leg step for the given Hessian and gradient.

Definition at line 1662 of file MiniTensor_Solvers.h.

◆ step() [6/12]

template<typename T , Index N>
Vector< T, N > minitensor::TrustRegionDogLegGradient< T, N >::step ( Tensor< T, N > const &  Hessian,
Vector< T, N > const &  gradient 
)

Compute the dog-leg step for the given Hessian and gradient.

Definition at line 1706 of file MiniTensor_Solvers.h.

◆ StepBase()

template<typename FN , typename T , Index N>
minitensor::StepBase< FN, T, N >::StepBase ( )
inline

Definition at line 677 of file MiniTensor_Solvers.h.

◆ name() [1/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::StepBase< FN, T, N >::name ( )
pure virtual

◆ initialize() [1/6]

template<typename FN , typename T , Index N>
virtual void minitensor::StepBase< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
pure virtual

◆ step() [7/12]

template<typename FN , typename T , Index N>
virtual Vector< T, N > minitensor::StepBase< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
pure virtual

◆ ~StepBase()

template<typename FN , typename T , Index N>
virtual minitensor::StepBase< FN, T, N >::~StepBase ( )
inlinevirtual

Definition at line 709 of file MiniTensor_Solvers.h.

◆ lin_solve() [2/2]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::StepBase< FN, T, N >::lin_solve ( Tensor< T, N > const &  A,
Vector< T, N > const &  b 
)

Solve the linear system \( A x = b \) with preconditioning.

Definition at line 1504 of file MiniTensor_Solvers.h.

◆ stepFactory()

template<typename FN , typename T , Index N>
std::unique_ptr< StepBase< FN, T, N > > minitensor::stepFactory ( StepType  step_type)

Construct the step object for the given step type.

Definition at line 2194 of file MiniTensor_Solvers.h.

◆ name() [2/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::NewtonStep< FN, T, N >::name ( )
inlinevirtual

Return the name of the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 763 of file MiniTensor_Solvers.h.

◆ initialize() [2/6]

template<typename FN , typename T , Index N>
void minitensor::NewtonStep< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Initialize the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1894 of file MiniTensor_Solvers.h.

◆ step() [8/12]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::NewtonStep< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Compute a full Newton step.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1905 of file MiniTensor_Solvers.h.

◆ ~NewtonStep()

template<typename FN , typename T , Index N>
virtual minitensor::NewtonStep< FN, T, N >::~NewtonStep ( )
inlinevirtual

Definition at line 783 of file MiniTensor_Solvers.h.

◆ name() [3/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::NewtonWithLineSearchStep< FN, T, N >::name ( )
inlinevirtual

Return the name of the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 805 of file MiniTensor_Solvers.h.

◆ initialize() [3/6]

template<typename FN , typename T , Index N>
void minitensor::NewtonWithLineSearchStep< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Initialize the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1923 of file MiniTensor_Solvers.h.

◆ step() [9/12]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::NewtonWithLineSearchStep< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Compute a Newton step followed by a back-tracking line search.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1934 of file MiniTensor_Solvers.h.

◆ ~NewtonWithLineSearchStep()

template<typename FN , typename T , Index N>
virtual minitensor::NewtonWithLineSearchStep< FN, T, N >::~NewtonWithLineSearchStep ( )
inlinevirtual

Definition at line 826 of file MiniTensor_Solvers.h.

◆ name() [4/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::TrustRegionStep< FN, T, N >::name ( )
inlinevirtual

Return the name of the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 847 of file MiniTensor_Solvers.h.

◆ initialize() [4/6]

template<typename FN , typename T , Index N>
void minitensor::TrustRegionStep< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Initialize the trust-region radius.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1958 of file MiniTensor_Solvers.h.

◆ step() [10/12]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::TrustRegionStep< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Compute a trust-region step. See Nocedal 2nd Ed, algorithm 11.5.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 1971 of file MiniTensor_Solvers.h.

◆ ~TrustRegionStep()

template<typename FN , typename T , Index N>
virtual minitensor::TrustRegionStep< FN, T, N >::~TrustRegionStep ( )
inlinevirtual

Definition at line 868 of file MiniTensor_Solvers.h.

◆ name() [5/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::ConjugateGradientStep< FN, T, N >::name ( )
inlinevirtual

Return the name of the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 914 of file MiniTensor_Solvers.h.

◆ initialize() [5/6]

template<typename FN , typename T , Index N>
void minitensor::ConjugateGradientStep< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Initialize the search direction and preconditioned residual.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 2046 of file MiniTensor_Solvers.h.

◆ step() [11/12]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::ConjugateGradientStep< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Compute a preconditioned conjugate gradient step (Polak-Ribiere).

Implements minitensor::StepBase< FN, T, N >.

Definition at line 2072 of file MiniTensor_Solvers.h.

◆ ~ConjugateGradientStep()

template<typename FN , typename T , Index N>
virtual minitensor::ConjugateGradientStep< FN, T, N >::~ConjugateGradientStep ( )
inlinevirtual

Definition at line 936 of file MiniTensor_Solvers.h.

◆ name() [6/6]

template<typename FN , typename T , Index N>
virtual char const * minitensor::LineSearchRegularizedStep< FN, T, N >::name ( )
inlinevirtual

Return the name of the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 990 of file MiniTensor_Solvers.h.

◆ initialize() [6/6]

template<typename FN , typename T , Index N>
void minitensor::LineSearchRegularizedStep< FN, T, N >::initialize ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Initialize the step method.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 2134 of file MiniTensor_Solvers.h.

◆ step() [12/12]

template<typename FN , typename T , Index N>
Vector< T, N > minitensor::LineSearchRegularizedStep< FN, T, N >::step ( FN &  fn,
Vector< T, N > const &  x,
Vector< T, N > const &  r 
)
virtual

Compute a regularized Newton step followed by a Newton line search. See Nocedal 2nd Ed, algorithm 11.4.

Implements minitensor::StepBase< FN, T, N >.

Definition at line 2145 of file MiniTensor_Solvers.h.

◆ ~LineSearchRegularizedStep()

template<typename FN , typename T , Index N>
virtual minitensor::LineSearchRegularizedStep< FN, T, N >::~LineSearchRegularizedStep ( )
inlinevirtual

Definition at line 1011 of file MiniTensor_Solvers.h.

Variable Documentation

◆ DIMENSION

template<typename FunctionDerived , typename S , Index M>
constexpr Index minitensor::Function_Base< FunctionDerived, S, M >::DIMENSION {M}
staticconstexpr

Maximum dimension of the argument vectors.

Definition at line 44 of file MiniTensor_Solvers.h.

◆ failed [1/3]

template<typename FunctionDerived , typename S , Index M>
bool minitensor::Function_Base< FunctionDerived, S, M >::failed {false}
protected

Signal that something has gone horribly wrong.

Definition at line 115 of file MiniTensor_Solvers.h.

◆ failure_message [1/2]

template<typename FunctionDerived , typename S , Index M>
char const* minitensor::Function_Base< FunctionDerived, S, M >::failure_message {nullptr}
protected

Keep a message to inform what went wrong above.

Definition at line 120 of file MiniTensor_Solvers.h.

◆ IS_EQUALITY [1/2]

template<typename ConstraintDerived , typename S , Index NC, Index NV>
constexpr bool minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::IS_EQUALITY {true}
staticconstexpr

This is an equality constraint.

Definition at line 153 of file MiniTensor_Solvers.h.

◆ failed [2/3]

template<typename ConstraintDerived , typename S , Index NC, Index NV>
bool minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::failed {false}

Signal that something has gone horribly wrong.

Definition at line 159 of file MiniTensor_Solvers.h.

◆ NUM_CONSTR

template<typename ConstraintDerived , typename S , Index NC, Index NV>
constexpr Index minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::NUM_CONSTR {NC}
staticconstexpr

Number of constraints.

Definition at line 166 of file MiniTensor_Solvers.h.

◆ NUM_VAR

template<typename ConstraintDerived , typename S , Index NC, Index NV>
constexpr Index minitensor::Equality_Constraint< ConstraintDerived, S, NC, NV >::NUM_VAR {NV}
staticconstexpr

Number of variables.

Definition at line 173 of file MiniTensor_Solvers.h.

◆ IS_EQUALITY [2/2]

template<typename ConstraintDerived , typename S , Index NC, Index NV>
constexpr bool minitensor::Inequality_Constraint< ConstraintDerived, S, NC, NV >::IS_EQUALITY {false}
staticconstexpr

This is not an equality constraint.

Definition at line 188 of file MiniTensor_Solvers.h.

◆ lower

template<typename T , Index N>
Vector<T, N> minitensor::Bounds< T, N >::lower

Lower bound.

Definition at line 206 of file MiniTensor_Solvers.h.

◆ upper

template<typename T , Index N>
Vector<T, N> minitensor::Bounds< T, N >::upper

Upper bound.

Definition at line 212 of file MiniTensor_Solvers.h.

◆ max_num_iter [1/5]

template<typename T , Index N>
Index minitensor::Minimizer< T, N >::max_num_iter {256}

Maximum number of iterations allowed.

Definition at line 273 of file MiniTensor_Solvers.h.

◆ min_num_iter

template<typename T , Index N>
Index minitensor::Minimizer< T, N >::min_num_iter {0}

Minimum number of iterations to perform.

Definition at line 279 of file MiniTensor_Solvers.h.

◆ num_iter

template<typename T , Index N>
Index minitensor::Minimizer< T, N >::num_iter {0}

Number of iterations taken.

Definition at line 285 of file MiniTensor_Solvers.h.

◆ num_stagnation_iter

template<typename T , Index N>
Index minitensor::Minimizer< T, N >::num_stagnation_iter {0}

Number of consecutive stagnant iterations so far.

Definition at line 291 of file MiniTensor_Solvers.h.

◆ max_stagnation_iter

template<typename T , Index N>
Index minitensor::Minimizer< T, N >::max_stagnation_iter {0}

Maximum number of consecutive stagnant iterations allowed.

Definition at line 298 of file MiniTensor_Solvers.h.

◆ initial_norm

template<typename T , Index N>
T minitensor::Minimizer< T, N >::initial_norm {1.0}

Norm of the initial residual, \( \|R_0\| \).

Definition at line 304 of file MiniTensor_Solvers.h.

◆ rel_tol

template<typename T , Index N>
T minitensor::Minimizer< T, N >::rel_tol {1.0e-12}

Relative error tolerance.

Definition at line 310 of file MiniTensor_Solvers.h.

◆ rel_error

template<typename T , Index N>
T minitensor::Minimizer< T, N >::rel_error {1.0}

Current relative error, \( \|R\| / \|R_0\| \).

Definition at line 316 of file MiniTensor_Solvers.h.

◆ abs_tol

template<typename T , Index N>
T minitensor::Minimizer< T, N >::abs_tol {1.0e-12}

Absolute error tolerance.

Definition at line 322 of file MiniTensor_Solvers.h.

◆ acc_tol

template<typename T , Index N>
T minitensor::Minimizer< T, N >::acc_tol {1.0e-12}

Acceptable absolute tolerance applied at the last iteration.

Definition at line 329 of file MiniTensor_Solvers.h.

◆ stagnation_tol

template<typename T , Index N>
T minitensor::Minimizer< T, N >::stagnation_tol {1.0}

Reduction ratio above which an iteration is considered stagnant.

Definition at line 336 of file MiniTensor_Solvers.h.

◆ abs_error

template<typename T , Index N>
T minitensor::Minimizer< T, N >::abs_error {1.0}

Current absolute error, \( \|R\| \).

Definition at line 342 of file MiniTensor_Solvers.h.

◆ growth_limit

template<typename T , Index N>
T minitensor::Minimizer< T, N >::growth_limit {1.0}

Growth factor over the initial value beyond which the objective function is considered unbounded.

Definition at line 349 of file MiniTensor_Solvers.h.

◆ initial_value

template<typename T , Index N>
T minitensor::Minimizer< T, N >::initial_value {0.0}

Initial value of the objective function.

Definition at line 355 of file MiniTensor_Solvers.h.

◆ previous_value

template<typename T , Index N>
T minitensor::Minimizer< T, N >::previous_value {0.0}

Value of the objective function at the previous iteration.

Definition at line 362 of file MiniTensor_Solvers.h.

◆ final_value

template<typename T , Index N>
T minitensor::Minimizer< T, N >::final_value {0.0}

Final value of the objective function.

Definition at line 368 of file MiniTensor_Solvers.h.

◆ failed [3/3]

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::failed {false}

Whether the minimization failed.

Definition at line 374 of file MiniTensor_Solvers.h.

◆ warning

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::warning {false}

Whether a warning was issued.

Definition at line 380 of file MiniTensor_Solvers.h.

◆ converged

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::converged {false}

Whether the minimization converged.

Definition at line 386 of file MiniTensor_Solvers.h.

◆ monotonic

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::monotonic {true}

Whether the objective function decreased monotonically.

Definition at line 392 of file MiniTensor_Solvers.h.

◆ bounded

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::bounded {true}

Whether the objective function remained bounded.

Definition at line 398 of file MiniTensor_Solvers.h.

◆ non_stagnant

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::non_stagnant {true}

Whether the iteration remained non-stagnant.

Definition at line 404 of file MiniTensor_Solvers.h.

◆ enforce_monotonicity

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::enforce_monotonicity {false}

If true, fail when the objective function is non-monotonic.

Definition at line 411 of file MiniTensor_Solvers.h.

◆ enforce_boundedness

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::enforce_boundedness {false}

If true, fail when the objective function grows unbounded.

Definition at line 418 of file MiniTensor_Solvers.h.

◆ enforce_non_stagnation

template<typename T , Index N>
bool minitensor::Minimizer< T, N >::enforce_non_stagnation {false}

If true, warn when the residual stagnates.

Definition at line 424 of file MiniTensor_Solvers.h.

◆ initial_guess

template<typename T , Index N>
Vector<T, N> minitensor::Minimizer< T, N >::initial_guess

Initial guess.

Definition at line 430 of file MiniTensor_Solvers.h.

◆ final_soln

template<typename T , Index N>
Vector<T, N> minitensor::Minimizer< T, N >::final_soln

Final solution.

Definition at line 436 of file MiniTensor_Solvers.h.

◆ final_gradient

template<typename T , Index N>
Vector<T, N> minitensor::Minimizer< T, N >::final_gradient

Gradient at the final solution.

Definition at line 442 of file MiniTensor_Solvers.h.

◆ final_hessian

template<typename T , Index N>
Tensor<T, N> minitensor::Minimizer< T, N >::final_hessian

Hessian at the final solution.

Definition at line 448 of file MiniTensor_Solvers.h.

◆ step_method_name

template<typename T , Index N>
char const* minitensor::Minimizer< T, N >::step_method_name {nullptr}

Name of the step method used.

Definition at line 454 of file MiniTensor_Solvers.h.

◆ function_name

template<typename T , Index N>
char const* minitensor::Minimizer< T, N >::function_name {nullptr}

Name of the function being minimized.

Definition at line 460 of file MiniTensor_Solvers.h.

◆ failure_message [2/2]

template<typename T , Index N>
char const* minitensor::Minimizer< T, N >::failure_message {"No failure detected"}

Message describing a failure, if any.

Definition at line 466 of file MiniTensor_Solvers.h.

◆ warning_message

template<typename T , Index N>
char const* minitensor::Minimizer< T, N >::warning_message {"No warning detected"}

Message describing a warning, if any.

Definition at line 472 of file MiniTensor_Solvers.h.

◆ max_num_iter [2/5]

template<typename T , Index N>
Index minitensor::NewtonLineSearch< T, N >::max_num_iter {16}

Maximum number of line search iterations.

Definition at line 493 of file MiniTensor_Solvers.h.

◆ tolerance [1/2]

template<typename T , Index N>
T minitensor::NewtonLineSearch< T, N >::tolerance {1.0e-6}

Convergence tolerance on the step length.

Definition at line 499 of file MiniTensor_Solvers.h.

◆ max_num_iter [3/5]

template<typename T , Index N>
Index minitensor::BacktrackingLineSearch< T, N >::max_num_iter {100}

Maximum number of iterations.

Definition at line 520 of file MiniTensor_Solvers.h.

◆ max_line_iter

template<typename T , Index N>
Index minitensor::BacktrackingLineSearch< T, N >::max_line_iter {10}

Maximum number of line iterations before increasing the search parameter.

Definition at line 527 of file MiniTensor_Solvers.h.

◆ search_parameter

template<typename T , Index N>
T minitensor::BacktrackingLineSearch< T, N >::search_parameter {0.5}

Sufficient-decrease parameter for the residual norm.

Definition at line 533 of file MiniTensor_Solvers.h.

◆ search_increment

template<typename T , Index N>
T minitensor::BacktrackingLineSearch< T, N >::search_increment {0.1}

Increment applied to the search parameter when the line iterations are exhausted.

Definition at line 540 of file MiniTensor_Solvers.h.

◆ alpha

template<typename T , Index N>
T minitensor::BacktrackingLineSearch< T, N >::alpha {1.0}

Line search step length multiplier.

Definition at line 546 of file MiniTensor_Solvers.h.

◆ tolerance [2/2]

template<typename T , Index N>
T minitensor::BacktrackingLineSearch< T, N >::tolerance {1.0e-6}

Convergence tolerance.

Definition at line 552 of file MiniTensor_Solvers.h.

◆ preconditioner_type [1/2]

template<typename T , Index N>
PreconditionerType minitensor::TrustRegionSubproblemBase< T, N >::preconditioner_type {PreconditionerType::IDENTITY}

Preconditioner used by the linear solver.

Definition at line 565 of file MiniTensor_Solvers.h.

◆ max_num_iter [4/5]

template<typename T , Index N>
Index minitensor::TrustRegionExactValue< T, N >::max_num_iter {4}

Maximum number of iterations for the subproblem.

Definition at line 593 of file MiniTensor_Solvers.h.

◆ region_size [1/5]

template<typename T , Index N>
T minitensor::TrustRegionExactValue< T, N >::region_size {1.0}

Trust-region radius \( \Delta \).

Definition at line 599 of file MiniTensor_Solvers.h.

◆ max_num_iter [5/5]

template<typename T , Index N>
Index minitensor::TrustRegionExactGradient< T, N >::max_num_iter {4}

Maximum number of iterations for the subproblem.

Definition at line 620 of file MiniTensor_Solvers.h.

◆ region_size [2/5]

template<typename T , Index N>
T minitensor::TrustRegionExactGradient< T, N >::region_size {1.0}

Trust-region radius \( \Delta \).

Definition at line 626 of file MiniTensor_Solvers.h.

◆ region_size [3/5]

template<typename T , Index N>
T minitensor::TrustRegionDogLegValue< T, N >::region_size {1.0}

Trust-region radius \( \Delta \).

Definition at line 647 of file MiniTensor_Solvers.h.

◆ region_size [4/5]

template<typename T , Index N>
T minitensor::TrustRegionDogLegGradient< T, N >::region_size {1.0}

Trust-region radius \( \Delta \).

Definition at line 668 of file MiniTensor_Solvers.h.

◆ preconditioner_type [2/2]

template<typename FN , typename T , Index N>
PreconditionerType minitensor::StepBase< FN, T, N >::preconditioner_type {PreconditionerType::IDENTITY}

Preconditioner used by the linear solver.

Definition at line 715 of file MiniTensor_Solvers.h.

◆ NAME [1/5]

template<typename FN , typename T , Index N>
constexpr char const* const minitensor::NewtonStep< FN, T, N >::NAME {"Newton"}
staticconstexpr

Name of the step method.

Definition at line 756 of file MiniTensor_Solvers.h.

◆ NAME [2/5]

template<typename FN , typename T , Index N>
constexpr char const* const minitensor::NewtonWithLineSearchStep< FN, T, N >::NAME {"Newton with Line Search"}
staticconstexpr

Name of the step method.

Definition at line 798 of file MiniTensor_Solvers.h.

◆ NAME [3/5]

template<typename FN , typename T , Index N>
constexpr char const* const minitensor::TrustRegionStep< FN, T, N >::NAME {"Trust Region"}
staticconstexpr

Name of the step method.

Definition at line 840 of file MiniTensor_Solvers.h.

◆ max_region_size

template<typename FN , typename T , Index N>
T minitensor::TrustRegionStep< FN, T, N >::max_region_size {10.0}

Maximum trust-region radius.

Definition at line 874 of file MiniTensor_Solvers.h.

◆ initial_region_size

template<typename FN , typename T , Index N>
T minitensor::TrustRegionStep< FN, T, N >::initial_region_size {10.0}

Initial trust-region radius.

Definition at line 880 of file MiniTensor_Solvers.h.

◆ min_reduction

template<typename FN , typename T , Index N>
T minitensor::TrustRegionStep< FN, T, N >::min_reduction {0.0}

Minimum reduction ratio to accept a step.

Definition at line 886 of file MiniTensor_Solvers.h.

◆ region_size [5/5]

template<typename FN , typename T , Index N>
T minitensor::TrustRegionStep< FN, T, N >::region_size {0.0}
private

Current trust-region radius \( \Delta \).

Definition at line 893 of file MiniTensor_Solvers.h.

◆ NAME [4/5]

template<typename FN , typename T , Index N>
constexpr char const* const minitensor::ConjugateGradientStep< FN, T, N >::NAME {"Preconditioned Conjugate Gradient"}
staticconstexpr

Name of the step method.

Definition at line 907 of file MiniTensor_Solvers.h.

◆ restart_directions_interval

template<typename FN , typename T , Index N>
Index minitensor::ConjugateGradientStep< FN, T, N >::restart_directions_interval {32}

Number of iterations between restarts of the search directions.

Definition at line 943 of file MiniTensor_Solvers.h.

◆ search_direction

template<typename FN , typename T , Index N>
Vector<T, N> minitensor::ConjugateGradientStep< FN, T, N >::search_direction
private

Current search direction.

Definition at line 950 of file MiniTensor_Solvers.h.

◆ precon_resi

template<typename FN , typename T , Index N>
Vector<T, N> minitensor::ConjugateGradientStep< FN, T, N >::precon_resi
private

Preconditioned residual.

Definition at line 956 of file MiniTensor_Solvers.h.

◆ projection_new

template<typename FN , typename T , Index N>
T minitensor::ConjugateGradientStep< FN, T, N >::projection_new {0.0}
private

Latest projection used by the Polak-Ribiere formula.

Definition at line 962 of file MiniTensor_Solvers.h.

◆ restart_directions_counter

template<typename FN , typename T , Index N>
Index minitensor::ConjugateGradientStep< FN, T, N >::restart_directions_counter {0}
private

Iterations since the last restart of the search directions.

Definition at line 969 of file MiniTensor_Solvers.h.

◆ NAME [5/5]

template<typename FN , typename T , Index N>
constexpr char const* const minitensor::LineSearchRegularizedStep< FN, T, N >::NAME {"Line Search Regularized"}
staticconstexpr

Name of the step method.

Definition at line 983 of file MiniTensor_Solvers.h.

◆ step_length

template<typename FN , typename T , Index N>
T minitensor::LineSearchRegularizedStep< FN, T, N >::step_length {1.0}

Trust-region size used to regularize a bad Hessian.

Definition at line 1017 of file MiniTensor_Solvers.h.

◆ hessian_cond_tol

template<typename FN , typename T , Index N>
T minitensor::LineSearchRegularizedStep< FN, T, N >::hessian_cond_tol {1.0e+08}

Hessian condition number above which regularization is applied.

Definition at line 1024 of file MiniTensor_Solvers.h.