AutoPas  3.0.0
Loading...
Searching...
No Matches
PredictiveTuning.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <limits>
10#include <set>
11#include <utility>
12
21#include "autopas/utils/Math.h"
23
24namespace autopas {
25
44 public:
49 using PredictionsType = std::unordered_map<Configuration, long, ConfigHash>;
50
59 PredictiveTuning(double relativeOptimum, unsigned int maxTuningIterationsWithoutTest,
60 unsigned int testsUntilFirstPrediction, ExtrapolationMethodOption extrapolationMethodOption,
61 const std::string &outputSuffix = "");
62
63 TuningStrategyOption getOptionType() const override;
64
65 void addEvidence(const Configuration &configuration, const Evidence &evidence) override;
66
67 bool reset(size_t iteration, size_t tuningPhase, std::vector<Configuration> &configQueue,
68 const autopas::EvidenceCollection &evidenceCollection) override;
69
70 bool optimizeSuggestions(std::vector<Configuration> &configQueue,
71 const EvidenceCollection &evidenceCollection) override;
72
73 void rejectConfiguration(const Configuration &configuration, bool indefinitely) override;
74
85 PredictiveTuning::PredictionsType calculatePredictions(size_t iteration, size_t tuningPhase,
86 const std::vector<Configuration> &configurations,
87 const autopas::EvidenceCollection &evidenceCollection);
88
89 private:
94 long linePrediction(size_t iteration, size_t tuningPhase, const Configuration &configuration,
95 const std::vector<Evidence> &evidenceVec);
100 long linearRegression(size_t iteration, size_t tuningPhase, const Configuration &configuration,
101 const std::vector<Evidence> &evidenceVec);
106 long newtonPolynomial(size_t iteration, size_t tuningPhase, const Configuration &configuration,
107 const std::vector<Evidence> &evidenceVec);
108
112 long lastResult(size_t tuningPhase, const Configuration &configuration, const std::vector<Evidence> &evidenceVec);
113
117 constexpr static long _predictionErrorValue{std::numeric_limits<long>::max()};
118
122 constexpr static long _predictionOverflowValue{std::numeric_limits<long>::max() - 1};
123
127 constexpr static long _predictionUnderflowValue{1l};
128
138 std::unordered_map<Configuration, std::vector<double>, ConfigHash> _predictionFunctionParameters{};
142 std::set<Configuration> _tooLongNotTestedSearchSpace{};
146 double _relativeOptimumRange{1.2};
150 unsigned int _maxTuningPhasesWithoutTest{100};
151
155 ExtrapolationMethodOption _extrapolationMethod{ExtrapolationMethodOption::linearRegression};
161 unsigned int _minNumberOfEvidence{3};
162
163 PredictionLogger _predictionLogger;
164};
165
166} // namespace autopas
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:24
Class to manage all evidence.
Definition: EvidenceCollection.h:21
Helper class that associates a measurement with the iteration when it was taken.
Definition: Evidence.h:15
In every tuning phase, this strategy makes a prediction about the run time for every configuration.
Definition: PredictiveTuning.h:43
bool optimizeSuggestions(std::vector< Configuration > &configQueue, const EvidenceCollection &evidenceCollection) override
Optimizes the queue of configurations to process.
Definition: PredictiveTuning.cpp:351
void rejectConfiguration(const Configuration &configuration, bool indefinitely) override
Notify the strategy about a configuration that is (currently) invalid and thus can potentially be dro...
Definition: PredictiveTuning.cpp:428
bool reset(size_t iteration, size_t tuningPhase, std::vector< Configuration > &configQueue, const autopas::EvidenceCollection &evidenceCollection) override
Reset all internal parameters to the beginning of a new tuning phase.
Definition: PredictiveTuning.cpp:357
std::unordered_map< Configuration, long, ConfigHash > PredictionsType
Shorthand for the type used to store predictions in.
Definition: PredictiveTuning.h:49
TuningStrategyOption getOptionType() const override
Get this object's associated TuningStrategyOption type.
Definition: PredictiveTuning.cpp:434
PredictiveTuning::PredictionsType calculatePredictions(size_t iteration, size_t tuningPhase, const std::vector< Configuration > &configurations, const autopas::EvidenceCollection &evidenceCollection)
For all given configuration use the chosen extrapolation method to calculate a prediction based on th...
Definition: PredictiveTuning.cpp:43
void addEvidence(const Configuration &configuration, const Evidence &evidence) override
Notifies the strategy about empirically collected information for the given configuration.
Definition: PredictiveTuning.cpp:420
Interface for tuning strategies for the auto tuner.
Definition: TuningStrategyInterface.h:23
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:32