alpaqa 0.0.1
Nonconvex constrained optimization
Classes | Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
ALMSolver< InnerSolverT > Class Template Reference

#include <alpaqa/decl/alm.hpp>

Detailed Description

template<class InnerSolverT = PANOCSolver<>>
class alpaqa::ALMSolver< InnerSolverT >

Augmented Lagrangian Method solver.

Examples
CUTEst/Rosenbrock/main.cpp, and CasADi/Rosenbrock/main.cpp.

Definition at line 82 of file decl/alm.hpp.

+ Collaboration diagram for ALMSolver< InnerSolverT >:

Classes

struct  Stats
 

Public Types

using Params = ALMParams
 
using InnerSolver = InnerSolverT
 

Public Member Functions

 ALMSolver (Params params, InnerSolver &&inner_solver)
 
 ALMSolver (Params params, const InnerSolver &inner_solver)
 
Stats operator() (const Problem &problem, rvec y, rvec x)
 
std::string get_name () const
 
void stop ()
 Abort the computation and return the result so far. More...
 
const Paramsget_params () const
 

Public Attributes

InnerSolver inner_solver
 

Private Attributes

Params params
 

Class Documentation

◆ alpaqa::ALMSolver::Stats

struct alpaqa::ALMSolver::Stats
+ Collaboration diagram for ALMSolver< InnerSolverT >::Stats:
Class Members
unsigned outer_iterations Total number of outer ALM iterations (i.e.

the number of times that the inner solver was invoked).

microseconds elapsed_time Total elapsed time.
unsigned initial_penalty_reduced The number of times that the initial penalty factor was reduced by ALMParams::Σ₀_lower and that the initial tolerance was increased by ALMParams::ε₀_increase because the inner solver failed to converge in the first ALM iteration.

If this number is greater than zero, consider lowering the initial penalty factor ALMParams::Σ₀ or ALMParams::σ₀ or increasing the initial tolerance ALMParams::ε₀ (or both).

unsigned penalty_reduced The number of times that the penalty update factor ALMParams::Δ was reduced, that the tolerance update factor ALMParams::ρ was increased, and that an ALM iteration had to be restarted with a lower penalty factor and a higher tolerance because the inner solver failed to converge (not applicable in the first ALM iteration).

If this number is greater than zero, consider lowerering the penalty update factor ALMParams::Δ or increasing the tolerance update factor (or both). Lowering the initial penalty factor could help as well.

unsigned inner_convergence_failures The total number of times that the inner solver failed to converge.
real_t ε Final primal tolerance that was reached, depends on the stopping criterion used by the inner solver, see for example PANOCStopCrit.
real_t δ Final dual tolerance or constraint violation that was reached:

\[ \delta = \| \Pi_D\left(g(x^k) + \Sigma^{-1}y\right) \|_\infty \]

real_t norm_penalty 2-norm of the final penalty factors \( \| \Sigma \|_2 \).
SolverStatus status Whether the solver converged or not.
See also
SolverStatus
InnerStatsAccumulator< typename Stats > inner The statistics of the inner solver invocations, accumulated over all ALM iterations.

Member Typedef Documentation

◆ Params

using Params = ALMParams

Definition at line 84 of file decl/alm.hpp.

◆ InnerSolver

using InnerSolver = InnerSolverT

Definition at line 85 of file decl/alm.hpp.

Constructor & Destructor Documentation

◆ ALMSolver() [1/2]

ALMSolver ( Params  params,
InnerSolver &&  inner_solver 
)
inline

Definition at line 134 of file decl/alm.hpp.

◆ ALMSolver() [2/2]

ALMSolver ( Params  params,
const InnerSolver inner_solver 
)
inline

Definition at line 137 of file decl/alm.hpp.

Member Function Documentation

◆ operator()()

ALMSolver< InnerSolverT >::Stats operator() ( const Problem problem,
rvec  y,
rvec  x 
)

Definition at line 16 of file alm.hpp.

+ Here is the call graph for this function:

◆ get_name()

std::string get_name ( ) const
inline

Definition at line 142 of file decl/alm.hpp.

+ Here is the caller graph for this function:

◆ stop()

void stop ( )
inline

Abort the computation and return the result so far.

Can be called from other threads or signal handlers.

Definition at line 148 of file decl/alm.hpp.

◆ get_params()

const Params & get_params ( ) const
inline

Definition at line 150 of file decl/alm.hpp.

+ Here is the caller graph for this function:

Member Data Documentation

◆ params

Params params
private

Definition at line 153 of file decl/alm.hpp.

◆ inner_solver

InnerSolver inner_solver

Definition at line 156 of file decl/alm.hpp.


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