AutoPas  3.0.0
Loading...
Searching...
No Matches
BayesianSearch.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <limits>
10#include <map>
11#include <set>
12#include <unordered_set>
13
22
23namespace autopas {
24
34 constexpr static size_t maxAttempts = 10;
38 constexpr static double secondsPerMicroseconds = 1. / 1000000.;
39
40 public:
56 explicit BayesianSearch(
57 const InteractionTypeOption &interactionType,
58 const std::set<ContainerOption> &allowedContainerOptions = ContainerOption::getAllOptions(),
59 const NumberSet<double> &allowedCellSizeFactors = NumberInterval<double>(1., 2.),
60 const std::set<TraversalOption> &allowedTraversalOptions = TraversalOption::getAllOptions(),
61 const std::set<LoadEstimatorOption> &allowedLoadEstimatorOptions = LoadEstimatorOption::getAllOptions(),
62 const std::set<DataLayoutOption> &allowedDataLayoutOptions = DataLayoutOption::getAllOptions(),
63 const std::set<Newton3Option> &allowedNewton3Options = Newton3Option::getAllOptions(),
64 const std::set<VectorizationPatternOption> &allowedVecPatternOptions =
65 VectorizationPatternOption::getAllOptions(),
66 size_t maxEvidence = 10,
67 AcquisitionFunctionOption predAcqFunction = AcquisitionFunctionOption::upperConfidenceBound,
68 size_t predNumLHSamples = 1000, unsigned long seed = std::random_device()());
69
70 TuningStrategyOption getOptionType() const override;
71
72 void addEvidence(const Configuration &configuration, const Evidence &evidence) override;
73
74 bool reset(size_t iteration, size_t tuningPhase, std::vector<Configuration> &configQueue,
75 const autopas::EvidenceCollection &evidenceCollection) override;
76
77 bool optimizeSuggestions(std::vector<Configuration> &configQueue,
78 const EvidenceCollection &evidenceCollection) override;
79
80 bool needsDomainSimilarityStatistics() const override;
81
82 void rejectConfiguration(const Configuration &configuration, bool indefinitely) override;
83
88 bool searchSpaceIsEmpty() const;
89
90 private:
97 std::vector<FeatureVector> sampleAcquisitions(size_t n, AcquisitionFunctionOption af);
98
99 const InteractionTypeOption _interactionType;
100
101 std::set<ContainerOption> _containerOptionsSet;
102 std::vector<FeatureVector::ContainerTraversalEstimatorOption> _containerTraversalEstimatorOptions;
103 std::vector<DataLayoutOption> _dataLayoutOptions;
104 std::vector<VectorizationPatternOption> _vecPatternOptions;
105 std::vector<Newton3Option> _newton3Options;
106 std::unique_ptr<NumberSet<double>> _cellSizeFactors;
107 FeatureVectorEncoder _encoder;
108
112 std::unordered_set<FeatureVector, ConfigHash> _invalidConfigs;
113
114 Random _rng;
115 GaussianProcess _gaussianProcess;
116 size_t _maxEvidence;
117 AcquisitionFunctionOption _predAcqFunction;
118 size_t _predNumLHSamples;
119};
120
121} // namespace autopas
Assume that the stochastic distribution of the execution time corresponds to a Gaussian Process.
Definition: BayesianSearch.h:30
void addEvidence(const Configuration &configuration, const Evidence &evidence) override
Notifies the strategy about empirically collected information for the given configuration.
Definition: BayesianSearch.cpp:153
bool optimizeSuggestions(std::vector< Configuration > &configQueue, const EvidenceCollection &evidenceCollection) override
Optimizes the queue of configurations to process.
Definition: BayesianSearch.cpp:68
TuningStrategyOption getOptionType() const override
Get this object's associated TuningStrategyOption type.
Definition: BayesianSearch.cpp:168
bool searchSpaceIsEmpty() const
Indicate if the search space contains any configurations.
Definition: BayesianSearch.cpp:140
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: BayesianSearch.cpp:160
bool needsDomainSimilarityStatistics() const override
Indicate whether the strategy needs domain similarity statistics.
Definition: BayesianSearch.cpp:166
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: BayesianSearch.cpp:147
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:26
Class to manage all evidence.
Definition: EvidenceCollection.h:24
Helper class that associates a measurement with the iteration when it was taken.
Definition: Evidence.h:15
Encoder to convert FeatureVector from and to Eigen::Vector.
Definition: FeatureVectorEncoder.h:22
Gaussian process is a stochastical model.
Definition: GaussianProcess.h:30
Class describing an interval.
Definition: NumberInterval.h:15
Virtual class describing a finite or infinite set of numbers.
Definition: NumberSet.h:22
Class for random algorithms.
Definition: Random.h:22
Interface for tuning strategies for the auto tuner.
Definition: TuningStrategyInterface.h:23
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:34