AutoPas  3.0.0
Loading...
Searching...
No Matches
OptimumSelector.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <algorithm>
10#include <numeric>
11#include <vector>
12
15
20
26inline long minValue(const std::vector<long> &values) { return *std::min_element(values.cbegin(), values.cend()); }
27
33inline long meanValue(const std::vector<long> &values) {
34 return std::accumulate(values.cbegin(), values.cend(), 0l) / static_cast<long>(values.size());
35}
36
42template <class T>
43inline T medianValue(std::vector<T> values) {
44 if (values.empty()) return 0;
45
46 std::sort(values.begin(), values.end());
48 return values[(values.size() - 1) / 2];
49}
50
57inline long optimumValue(const std::vector<long> &values, SelectorStrategyOption strategy) {
58 if (values.empty()) {
59 return 0l;
60 }
61
62 switch (strategy) {
63 case SelectorStrategyOption::fastestAbs: {
64 return minValue(values);
65 }
66 case SelectorStrategyOption::fastestMean: {
67 return meanValue(values);
68 }
69 case SelectorStrategyOption::fastestMedian: {
70 return medianValue(values);
71 }
72 // no default to get appropriate compiler warnings
73 }
74
75 autopas::utils::ExceptionHandler::exception("OptionSelector: Unknown selector strategy {}!", strategy);
76
77 return 0;
78}
79
80} // namespace autopas::OptimumSelector
static void exception(const Exception e)
Handle an exception derived by std::exception.
Definition: ExceptionHandler.h:63
Collection of functions for selecting the optimum value out of a vector of values according to a give...
Definition: OptimumSelector.h:19
T medianValue(std::vector< T > values)
Median value.
Definition: OptimumSelector.h:43
long minValue(const std::vector< long > &values)
Minimal value.
Definition: OptimumSelector.h:26
long optimumValue(const std::vector< long > &values, SelectorStrategyOption strategy)
Optimal value according to passed strategy.
Definition: OptimumSelector.h:57
long meanValue(const std::vector< long > &values)
Arithmetic mean.
Definition: OptimumSelector.h:33