ROL
Classes | Public Member Functions | Private Attributes | List of all members
ROL::NewtonKrylovStep< Real > Class Template Reference

Provides the interface to compute optimization steps with projected inexact Newton's method using line search. More...

#include <ROL_NewtonKrylovStep.hpp>

+ Inheritance diagram for ROL::NewtonKrylovStep< Real >:

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)
 

Detailed Description

template<class Real>
class ROL::NewtonKrylovStep< Real >

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.

Constructor & Destructor Documentation

template<class Real >
ROL::NewtonKrylovStep< Real >::NewtonKrylovStep ( ROL::ParameterList &  parlist,
const bool  computeObj = true 
)
inline
template<class Real >
ROL::NewtonKrylovStep< Real >::NewtonKrylovStep ( ROL::ParameterList &  parlist,
const ROL::Ptr< Krylov< Real > > &  krylov,
const ROL::Ptr< Secant< Real > > &  secant,
const bool  computeObj = true 
)
inline

Constructor.

Constructor to build a NewtonKrylovStep object with user-defined secant and Krylov objects. Algorithmic specifications are passed in through a ROL::ParameterList.

Parameters
[in]parlistis a parameter list containing algorithmic specifications
[in]krylovis a user-defined Krylov object
[in]secantis 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_.

Member Function Documentation

template<class Real >
void ROL::NewtonKrylovStep< Real >::initialize ( Vector< Real > &  x,
const Vector< Real > &  s,
const Vector< Real > &  g,
Objective< Real > &  obj,
BoundConstraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual
template<class Real >
void ROL::NewtonKrylovStep< Real >::compute ( Vector< Real > &  s,
const Vector< Real > &  x,
Objective< Real > &  obj,
BoundConstraint< Real > &  bnd,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual
template<class Real >
void ROL::NewtonKrylovStep< Real >::update ( Vector< Real > &  x,
const Vector< Real > &  s,
Objective< Real > &  obj,
BoundConstraint< Real > &  bnd,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual
template<class Real >
std::string ROL::NewtonKrylovStep< Real >::printHeader ( void  ) const
inlinevirtual
template<class Real >
std::string ROL::NewtonKrylovStep< Real >::printName ( void  ) const
inlinevirtual
template<class Real >
std::string ROL::NewtonKrylovStep< Real >::print ( AlgorithmState< Real > &  algo_state,
bool  printHeader = false 
) const
inlinevirtual

Member Data Documentation

template<class Real >
ROL::Ptr<Secant<Real> > ROL::NewtonKrylovStep< Real >::secant_
private
template<class Real >
ROL::Ptr<Krylov<Real> > ROL::NewtonKrylovStep< Real >::krylov_
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().

template<class Real >
EKrylov ROL::NewtonKrylovStep< Real >::ekv_
private
template<class Real >
ESecant ROL::NewtonKrylovStep< Real >::esec_
private
template<class Real >
ROL::Ptr<Vector<Real> > ROL::NewtonKrylovStep< Real >::gp_
private
template<class Real >
int ROL::NewtonKrylovStep< Real >::iterKrylov_
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().

template<class Real >
int ROL::NewtonKrylovStep< Real >::flagKrylov_
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().

template<class Real >
int ROL::NewtonKrylovStep< Real >::verbosity_
private
template<class Real >
const bool ROL::NewtonKrylovStep< Real >::computeObj_
private

Definition at line 80 of file ROL_NewtonKrylovStep.hpp.

Referenced by ROL::NewtonKrylovStep< Real >::update().

template<class Real >
bool ROL::NewtonKrylovStep< Real >::useSecantPrecond_
private
template<class Real >
std::string ROL::NewtonKrylovStep< Real >::krylovName_
private
template<class Real >
std::string ROL::NewtonKrylovStep< Real >::secantName_
private

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