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 (Teuchos::ParameterList &parlist, const Teuchos::RCP< Krylov< Real > > &krylov, const Teuchos::RCP< Secant< Real > > &secant, Teuchos::RCP< V > &scratch1)
 
 PrimalDualSystemStep (Teuchos::ParameterList &parlist, Teuchos::RCP< 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, EqualityConstraint< 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, EqualityConstraint< 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, EqualityConstraint< Real > &con, 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)
 
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 Teuchos::RCP< const StepState< Real > > getStepState (void) const
 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 EqualityConstraint< 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

Teuchos::RCP< PVrepartition (V &x)
 
Teuchos::RCP< const PVrepartition (const V &x)
 

Private Attributes

Teuchos::RCP< Secant< Real > > secant_
 
Teuchos::RCP< Krylov< Real > > krylov_
 
Teuchos::RCP< Vscratch1_
 
Teuchos::RCP< Vscratch_
 
Teuchos::RCP< OP11A_
 
Teuchos::RCP< OP12B_
 
Teuchos::RCP< OP21C_
 
Teuchos::RCP< OP22D_
 
Teuchos::RCP< SCHURschur_
 
Teuchos::RCP< 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 >
Teuchos::RCP< 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

◆ V

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

Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.

◆ PV

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

Definition at line 68 of file ROL_PrimalDualSystemStep.hpp.

◆ OBJ

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

Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.

◆ BND

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

Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.

◆ CON

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

Definition at line 71 of file ROL_PrimalDualSystemStep.hpp.

◆ AS

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

Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.

◆ SCHUR

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

Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.

◆ OP11

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

Definition at line 75 of file ROL_PrimalDualSystemStep.hpp.

◆ OP12

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

Definition at line 76 of file ROL_PrimalDualSystemStep.hpp.

◆ OP21

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

Definition at line 77 of file ROL_PrimalDualSystemStep.hpp.

◆ OP22

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

Definition at line 78 of file ROL_PrimalDualSystemStep.hpp.

Constructor & Destructor Documentation

◆ PrimalDualSystemStep() [1/2]

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

◆ PrimalDualSystemStep() [2/2]

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

Member Function Documentation

◆ repartition() [1/2]

template<class Real >
Teuchos::RCP<PV> ROL::PrimalDualSystemStep< Real >::repartition ( V x)
inlineprivate

◆ repartition() [2/2]

template<class Real >
Teuchos::RCP<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

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

References ROL::Step< Real >::getState(), and ROL::PrimalDualSystemStep< Real >::repartition().

◆ 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 224 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 84 of file ROL_PrimalDualSystemStep.hpp.

◆ EQUAL

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

Definition at line 85 of file ROL_PrimalDualSystemStep.hpp.

◆ LOWER

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

Definition at line 86 of file ROL_PrimalDualSystemStep.hpp.

◆ UPPER

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

Definition at line 87 of file ROL_PrimalDualSystemStep.hpp.

◆ OPTMULT

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

Definition at line 90 of file ROL_PrimalDualSystemStep.hpp.

◆ BNDMULT

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

Definition at line 91 of file ROL_PrimalDualSystemStep.hpp.

◆ secant_

template<class Real >
Teuchos::RCP<Secant<Real> > ROL::PrimalDualSystemStep< Real >::secant_
private

Definition at line 93 of file ROL_PrimalDualSystemStep.hpp.

◆ krylov_

template<class Real >
Teuchos::RCP<Krylov<Real> > ROL::PrimalDualSystemStep< Real >::krylov_
private

Definition at line 94 of file ROL_PrimalDualSystemStep.hpp.

◆ scratch1_

template<class Real >
Teuchos::RCP<V> ROL::PrimalDualSystemStep< Real >::scratch1_
private

Definition at line 95 of file ROL_PrimalDualSystemStep.hpp.

◆ scratch_

template<class Real >
Teuchos::RCP<V> ROL::PrimalDualSystemStep< Real >::scratch_
private

Definition at line 96 of file ROL_PrimalDualSystemStep.hpp.

◆ A_

template<class Real >
Teuchos::RCP<OP11> ROL::PrimalDualSystemStep< Real >::A_
private

◆ B_

template<class Real >
Teuchos::RCP<OP12> ROL::PrimalDualSystemStep< Real >::B_
private

◆ C_

template<class Real >
Teuchos::RCP<OP21> ROL::PrimalDualSystemStep< Real >::C_
private

◆ D_

template<class Real >
Teuchos::RCP<OP22> ROL::PrimalDualSystemStep< Real >::D_
private

◆ schur_

template<class Real >
Teuchos::RCP<SCHUR> ROL::PrimalDualSystemStep< Real >::schur_
private

Definition at line 103 of file ROL_PrimalDualSystemStep.hpp.

◆ op_

template<class Real >
Teuchos::RCP<OP> ROL::PrimalDualSystemStep< Real >::op_
private

Definition at line 104 of file ROL_PrimalDualSystemStep.hpp.

◆ iterKrylov_

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.

◆ flagKrylov_

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.

◆ verbosity_

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

Verbosity level.

Definition at line 108 of file ROL_PrimalDualSystemStep.hpp.

◆ useSecantPrecond_

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

Definition at line 110 of file ROL_PrimalDualSystemStep.hpp.

◆ useSchurComplement_

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

Definition at line 111 of file ROL_PrimalDualSystemStep.hpp.


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