ROL
|
Provides the interface to compute approximate solutions to 2x2 block systems arising from primal-dual interior point methods. More...
#include <ROL_PrimalDualSystemStep.hpp>
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< PV > | repartition (V &x) |
ROL::Ptr< const PV > | repartition (const V &x) |
Private Attributes | |
ROL::Ptr< Secant< Real > > | secant_ |
ROL::Ptr< Krylov< Real > > | krylov_ |
ROL::Ptr< V > | scratch1_ |
ROL::Ptr< V > | scratch_ |
ROL::Ptr< OP11 > | A_ |
ROL::Ptr< OP12 > | B_ |
ROL::Ptr< OP21 > | C_ |
ROL::Ptr< OP22 > | D_ |
ROL::Ptr< SCHUR > | schur_ |
ROL::Ptr< OP > | op_ |
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) |
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.
|
private |
Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 68 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 71 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 75 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 76 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 77 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 78 of file ROL_PrimalDualSystemStep.hpp.
|
inline |
Definition at line 147 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::useSchurComplement_.
Referenced by ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().
|
inline |
Definition at line 161 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().
|
inlineprivate |
Definition at line 116 of file ROL_PrimalDualSystemStep.hpp.
References ROL::CreatePartitionedVector(), ROL::PrimalDualSystemStep< Real >::EQUAL, ROL::PartitionedVector< Real >::get(), ROL::PrimalDualSystemStep< Real >::LOWER, ROL::PrimalDualSystemStep< Real >::OPT, and ROL::PrimalDualSystemStep< Real >::UPPER.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), and ROL::PrimalDualSystemStep< Real >::initialize().
|
inlineprivate |
Definition at line 129 of file ROL_PrimalDualSystemStep.hpp.
References ROL::CreatePartitionedVector(), ROL::PrimalDualSystemStep< Real >::EQUAL, ROL::PartitionedVector< Real >::get(), ROL::PrimalDualSystemStep< Real >::LOWER, ROL::PrimalDualSystemStep< Real >::OPT, and ROL::PrimalDualSystemStep< Real >::UPPER.
|
inlinevirtual |
Initialize step with equality constraint.
Reimplemented from ROL::Step< Real >.
Definition at line 166 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::A_, ROL::PrimalDualSystemStep< Real >::B_, ROL::PrimalDualSystemStep< Real >::BNDMULT, ROL::PrimalDualSystemStep< Real >::C_, ROL::PrimalDualSystemStep< Real >::D_, ROL::Step< Real >::initialize(), ROL::PrimalDualSystemStep< Real >::op_, ROL::PrimalDualSystemStep< Real >::OPTMULT, ROL::PrimalDualSystemStep< Real >::repartition(), ROL::PrimalDualSystemStep< Real >::schur_, ROL::PrimalDualSystemStep< Real >::scratch1_, and ROL::PrimalDualSystemStep< Real >::useSchurComplement_.
|
inlinevirtual |
Compute step (equality constraints).
Reimplemented from ROL::Step< Real >.
Definition at line 197 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::BNDMULT, ROL::Step< Real >::getState(), ROL::PrimalDualSystemStep< Real >::OPTMULT, ROL::PrimalDualSystemStep< Real >::repartition(), and ROL::PrimalDualSystemStep< Real >::useSchurComplement_.
|
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().
|
staticprivate |
Definition at line 84 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 85 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 86 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 87 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 90 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), and ROL::PrimalDualSystemStep< Real >::initialize().
|
staticprivate |
Definition at line 91 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), and ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 93 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 94 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 95 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 96 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 98 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 99 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 100 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 101 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 103 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 104 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Number of Krylov iterations (used for inexact Newton)
Definition at line 106 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Termination flag for Krylov method (used for inexact Newton)
Definition at line 107 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Verbosity level.
Definition at line 108 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 110 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 111 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), ROL::PrimalDualSystemStep< Real >::initialize(), and ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().