ROL
|
Provides the interface to compute optimization steps with projected inexact Newton's method using line search. More...
#include <ROL_NewtonKrylovStep.hpp>
Classes | |
class | HessianNK |
class | PrecondNK |
Public Member Functions | |
NewtonKrylovStep (ROL::ParameterList &parlist, const bool computeObj=true) | |
Constructor. More... | |
NewtonKrylovStep (ROL::ParameterList &parlist, const ROL::Ptr< Krylov< Real > > &krylov, const ROL::Ptr< Secant< Real > > &secant, const bool computeObj=true) | |
Constructor. More... | |
void | initialize (Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Initialize step with bound constraint. More... | |
void | compute (Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Compute step. More... | |
void | update (Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Update step, if successful. More... | |
std::string | printHeader (void) const |
Print iterate header. More... | |
std::string | printName (void) const |
Print step name. More... | |
std::string | print (AlgorithmState< Real > &algo_state, bool print_header=false) const |
Print iterate status. More... | |
Public Member Functions inherited from ROL::Step< Real > | |
virtual | ~Step () |
Step (void) | |
virtual void | initialize (Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state) |
Initialize step with bound constraint. More... | |
virtual void | initialize (Vector< Real > &x, const Vector< Real > &g, Vector< Real > &l, const Vector< Real > &c, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state) |
Initialize step with equality constraint. More... | |
virtual void | initialize (Vector< Real > &x, const Vector< Real > &g, Vector< Real > &l, const Vector< Real > &c, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Initialize step with equality constraint. More... | |
virtual void | compute (Vector< Real > &s, const Vector< Real > &x, const Vector< Real > &l, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state) |
Compute step (equality constraints). More... | |
virtual void | update (Vector< Real > &x, Vector< Real > &l, const Vector< Real > &s, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state) |
Update step, if successful (equality constraints). More... | |
virtual void | compute (Vector< Real > &s, const Vector< Real > &x, const Vector< Real > &l, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Compute step (equality constraints). More... | |
virtual void | update (Vector< Real > &x, Vector< Real > &l, const Vector< Real > &s, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state) |
Update step, if successful (equality constraints). More... | |
void | initialize (OptimizationProblem< Real > &opt, AlgorithmState< Real > &algo_state) |
void | compute (Vector< Real > &s, OptimizationProblem< Real > &opt, AlgorithmState< Real > &algo_state) |
void | update (OptimizationProblem< Real > &opt, const Vector< Real > &s, AlgorithmState< Real > &algo_state) |
const ROL::Ptr< const StepState< Real > > | getStepState (void) const |
Get state for step object. More... | |
void | reset (const Real searchSize=1.0) |
Get state for step object. More... | |
Private Attributes | |
ROL::Ptr< Secant< Real > > | secant_ |
Secant object (used for quasi-Newton) More... | |
ROL::Ptr< Krylov< Real > > | krylov_ |
Krylov solver object (used for inexact Newton) More... | |
EKrylov | ekv_ |
ESecant | esec_ |
ROL::Ptr< Vector< Real > > | gp_ |
int | iterKrylov_ |
Number of Krylov iterations (used for inexact Newton) More... | |
int | flagKrylov_ |
Termination flag for Krylov method (used for inexact Newton) More... | |
int | verbosity_ |
Verbosity level. More... | |
const bool | computeObj_ |
bool | useSecantPrecond_ |
Whether or not a secant approximation is used for preconditioning inexact Newton. More... | |
std::string | krylovName_ |
std::string | secantName_ |
Additional Inherited Members | |
Protected Member Functions inherited from ROL::Step< Real > | |
ROL::Ptr< StepState< Real > > | getState (void) |
Provides the interface to compute optimization steps with projected inexact Newton's method using line search.
Definition at line 66 of file ROL_NewtonKrylovStep.hpp.
|
inline |
Constructor.
Standard constructor to build a NewtonKrylovStep object. Algorithmic specifications are passed in through a ROL::ParameterList.
[in] | parlist | is a parameter list containing algorithmic specifications |
Definition at line 128 of file ROL_NewtonKrylovStep.hpp.
References ROL::NewtonKrylovStep< Real >::ekv_, ROL::NewtonKrylovStep< Real >::esec_, ROL::NewtonKrylovStep< Real >::krylov_, ROL::NewtonKrylovStep< Real >::krylovName_, ROL::NewtonKrylovStep< Real >::secant_, ROL::NewtonKrylovStep< Real >::secantName_, ROL::StringToEKrylov(), ROL::StringToESecant(), ROL::NewtonKrylovStep< Real >::useSecantPrecond_, and ROL::NewtonKrylovStep< Real >::verbosity_.
|
inline |
Constructor.
Constructor to build a NewtonKrylovStep object with user-defined secant and Krylov objects. Algorithmic specifications are passed in through a ROL::ParameterList.
[in] | parlist | is a parameter list containing algorithmic specifications |
[in] | krylov | is a user-defined Krylov object |
[in] | secant | is a user-defined secant object |
Definition at line 158 of file ROL_NewtonKrylovStep.hpp.
References ROL::NewtonKrylovStep< Real >::ekv_, ROL::NewtonKrylovStep< Real >::esec_, ROL::NewtonKrylovStep< Real >::krylov_, ROL::NewtonKrylovStep< Real >::krylovName_, ROL::NewtonKrylovStep< Real >::secant_, ROL::NewtonKrylovStep< Real >::secantName_, ROL::StringToEKrylov(), ROL::StringToESecant(), ROL::NewtonKrylovStep< Real >::useSecantPrecond_, and ROL::NewtonKrylovStep< Real >::verbosity_.
|
inlinevirtual |
Initialize step with bound constraint.
Reimplemented from ROL::Step< Real >.
Definition at line 194 of file ROL_NewtonKrylovStep.hpp.
References ROL::Vector< Real >::clone(), ROL::NewtonKrylovStep< Real >::gp_, ROL::Step< Real >::initialize(), and ROL::NewtonKrylovStep< Real >::useSecantPrecond_.
|
inlinevirtual |
Compute step.
Reimplemented from ROL::Step< Real >.
Definition at line 203 of file ROL_NewtonKrylovStep.hpp.
References ROL::NewtonKrylovStep< Real >::flagKrylov_, ROL::Step< Real >::getState(), ROL::AlgorithmState< Real >::iterateVec, ROL::NewtonKrylovStep< Real >::iterKrylov_, ROL::NewtonKrylovStep< Real >::krylov_, ROL::Vector< Real >::scale(), ROL::NewtonKrylovStep< Real >::secant_, ROL::Vector< Real >::set(), and ROL::NewtonKrylovStep< Real >::useSecantPrecond_.
|
inlinevirtual |
Update step, if successful.
Reimplemented from ROL::Step< Real >.
Definition at line 232 of file ROL_NewtonKrylovStep.hpp.
References ROL::NewtonKrylovStep< Real >::computeObj_, ROL::NewtonKrylovStep< Real >::flagKrylov_, ROL::Step< Real >::getState(), ROL::AlgorithmState< Real >::gnorm, ROL::NewtonKrylovStep< Real >::gp_, ROL::Objective< Real >::gradient(), ROL::AlgorithmState< Real >::iter, ROL::AlgorithmState< Real >::iterateVec, ROL::NewtonKrylovStep< Real >::iterKrylov_, ROL::AlgorithmState< Real >::nfval, ROL::AlgorithmState< Real >::ngrad, ROL::Vector< Real >::norm(), ROL::Vector< Real >::plus(), ROL::NewtonKrylovStep< Real >::secant_, ROL::AlgorithmState< Real >::snorm, ROL::Objective< Real >::update(), ROL::NewtonKrylovStep< Real >::useSecantPrecond_, ROL::Objective< Real >::value(), and ROL::AlgorithmState< Real >::value.
|
inlinevirtual |
Print iterate header.
Reimplemented from ROL::Step< Real >.
Definition at line 268 of file ROL_NewtonKrylovStep.hpp.
References ROL::DESCENT_NEWTONKRYLOV, ROL::EDescentToString(), and ROL::NewtonKrylovStep< Real >::verbosity_.
Referenced by ROL::NewtonKrylovStep< Real >::print().
|
inlinevirtual |
Print step name.
Reimplemented from ROL::Step< Real >.
Definition at line 298 of file ROL_NewtonKrylovStep.hpp.
References ROL::DESCENT_NEWTONKRYLOV, ROL::EDescentToString(), ROL::NewtonKrylovStep< Real >::esec_, ROL::ESecantToString(), ROL::NewtonKrylovStep< Real >::krylovName_, and ROL::NewtonKrylovStep< Real >::useSecantPrecond_.
Referenced by ROL::NewtonKrylovStep< Real >::print().
|
inlinevirtual |
Print iterate status.
Reimplemented from ROL::Step< Real >.
Definition at line 308 of file ROL_NewtonKrylovStep.hpp.
References ROL::NewtonKrylovStep< Real >::flagKrylov_, ROL::AlgorithmState< Real >::gnorm, ROL::AlgorithmState< Real >::iter, ROL::NewtonKrylovStep< Real >::iterKrylov_, ROL::AlgorithmState< Real >::nfval, ROL::AlgorithmState< Real >::ngrad, ROL::NewtonKrylovStep< Real >::printHeader(), ROL::NewtonKrylovStep< Real >::printName(), ROL::AlgorithmState< Real >::snorm, and ROL::AlgorithmState< Real >::value.
|
private |
Secant object (used for quasi-Newton)
Definition at line 69 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::compute(), ROL::NewtonKrylovStep< Real >::NewtonKrylovStep(), and ROL::NewtonKrylovStep< Real >::update().
|
private |
Krylov solver object (used for inexact Newton)
Definition at line 70 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::compute(), and ROL::NewtonKrylovStep< Real >::NewtonKrylovStep().
|
private |
Definition at line 72 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::NewtonKrylovStep().
|
private |
Definition at line 73 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::NewtonKrylovStep(), and ROL::NewtonKrylovStep< Real >::printName().
|
private |
Definition at line 75 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::initialize(), and ROL::NewtonKrylovStep< Real >::update().
|
private |
Number of Krylov iterations (used for inexact Newton)
Definition at line 77 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::compute(), ROL::NewtonKrylovStep< Real >::print(), and ROL::NewtonKrylovStep< Real >::update().
|
private |
Termination flag for Krylov method (used for inexact Newton)
Definition at line 78 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::compute(), ROL::NewtonKrylovStep< Real >::print(), and ROL::NewtonKrylovStep< Real >::update().
|
private |
Verbosity level.
Definition at line 79 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::NewtonKrylovStep(), and ROL::NewtonKrylovStep< Real >::printHeader().
|
private |
Definition at line 80 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::update().
|
private |
Whether or not a secant approximation is used for preconditioning inexact Newton.
Definition at line 82 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::compute(), ROL::NewtonKrylovStep< Real >::initialize(), ROL::NewtonKrylovStep< Real >::NewtonKrylovStep(), ROL::NewtonKrylovStep< Real >::printName(), and ROL::NewtonKrylovStep< Real >::update().
|
private |
Definition at line 84 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::NewtonKrylovStep(), and ROL::NewtonKrylovStep< Real >::printName().
|
private |
Definition at line 85 of file ROL_NewtonKrylovStep.hpp.
Referenced by ROL::NewtonKrylovStep< Real >::NewtonKrylovStep().