SG++-Doxygen-Documentation
Loading...
Searching...
No Matches
sgpp::optimization::optimizer::ConstrainedOptimizer Class Reference

Abstract class for solving constrained optimization problems. More...

#include <ConstrainedOptimizer.hpp>

Inheritance diagram for sgpp::optimization::optimizer::ConstrainedOptimizer:
sgpp::optimization::optimizer::UnconstrainedOptimizer sgpp::optimization::optimizer::AugmentedLagrangian sgpp::optimization::optimizer::LogBarrier sgpp::optimization::optimizer::SquaredPenalty

Public Member Functions

 ConstrainedOptimizer (const base::ScalarFunction &f, const base::ScalarFunctionGradient &fGradient, const base::VectorFunction &g, const base::VectorFunctionGradient &gGradient, const base::VectorFunction &h, const base::VectorFunctionGradient &hGradient, size_t N=DEFAULT_N)
 Constructor.
 
 ConstrainedOptimizer (const base::ScalarFunction &f, const base::VectorFunction &g, const base::VectorFunction &h, size_t N=DEFAULT_N)
 Constructor.
 
 ConstrainedOptimizer (const ConstrainedOptimizer &other)
 Copy constructor.
 
 ConstrainedOptimizer (const UnconstrainedOptimizer &unconstrainedOptimizer, const base::VectorFunction &g, const base::VectorFunctionGradient *gGradient, const base::VectorFunction &h, const base::VectorFunctionGradient *hGradient, size_t N=DEFAULT_N)
 Constructor with custom unconstrained optimization algorithm (gradient-free or gradient-based).
 
base::VectorFunctiongetEqualityConstraintFunction () const
 
base::VectorFunctionGradientgetEqualityConstraintGradient () const
 
base::VectorFunctiongetInequalityConstraintFunction () const
 
base::VectorFunctionGradientgetInequalityConstraintGradient () const
 
void setEqualityConstraintFunction (const base::VectorFunction &h)
 
void setEqualityConstraintGradient (const base::VectorFunctionGradient *hGradient)
 
void setInequalityConstraintFunction (const base::VectorFunction &g)
 
void setInequalityConstraintGradient (const base::VectorFunctionGradient *gGradient)
 
 ~ConstrainedOptimizer () override
 Destructor.
 
- Public Member Functions inherited from sgpp::optimization::optimizer::UnconstrainedOptimizer
virtual void clone (std::unique_ptr< UnconstrainedOptimizer > &clone) const =0
 Pure virtual method for cloning the optimizer.
 
const base::DataMatrixgetHistoryOfOptimalPoints () const
 
const base::DataVectorgetHistoryOfOptimalValues () const
 
size_t getN () const
 
base::ScalarFunctiongetObjectiveFunction () const
 
base::ScalarFunctionGradientgetObjectiveGradient () const
 
base::ScalarFunctionHessiangetObjectiveHessian () const
 
const base::DataVectorgetOptimalPoint () const
 
double getOptimalValue () const
 
const base::DataVectorgetStartingPoint () const
 
virtual void optimize ()=0
 Pure virtual method for optimization of the objective function.
 
void setN (size_t N)
 
virtual void setObjectiveFunction (const base::ScalarFunction &f)
 
virtual void setObjectiveGradient (const base::ScalarFunctionGradient *fGradient)
 
virtual void setObjectiveHessian (const base::ScalarFunctionHessian *fHessian)
 
void setStartingPoint (const base::DataVector &startingPoint)
 
 UnconstrainedOptimizer (const base::ScalarFunction &f, const base::ScalarFunctionGradient *fGradient, const base::ScalarFunctionHessian *fHessian, size_t N=DEFAULT_N)
 Constructor.
 
 UnconstrainedOptimizer (const UnconstrainedOptimizer &other)
 Copy constructor.
 
virtual ~UnconstrainedOptimizer ()
 Destructor.
 

Protected Attributes

std::unique_ptr< base::VectorFunctiong
 inequality constraint function
 
std::unique_ptr< base::VectorFunctionGradientgGradient
 inequality constraint function gradient
 
std::unique_ptr< base::VectorFunctionh
 equality constraint function
 
std::unique_ptr< base::VectorFunctionGradienthGradient
 equality constraint function gradient
 
std::unique_ptr< UnconstrainedOptimizerunconstrainedOptimizer
 unconstrained optimization algorithm
 
- Protected Attributes inherited from sgpp::optimization::optimizer::UnconstrainedOptimizer
std::unique_ptr< base::ScalarFunctionf
 objective function
 
std::unique_ptr< base::ScalarFunctionGradientfGradient
 objective function gradient
 
std::unique_ptr< base::ScalarFunctionHessianfHessian
 objective function Hessian
 
base::DataVector fHist
 search history vector (optimal values)
 
double fOpt
 result of optimization (optimal function value)
 
size_t N
 maximal number of iterations or function evaluations
 
base::DataVector x0
 starting point
 
base::DataMatrix xHist
 search history matrix (optimal points)
 
base::DataVector xOpt
 result of optimization (location of optimum)
 

Additional Inherited Members

- Static Public Attributes inherited from sgpp::optimization::optimizer::UnconstrainedOptimizer
static const size_t DEFAULT_N = 1000
 default maximal number of iterations or function evaluations
 

Detailed Description

Abstract class for solving constrained optimization problems.

Constructor & Destructor Documentation

◆ ConstrainedOptimizer() [1/4]

sgpp::optimization::optimizer::ConstrainedOptimizer::ConstrainedOptimizer ( const base::ScalarFunction f,
const base::VectorFunction g,
const base::VectorFunction h,
size_t  N = DEFAULT_N 
)
inline

