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 31 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 33 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 34 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 35 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 36 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 37 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 38 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 39 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 41 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 42 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 43 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 44 of file ROL_PrimalDualSystemStep.hpp.
|
inline |
Definition at line 113 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::useSchurComplement_.
Referenced by ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().
|
inline |
Definition at line 127 of file ROL_PrimalDualSystemStep.hpp.
References ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().
|
inlineprivate |
Definition at line 82 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 95 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 132 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 163 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 190 of file ROL_PrimalDualSystemStep.hpp.
References ROL::Step< Real >::getState().
|
staticprivate |
Definition at line 50 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 51 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 52 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 53 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::repartition().
|
staticprivate |
Definition at line 56 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), and ROL::PrimalDualSystemStep< Real >::initialize().
|
staticprivate |
Definition at line 57 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), and ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 59 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 60 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 61 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 62 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Definition at line 64 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 65 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 66 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 67 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 69 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Definition at line 70 of file ROL_PrimalDualSystemStep.hpp.
Referenced by ROL::PrimalDualSystemStep< Real >::initialize().
|
private |
Number of Krylov iterations (used for inexact Newton)
Definition at line 72 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Termination flag for Krylov method (used for inexact Newton)
Definition at line 73 of file ROL_PrimalDualSystemStep.hpp.
|
private |
Verbosity level.
Definition at line 74 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.
Referenced by ROL::PrimalDualSystemStep< Real >::compute(), ROL::PrimalDualSystemStep< Real >::initialize(), and ROL::PrimalDualSystemStep< Real >::PrimalDualSystemStep().