PANOC-ALM main
Nonconvex constrained optimization
panoc-stop-crit.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <ostream>
4#include <stdexcept>
5
6namespace pa {
7
8enum class PANOCStopCrit {
14 ApproxKKT = 0,
52 FPRNorm,
93 Ipopt,
94};
95
96inline const char *enum_name(PANOCStopCrit s) {
97 switch (s) {
98 case PANOCStopCrit::ApproxKKT: return "ApproxKKT";
99 case PANOCStopCrit::ApproxKKT2: return "ApproxKKT2";
100 case PANOCStopCrit::ProjGradNorm: return "ProjGradNorm";
101 case PANOCStopCrit::ProjGradNorm2: return "ProjGradNorm2";
102 case PANOCStopCrit::ProjGradUnitNorm: return "ProjGradUnitNorm";
103 case PANOCStopCrit::ProjGradUnitNorm2: return "ProjGradUnitNorm2";
104 case PANOCStopCrit::FPRNorm: return "FPRNorm";
105 case PANOCStopCrit::FPRNorm2: return "FPRNorm2";
106 case PANOCStopCrit::Ipopt: return "Ipopt";
107 }
108 throw std::out_of_range("invalid value for pa::PANOCStopCrit");
109}
110
111inline std::ostream &operator<<(std::ostream &os, PANOCStopCrit s) {
112 return os << enum_name(s);
113}
114
115} // namespace pa
Definition: alm.hpp:9
@ ProjGradUnitNorm
∞-norm of the projected gradient with unit step size:
@ ProjGradNorm
∞-norm of the projected gradient with step size γ:
@ Ipopt
The stopping criterion used by Ipopt, see https://link.springer.com/article/10.1007/s10107-004-0559-y...
@ FPRNorm2
2-norm of fixed point residual:
@ ProjGradNorm2
2-norm of the projected gradient with step size γ:
@ ApproxKKT
Find an ε-approximate KKT point in the ∞-norm:
@ FPRNorm
∞-norm of fixed point residual:
@ ApproxKKT2
Find an ε-approximate KKT point in the 2-norm:
@ ProjGradUnitNorm2
2-norm of the projected gradient with unit step size:
std::ostream & operator<<(std::ostream &os, PANOCStopCrit s)
const char * enum_name(PANOCStopCrit s)