![]() |
SG++-Doxygen-Documentation
|
Gradient-based nonlinear conjugate gradient method. More...
#include <Newton.hpp>
Static Public Attributes | |
static constexpr double | DEFAULT_ALPHA1 = 1e-6 |
default steepest descent restart parameter 1 | |
static constexpr double | DEFAULT_ALPHA2 = 1e-6 |
default steepest descent restart parameter 2 | |
static constexpr double | DEFAULT_BETA = 0.5 |
default beta (parameter for Armijo's rule) | |
static constexpr double | DEFAULT_EPSILON = 1e-18 |
default epsilon (parameter for Armijo's rule) | |
static constexpr double | DEFAULT_GAMMA = 1e-2 |
default gamma (parameter for Armijo's rule) | |
static constexpr double | DEFAULT_P = 0.1 |
default steepest descent restart exponent | |
static constexpr double | DEFAULT_TOLERANCE = 1e-8 |
default tolerance (parameter for Armijo's rule) | |
![]() | |
static const size_t | DEFAULT_N = 1000 |
default maximal number of iterations or function evaluations | |
Protected Attributes | |
double | alpha1 |
steepest descent restart parameter 1 | |
double | alpha2 |
steepest descent restart parameter 2 | |
double | beta |
beta (parameter for Armijo's rule) | |
const base::sle_solver::GaussianElimination | defaultSleSolver |
default linear solver | |
double | eps |
epsilon (parameter for Armijo's rule) | |
double | gamma |
gamma (parameter for Armijo's rule) | |
double | p |
steepest descent restart exponent | |
const base::sle_solver::SLESolver & | sleSolver |
linear solver | |
double | tol |
tolerance (parameter for Armijo's rule) | |
![]() | |
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) | |
Gradient-based nonlinear conjugate gradient method.
The method is restarted with the steepest descent direction if the inner product of negated gradient and search direction is not big enough (criterion depending on three parameters).
sgpp::optimization::optimizer::Newton::Newton | ( | const base::ScalarFunction & | f, |
const base::ScalarFunctionHessian & | fHessian, | ||
size_t | maxItCount = DEFAULT_N , |
||
double | beta = DEFAULT_BETA , |
||
double | gamma = DEFAULT_GAMMA , |
||
double | tolerance = DEFAULT_TOLERANCE , |
||
double | epsilon = DEFAULT_EPSILON , |
||
double | alpha1 = DEFAULT_ALPHA1 , |
||
double | alpha2 = DEFAULT_ALPHA2 , |
||
double | p = DEFAULT_P |
||
) |
Constructor.
By default, GaussianElimination is used to solve the linear systems.
f | objective function |
fHessian | objective function Hessian |
maxItCount | maximal number of iterations |
beta | beta (parameter for Armijo's rule) |
gamma | gamma (parameter for Armijo's rule) |
tolerance | tolerance (parameter for Armijo's rule) |
epsilon | epsilon (parameter for Armijo's rule) |
alpha1 | steepest descent restart parameter 1 |
alpha2 | steepest descent restart parameter 2 |
p | steepest descent restart exponent |
sgpp::optimization::optimizer::Newton::Newton | ( | const base::ScalarFunction & | f, |
const base::ScalarFunctionHessian & | fHessian, | ||
size_t | maxItCount, | ||
double | beta, | ||
double | gamma, | ||
double | tolerance, | ||
double | epsilon, | ||
double | alpha1, | ||
double | alpha2, | ||
double | p, | ||
const base::sle_solver::SLESolver & | sleSolver | ||
) |
Constructor.
Do not destruct the solver before this object!
f | objective function |
fHessian | objective function Hessian |
maxItCount | maximal number of iterations |
beta | beta (parameter for Armijo's rule) |
gamma | gamma (parameter for Armijo's rule) |
tolerance | tolerance (parameter for Armijo's rule) |
epsilon | epsilon (parameter for Armijo's rule) |
alpha1 | steepest descent restart parameter 1 |
alpha2 | steepest descent restart parameter 2 |
p | steepest descent restart exponent |
sleSolver | reference to linear solver for solving the linear systems (Hessian as coefficient matrix) |
sgpp::optimization::optimizer::Newton::Newton | ( | const Newton & | 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().
double sgpp::optimization::optimizer::Newton::getAlpha1 | ( | ) | const |
References alpha1.
double sgpp::optimization::optimizer::Newton::getAlpha2 | ( | ) | const |
References alpha2.
double sgpp::optimization::optimizer::Newton::getBeta | ( | ) | const |
References beta.
double sgpp::optimization::optimizer::Newton::getEpsilon | ( | ) | const |
References eps.
double sgpp::optimization::optimizer::Newton::getGamma | ( | ) | const |
References gamma.
double sgpp::optimization::optimizer::Newton::getP | ( | ) | const |
References p.
double sgpp::optimization::optimizer::Newton::getTolerance | ( | ) | const |
References tol.
|
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 alpha1, alpha2, sgpp::base::DataVector::append(), sgpp::base::DataMatrix::appendRow(), beta, sgpp::base::Printer::disableStatusPrinting(), sgpp::base::Printer::enableStatusPrinting(), eps, sgpp::optimization::optimizer::UnconstrainedOptimizer::f, sgpp::optimization::optimizer::UnconstrainedOptimizer::fHessian, sgpp::optimization::optimizer::UnconstrainedOptimizer::fHist, sgpp::optimization::optimizer::UnconstrainedOptimizer::fOpt, gamma, sgpp::base::Printer::getInstance(), sgpp::base::Printer::isStatusPrintingEnabled(), sgpp::base::DataVector::l2Norm(), sgpp::optimization::optimizer::lineSearchArmijo(), sgpp::optimization::optimizer::UnconstrainedOptimizer::N, p, sgpp::base::Printer::printStatusBegin(), sgpp::base::Printer::printStatusEnd(), sgpp::base::Printer::printStatusUpdate(), sgpp::base::DataMatrix::resize(), sleSolver, sgpp::base::sle_solver::SLESolver::solve(), tol, sgpp::base::DataVector::toString(), sgpp::optimization::optimizer::UnconstrainedOptimizer::x0, sgpp::optimization::optimizer::UnconstrainedOptimizer::xHist, and sgpp::optimization::optimizer::UnconstrainedOptimizer::xOpt.
void sgpp::optimization::optimizer::Newton::setAlpha1 | ( | double | alpha1 | ) |
alpha1 | steepest descent restart parameter 1 |
References alpha1.
void sgpp::optimization::optimizer::Newton::setAlpha2 | ( | double | alpha2 | ) |
alpha2 | steepest descent restart parameter 2 |
References alpha2.
void sgpp::optimization::optimizer::Newton::setBeta | ( | double | beta | ) |
beta | beta (parameter for Armijo's rule) |
References beta.
void sgpp::optimization::optimizer::Newton::setEpsilon | ( | double | epsilon | ) |
epsilon | epsilon (parameter for Armijo's rule) |
References eps.
void sgpp::optimization::optimizer::Newton::setGamma | ( | double | gamma | ) |
gamma | gamma (parameter for Armijo's rule) |
References gamma.
void sgpp::optimization::optimizer::Newton::setP | ( | double | p | ) |
p | steepest descent restart exponent |
References p.
void sgpp::optimization::optimizer::Newton::setTolerance | ( | double | tolerance | ) |
tolerance | tolerance (parameter for Armijo's rule) |
References tol.
|
protected |
steepest descent restart parameter 1
Referenced by getAlpha1(), optimize(), and setAlpha1().
|
protected |
steepest descent restart parameter 2
Referenced by getAlpha2(), optimize(), and setAlpha2().
|
protected |
beta (parameter for Armijo's rule)
Referenced by getBeta(), optimize(), and setBeta().
|
staticconstexpr |
default steepest descent restart parameter 1
|
staticconstexpr |
default steepest descent restart parameter 2
|
staticconstexpr |
default beta (parameter for Armijo's rule)
|
staticconstexpr |
default epsilon (parameter for Armijo's rule)
|
staticconstexpr |
default gamma (parameter for Armijo's rule)
|
staticconstexpr |
default steepest descent restart exponent
|
staticconstexpr |
default tolerance (parameter for Armijo's rule)
|
protected |
default linear solver
|
protected |
epsilon (parameter for Armijo's rule)
Referenced by getEpsilon(), optimize(), and setEpsilon().
|
protected |
gamma (parameter for Armijo's rule)
Referenced by getGamma(), optimize(), and setGamma().
|
protected |
steepest descent restart exponent
Referenced by getP(), optimize(), and setP().
|
protected |
linear solver
Referenced by optimize().
|
protected |
tolerance (parameter for Armijo's rule)
Referenced by getTolerance(), optimize(), and setTolerance().