ROL
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ROL::PrimalDualSystemStep< Real > Class Template Reference

Provides the interface to compute approximate solutions to 2x2 block systems arising from primal-dual interior point methods. More...

#include <ROL_PrimalDualSystemStep.hpp>

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

Public Member Functions

 PrimalDualSystemStep (ROL::ParameterList &parlist, const ROL::Ptr< Krylov< Real > > &krylov, const ROL::Ptr< Secant< Real > > &secant, ROL::Ptr< V > &scratch1)
 
 PrimalDualSystemStep (ROL::ParameterList &parlist, ROL::Ptr< V > &scratch1_)
 
void initialize (V &x, const V &g, V &res, const V &c, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Initialize step with equality constraint. More...
 
void compute (V &s, const V &x, const V &res, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Compute step (equality constraints). More...
 
void update (V &x, V &res, const V &s, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Update step, if successful (equality constraints). 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 > &s, 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 compute (Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Compute step. More...
 
virtual void update (Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Update step, if successful. 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 std::string printHeader (void) const
 Print iterate header. More...
 
virtual std::string printName (void) const
 Print step name. More...
 
virtual std::string print (AlgorithmState< Real > &algo_state, bool printHeader=false) const
 Print iterate status. More...
 
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 Types

typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef Objective< Real > OBJ
 
typedef BoundConstraint< Real > BND
 
typedef Constraint< Real > CON
 
typedef AlgorithmState< Real > AS
 
typedef SchurComplement< Real > SCHUR
 
typedef
PrimalDualInteriorPointBlock11 
OP11
 
typedef
PrimalDualInteriorPointBlock12 
OP12
 
typedef
PrimalDualInteriorPointBlock21 
OP21
 
typedef
PrimalDualInteriorPointBlock22 
OP22
 

Private Member Functions

ROL::Ptr< PVrepartition (V &x)
 
ROL::Ptr< const PVrepartition (const V &x)
 

Private Attributes

ROL::Ptr< Secant< Real > > secant_
 
ROL::Ptr< Krylov< Real > > krylov_
 
ROL::Ptr< Vscratch1_
 
ROL::Ptr< Vscratch_
 
ROL::Ptr< OP11A_
 
ROL::Ptr< OP12B_
 
ROL::Ptr< OP21C_
 
ROL::Ptr< OP22D_
 
ROL::Ptr< SCHURschur_
 
ROL::Ptr< OPop_
 
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...
 
bool useSecantPrecond_
 
bool useSchurComplement_
 

Static Private Attributes

static const size_type OPT = 0
 
static const size_type EQUAL = 1
 
static const size_type LOWER = 2
 
static const size_type UPPER = 3
 
static const size_type OPTMULT = 0
 
static const size_type BNDMULT = 1
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::Step< Real >
ROL::Ptr< StepState< Real > > getState (void)
 

Detailed Description

template<class Real>
class ROL::PrimalDualSystemStep< Real >

Provides the interface to compute approximate solutions to 2x2 block systems arising from primal-dual interior point methods.

Note that as we do not need an additional Lagrange multiplier for the primal dual system, the vector expected to be passed in its place is the primal-dual residual

Definition at line 65 of file ROL_PrimalDualSystemStep.hpp.

Member Typedef Documentation

template<class Real >
typedef Vector<Real> ROL::PrimalDualSystemStep< Real >::V
private

Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef PartitionedVector<Real> ROL::PrimalDualSystemStep< Real >::PV
private

Definition at line 68 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef Objective<Real> ROL::PrimalDualSystemStep< Real >::OBJ
private

Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef BoundConstraint<Real> ROL::PrimalDualSystemStep< Real >::BND
private

Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef Constraint<Real> ROL::PrimalDualSystemStep< Real >::CON
private

Definition at line 71 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef AlgorithmState<Real> ROL::PrimalDualSystemStep< Real >::AS
private

Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef SchurComplement<Real> ROL::PrimalDualSystemStep< Real >::SCHUR
private

Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef PrimalDualInteriorPointBlock11 ROL::PrimalDualSystemStep< Real >::OP11
private

Definition at line 75 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef PrimalDualInteriorPointBlock12 ROL::PrimalDualSystemStep< Real >::OP12
private

Definition at line 76 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef PrimalDualInteriorPointBlock21 ROL::PrimalDualSystemStep< Real >::OP21
private

Definition at line 77 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
typedef PrimalDualInteriorPointBlock22 ROL::PrimalDualSystemStep< Real >::OP22
private

Definition at line 78 of file ROL_PrimalDualSystemStep.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep ( ROL::ParameterList &  parlist,
const ROL::Ptr< Krylov< Real > > &  krylov,
const ROL::Ptr< Secant< Real > > &  secant,
ROL::Ptr< V > &  scratch1 
)
inline
template<class Real >
ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep ( ROL::ParameterList &  parlist,
ROL::Ptr< V > &  scratch1_ 
)
inline

Member Function Documentation

template<class Real >
ROL::Ptr<PV> ROL::PrimalDualSystemStep< Real >::repartition ( V x)
inlineprivate
template<class Real >
ROL::Ptr<const PV> ROL::PrimalDualSystemStep< Real >::repartition ( const V x)
inlineprivate
template<class Real >
void ROL::PrimalDualSystemStep< Real >::initialize ( V x,
const V g,
V l,
const V c,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual
template<class Real >
void ROL::PrimalDualSystemStep< Real >::compute ( V s,
const V x,
const V l,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual
template<class Real >
void ROL::PrimalDualSystemStep< Real >::update ( V x,
V l,
const V s,
OBJ obj,
CON con,
BND bnd,
AS algo_state 
)
inlinevirtual

Update step, if successful (equality constraints).

Reimplemented from ROL::Step< Real >.

Definition at line 224 of file ROL_PrimalDualSystemStep.hpp.

References ROL::Step< Real >::getState().

Member Data Documentation

template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::OPT = 0
staticprivate
template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::EQUAL = 1
staticprivate
template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::LOWER = 2
staticprivate
template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::UPPER = 3
staticprivate
template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::OPTMULT = 0
staticprivate
template<class Real >
const size_type ROL::PrimalDualSystemStep< Real >::BNDMULT = 1
staticprivate
template<class Real >
ROL::Ptr<Secant<Real> > ROL::PrimalDualSystemStep< Real >::secant_
private

Definition at line 93 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
ROL::Ptr<Krylov<Real> > ROL::PrimalDualSystemStep< Real >::krylov_
private

Definition at line 94 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
ROL::Ptr<V> ROL::PrimalDualSystemStep< Real >::scratch1_
private
template<class Real >
ROL::Ptr<V> ROL::PrimalDualSystemStep< Real >::scratch_
private

Definition at line 96 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
ROL::Ptr<OP11> ROL::PrimalDualSystemStep< Real >::A_
private
template<class Real >
ROL::Ptr<OP12> ROL::PrimalDualSystemStep< Real >::B_
private
template<class Real >
ROL::Ptr<OP21> ROL::PrimalDualSystemStep< Real >::C_
private
template<class Real >
ROL::Ptr<OP22> ROL::PrimalDualSystemStep< Real >::D_
private
template<class Real >
ROL::Ptr<SCHUR> ROL::PrimalDualSystemStep< Real >::schur_
private
template<class Real >
ROL::Ptr<OP> ROL::PrimalDualSystemStep< Real >::op_
private
template<class Real >
int ROL::PrimalDualSystemStep< Real >::iterKrylov_
private

Number of Krylov iterations (used for inexact Newton)

Definition at line 106 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
int ROL::PrimalDualSystemStep< Real >::flagKrylov_
private

Termination flag for Krylov method (used for inexact Newton)

Definition at line 107 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
int ROL::PrimalDualSystemStep< Real >::verbosity_
private

Verbosity level.

Definition at line 108 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
bool ROL::PrimalDualSystemStep< Real >::useSecantPrecond_
private

Definition at line 110 of file ROL_PrimalDualSystemStep.hpp.

template<class Real >
bool ROL::PrimalDualSystemStep< Real >::useSchurComplement_
private

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