alpaqa 0.0.1
Nonconvex constrained optimization
Classes | Namespaces
decl/alm.hpp File Reference
#include <alpaqa/inner/decl/panoc-fwd.hpp>
#include <alpaqa/util/problem.hpp>
#include <alpaqa/util/solverstatus.hpp>
#include <chrono>
#include <string>
+ Include dependency graph for decl/alm.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ALMParams
 Parameters for the Augmented Lagrangian solver. More...
 
class  ALMSolver< InnerSolverT >
 Augmented Lagrangian Method solver. More...
 
struct  ALMSolver< InnerSolverT >::Stats
 

Namespaces

namespace  alpaqa
 

Class Documentation

◆ alpaqa::ALMParams

struct alpaqa::ALMParams
+ Collaboration diagram for ALMParams:
Class Members
real_t ε Primal tolerance.
real_t δ Dual tolerance.
real_t Δ Factor used in updating the penalty parameters.
real_t Δ_lower Factor to reduce ALMParams::Δ when inner convergence fails.
real_t Σ₀ Initial penalty parameter.

When set to zero (which is the default), it is computed automatically, based on the constraint violation in the starting point and the parameter ALMParams::σ₀.

real_t σ₀ Initial penalty parameter factor.

Active if ALMParams::Σ₀ is set to zero.

real_t Σ₀_lower Factor to reduce the initial penalty factor by if convergence fails in in the first iteration.
real_t ε₀ Initial primal tolerance.
real_t ε₀_increase Factor to increase the initial primal tolerance if convergence fails in the first iteration.
real_t ρ Update factor for primal tolerance.
real_t ρ_increase Factor to increase the primal tolerance update factor by if convergence fails.
real_t θ Error tolerance for penalty increase.
real_t M Lagrange multiplier bound.
real_t Σ_max Maximum penalty factor.
real_t Σ_min Minimum penalty factor (used during initialization).
unsigned int max_iter Maximum number of outer ALM iterations.
microseconds max_time Maximum duration.
unsigned max_num_initial_retries How many times can the initial penalty ALMParams::Σ₀ or ALMParams::σ₀ and the initial primal tolerance ALMParams::ε₀ be reduced.
unsigned max_num_retries How many times can the penalty update factor ALMParams::Δ and the primal tolerance factor ALMParams::ρ be reduced.
unsigned max_total_num_retries Combined limit for ALMParams::max_num_initial_retries and ALMParams::max_num_retries.
unsigned print_interval When to print progress.

If set to zero, nothing will be printed. If set to N != 0, progress is printed every N iterations.

bool preconditioning Apply preconditioning to the problem, based on the gradients in the starting point.
bool single_penalty_factor Use one penalty factor for all m constraints.

◆ 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.