Constructor.

By default, Nelder-Mead is used as optimization algorithm (gradient-free). The starting point is set to \((0.5, \dotsc, 0.5)^{\mathrm{T}}\). Depending on the implementation $g$ and/or $h$ may be ignored (if only equality or inequality constraints can be handled by the underlying algorithm).

Parameters
ffunction to optimize
ginequality constraint function ( \(g(\vec{x}) \le 0\))
hequality constraint function ( \(h(\vec{x}) = 0\))
Nmaximal number of iterations or objective function evaluations (depending on the implementation)

References sgpp::optimization::optimizer::UnconstrainedOptimizer::clone(), g, and h.

◆ ConstrainedOptimizer() [2/4]

sgpp::optimization::optimizer::ConstrainedOptimizer::ConstrainedOptimizer ( const base::ScalarFunction f,
const base::ScalarFunctionGradient fGradient,
const base::VectorFunction g,
const base::VectorFunctionGradient gGradient,
const base::VectorFunction h,
const base::VectorFunctionGradient hGradient,
size_t  N = DEFAULT_N 
)
inline

Constructor.

By default, adaptive gradient descent is used as optimization algorithm (gradient-based). The starting point is set to \((0.5, \dotsc, 0.5)^{\mathrm{T}}\). Depending on the implementation $g$ and/or $h$ may be ignored (if only equality or inequality constraints can be handled by the underlying algorithm).

Parameters
ffunction to optimize
fGradientgradient of f
ginequality constraint function ( \(g(\vec{x}) \le 0\))
gGradientgradient of g
hequality constraint function ( \(h(\vec{x}) = 0\))
hGradientgradient of h
Nmaximal number of iterations or objective function evaluations (depending on the implementation)

References sgpp::optimization::optimizer::UnconstrainedOptimizer::clone(), g, gGradient, h, and hGradient.

◆ ConstrainedOptimizer() [3/4]

sgpp::optimization::optimizer::ConstrainedOptimizer::ConstrainedOptimizer ( const UnconstrainedOptimizer unconstrainedOptimizer,
const base::VectorFunction g,
const base::VectorFunctionGradient gGradient,
const base::VectorFunction h,
const base::VectorFunctionGradient hGradient,
size_t  N = DEFAULT_N 
)
inline

Constructor with custom unconstrained optimization algorithm (gradient-free or gradient-based).

The starting point is set to \((0.5, \dotsc, 0.5)^{\mathrm{T}}\). Depending on the implementation $g$ and/or $h$ may be ignored (if only equality or inequality constraints can be handled by the underlying algorithm).

Parameters
unconstrainedOptimizerunconstrained optimizer
ginequality constraint function ( \(g(\vec{x}) \le 0\))
gGradientgradient of g (nullptr to omit)
hequality constraint function ( \(h(\vec{x}) = 0\))
hGradientgradient of h (nullptr to omit)
Nmaximal number of iterations or objective function evaluations (depending on the implementation)

References sgpp::optimization::optimizer::UnconstrainedOptimizer::clone(), and unconstrainedOptimizer.

◆ ConstrainedOptimizer() [4/4]

sgpp::optimization::optimizer::ConstrainedOptimizer::ConstrainedOptimizer ( const ConstrainedOptimizer other)
inline

Copy constructor.

Parameters
otheroptimizer to be copied

◆ ~ConstrainedOptimizer()

sgpp::optimization::optimizer::ConstrainedOptimizer::~ConstrainedOptimizer ( )
inlineoverride

Destructor.

Member Function Documentation

◆ getEqualityConstraintFunction()

base::VectorFunction & sgpp::optimization::optimizer::ConstrainedOptimizer::getEqualityConstraintFunction ( ) const
inline
Returns
equality constraint function

References h.

◆ getEqualityConstraintGradient()

base::VectorFunctionGradient * sgpp::optimization::optimizer::ConstrainedOptimizer::getEqualityConstraintGradient ( ) const
inline
Returns
equality constraint function gradient

References hGradient.

◆ getInequalityConstraintFunction()

base::VectorFunction & sgpp::optimization::optimizer::ConstrainedOptimizer::getInequalityConstraintFunction ( ) const
inline
Returns
inequality constraint function

References g.

◆ getInequalityConstraintGradient()

base::VectorFunctionGradient * sgpp::optimization::optimizer::ConstrainedOptimizer::getInequalityConstraintGradient ( ) const
inline
Returns
inequality constraint function gradient

References gGradient.

◆ setEqualityConstraintFunction()

void sgpp::optimization::optimizer::ConstrainedOptimizer::setEqualityConstraintFunction ( const base::VectorFunction h)
inline
Parameters
hequality constraint function

References h.

◆ setEqualityConstraintGradient()

void sgpp::optimization::optimizer::ConstrainedOptimizer::setEqualityConstraintGradient ( const base::VectorFunctionGradient hGradient)
inline
Parameters
hGradientequality constraint function gradient

References hGradient.

◆ setInequalityConstraintFunction()

void sgpp::optimization::optimizer::ConstrainedOptimizer::setInequalityConstraintFunction ( const base::VectorFunction g)
inline
Parameters
ginequality constraint function

References g.

◆ setInequalityConstraintGradient()

void sgpp::optimization::optimizer::ConstrainedOptimizer::setInequalityConstraintGradient ( const base::VectorFunctionGradient gGradient)
inline
Parameters
gGradientinequality constraint function gradient

References gGradient.

Member Data Documentation

◆ g

◆ gGradient

◆ h

◆ hGradient

◆ unconstrainedOptimizer


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