![]() |
SG++-Doxygen-Documentation
|
Abstract class for Zadeh's fuzzy extension principle to propagate fuzzy input uncertainties through a function to obtain a fuzzy output uncertainty. More...
#include <FuzzyExtensionPrinciple.hpp>
Public Member Functions | |
FuzzyInterval * | apply (const std::vector< FuzzyInterval * > &xFuzzy) |
Apply the fuzzy extension principle to fuzzy input intervals. | |
virtual void | clone (std::unique_ptr< FuzzyExtensionPrinciple > &clone) const =0 |
Pure virtual method for cloning the fuzzy extension principle. | |
FuzzyExtensionPrinciple (const base::ScalarFunction &f, size_t numberOfAlphaSegments=DEFAULT_NUMBER_OF_ALPHA_SEGMENTS) | |
Constructor. | |
FuzzyExtensionPrinciple (const FuzzyExtensionPrinciple &other) | |
Copy constructor. | |
const base::DataVector & | getAlphaLevels () const |
const std::vector< base::DataVector > & | getMaximumPoints () const |
const base::DataVector & | getMaximumValues () const |
const std::vector< base::DataVector > & | getMinimumPoints () const |
const base::DataVector & | getMinimumValues () const |
size_t | getNumberOfAlphaSegments () const |
const std::vector< base::DataVector > & | getOptimizationDomainsLowerBounds () const |
const std::vector< base::DataVector > & | getOptimizationDomainsUpperBounds () const |
void | setNumberOfAlphaSegments (size_t numberOfAlphaSegments) |
virtual | ~FuzzyExtensionPrinciple () |
Destructor. | |
Static Public Attributes | |
static const size_t | DEFAULT_NUMBER_OF_ALPHA_SEGMENTS = 10 |
default number of \(\alpha\) segments | |
Protected Member Functions | |
virtual void | optimizeForSingleAlphaLevel (size_t j, base::DataVector &minimumPoint, double &minimumValue, base::DataVector &maximumPoint, double &maximumValue)=0 |
Pure virtual method for solving the minimization/maximization problem for a single \(\alpha\) level. | |
virtual void | prepareApply () |
Custom preparation method that is called before the parallelized optimizeForSingleAlphaLevel calls. | |
Protected Attributes | |
base::DataVector | alphaLevels |
number of \(\alpha\) segments | |
std::unique_ptr< base::ScalarFunction > | f |
function through which to propagate the uncertainties | |
size_t | m |
number of \(\alpha\) segments | |
std::vector< base::DataVector > | maximumPoints |
vector of maximum points (after apply call) | |
base::DataVector | maximumValues |
vector of maximum function values (after apply call) | |
std::vector< base::DataVector > | minimumPoints |
vector of minimum points (after apply call) | |
base::DataVector | minimumValues |
vector of minimum function values (after apply call) | |
std::vector< base::DataVector > | optimizationDomainsLowerBounds |
vector of lower bounds of input confidence intervals (after apply call) | |
std::vector< base::DataVector > | optimizationDomainsUpperBounds |
vector of upper bounds of input confidence intervals (after apply call) | |
Abstract class for Zadeh's fuzzy extension principle to propagate fuzzy input uncertainties through a function to obtain a fuzzy output uncertainty.
Subclasses have to specify how the output confidence intervals are determined.
Literature: W. Andreas Klimke. Uncertainty Modeling using Fuzzy Arithmetic and Sparse Grids. PhD thesis, University of Stuttgart, IANS, 2006.
|
explicit |
Constructor.
f | function through which to propagate the uncertainties |
numberOfAlphaSegments | number of \(\alpha\) segments |
References f.
sgpp::optimization::FuzzyExtensionPrinciple::FuzzyExtensionPrinciple | ( | const FuzzyExtensionPrinciple & | other | ) |
|
virtual |
Destructor.
FuzzyInterval * sgpp::optimization::FuzzyExtensionPrinciple::apply | ( | const std::vector< FuzzyInterval * > & | xFuzzy | ) |
Apply the fuzzy extension principle to fuzzy input intervals.
xFuzzy | vector of fuzzy input intervals |
References alphaLevels, clone(), sgpp::base::Printer::disableStatusPrinting(), sgpp::base::Printer::enableStatusPrinting(), f, sgpp::base::Printer::getInstance(), sgpp::base::Printer::getMutex(), sgpp::base::Printer::isStatusPrintingEnabled(), sgpp::base::MutexType::lock(), m, maximumPoints, maximumValues, minimumPoints, minimumValues, optimizationDomainsLowerBounds, optimizationDomainsUpperBounds, sgpp::base::Printer::printStatusBegin(), sgpp::base::Printer::printStatusEnd(), sgpp::base::Printer::printStatusNewLine(), sgpp::base::Printer::printStatusUpdate(), and sgpp::base::MutexType::unlock().
|
pure virtual |
Pure virtual method for cloning the fuzzy extension principle.
It should generate a pointer to the cloned object and it's used for parallel computations (the optimizeForSingleAlphaLevel() method might not be thread-safe).
[out] | clone | pointer to cloned object |
Implemented in sgpp::optimization::FuzzyExtensionPrincipleViaOptimization, sgpp::optimization::FuzzyExtensionPrincipleViaTransformation, and sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod.
Referenced by apply(), and sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::FuzzyExtensionPrincipleViaOptimization().
const base::DataVector & sgpp::optimization::FuzzyExtensionPrinciple::getAlphaLevels | ( | ) | const |
apply
call) References alphaLevels.
const std::vector< base::DataVector > & sgpp::optimization::FuzzyExtensionPrinciple::getMaximumPoints | ( | ) | const |
apply
call) References maximumPoints.
const base::DataVector & sgpp::optimization::FuzzyExtensionPrinciple::getMaximumValues | ( | ) | const |
apply
call) References maximumValues.
const std::vector< base::DataVector > & sgpp::optimization::FuzzyExtensionPrinciple::getMinimumPoints | ( | ) | const |
apply
call) References minimumPoints.
const base::DataVector & sgpp::optimization::FuzzyExtensionPrinciple::getMinimumValues | ( | ) | const |
apply
call) References minimumValues.
size_t sgpp::optimization::FuzzyExtensionPrinciple::getNumberOfAlphaSegments | ( | ) | const |
References m.
const std::vector< base::DataVector > & sgpp::optimization::FuzzyExtensionPrinciple::getOptimizationDomainsLowerBounds | ( | ) | const |
apply
call) References optimizationDomainsLowerBounds.
const std::vector< base::DataVector > & sgpp::optimization::FuzzyExtensionPrinciple::getOptimizationDomainsUpperBounds | ( | ) | const |
apply
call) References optimizationDomainsUpperBounds.
|
protectedpure virtual |
Pure virtual method for solving the minimization/maximization problem for a single \(\alpha\) level.
[in] | j | index of \(\alpha\) level |
[out] | minimumPoint | minimum point |
[out] | minimumValue | minimum function value |
[out] | maximumPoint | maximum point |
[out] | maximumValue | maximum function value |
Implemented in sgpp::optimization::FuzzyExtensionPrincipleViaOptimization, sgpp::optimization::FuzzyExtensionPrincipleViaTransformation, and sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod.
|
protectedvirtual |
Custom preparation method that is called before the parallelized optimizeForSingleAlphaLevel calls.
Here empty, but can be overridden by subclasses.
Reimplemented in sgpp::optimization::FuzzyExtensionPrincipleViaOptimization, sgpp::optimization::FuzzyExtensionPrincipleViaTransformation, and sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod.
void sgpp::optimization::FuzzyExtensionPrinciple::setNumberOfAlphaSegments | ( | size_t | numberOfAlphaSegments | ) |
numberOfAlphaSegments | number of \(\alpha\) segments |
References m.
|
protected |
number of \(\alpha\) segments
Referenced by apply(), and getAlphaLevels().
|
static |
default number of \(\alpha\) segments
|
protected |
function through which to propagate the uncertainties
Referenced by apply(), FuzzyExtensionPrinciple(), FuzzyExtensionPrinciple(), sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::prepareApply(), sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::prepareApply(), sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod::prepareApply(), and python.uq.refinement.RefinementStrategy.PredictiveRanking::rank().
|
protected |
number of \(\alpha\) segments
Referenced by apply(), getNumberOfAlphaSegments(), sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::prepareApply(), and setNumberOfAlphaSegments().
|
protected |
vector of maximum points (after apply
call)
Referenced by apply(), getMaximumPoints(), and sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel().
|
protected |
vector of maximum function values (after apply
call)
Referenced by apply(), and getMaximumValues().
|
protected |
vector of minimum points (after apply
call)
Referenced by apply(), getMinimumPoints(), and sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel().
|
protected |
vector of minimum function values (after apply
call)
Referenced by apply(), and getMinimumValues().
|
protected |
vector of lower bounds of input confidence intervals (after apply
call)
Referenced by apply(), getOptimizationDomainsLowerBounds(), sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod::optimizeForSingleAlphaLevel(), and sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::prepareApply().
|
protected |
vector of upper bounds of input confidence intervals (after apply
call)
Referenced by apply(), getOptimizationDomainsUpperBounds(), sgpp::optimization::FuzzyExtensionPrincipleViaOptimization::optimizeForSingleAlphaLevel(), sgpp::optimization::FuzzyExtensionPrincipleViaVertexMethod::optimizeForSingleAlphaLevel(), and sgpp::optimization::FuzzyExtensionPrincipleViaTransformation::prepareApply().