![]() |
SG++-Doxygen-Documentation
|
Augmented Lagrangian method for constrained optimization. More...
#include <AugmentedLagrangian.hpp>
Static Public Attributes | |
static constexpr double | DEFAULT_CONSTRAINT_TOLERANCE = 1e-6 |
default constraint tolerance | |
static constexpr double | DEFAULT_PENALTY_INCREASE_FACTOR = 1.5 |
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 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) | |
![]() | |
std::unique_ptr< base::VectorFunction > | g |
inequality constraint function | |
std::unique_ptr< base::VectorFunctionGradient > | gGradient |
inequality constraint function gradient | |
std::unique_ptr< base::VectorFunction > | h |
equality constraint function | |
std::unique_ptr< base::VectorFunctionGradient > | hGradient |
equality constraint function gradient | |
std::unique_ptr< UnconstrainedOptimizer > | unconstrainedOptimizer |
unconstrained optimization algorithm | |
![]() | |
std::unique_ptr< base::ScalarFunction > | f |
objective function | |
std::unique_ptr< base::ScalarFunctionGradient > | fGradient |
objective function gradient | |
std::unique_ptr< base::ScalarFunctionHessian > | fHessian |
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) | |
Augmented Lagrangian method for constrained optimization.
sgpp::optimization::optimizer::AugmentedLagrangian::AugmentedLagrangian | ( | 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).
f | objective function |
g | inequality constraint |
h | equality constraint |
maxItCount | maximal number of function evaluations |
xTolerance | point tolerance |
constraintTolerance | constraint tolerance |
penaltyStartValue | penalty start value |
penaltyIncreaseFactor | penalty increase factor |
sgpp::optimization::optimizer::AugmentedLagrangian::AugmentedLagrangian | ( | 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).
f | objective function |
fGradient | objective function gradient |
g | inequality constraint |
gGradient | inequality constraint gradient |
h | equality constraint |
hGradient | equality constraint gradient |
maxItCount | maximal number of function evaluations |
xTolerance | point tolerance |
constraintTolerance | constraint tolerance |
penaltyStartValue | penalty start value |
penaltyIncreaseFactor | penalty increase factor |
References theta, and sgpp::optimization::optimizer::ConstrainedOptimizer::unconstrainedOptimizer.
sgpp::optimization::optimizer::AugmentedLagrangian::AugmentedLagrangian | ( | 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).
unconstrainedOptimizer | unconstrained optimization algorithm |
g | inequality constraint |
gGradient | inequality constraint gradient (nullptr to omit) |
h | equality constraint |
hGradient | equality constraint gradient (nullptr to omit) |
maxItCount | maximal number of function evaluations |
xTolerance | point tolerance |
constraintTolerance | constraint tolerance |
penaltyStartValue | penalty start value |
penaltyIncreaseFactor | penalty increase factor |
sgpp::optimization::optimizer::AugmentedLagrangian::AugmentedLagrangian | ( | const AugmentedLagrangian & | other | ) |
Copy constructor.
other | optimizer to be copied |
|
override |
Destructor.
|
overridevirtual |
[out] | clone | pointer to cloned object |
Implements sgpp::optimization::optimizer::UnconstrainedOptimizer.
References clone().
Referenced by clone().
base::DataVector sgpp::optimization::optimizer::AugmentedLagrangian::findFeasiblePoint | ( | ) | const |
Try to find a feasible initial point by solving an auxiliary problem.
However, it is not guaranteed that the method works, i.e., it should be checked afterwards that the returned point is actually feasible.
References sgpp::optimization::optimizer::UnconstrainedOptimizer::f, sgpp::optimization::optimizer::ConstrainedOptimizer::g, sgpp::base::EmptyVectorFunction::getInstance(), sgpp::base::EmptyVectorFunctionGradient::getInstance(), sgpp::optimization::optimizer::ConstrainedOptimizer::gGradient, sgpp::optimization::optimizer::ConstrainedOptimizer::h, sgpp::optimization::optimizer::ConstrainedOptimizer::hGradient, sgpp::base::DataVector::max(), sgpp::base::DataVector::maxNorm(), mG, mH, sMax, and sMin.
double sgpp::optimization::optimizer::AugmentedLagrangian::getConstraintTolerance | ( | ) | const |
References epsilon.
const std::vector< size_t > & sgpp::optimization::optimizer::AugmentedLagrangian::getHistoryOfInnerIterationNumbers | ( | ) | const |
References kHistInner.
const base::DataMatrix & sgpp::optimization::optimizer::AugmentedLagrangian::getHistoryOfInnerIterationPoints | ( | ) | const |
References xHistInner.
double sgpp::optimization::optimizer::AugmentedLagrangian::getPenaltyIncreaseFactor | ( | ) | const |
References rhoMuPlus.
double sgpp::optimization::optimizer::AugmentedLagrangian::getPenaltyStartValue | ( | ) | const |
References mu0.
double sgpp::optimization::optimizer::AugmentedLagrangian::getXTolerance | ( | ) | const |
References theta.
|
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(), lambda, 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.
void sgpp::optimization::optimizer::AugmentedLagrangian::setConstraintTolerance | ( | double | constraintTolerance | ) |
constraintTolerance | constraint tolerance |
References epsilon.
void sgpp::optimization::optimizer::AugmentedLagrangian::setPenaltyIncreaseFactor | ( | double | penaltyIncreaseFactor | ) |
penaltyIncreaseFactor | penalty increase factor |
References rhoMuPlus.
void sgpp::optimization::optimizer::AugmentedLagrangian::setPenaltyStartValue | ( | double | penaltyStartValue | ) |
penaltyStartValue | penalty start value |
References mu0.
void sgpp::optimization::optimizer::AugmentedLagrangian::setXTolerance | ( | double | xTolerance | ) |
xTolerance | point tolerance |
References theta.
|
staticconstexpr |
default constraint tolerance
|
staticconstexpr |
default penalty increase factor
|
staticconstexpr |
default penalty start value
|
staticconstexpr |
default point tolerance
|
protected |
constraint tolerance
Referenced by getConstraintTolerance(), optimize(), and setConstraintTolerance().
|
protected |
search history (number of inner iterations)
Referenced by getHistoryOfInnerIterationNumbers(), and optimize().
|
protected |
penalty start value
Referenced by getPenaltyStartValue(), optimize(), and setPenaltyStartValue().
|
protected |
penalty increase factor
Referenced by getPenaltyIncreaseFactor(), optimize(), and setPenaltyIncreaseFactor().
|
protected |
point tolerance
Referenced by AugmentedLagrangian(), getXTolerance(), optimize(), and setXTolerance().
|
protected |
search history (inner iterations)
Referenced by getHistoryOfInnerIterationPoints(), and optimize().