ROL
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.
void compute (V &s, const V &x, const V &res, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Compute step (equality constraints).
void update (V &x, V &res, const V &s, OBJ &obj, CON &con, BND &bnd, AS &algo_state)
 Update step, if successful (equality constraints).
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.
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.
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.
virtual void compute (Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Compute step.
virtual void update (Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Update step, if successful.
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).
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).
virtual std::string printHeader (void) const
 Print iterate header.
virtual std::string printName (void) const
 Print step name.
virtual std::string print (AlgorithmState< Real > &algo_state, bool printHeader=false) const
 Print iterate status.
const ROL::Ptr< const StepState< Real > > getStepState (void) const
 Get state for step object.
void reset (const Real searchSize=1.0)
 Get state for step object.

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).
int flagKrylov_
 Termination flag for Krylov method (used for inexact Newton).
int verbosity_
 Verbosity level.
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 31 of file ROL_PrimalDualSystemStep.hpp.

Member Typedef Documentation

◆ V

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

Definition at line 33 of file ROL_PrimalDualSystemStep.hpp.

◆ PV

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

Definition at line 34 of file ROL_PrimalDualSystemStep.hpp.

◆ OBJ

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

Definition at line 35 of file ROL_PrimalDualSystemStep.hpp.

◆ BND

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

Definition at line 36 of file ROL_PrimalDualSystemStep.hpp.

◆ CON

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

Definition at line 37 of file ROL_PrimalDualSystemStep.hpp.

◆ AS

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

Definition at line 38 of file ROL_PrimalDualSystemStep.hpp.

◆ SCHUR

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

Definition at line 39 of file ROL_PrimalDualSystemStep.hpp.

◆ OP11

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

Definition at line 41 of file ROL_PrimalDualSystemStep.hpp.

◆ OP12

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

Definition at line 42 of file ROL_PrimalDualSystemStep.hpp.

◆ OP21

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

Definition at line 43 of file ROL_PrimalDualSystemStep.hpp.

◆ OP22

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

Definition at line 44 of file ROL_PrimalDualSystemStep.hpp.

Constructor & Destructor Documentation

◆ PrimalDualSystemStep() [1/2]

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

◆ PrimalDualSystemStep() [2/2]

template<class Real>
ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep ( ROL::ParameterList & parlist,
ROL::Ptr< V > & scratch1_ )
inline

Member Function Documentation

◆ repartition() [1/2]

template<class Real>
ROL::Ptr< PV > ROL::PrimalDualSystemStep< Real >::repartition ( V & x)
inlineprivate

◆ repartition() [2/2]

template<class Real>
ROL::Ptr< const PV > ROL::PrimalDualSystemStep< Real >::repartition ( const V & x)
inlineprivate

◆ initialize()

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

Initialize step with equality constraint.

Reimplemented from ROL::Step< Real >.

Definition at line 132 of file ROL_PrimalDualSystemStep.hpp.

References A_, B_, BNDMULT, C_, D_, ROL::Step< Real >::initialize(), op_, OPTMULT, repartition(), schur_, scratch1_, and useSchurComplement_.

◆ compute()

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

Compute step (equality constraints).

Reimplemented from ROL::Step< Real >.

Definition at line 163 of file ROL_PrimalDualSystemStep.hpp.

References BNDMULT, ROL::Step< Real >::getState(), OPTMULT, repartition(), and useSchurComplement_.

◆ update()

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 190 of file ROL_PrimalDualSystemStep.hpp.

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

Member Data Documentation

◆ OPT

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::OPT = 0
staticprivate

Definition at line 50 of file ROL_PrimalDualSystemStep.hpp.

Referenced by repartition(), and repartition().

◆ EQUAL

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::EQUAL = 1
staticprivate

Definition at line 51 of file ROL_PrimalDualSystemStep.hpp.

Referenced by repartition(), and repartition().

◆ LOWER

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::LOWER = 2
staticprivate

Definition at line 52 of file ROL_PrimalDualSystemStep.hpp.

Referenced by repartition(), and repartition().

◆ UPPER

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::UPPER = 3
staticprivate

Definition at line 53 of file ROL_PrimalDualSystemStep.hpp.

Referenced by repartition(), and repartition().

◆ OPTMULT

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::OPTMULT = 0
staticprivate

Definition at line 56 of file ROL_PrimalDualSystemStep.hpp.

Referenced by compute(), and initialize().

◆ BNDMULT

template<class Real>
const size_type ROL::PrimalDualSystemStep< Real >::BNDMULT = 1
staticprivate

Definition at line 57 of file ROL_PrimalDualSystemStep.hpp.

Referenced by compute(), and initialize().

◆ secant_

template<class Real>
ROL::Ptr<Secant<Real> > ROL::PrimalDualSystemStep< Real >::secant_
private

Definition at line 59 of file ROL_PrimalDualSystemStep.hpp.

Referenced by PrimalDualSystemStep().

◆ krylov_

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

Definition at line 60 of file ROL_PrimalDualSystemStep.hpp.

Referenced by PrimalDualSystemStep().

◆ scratch1_

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

◆ scratch_

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

Definition at line 62 of file ROL_PrimalDualSystemStep.hpp.

◆ A_

template<class Real>
ROL::Ptr<OP11> ROL::PrimalDualSystemStep< Real >::A_
private

Definition at line 64 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize().

◆ B_

template<class Real>
ROL::Ptr<OP12> ROL::PrimalDualSystemStep< Real >::B_
private

Definition at line 65 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize().

◆ C_

template<class Real>
ROL::Ptr<OP21> ROL::PrimalDualSystemStep< Real >::C_
private

Definition at line 66 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize().

◆ D_

template<class Real>
ROL::Ptr<OP22> ROL::PrimalDualSystemStep< Real >::D_
private

Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize().

◆ schur_

template<class Real>
ROL::Ptr<SCHUR> ROL::PrimalDualSystemStep< Real >::schur_
private

Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize(), and PrimalDualSystemStep().

◆ op_

template<class Real>
ROL::Ptr<OP> ROL::PrimalDualSystemStep< Real >::op_
private

Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.

Referenced by initialize(), and PrimalDualSystemStep().

◆ iterKrylov_

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

Number of Krylov iterations (used for inexact Newton).

Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.

◆ flagKrylov_

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

Termination flag for Krylov method (used for inexact Newton).

Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.

◆ verbosity_

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

Verbosity level.

Definition at line 74 of file ROL_PrimalDualSystemStep.hpp.

◆ useSecantPrecond_

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

Definition at line 76 of file ROL_PrimalDualSystemStep.hpp.

◆ useSchurComplement_

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

Definition at line 77 of file ROL_PrimalDualSystemStep.hpp.

Referenced by compute(), initialize(), and PrimalDualSystemStep().


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