template<typename Scalar>
class slp::FeasibilityRestorationCycleDetector< Scalar >
Detects cycling between the normal phase and feasibility restoration.
Feasibility restoration normally stops once it sufficiently reduces the constraint violation, but the normal phase can then drive the constraint violation back up, so the solver cycles between them. On infeasible problems, this prevents feasibility restoration from ever converging to a minimizer of the constraint violation, which is the certificate of local infeasibility.
- Template Parameters
-
template<typename Scalar >
Returns true if the solver is cycling, in which case feasibility restoration should be run to convergence.
The solver is cycling if several consecutive entries didn't improve on the smallest constraint violation at entry.
This is never true during the first few entries. Early entries often fail to improve while the solver is still far from a feasible region, and converging feasibility restoration there can find a local minimizer of the constraint violation even though the problem is feasible.
- Returns
- True if the solver is cycling.