AutoPas  3.0.0
Loading...
Searching...
No Matches
BayesianClusterSearch.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
21
22namespace autopas {
23
32 constexpr static size_t maxAttempts = 10;
36 constexpr static double secondsPerMicroseconds = 1. / 1000000.;
41 constexpr static size_t continuousDims = FeatureVectorEncoder::tunableContinuousDims + 1;
45 constexpr static double sigma = 0.01;
46
50 constexpr static double iterationScalePerMaxEvidence = 5.;
51
57 constexpr static double suggestedMaxDistance = 7.;
58
59 public:
76 explicit BayesianClusterSearch(
77 const InteractionTypeOption &interactionType,
78 const std::set<ContainerOption> &allowedContainerOptions = ContainerOption::getAllOptions(),
79 const NumberSet<double> &allowedCellSizeFactors = NumberInterval<double>(1., 2.),
80 const std::set<TraversalOption> &allowedTraversalOptions = TraversalOption::getAllOptions(),
81 const std::set<LoadEstimatorOption> &allowedLoadEstimatorOptions = LoadEstimatorOption::getAllOptions(),
82 const std::set<DataLayoutOption> &allowedDataLayoutOptions = DataLayoutOption::getAllOptions(),
83 const std::set<Newton3Option> &allowedNewton3Options = Newton3Option::getAllOptions(),
84 const std::set<VectorizationPatternOption> &allowedVecPatternOptions =
85 VectorizationPatternOption::getAllOptions(),
86 size_t maxEvidence = 10,
87 AcquisitionFunctionOption predAcqFunction = AcquisitionFunctionOption::upperConfidenceBound,
88 const std::string &outputSuffix = "", size_t predNumLHSamples = 50, unsigned long seed = std::random_device()());
89
90 ~BayesianClusterSearch() override;
91
92 TuningStrategyOption getOptionType() const override;
93
94 void addEvidence(const Configuration &configuration, const Evidence &evidence) override;
95
96 bool reset(size_t iteration, size_t tuningPhase, std::vector<Configuration> &configQueue,
97 const autopas::EvidenceCollection &evidenceCollection) override;
98
99 bool optimizeSuggestions(std::vector<Configuration> &configQueue,
100 const EvidenceCollection &evidenceCollection) override;
101
102 void rejectConfiguration(const Configuration &configuration, bool indefinitely) override;
103
108 bool searchSpaceIsEmpty() const;
109
110 bool needsDomainSimilarityStatistics() const override { return false; }
111
112 private:
121 std::vector<autopas::GaussianModelTypes::VectorPairDiscreteContinuous> sampleAcquisitions(
122 size_t n, AcquisitionFunctionOption af);
123
128 void updateOptions();
129
130 const InteractionTypeOption _interactionType;
131
132 std::set<ContainerOption> _containerOptionsSet;
133 std::vector<FeatureVector::ContainerTraversalEstimatorOption> _containerTraversalEstimatorOptions;
134 std::vector<VectorizationPatternOption> _vecPatternOptions;
135 std::vector<DataLayoutOption> _dataLayoutOptions;
136 std::vector<Newton3Option> _newton3Options;
137 std::unique_ptr<NumberSet<double>> _cellSizeFactors;
138 FeatureVectorEncoder _encoder;
139
143 std::vector<GaussianModelTypes::VectorPairDiscreteContinuous> _currentAcquisitions;
147 std::unordered_set<FeatureVector, ConfigHash> _invalidConfigs;
151 Random _rng;
155 GaussianCluster _gaussianCluster;
163 const size_t _maxEvidence;
167 const AcquisitionFunctionOption _predAcqFunction;
171 const size_t _predNumLHSamples;
175 bool _firstTuningPhase;
179 size_t _currentIteration;
183 const double _iterationScale;
187 size_t _currentNumEvidence;
191 long _currentOptimalTime;
195 FeatureVector _currentOptimalConfig;
196};
197} // namespace autopas
Assume that the stochastic distribution of the execution time while fixing discrete variables corresp...
Definition: BayesianClusterSearch.h:28
TuningStrategyOption getOptionType() const override
Get this object's associated TuningStrategyOption type.
Definition: BayesianClusterSearch.cpp:206
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: BayesianClusterSearch.cpp:98
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: BayesianClusterSearch.cpp:202
bool optimizeSuggestions(std::vector< Configuration > &configQueue, const EvidenceCollection &evidenceCollection) override
Optimizes the queue of configurations to process.
Definition: BayesianClusterSearch.cpp:140
void addEvidence(const Configuration &configuration, const Evidence &evidence) override
Notifies the strategy about empirically collected information for the given configuration.
Definition: BayesianClusterSearch.cpp:80
bool searchSpaceIsEmpty() const
Indicate if the search space is empty.
Definition: BayesianClusterSearch.cpp:125
bool needsDomainSimilarityStatistics() const override
Indicate whether the strategy needs domain similarity statistics.
Definition: BayesianClusterSearch.h:110
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
static constexpr size_t tunableContinuousDims
Number of tunable continuous dimensions.
Definition: FeatureVectorEncoder.h:42
FeatureVector representation of a Configuration.
Definition: FeatureVector.h:21
Model to predicts the output of a blackbox function f(x) for given input x.
Definition: GaussianCluster.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
std::function< std::vector< std::pair< VectorDiscrete, double > >(VectorDiscrete)> NeighbourFunction
function that generate all neighbouring vectors of given vector with weights
Definition: GaussianModelTypes.h:35
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:34