15template <
class InnerSolverStats>
20template <Config Conf = DefaultConfig>
53 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
68template <
class InnerSolverT>
75 using Problem =
typename InnerSolver::Problem;
113 std::optional<rvec> Σ = std::nullopt);
116 std::optional<rvec> Σ = std::nullopt) {
136 std::ostream *
os = &std::cout;
std::string get_name() const
detail::ALMHelpers< config_t > Helpers
ALMSolver(Params params, const InnerSolver &inner_solver)
real_t δ
Final dual tolerance or constraint violation that was reached:
ALMParams< config_t > Params
real_t norm_penalty
2-norm of the final penalty factors .
typename InnerSolver::Problem Problem
std::chrono::nanoseconds elapsed_time
Total elapsed time.
InnerStatsAccumulator< typename InnerSolver::Stats > inner
The statistics of the inner solver invocations, accumulated over all ALM iterations.
unsigned inner_convergence_failures
The total number of times that the inner solver failed to converge.
void stop()
Abort the computation and return the result so far.
real_t ε
Final primal tolerance that was reached, depends on the stopping criterion used by the inner solver,...
const Params & get_params() const
unsigned outer_iterations
Total number of outer ALM iterations (i.e.
Stats operator()(const P &problem, rvec x, rvec y, std::optional< rvec > Σ=std::nullopt)
ALMSolver(Params params, InnerSolver &&inner_solver)
Stats operator()(const Problem &problem, rvec x, rvec y, std::optional< rvec > Σ=std::nullopt)
SolverStatus status
Whether the solver converged or not.
#define USING_ALPAQA_CONFIG(Conf)
#define ALPAQA_IF_QUADF(...)
#define ALPAQA_IF_LONGD(...)
#define ALPAQA_IF_FLOAT(...)
#define USING_ALPAQA_CONFIG_TEMPLATE(Conf)
#define ALPAQA_EXPORT_EXTERN_TEMPLATE(...)
real_t initial_penalty_factor
real_t tolerance_update_factor
real_t penalty_update_factor
std::chrono::nanoseconds max_time
real_t rel_penalty_increase_threshold
bool single_penalty_factor
Parameters for the Augmented Lagrangian solver.
SolverStatus
Exit status of a numerical solver such as ALM or PANOC.
typename Conf::real_t real_t
Double-precision double configuration.
Single-precision float configuration.
long double configuration.