Sleipnir C++ API
Loading...
Searching...
No Matches
slp::FeasibilityRestorationCycleDetector< Scalar > Class Template Reference

#include </home/runner/work/Sleipnir/Sleipnir/include/sleipnir/optimization/solver/util/feasibility_restoration_cycle_detector.hpp>

Public Member Functions

void record_entry (Scalar constraint_violation)
 
bool is_cycling () const
 

Detailed Description

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
ScalarScalar type.

Member Function Documentation

◆ is_cycling()

template<typename Scalar >
bool slp::FeasibilityRestorationCycleDetector< Scalar >::is_cycling ( ) const
inline

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.

◆ record_entry()

template<typename Scalar >
void slp::FeasibilityRestorationCycleDetector< Scalar >::record_entry ( Scalar  constraint_violation)
inline

Records an entry into feasibility restoration.

Parameters
constraint_violationThe constraint violation at entry.

The documentation for this class was generated from the following file: