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

Squared Penalty method for constrained optimization. More...

#include <SquaredPenalty.hpp>

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

Public Member Functions

void clone (std::unique_ptr< UnconstrainedOptimizer > &clone) const override
 
double getConstraintTolerance () const
 
const std::vector< size_t > & getHistoryOfInnerIterationNumbers () const
 
const base::DataMatrixgetHistoryOfInnerIterationPoints () const
 
double getPenaltyIncreaseFactor () const
 
double getPenaltyStartValue () const
 
double getXTolerance () const
 
void optimize () override
 Pure virtual method for optimization of the objective function.
 
void setConstraintTolerance (double constraintTolerance)
 
void setPenaltyIncreaseFactor (double penaltyIncreaseFactor)
 
void setPenaltyStartValue (double penaltyStartValue)
 
void setXTolerance (double xTolerance)
 
 SquaredPenalty (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 maxItCount=DEFAULT_N, double xTolerance=DEFAULT_X_TOLERANCE, double constraintTolerance=DEFAULT_CONSTRAINT_TOLERANCE, double penaltyStartValue=DEFAULT_PENALTY_START_VALUE, double penaltyIncreaseFactor=DEFAULT_PENALTY_INCREASE_FACTOR)
 Constructor with adaptive gradient descent as optimization algorithm (gradient-based).
 
 SquaredPenalty (const base::ScalarFunction &f, const base::VectorFunction &g, const base::VectorFunction &h, size_t maxItCount=DEFAULT_N, double xTolerance=DEFAULT_X_TOLERANCE, double constraintTolerance=DEFAULT_CONSTRAINT_TOLERANCE, double penaltyStartValue=DEFAULT_PENALTY_START_VALUE, double penaltyIncreaseFactor=DEFAULT_PENALTY_INCREASE_FACTOR)
 Constructor with Nelder-Mead as optimization algorithm (gradient-free).
 
 SquaredPenalty (const SquaredPenalty &other)
 Copy constructor.
 
 SquaredPenalty (const UnconstrainedOptimizer &unconstrainedOptimizer, const base::VectorFunction &g, const base::VectorFunctionGradient *gGradient, const base::VectorFunction &h, const base::VectorFunctionGradient *hGradient, size_t maxItCount=DEFAULT_N, double xTolerance=DEFAULT_X_TOLERANCE, double constraintTolerance=DEFAULT_CONSTRAINT_TOLERANCE, double penaltyStartValue=DEFAULT_PENALTY_START_VALUE, double penaltyIncreaseFactor=DEFAULT_PENALTY_INCREASE_FACTOR)
 Constructor with custom unconstrained optimization algorithm (gradient-free or gradient-based).
 
 ~SquaredPenalty () override
 Destructor.
 
- Public Member Functions inherited from 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)
 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
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
 
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.
 

Static Public Attributes

static constexpr double DEFAULT_CONSTRAINT_TOLERANCE = 1e-6
 default constraint tolerance
 
static constexpr double DEFAULT_PENALTY_INCREASE_FACTOR = 10.0
 default penalty increase factor
 
static constexpr double DEFAULT_PENALTY_START_VALUE = 1.0
 default penalty start value
 
static constexpr double DEFAULT_X_TOLERANCE = 1e-6
 default point tolerance
 
- Static Public Attributes inherited from sgpp::optimization::optimizer::UnconstrainedOptimizer
static const size_t DEFAULT_N = 1000
 default maximal number of iterations or function evaluations
 

Protected Attributes

double epsilon
 constraint tolerance
 
std::vector< size_t > kHistInner
 search history (number of inner iterations)
 
double mu0
 penalty start value
 
double rhoMuPlus
 penalty increase factor
 
double theta
 point tolerance
 
base::DataMatrix xHistInner
 search history (inner iterations)
 
- Protected Attributes inherited from sgpp::optimization::optimizer::ConstrainedOptimizer
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)
 

Detailed Description

Squared Penalty method for constrained optimization.

Constructor & Destructor Documentation

◆ SquaredPenalty() [1/4]

sgpp::optimization::optimizer::SquaredPenalty::SquaredPenalty ( const base::ScalarFunction f,
const base::VectorFunction g,
const base::VectorFunction h,
size_t  maxItCount = DEFAULT_N,
double  xTolerance = DEFAULT_X_TOLERANCE,
double  constraintTolerance = DEFAULT_CONSTRAINT_TOLERANCE,
double  penaltyStartValue = DEFAULT_PENALTY_START_VALUE,
double  penaltyIncreaseFactor = DEFAULT_PENALTY_INCREASE_FACTOR 
)

Constructor with Nelder-Mead as optimization algorithm (gradient-free).

Parameters
fobjective function
ginequality constraint
hequality constraint
maxItCountmaximal number of function evaluations
xTolerancepoint tolerance
constraintToleranceconstraint tolerance
penaltyStartValuepenalty start value
penaltyIncreaseFactorpenalty increase factor

