Sleipnir C++ API
Loading...
Searching...
No Matches
feasibility_restoration_cycle_detector.hpp
1// Copyright (c) Sleipnir contributors
2
3#pragma once
4
5#include <limits>
6
7namespace slp {
8
19template <typename Scalar>
21 public:
25 void record_entry(Scalar constraint_violation) {
26 ++m_num_entries;
27 if (constraint_violation < Scalar(0.9) * m_min_entry_violation) {
28 m_min_entry_violation = constraint_violation;
29 m_num_stalled_entries = 0;
30 } else {
31 ++m_num_stalled_entries;
32 }
33 }
34
47 bool is_cycling() const {
48 return m_num_entries > 5 && m_num_stalled_entries >= 2;
49 }
50
51 private:
52 int m_num_entries = 0;
53 Scalar m_min_entry_violation = std::numeric_limits<Scalar>::infinity();
54 int m_num_stalled_entries = 0;
55};
56
57} // namespace slp
Definition feasibility_restoration_cycle_detector.hpp:20
void record_entry(Scalar constraint_violation)
Definition feasibility_restoration_cycle_detector.hpp:25
bool is_cycling() const
Definition feasibility_restoration_cycle_detector.hpp:47