11#include <gch/small_vector.hpp>
20template <
typename Scalar>
80template <
typename Scalar>
92 m_filter.emplace_back(std::numeric_limits<Scalar>::infinity(),
101 m_filter.emplace_back(std::numeric_limits<Scalar>::infinity(),
113 m_filter.push_back(
entry);
124 m_filter.push_back(
entry);
172 Scalar
ϕ = pow(
α, Scalar(1.5));
175 return std::ranges::all_of(m_filter, [&](
const auto&
elem) {
176 return entry.cost <=
elem.cost -
ϕ * γ_cost *
elem.constraint_violation;
180 return std::ranges::all_of(m_filter, [&](
const auto&
elem) {
182 elem.cost -
ϕ * γ_cost *
elem.constraint_violation ||
183 entry.constraint_violation <=
184 (Scalar(1) -
ϕ * γ_constraint) *
elem.constraint_violation;
195 static constexpr Scalar γ_cost{1
e-8};
196 static constexpr Scalar γ_constraint{1e-5};
198 gch::small_vector<FilterEntry<Scalar>> m_filter;
void add(const FilterEntry< Scalar > &entry)
Definition filter.hpp:108
const FilterEntry< Scalar > & back() const
Definition filter.hpp:192
bool is_acceptable(const FilterEntry< Scalar > &entry, Scalar α)
Definition filter.hpp:160
Filter()
Constructs an empty filter.
Definition filter.hpp:90
bool try_add(const FilterEntry< Scalar > &entry, Scalar α)
Definition filter.hpp:132
static constexpr Scalar min_constraint_violation
The minimum constraint violation.
Definition filter.hpp:84
bool try_add(FilterEntry< Scalar > &&entry, Scalar α)
Definition filter.hpp:146
Scalar max_constraint_violation
The maximum constraint violation.
Definition filter.hpp:87
void reset()
Resets the filter.
Definition filter.hpp:97
void add(FilterEntry< Scalar > &&entry)
Definition filter.hpp:119
Definition intrusive_shared_ptr.hpp:27
FilterEntry(Scalar f)
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 μ)
Definition filter.hpp:59
constexpr bool dominated_by(const FilterEntry< Scalar > &entry) const
Definition filter.hpp:69
Eigen::Vector< Scalar, Eigen::Dynamic > DenseVector
Type alias for dense vector.
Definition filter.hpp:23
Scalar constraint_violation
The constraint violation.
Definition filter.hpp:29
constexpr FilterEntry(Scalar cost, Scalar constraint_violation)
Definition filter.hpp:37
FilterEntry(Scalar f, const DenseVector &c_e)
Definition filter.hpp:49