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:
75 explicit BayesianClusterSearch(
76 const InteractionTypeOption &interactionType,
77 const std::set<ContainerOption> &allowedContainerOptions = ContainerOption::getAllOptions(),
78 const NumberSet<double> &allowedCellSizeFactors = NumberInterval<double>(1., 2.),
79 const std::set<TraversalOption> &allowedTraversalOptions = TraversalOption::getAllOptions(),
80 const std::set<LoadEstimatorOption> &allowedLoadEstimatorOptions = LoadEstimatorOption::getAllOptions(),
81 const std::set<DataLayoutOption> &allowedDataLayoutOptions = DataLayoutOption::getAllOptions(),
82 const std::set<Newton3Option> &allowedNewton3Options = Newton3Option::getAllOptions(), size_t maxEvidence = 10,
83 AcquisitionFunctionOption predAcqFunction = AcquisitionFunctionOption::upperConfidenceBound,
84 const std::string &outputSuffix = "", size_t predNumLHSamples = 50, unsigned long seed = std::random_device()());
85
86 ~BayesianClusterSearch() override;
87
88 TuningStrategyOption getOptionType() const override;
89
90 void addEvidence(const Configuration &configuration, const Evidence &evidence) override;
91
92 bool reset(size_t iteration, size_t tuningPhase, std::vector<Configuration> &configQueue,
93 const autopas::EvidenceCollection &evidenceCollection) override;
94
95 bool optimizeSuggestions(std::vector<Configuration> &configQueue,
96 const EvidenceCollection &evidenceCollection) override;
97
98 void rejectConfiguration(const Configuration &configuration, bool indefinitely) override;
99
104 bool searchSpaceIsEmpty() const;
105
106 bool needsSmoothedHomogeneityAndMaxDensity() const override { return false; }
107
108 private:
117 std::vector<autopas::GaussianModelTypes::VectorPairDiscreteContinuous> sampleAcquisitions(
118 size_t n, AcquisitionFunctionOption af);
119
124 void updateOptions();
125
126 const InteractionTypeOption _interactionType;
127
128 std::set<ContainerOption> _containerOptionsSet;
129 std::vector<FeatureVector::ContainerTraversalEstimatorOption> _containerTraversalEstimatorOptions;
130 std::vector<DataLayoutOption> _dataLayoutOptions;
131 std::vector<Newton3Option> _newton3Options;
132 std::unique_ptr<NumberSet<double>> _cellSizeFactors;
133 FeatureVectorEncoder _encoder;
134
138 std::vector<GaussianModelTypes::VectorPairDiscreteContinuous> _currentAcquisitions;
142 std::unordered_set<FeatureVector, ConfigHash> _invalidConfigs;
146 Random _rng;
150 GaussianCluster _gaussianCluster;
158 const size_t _maxEvidence;
162 const AcquisitionFunctionOption _predAcqFunction;
166 const size_t _predNumLHSamples;
170 bool _firstTuningPhase;
174 size_t _currentIteration;
178 const double _iterationScale;
182 size_t _currentNumEvidence;
186 long _currentOptimalTime;
190 FeatureVector _currentOptimalConfig;
191};
192} // 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:204
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:96
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:200
bool optimizeSuggestions(std::vector< Configuration > &configQueue, const EvidenceCollection &evidenceCollection) override
Optimizes the queue of configurations to process.
Definition: BayesianClusterSearch.cpp:138
bool needsSmoothedHomogeneityAndMaxDensity() const override
Indicate whether the strategy needs smoothed values of homogeneity and max density.
Definition: BayesianClusterSearch.h:106
void addEvidence(const Configuration &configuration, const Evidence &evidence) override
Notifies the strategy about empirically collected information for the given configuration.
Definition: BayesianClusterSearch.cpp:78
bool searchSpaceIsEmpty() const
Indicate if the search space is empty.
Definition: BayesianClusterSearch.cpp:123
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
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:32