#include <panoc-alm/inner/decl/panoc-fwd.hpp>#include <panoc-alm/util/problem.hpp>#include <panoc-alm/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 | pa |
| struct pa::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. |
| struct pa::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.
|
| InnerStatsAccumulator< typename Stats > | inner | The statistics of the inner solver invocations, accumulated over all ALM iterations. |