13#if !defined(ULTRA_MODEL_MEASUREMENTS_H)
14# error "Don't include this file directly, include the specific .h instead"
17#if !defined(ULTRA_MODEL_MEASUREMENTS_TCC)
18#define ULTRA_MODEL_MEASUREMENTS_TCC
21model_measurements<F>::model_measurements(
const F &f,
double a)
31bool model_measurements<F>::empty() const noexcept
33 return !fitness.has_value() && !
accuracy.has_value();
46 const model_measurements<F> &rhs)
noexcept
48 if (lhs.fitness <= rhs.fitness && lhs.accuracy <= rhs.accuracy
49 && (lhs.fitness < rhs.fitness || lhs.accuracy < rhs.accuracy))
50 return std::partial_ordering::less;
51 if (lhs.fitness >= rhs.fitness && lhs.accuracy >= rhs.accuracy
52 && (lhs.fitness > rhs.fitness || lhs.accuracy > rhs.accuracy))
53 return std::partial_ordering::greater;
55 return std::partial_ordering::equivalent;
57 return std::partial_ordering::unordered;
70bool model_measurements<F>::load(std::istream &is)
72 model_measurements tmp;
75 if (!(is >> has_fitness))
79 if (F tmp_fitness; !ultra::load(is, &tmp_fitness))
82 tmp.fitness = tmp_fitness;
85 unsigned has_accuracy;
86 if (!(is >> has_accuracy))
90 if (
double tmp_accuracy; !load_float_from_stream(is, &tmp_accuracy))
93 tmp.accuracy = tmp_accuracy;
108bool model_measurements<F>::save(std::ostream &os)
const
110 if (fitness.has_value())
124 if (!save_float_to_stream(os, *accuracy))
double accuracy(const P &p, const dataframe &d)
Definition metrics.h:47
auto operator<=>(const model_measurements< F > &lhs, const model_measurements< F > &rhs) noexcept
Definition model_measurements.tcc:45
bool save(std::ostream &out, F f)
Definition fitness.h:151