SG++-Doxygen-Documentation
|
Base class for analytical, constrained test problems. More...
#include <ConstrainedTestProblem.hpp>
Public Member Functions | |
ConstrainedTestProblem (size_t d) | |
Constructor. More... | |
void | generateDisplacement () |
Generate normally distributed pseudorandom displacement with default standard deviation. More... | |
void | generateDisplacement (double stdDev) |
Generate normally distributed pseudorandom displacement. More... | |
const base::DataVector & | getDisplacement () const |
virtual TestVectorFunction & | getEqualityConstraintFunction ()=0 |
virtual TestVectorFunction & | getInequalityConstraintFunction ()=0 |
virtual TestScalarFunction & | getObjectiveFunction ()=0 |
double | getOptimalPoint (base::DataVector &x) |
Returns the minimal point of the displaced function. More... | |
virtual double | getOptimalPointUndisplaced (base::DataVector &x)=0 |
Pure virtual method returning the minimal point (or one of the minimal points, if there are multiple of them) of the test function. More... | |
void | setDisplacement (const base::DataVector &displacement) |
Returns the displacement vector. More... | |
virtual | ~ConstrainedTestProblem () |
Destructor. More... | |
Static Public Attributes | |
static constexpr double | DEFAULT_STANDARD_DEVIATION = 0.01 |
default standard deviation for the displacement vector More... | |
Protected Member Functions | |
virtual bool | isDisplacementFeasible () |
Checks if the current displacement is ok for the specific objective function. More... | |
Protected Attributes | |
size_t | d |
number of parameters More... | |
base::DataVector | displacement |
displacement vector More... | |
Base class for analytical, constrained test problems.
This class essentially manages an objective function and two constraint functions (one inequality and one equality constraint function), generates a Gaussian displacement vector, and contains the location of the optimal point.
|
explicit |
Constructor.
The displacement is set to all zeros, so to displace the function call generateDisplacement() afterwards.
d | dimension of the domain |
|
virtual |
Destructor.
void sgpp::optimization::test_problems::ConstrainedTestProblem::generateDisplacement | ( | ) |
Generate normally distributed pseudorandom displacement with default standard deviation.
This method also sets the new displacement in the objective function and the constraint functions.
References DEFAULT_STANDARD_DEVIATION.
void sgpp::optimization::test_problems::ConstrainedTestProblem::generateDisplacement | ( | double | stdDev | ) |
Generate normally distributed pseudorandom displacement.
This method also sets the new displacement in the objective function and the constraint functions.
stdDev | standard deviation of the displacement coordinates |
References d, displacement, getEqualityConstraintFunction(), sgpp::optimization::RandomNumberGenerator::getGaussianRN(), getInequalityConstraintFunction(), sgpp::optimization::RandomNumberGenerator::getInstance(), getObjectiveFunction(), isDisplacementFeasible(), sgpp::optimization::test_problems::TestVectorFunction::setDisplacement(), and sgpp::optimization::test_problems::TestScalarFunction::setDisplacement().
const base::DataVector & sgpp::optimization::test_problems::ConstrainedTestProblem::getDisplacement | ( | ) | const |
References displacement.
|
pure virtual |
Implemented in sgpp::optimization::test_problems::G04, sgpp::optimization::test_problems::G05, sgpp::optimization::test_problems::G10, sgpp::optimization::test_problems::G09, sgpp::optimization::test_problems::G03, sgpp::optimization::test_problems::Floudas, sgpp::optimization::test_problems::G08, sgpp::optimization::test_problems::G13, sgpp::optimization::test_problems::G06, sgpp::optimization::test_problems::G12, sgpp::optimization::test_problems::Simionescu, sgpp::optimization::test_problems::G11, and sgpp::optimization::test_problems::Soland.
Referenced by generateDisplacement(), and setDisplacement().
|
pure virtual |
Implemented in sgpp::optimization::test_problems::G04, sgpp::optimization::test_problems::G05, sgpp::optimization::test_problems::G10, sgpp::optimization::test_problems::G09, sgpp::optimization::test_problems::G03, sgpp::optimization::test_problems::Floudas, sgpp::optimization::test_problems::G08, sgpp::optimization::test_problems::G13, sgpp::optimization::test_problems::G06, sgpp::optimization::test_problems::G12, sgpp::optimization::test_problems::Simionescu, sgpp::optimization::test_problems::G11, and sgpp::optimization::test_problems::Soland.
Referenced by generateDisplacement(), and setDisplacement().
|
pure virtual |
Implemented in sgpp::optimization::test_problems::G04, sgpp::optimization::test_problems::G05, sgpp::optimization::test_problems::G10, sgpp::optimization::test_problems::G09, sgpp::optimization::test_problems::G03, sgpp::optimization::test_problems::Floudas, sgpp::optimization::test_problems::G08, sgpp::optimization::test_problems::G13, sgpp::optimization::test_problems::G06, sgpp::optimization::test_problems::G12, sgpp::optimization::test_problems::Simionescu, sgpp::optimization::test_problems::G11, and sgpp::optimization::test_problems::Soland.
Referenced by generateDisplacement(), and setDisplacement().
double sgpp::optimization::test_problems::ConstrainedTestProblem::getOptimalPoint | ( | base::DataVector & | x | ) |
Returns the minimal point of the displaced function.
[out] | x | reverse displaced minimal point \(\vec{x}_\opt - \vec{d}\) |
References displacement, getOptimalPointUndisplaced(), and sgpp::base::DataVector::sub().
Referenced by isDisplacementFeasible().
|
pure virtual |
Pure virtual method returning the minimal point (or one of the minimal points, if there are multiple of them) of the test function.
[out] | x | minimal point \(\vec{x}_\opt\) |
Implemented in sgpp::optimization::test_problems::G04, sgpp::optimization::test_problems::G05, sgpp::optimization::test_problems::G10, sgpp::optimization::test_problems::G09, sgpp::optimization::test_problems::G03, sgpp::optimization::test_problems::Floudas, sgpp::optimization::test_problems::G08, sgpp::optimization::test_problems::G13, sgpp::optimization::test_problems::G06, sgpp::optimization::test_problems::G12, sgpp::optimization::test_problems::Simionescu, sgpp::optimization::test_problems::G11, and sgpp::optimization::test_problems::Soland.
Referenced by getOptimalPoint().
|
protectedvirtual |
Checks if the current displacement is ok for the specific objective function.
An infeasible displacement would be one for which one of the following happens:
This function is called by generateDisplacement to check the feasibility of the new displacement. Only 1. will be checked by default. For additional constraints on the displacement, override this function.
References d, and getOptimalPoint().
Referenced by generateDisplacement().
void sgpp::optimization::test_problems::ConstrainedTestProblem::setDisplacement | ( | const base::DataVector & | displacement | ) |
Returns the displacement vector.
This method also sets the new displacement in the objective function and the constraint functions.
displacement | currently used displacement |
References displacement, getEqualityConstraintFunction(), getInequalityConstraintFunction(), getObjectiveFunction(), sgpp::optimization::test_problems::TestVectorFunction::setDisplacement(), and sgpp::optimization::test_problems::TestScalarFunction::setDisplacement().
|
protected |
number of parameters
Referenced by generateDisplacement(), sgpp::optimization::test_problems::G03::getOptimalPointUndisplaced(), and isDisplacementFeasible().
|
static |
default standard deviation for the displacement vector
Referenced by generateDisplacement().
|
protected |
displacement vector
Referenced by generateDisplacement(), getDisplacement(), getOptimalPoint(), and setDisplacement().