◆ SquaredPenalty() [2/4]

sgpp::optimization::optimizer::SquaredPenalty::SquaredPenalty ( 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  maxItCount = DEFAULT_N,
double  xTolerance = DEFAULT_X_TOLERANCE,
double  constraintTolerance = DEFAULT_CONSTRAINT_TOLERANCE,
double  penaltyStartValue = DEFAULT_PENALTY_START_VALUE,
double  penaltyIncreaseFactor = DEFAULT_PENALTY_INCREASE_FACTOR 
)

Constructor with adaptive gradient descent as optimization algorithm (gradient-based).

Parameters
fobjective function
fGradientobjective function gradient
ginequality constraint
gGradientinequality constraint gradient
hequality constraint
hGradientequality constraint gradient
maxItCountmaximal number of function evaluations
xTolerancepoint tolerance
constraintToleranceconstraint tolerance
penaltyStartValuepenalty start value
penaltyIncreaseFactorpenalty increase factor

References theta, and sgpp::optimization::optimizer::ConstrainedOptimizer::unconstrainedOptimizer.

◆ SquaredPenalty() [3/4]

sgpp::optimization::optimizer::SquaredPenalty::SquaredPenalty ( const UnconstrainedOptimizer unconstrainedOptimizer,
const base::VectorFunction g,
const base::VectorFunctionGradient gGradient,
const base::VectorFunction h,
const base::VectorFunctionGradient hGradient,
size_t  maxItCount = DEFAULT_N,
double  xTolerance = DEFAULT_X_TOLERANCE,
double  constraintTolerance = DEFAULT_CONSTRAINT_TOLERANCE,
double  penaltyStartValue = DEFAULT_PENALTY_START_VALUE,
double  penaltyIncreaseFactor = DEFAULT_PENALTY_INCREASE_FACTOR 
)

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

Parameters
unconstrainedOptimizerunconstrained optimization algorithm
ginequality constraint
gGradientinequality constraint gradient (nullptr to omit)
hequality constraint
hGradientequality constraint gradient (nullptr to omit)
maxItCountmaximal number of function evaluations
xTolerancepoint tolerance
constraintToleranceconstraint tolerance
penaltyStartValuepenalty start value
penaltyIncreaseFactorpenalty increase factor

◆ SquaredPenalty() [4/4]

sgpp::optimization::optimizer::SquaredPenalty::SquaredPenalty ( const SquaredPenalty other)

Copy constructor.

Parameters
otheroptimizer to be copied

◆ ~SquaredPenalty()

sgpp::optimization::optimizer::SquaredPenalty::~SquaredPenalty ( )
override

Destructor.

Member Function Documentation

◆ clone()

void sgpp::optimization::optimizer::SquaredPenalty::clone ( std::unique_ptr< UnconstrainedOptimizer > &  clone) const
overridevirtual
Parameters
[out]clonepointer to cloned object

Implements sgpp::optimization::optimizer::UnconstrainedOptimizer.

References clone().

Referenced by clone().

◆ getConstraintTolerance()

double sgpp::optimization::optimizer::SquaredPenalty::getConstraintTolerance ( ) const
Returns
constraint tolerance

References epsilon.

◆ getHistoryOfInnerIterationNumbers()

const std::vector< size_t > & sgpp::optimization::optimizer::SquaredPenalty::getHistoryOfInnerIterationNumbers ( ) const
Returns
vector in which the k-th entry indicates the number of inner iterations in the k-th (outer) iteration, empty vector on error

References kHistInner.

◆ getHistoryOfInnerIterationPoints()

const base::DataMatrix & sgpp::optimization::optimizer::SquaredPenalty::getHistoryOfInnerIterationPoints ( ) const
Returns
tall matrix (d columns) in which the history of optimal points of the iterations are concatenated

References xHistInner.

◆ getPenaltyIncreaseFactor()

double sgpp::optimization::optimizer::SquaredPenalty::getPenaltyIncreaseFactor ( ) const
Returns
penalty increase factor

References rhoMuPlus.

◆ getPenaltyStartValue()

double sgpp::optimization::optimizer::SquaredPenalty::getPenaltyStartValue ( ) const
Returns
penalty start value

References mu0.

◆ getXTolerance()

double sgpp::optimization::optimizer::SquaredPenalty::getXTolerance ( ) const
Returns
point tolerance

References theta.

◆ optimize()

void sgpp::optimization::optimizer::SquaredPenalty::optimize ( )
overridevirtual

Pure virtual method for optimization of the objective function.

The result of the optimization process can be obtained by member functions, e.g., getOptimalPoint() and getOptimalValue().

Implements sgpp::optimization::optimizer::UnconstrainedOptimizer.

