SG++-Doxygen-Documentation
sgpp::optimization::test_problems::UnconstrainedTestProblem Class Referenceabstract

Base class for analytical, unconstrained test problems. More...

#include <UnconstrainedTestProblem.hpp>

Inheritance diagram for sgpp::optimization::test_problems::UnconstrainedTestProblem:
sgpp::optimization::test_problems::AbsoluteValue sgpp::optimization::test_problems::Ackley sgpp::optimization::test_problems::Beale sgpp::optimization::test_problems::Branin sgpp::optimization::test_problems::BubbleWrap sgpp::optimization::test_problems::EasomYang sgpp::optimization::test_problems::Eggholder sgpp::optimization::test_problems::GoldsteinPrice sgpp::optimization::test_problems::Griewank sgpp::optimization::test_problems::Hartman3 sgpp::optimization::test_problems::Hartman6 sgpp::optimization::test_problems::Himmelblau sgpp::optimization::test_problems::HoelderTable sgpp::optimization::test_problems::IncreasingPower sgpp::optimization::test_problems::Michalewicz sgpp::optimization::test_problems::Mladineo sgpp::optimization::test_problems::Perm sgpp::optimization::test_problems::Rastrigin sgpp::optimization::test_problems::Rosenbrock sgpp::optimization::test_problems::Schwefel sgpp::optimization::test_problems::SHCB sgpp::optimization::test_problems::Sphere sgpp::optimization::test_problems::TremblingParabola

Public Member Functions

void generateDisplacement ()
 Generate normally distributed pseudorandom displacement with default standard deviation. More...
 
void generateDisplacement (double stdDev)
 Generate normally distributed pseudorandom displacement. More...
 
const base::DataVectorgetDisplacement () const
 
virtual TestScalarFunctiongetObjectiveFunction ()=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)
 Sets the displacement vector. More...
 
 UnconstrainedTestProblem (size_t d)
 Constructor. More...
 
virtual ~UnconstrainedTestProblem ()
 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...
 

Detailed Description

Base class for analytical, unconstrained test problems.

This class essentially manages an objective function, generates a Gaussian displacement vector, and contains the location of the optimal point.

Constructor & Destructor Documentation

◆ UnconstrainedTestProblem()

sgpp::optimization::test_problems::UnconstrainedTestProblem::UnconstrainedTestProblem ( size_t  d)
explicit

Constructor.

The displacement is set to all zeros, so to displace the function call generateDisplacement() afterwards.

Parameters
ddimension of the domain

◆ ~UnconstrainedTestProblem()

sgpp::optimization::test_problems::UnconstrainedTestProblem::~UnconstrainedTestProblem ( )
virtual

Destructor.

Member Function Documentation

◆ generateDisplacement() [1/2]

void sgpp::optimization::test_problems::UnconstrainedTestProblem::generateDisplacement ( )

Generate normally distributed pseudorandom displacement with default standard deviation.

This method also sets the new displacement in the objective function.

References DEFAULT_STANDARD_DEVIATION.

◆ generateDisplacement() [2/2]

void sgpp::optimization::test_problems::UnconstrainedTestProblem::generateDisplacement ( double  stdDev)

Generate normally distributed pseudorandom displacement.

This method also sets the new displacement in the objective function.

Parameters
stdDevstandard deviation of the displacement coordinates

References d, displacement, sgpp::optimization::RandomNumberGenerator::getGaussianRN(), sgpp::optimization::RandomNumberGenerator::getInstance(), getObjectiveFunction(), isDisplacementFeasible(), and sgpp::optimization::test_problems::TestScalarFunction::setDisplacement().

◆ getDisplacement()

const base::DataVector & sgpp::optimization::test_problems::UnconstrainedTestProblem::getDisplacement ( ) const
Returns
currently used displacement

References displacement.

◆ getObjectiveFunction()

◆ getOptimalPoint()

double sgpp::optimization::test_problems::UnconstrainedTestProblem::getOptimalPoint ( base::DataVector x)

Returns the minimal point of the displaced function.

Parameters
[out]xreverse displaced minimal point \(\vec{x}_\opt - \vec{d}\)
Returns
minimal function value \(f(\vec{x}_\opt)\)

References displacement, getOptimalPointUndisplaced(), and sgpp::base::DataVector::sub().

Referenced by isDisplacementFeasible().

◆ getOptimalPointUndisplaced()

◆ isDisplacementFeasible()

bool sgpp::optimization::test_problems::UnconstrainedTestProblem::isDisplacementFeasible ( )
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:

  1. The optimal point is displaced out of \([0, 1]^d\).
  2. Singularities, where the function is not well-defined, are displaced into \([0, 1]^d\).

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.

Returns
whether the current displacement is feasible

Reimplemented in sgpp::optimization::test_problems::Eggholder, sgpp::optimization::test_problems::HoelderTable, and sgpp::optimization::test_problems::Mladineo.

References d, and getOptimalPoint().

Referenced by generateDisplacement(), sgpp::optimization::test_problems::Mladineo::isDisplacementFeasible(), sgpp::optimization::test_problems::HoelderTable::isDisplacementFeasible(), and sgpp::optimization::test_problems::Eggholder::isDisplacementFeasible().

◆ setDisplacement()

void sgpp::optimization::test_problems::UnconstrainedTestProblem::setDisplacement ( const base::DataVector displacement)

Sets the displacement vector.

This method also sets the new displacement in the objective function.

Parameters
displacementcurrently used displacement

References displacement, getObjectiveFunction(), and sgpp::optimization::test_problems::TestScalarFunction::setDisplacement().

Member Data Documentation

◆ d

◆ DEFAULT_STANDARD_DEVIATION

constexpr double sgpp::optimization::test_problems::UnconstrainedTestProblem::DEFAULT_STANDARD_DEVIATION = 0.01
static

default standard deviation for the displacement vector

Referenced by generateDisplacement().

◆ displacement


The documentation for this class was generated from the following files: