20template <
typename Scalar>
62 c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>()} {
71template <
typename Scalar>
80 m_filter.emplace_back(std::numeric_limits<Scalar>::infinity(),
89 m_filter.emplace_back(std::numeric_limits<Scalar>::infinity(),
98 erase_if(m_filter, [&](
const auto& elem) {
99 return entry.
cost <= elem.cost &&
103 m_filter.push_back(entry);
111 erase_if(m_filter, [&](
const auto& elem) {
112 return entry.cost <= elem.cost &&
113 entry.constraint_violation <= elem.constraint_violation;
116 m_filter.push_back(entry);
140 add(std::move(entry));
160 Scalar ϕ =
pow(α, Scalar(1.5));
166 return std::ranges::all_of(m_filter, [&](
const auto& elem) {
167 return entry.
cost <= elem.cost - ϕ * γ_cost * elem.constraint_violation ||
169 (Scalar(1) - ϕ * γ_constraint) * elem.constraint_violation;
179 static constexpr Scalar γ_cost{1e-8};
180 static constexpr Scalar γ_constraint{1e-5};
void add(const FilterEntry< Scalar > &entry)
Adds a new entry to the filter.
Definition filter.hpp:96
const FilterEntry< Scalar > & back() const
Returns the most recently added filter entry.
Definition filter.hpp:176
bool is_acceptable(const FilterEntry< Scalar > &entry, Scalar α)
Returns true if the given entry is acceptable to the filter.
Definition filter.hpp:152
Filter()
Constructs an empty filter.
Definition filter.hpp:78
bool try_add(const FilterEntry< Scalar > &entry, Scalar α)
Returns true if the given iterate is accepted by the filter.
Definition filter.hpp:124
bool try_add(FilterEntry< Scalar > &&entry, Scalar α)
Returns true if the given iterate is accepted by the filter.
Definition filter.hpp:138
Scalar max_constraint_violation
The maximum constraint violation.
Definition filter.hpp:75
void reset()
Resets the filter.
Definition filter.hpp:85
void add(FilterEntry< Scalar > &&entry)
Adds a new entry to the filter.
Definition filter.hpp:109
wpi::util::SmallVector< T > small_vector
Definition small_vector.hpp:10
Definition expression_graph.hpp:11
Variable< Scalar > log(const Variable< Scalar > &x)
log() for Variables.
Definition variable.hpp:503
Variable< Scalar > pow(const ScalarLike auto &base, const Variable< Scalar > &power)
pow() for Variables.
Definition variable.hpp:522
Filter entry consisting of cost and constraint violation.
Definition filter.hpp:21
FilterEntry(Scalar f)
Constructs a Newton's method filter entry.
Definition filter.hpp:43
Scalar cost
The cost function's value.
Definition filter.hpp:26
FilterEntry(Scalar f, DenseVector &s, const DenseVector &c_e, const DenseVector &c_i, Scalar μ)
Constructs an interior-point method filter entry.
Definition filter.hpp:59
Eigen::Vector< Scalar, Eigen::Dynamic > DenseVector
Type alias for dense vector.
Definition filter.hpp:23
constexpr FilterEntry()=default
Scalar constraint_violation
The constraint violation.
Definition filter.hpp:29
constexpr FilterEntry(Scalar cost, Scalar constraint_violation)
Constructs a FilterEntry.
Definition filter.hpp:37
FilterEntry(Scalar f, const DenseVector &c_e)
Constructs a Sequential Quadratic Programming filter entry.
Definition filter.hpp:49