References sgpp::base::DataVector::append(), sgpp::base::DataMatrix::appendRow(), epsilon, sgpp::optimization::optimizer::UnconstrainedOptimizer::f, sgpp::optimization::optimizer::UnconstrainedOptimizer::fGradient, sgpp::optimization::optimizer::UnconstrainedOptimizer::fHist, sgpp::optimization::optimizer::UnconstrainedOptimizer::fOpt, sgpp::optimization::optimizer::ConstrainedOptimizer::g, sgpp::base::Printer::getInstance(), sgpp::base::DataMatrix::getNrows(), sgpp::optimization::optimizer::ConstrainedOptimizer::gGradient, sgpp::optimization::optimizer::ConstrainedOptimizer::h, sgpp::optimization::optimizer::ConstrainedOptimizer::hGradient, kHistInner, sgpp::base::DataVector::l2Norm(), sgpp::base::DataVector::max(), sgpp::base::DataVector::maxNorm(), mG, mH, mu, mu0, sgpp::optimization::optimizer::UnconstrainedOptimizer::N, sgpp::base::Printer::printStatusBegin(), sgpp::base::Printer::printStatusEnd(), sgpp::base::Printer::printStatusUpdate(), sgpp::base::DataMatrix::resize(), rhoMuPlus, sgpp::base::DataVector::sub(), theta, sgpp::base::DataVector::toString(), sgpp::optimization::optimizer::ConstrainedOptimizer::unconstrainedOptimizer, sgpp::optimization::optimizer::UnconstrainedOptimizer::x0, sgpp::optimization::optimizer::UnconstrainedOptimizer::xHist, xHistInner, and sgpp::optimization::optimizer::UnconstrainedOptimizer::xOpt.

◆ setConstraintTolerance()

void sgpp::optimization::optimizer::SquaredPenalty::setConstraintTolerance ( double  constraintTolerance)
Parameters
constraintToleranceconstraint tolerance

References epsilon.

◆ setPenaltyIncreaseFactor()

void sgpp::optimization::optimizer::SquaredPenalty::setPenaltyIncreaseFactor ( double  penaltyIncreaseFactor)
Parameters
penaltyIncreaseFactorpenalty increase factor

References rhoMuPlus.

◆ setPenaltyStartValue()

void sgpp::optimization::optimizer::SquaredPenalty::setPenaltyStartValue ( double  penaltyStartValue)
Parameters
penaltyStartValuepenalty start value

References mu0.

◆ setXTolerance()

void sgpp::optimization::optimizer::SquaredPenalty::setXTolerance ( double  xTolerance)
Parameters
xTolerancepoint tolerance

References theta.

Member Data Documentation

◆ DEFAULT_CONSTRAINT_TOLERANCE

constexpr double sgpp::optimization::optimizer::SquaredPenalty::DEFAULT_CONSTRAINT_TOLERANCE = 1e-6
staticconstexpr

default constraint tolerance

◆ DEFAULT_PENALTY_INCREASE_FACTOR

constexpr double sgpp::optimization::optimizer::SquaredPenalty::DEFAULT_PENALTY_INCREASE_FACTOR = 10.0
staticconstexpr

default penalty increase factor

◆ DEFAULT_PENALTY_START_VALUE

constexpr double sgpp::optimization::optimizer::SquaredPenalty::DEFAULT_PENALTY_START_VALUE = 1.0
staticconstexpr

default penalty start value

◆ DEFAULT_X_TOLERANCE

constexpr double sgpp::optimization::optimizer::SquaredPenalty::DEFAULT_X_TOLERANCE = 1e-6
staticconstexpr

default point tolerance

◆ epsilon

double sgpp::optimization::optimizer::SquaredPenalty::epsilon
protected

constraint tolerance

Referenced by getConstraintTolerance(), optimize(), and setConstraintTolerance().

◆ kHistInner

std::vector<size_t> sgpp::optimization::optimizer::SquaredPenalty::kHistInner
protected

search history (number of inner iterations)

Referenced by getHistoryOfInnerIterationNumbers(), and optimize().

◆ mu0

double sgpp::optimization::optimizer::SquaredPenalty::mu0
protected

penalty start value

Referenced by getPenaltyStartValue(), optimize(), and setPenaltyStartValue().

◆ rhoMuPlus

double sgpp::optimization::optimizer::SquaredPenalty::rhoMuPlus
protected

penalty increase factor

Referenced by getPenaltyIncreaseFactor(), optimize(), and setPenaltyIncreaseFactor().

◆ theta

double sgpp::optimization::optimizer::SquaredPenalty::theta
protected

point tolerance

Referenced by getXTolerance(), optimize(), setXTolerance(), and SquaredPenalty().

◆ xHistInner

base::DataMatrix sgpp::optimization::optimizer::SquaredPenalty::xHistInner
protected

search history (inner iterations)

Referenced by getHistoryOfInnerIterationPoints(), and optimize().


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