39 double constant = 1.0;
56 std::vector<std::pair<double, double>>
knots;
77 const std::vector<std::optional<double>>& raw);
88 enum class Mode { Categorical, Numeric };
100 [[nodiscard]] std::size_t
size() const noexcept {
101 return alternatives_.size();
104 [[nodiscard]]
bool empty() const noexcept {
return alternatives_.empty(); }
106 [[nodiscard]]
const std::vector<std::string>&
alternatives() const noexcept {
107 return alternatives_;
116 [[nodiscard]] std::size_t
index_of(
const std::string& name)
const;
131 bool ignore_missing =
false);
134 [[nodiscard]]
Mode mode() const noexcept {
return mode_; }
139 [[nodiscard]]
const std::vector<RatingCategory>&
categories() const noexcept {
163 void set_rating(
const std::string& alt,
const std::string& category_id);
167 [[nodiscard]] std::optional<std::string>
rating(
168 const std::string& alt)
const;
178 [[nodiscard]] std::optional<double>
value(
const std::string& alt)
const;
195 [[nodiscard]] std::optional<double> intensity_at(std::size_t i)
const;
197 const std::string&
id)
const;
199 std::vector<std::string> alternatives_;
200 Mode mode_ = Mode::Numeric;
201 std::vector<RatingCategory> categories_;
202 std::vector<std::optional<std::string>> categorical_;
203 std::vector<std::optional<double>> numeric_;
Ratings table over named alternatives for one (wrt node, dest cluster).
Definition ratings.hpp:85
const std::vector< std::string > & alternatives() const noexcept
Definition ratings.hpp:106
RatingsPrioritizer()=default
Default-constructs an empty numeric ratings table.
std::size_t size() const noexcept
Definition ratings.hpp:100
const ScoreInterpreter & interpreter() const noexcept
Definition ratings.hpp:149
void set_mode(Mode mode)
Sets storage mode (does not clear the other mode's data).
Definition ratings.hpp:136
RatingsPrioritizer(std::vector< std::string > alternatives)
Constructs a table with the given alternative names.
void set_value(const std::string &alt, double raw)
Sets a numeric raw value for alt.
void set_interpreter(ScoreInterpreter interpreter)
Sets the numeric score interpreter.
Definition ratings.hpp:153
std::optional< double > value(const std::string &alt) const
Mode
How alternative ratings are stored.
Definition ratings.hpp:88
std::size_t index_of(const std::string &name) const
const std::vector< RatingCategory > & categories() const noexcept
Definition ratings.hpp:139
void clear_rating(const std::string &alt)
Clears the categorical rating for alt.
void set_categories(std::vector< RatingCategory > categories)
Replaces the category list.
void set_rating(const std::string &alt, const std::string &category_id)
Sets a categorical rating for alt.
bool has_alternative(const std::string &name) const
Mode mode() const noexcept
Definition ratings.hpp:134
void clear_value(const std::string &alt)
Clears the numeric value for alt.
std::optional< std::string > rating(const std::string &alt) const
void remove_alternative(const std::string &name, bool ignore_missing=false)
Removes an alternative and its rating.
Vector priorities() const
L1-normalized priorities over present (non-missing) scores.
bool empty() const noexcept
Definition ratings.hpp:104
Vector scores() const
Intensity scores in [0, 1] (missing → 0).
void add_alternative(const std::string &name, bool ignore_existing=false)
Appends an alternative with a missing rating.
One-dimensional array of doubles with element-wise arithmetic.
Definition matrix.hpp:34
Dense row-major vectors and matrices.
Analytic Network Process computational library.
Definition eigen.hpp:14
std::variant< IdentityInterpreter, DivideByMaxInterpreter, DivideByConstantInterpreter, MinMaxNormalizeInterpreter, PiecewiseLinearInterpreter > ScoreInterpreter
Declarative raw-value → [0, 1] interpreter (JSON-serializable).
Definition ratings.hpp:67
std::vector< std::optional< double > > apply_score_interpreter(const ScoreInterpreter &interpreter, const std::vector< std::optional< double > > &raw)
Apply interpreter to a column of optional raw values.
Divide each raw value by a fixed positive constant.
Definition ratings.hpp:38
Divide each raw value by the max among present values.
Definition ratings.hpp:35
Pass-through interpreter (values already in [0, 1]).
Definition ratings.hpp:32
Map the column's [min, max] onto [0, 1].
Definition ratings.hpp:47
Piecewise-linear map from raw value to [0, 1] via sorted knots.
Definition ratings.hpp:54
std::vector< std::pair< double, double > > knots
Knots (x, y); sorted by x ascending on use.
Definition ratings.hpp:56
A named rating category with an associated score in [0, 1].
Definition ratings.hpp:22
std::string id
Stable id used in rating assignments (e.g.
Definition ratings.hpp:24
double value
Score in [0, 1].
Definition ratings.hpp:28
std::string label
Display label (e.g.
Definition ratings.hpp:26