Model to predicts the output of a blackbox function f(x) for given input x. More...
#include <GaussianCluster.h>
Public Types | |
enum | WeightFunction { evidenceMatchingProbabilityGM , evidenceMatchingScaledProbabilityGM , wasserstein2 } |
Different weight functions between clusters. More... | |
Public Member Functions | |
GaussianCluster (const std::vector< int > &dimRestriction, size_t continuousDims, WeightFunction weightFun, double sigma, Random &rngRef, const GaussianModelTypes::VectorToStringFun &vectorToString=defaultVecToString, const std::string &outputSuffix="") | |
Constructor. | |
const std::vector< int > & | getDimensions () const |
Get the number of clusters in each dimension. | |
void | setDimensions (const std::vector< int > &newValue) |
Change the number of cluster in all dimension. | |
const GaussianProcess & | getCluster (size_t index1D) const |
Get the underlying GaussianProcess of a cluster. | |
void | clear () |
Discard all evidence. | |
size_t | numEvidence () const |
Get the number of evidence provided. | |
void | addEvidence (const GaussianModelTypes::VectorDiscrete &inputDiscrete, const GaussianModelTypes::VectorContinuous &inputContinuous, double output) |
Provide a input-output pair as evidence. | |
void | addEvidence (const GaussianModelTypes::VectorPairDiscreteContinuous &input, double output) |
Provide a input-output pair as evidence. | |
GaussianModelTypes::VectorPairDiscreteContinuous | getEvidenceMax () const |
Get the evidence with the highest output value. | |
std::vector< GaussianModelTypes::VectorAcquisition > | sampleAcquisition (AcquisitionFunctionOption af, const GaussianModelTypes::NeighbourFunction &neighbourFun, const std::vector< GaussianModelTypes::VectorContinuous > &continuousSamples) const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and calculate their corresponding acquisition. | |
void | logDebugGraph (const GaussianModelTypes::NeighbourFunction &neighbourFun, const std::vector< GaussianModelTypes::VectorContinuous > &continuousSamples) const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and calculate their weight to each other. | |
void | setVectorToStringFun (const GaussianModelTypes::VectorToStringFun &fun) |
Change the used function to convert from vector to string. | |
GaussianModelTypes::VectorAcquisition | sampleAcquisitionMax (AcquisitionFunctionOption af, const GaussianModelTypes::NeighbourFunction &neighbourFun, const std::vector< GaussianModelTypes::VectorContinuous > &continuousSamples) const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and returns the vector with maximum acquisition. | |
std::vector< GaussianModelTypes::VectorPairDiscreteContinuous > | sampleOrderedByAcquisition (AcquisitionFunctionOption af, const GaussianModelTypes::NeighbourFunction &neighbourFun, const std::vector< GaussianModelTypes::VectorContinuous > &continuousSamples) const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and order them by their acquisition. | |
Static Public Member Functions | |
static std::string | defaultVecToString (const GaussianModelTypes::VectorPairDiscreteContinuous &vec) |
Default function used to convert vectors to readable strings. | |
Model to predicts the output of a blackbox function f(x) for given input x.
The model separates discrete and continuous dimensions of x. For each possible discrete tuple a Gaussian process is assigned to estimate f(x) if the tuple is fixed. Some sample input-output pairs (x,f(x)) should be provided as evidence.
Different weight functions between clusters.
autopas::GaussianCluster::GaussianCluster | ( | const std::vector< int > & | dimRestriction, |
size_t | continuousDims, | ||
WeightFunction | weightFun, | ||
double | sigma, | ||
Random & | rngRef, | ||
const GaussianModelTypes::VectorToStringFun & | vectorToString = defaultVecToString , |
||
const std::string & | outputSuffix = "" |
||
) |
Constructor.
dimRestriction | restrict the i-th dimension to a integer between 0 and dimRestriction[i]-1 |
continuousDims | additional unrestricted dimensions |
weightFun | function to calculate weight between clusters |
sigma | fixed noise |
rngRef | reference to random number generator |
vectorToString | function to convert vectors to a readable string |
outputSuffix | Suffix for all output files produced by this class. |
void autopas::GaussianCluster::addEvidence | ( | const GaussianModelTypes::VectorDiscrete & | inputDiscrete, |
const GaussianModelTypes::VectorContinuous & | inputContinuous, | ||
double | output | ||
) |
Provide a input-output pair as evidence.
Each evidence improve the quality of future predictions.
inputDiscrete | x |
inputContinuous | y |
output | f((x,y)) |
void autopas::GaussianCluster::addEvidence | ( | const GaussianModelTypes::VectorPairDiscreteContinuous & | input, |
double | output | ||
) |
Provide a input-output pair as evidence.
Each evidence improves the quality of future predictions.
input | (x,y) |
output | f((x,y)) |
|
static |
Default function used to convert vectors to readable strings.
vec |
const autopas::GaussianProcess & autopas::GaussianCluster::getCluster | ( | size_t | index1D | ) | const |
Get the underlying GaussianProcess of a cluster.
This function should only be used for testing purposes.
index1D |
const std::vector< int > & autopas::GaussianCluster::getDimensions | ( | ) | const |
Get the number of clusters in each dimension.
autopas::GaussianModelTypes::VectorPairDiscreteContinuous autopas::GaussianCluster::getEvidenceMax | ( | ) | const |
Get the evidence with the highest output value.
void autopas::GaussianCluster::logDebugGraph | ( | const GaussianModelTypes::NeighbourFunction & | neighbourFun, |
const std::vector< GaussianModelTypes::VectorContinuous > & | continuousSamples | ||
) | const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and calculate their weight to each other.
Output graph in AutoPasLog Trace.
neighbourFun | function which generates neighbours of given discrete tuple |
continuousSamples | continuous tuples |
size_t autopas::GaussianCluster::numEvidence | ( | ) | const |
Get the number of evidence provided.
std::vector< autopas::GaussianModelTypes::VectorAcquisition > autopas::GaussianCluster::sampleAcquisition | ( | AcquisitionFunctionOption | af, |
const GaussianModelTypes::NeighbourFunction & | neighbourFun, | ||
const std::vector< GaussianModelTypes::VectorContinuous > & | continuousSamples | ||
) | const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and calculate their corresponding acquisition.
af | function to optimize |
neighbourFun | function which generates neighbours of given discrete tuple |
continuousSamples | continuous tuples |
autopas::GaussianModelTypes::VectorAcquisition autopas::GaussianCluster::sampleAcquisitionMax | ( | AcquisitionFunctionOption | af, |
const GaussianModelTypes::NeighbourFunction & | neighbourFun, | ||
const std::vector< GaussianModelTypes::VectorContinuous > & | continuousSamples | ||
) | const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and returns the vector with maximum acquisition.
af | function to optimize |
neighbourFun | function which generates neighbours with prior weight of given discrete tuple |
continuousSamples | continuous tuples |
std::vector< autopas::GaussianModelTypes::VectorPairDiscreteContinuous > autopas::GaussianCluster::sampleOrderedByAcquisition | ( | AcquisitionFunctionOption | af, |
const GaussianModelTypes::NeighbourFunction & | neighbourFun, | ||
const std::vector< GaussianModelTypes::VectorContinuous > & | continuousSamples | ||
) | const |
Generate all possible combinations of discrete tuples and continuous tuples in samples and order them by their acquisition.
af | function to optimize |
neighbourFun | function which generates neighbours with prior weight of given discrete tuple |
continuousSamples | continuous tuples |
void autopas::GaussianCluster::setDimensions | ( | const std::vector< int > & | newValue | ) |
Change the number of cluster in all dimension.
This will discard all evidence.
newValue | new number of clusters in each dimension |
void autopas::GaussianCluster::setVectorToStringFun | ( | const GaussianModelTypes::VectorToStringFun & | fun | ) |
Change the used function to convert from vector to string.
fun | new converter |