Augmented Lagrangian solver#
- group grp_ALMSolver
Augmented Lagrangian Method solver (ALM).
-
template<class InnerSolverT>
class ALMSolver# - #include <alpaqa/outer/alm.hpp>
Augmented Lagrangian Method solver.
Public Functions
-
inline ALMSolver(Params params, InnerSolver &&inner_solver)#
-
inline ALMSolver(Params params, const InnerSolver &inner_solver)#
-
template<class P>
inline Stats operator()(const P &problem, rvec x, rvec y, std::optional<rvec> Σ = std::nullopt)#
-
inline std::string get_name() const#
-
inline void stop()#
Abort the computation and return the result so far.
Can be called from other threads or signal handlers.
-
struct Stats#
- #include <alpaqa/outer/alm.hpp>
Public Members
-
unsigned outer_iterations = 0#
Total number of outer ALM iterations (i.e.
the number of times that the inner solver was invoked).
-
std::chrono::nanoseconds elapsed_time = {}#
Total elapsed time.
-
unsigned inner_convergence_failures = 0#
The total number of times that the inner solver failed to converge.
-
real_t ε = inf<config_t>#
Final primal tolerance that was reached, depends on the stopping criterion used by the inner solver, see for example PANOCStopCrit.
-
real_t δ = inf<config_t>#
Final dual tolerance or constraint violation that was reached:
\[ \delta = \| \Pi_D\left(g(x^k) + \Sigma^{-1}y\right) \|_\infty \]
-
SolverStatus status = SolverStatus::Busy#
Whether the solver converged or not.
See also
-
InnerStatsAccumulator<typename InnerSolver::Stats> inner = {}#
The statistics of the inner solver invocations, accumulated over all ALM iterations.
-
unsigned outer_iterations = 0#
-
inline ALMSolver(Params params, InnerSolver &&inner_solver)#
-
template<class InnerSolverT>