ROL
|
Provides the interface for and implments a bundle. More...
#include <ROL_Bundle.hpp>
Public Member Functions | |
virtual | ~Bundle (void) |
Bundle (const unsigned maxSize=10, const Real coeff=0.0, const unsigned remSize=2) | |
void | initialize (const Vector< Real > &g) |
const Real | linearizationError (const unsigned i) const |
const Real | distanceMeasure (const unsigned i) const |
const Vector< Real > & | subgradient (const unsigned i) const |
const Real | computeAlpha (const Real dm, const Real le) const |
const Real | alpha (const unsigned i) const |
unsigned | size (void) const |
void | aggregate (Vector< Real > &aggSubGrad, Real &aggLinErr, Real &aggDistMeas) const |
void | reset (const Vector< Real > &g, const Real le, const Real dm) |
void | update (const bool flag, const Real linErr, const Real distMeas, const Vector< Real > &g, const Vector< Real > &s) |
virtual unsigned | solveDual (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
Protected Member Functions | |
Real | getDualVariables (const unsigned i) |
void | setDualVariables (const unsigned i, const Real val) |
void | resetDualVariables (void) |
Protected Attributes | |
Teuchos::RCP< Vector< Real > > | tG_ |
Teuchos::RCP< Vector< Real > > | eG_ |
Teuchos::RCP< Vector< Real > > | yG_ |
Teuchos::RCP< Vector< Real > > | gx_ |
Teuchos::RCP< Vector< Real > > | ge_ |
Private Member Functions | |
void | remove (const std::vector< unsigned > &ind) |
void | add (const Vector< Real > &g, const Real le, const Real dm) |
void | initializeDualSolver (void) |
Real | evaluateObjective (std::vector< Real > &g, const std::vector< Real > &x, const Real t) const |
void | applyFullMatrix (std::vector< Real > &Hx, const std::vector< Real > &x) const |
void | applyMatrix (std::vector< Real > &Hx, const std::vector< Real > &x) const |
void | computeLagMult (std::vector< Real > &lam, const Real mu, const std::vector< Real > &g) const |
bool | isNonnegative (unsigned &ind, const std::vector< Real > &x) const |
Real | computeAlpha (unsigned &ind, const std::vector< Real > &x, const std::vector< Real > &p) const |
unsigned | solveEQPsubproblem (std::vector< Real > &s, Real &mu, const std::vector< Real > &g, const Real tol) const |
void | applyPreconditioner (std::vector< Real > &Px, const std::vector< Real > &x) const |
void | applyG (std::vector< Real > &Gx, const std::vector< Real > &x) const |
void | applyPreconditioner_Identity (std::vector< Real > &Px, const std::vector< Real > &x) const |
void | applyG_Identity (std::vector< Real > &Gx, const std::vector< Real > &x) const |
void | applyPreconditioner_Jacobi (std::vector< Real > &Px, const std::vector< Real > &x) const |
void | applyG_Jacobi (std::vector< Real > &Gx, const std::vector< Real > &x) const |
void | applyPreconditioner_SymGS (std::vector< Real > &Px, const std::vector< Real > &x) const |
void | applyG_SymGS (std::vector< Real > &Gx, const std::vector< Real > &x) const |
void | computeResidualUpdate (std::vector< Real > &r, std::vector< Real > &g) const |
unsigned | projectedCG (std::vector< Real > &x, Real &mu, const std::vector< Real > &b, const Real tol) const |
Real | dot (const std::vector< Real > &x, const std::vector< Real > &y) const |
Real | norm (const std::vector< Real > &x) const |
void | axpy (const Real a, const std::vector< Real > &x, std::vector< Real > &y) const |
void | scale (std::vector< Real > &x, const Real a) const |
void | scale (std::vector< Real > &x, const Real a, const std::vector< Real > &y) const |
unsigned | solveDual_dim1 (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
unsigned | solveDual_dim2 (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
unsigned | solveDual_arbitrary (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
void | project (std::vector< Real > &x, const std::vector< Real > &v) const |
Real | computeCriticality (const std::vector< Real > &g) |
Private Attributes | |
std::vector< Teuchos::RCP< Vector< Real > > > | subgradients_ |
std::vector< Real > | linearizationErrors_ |
std::vector< Real > | distanceMeasures_ |
std::vector< Real > | dualVariables_ |
unsigned | size_ |
unsigned | maxSize_ |
unsigned | remSize_ |
Real | coeff_ |
bool | isInitialized_ |
std::set< unsigned > | workingSet_ |
std::set< unsigned > | nworkingSet_ |
Provides the interface for and implments a bundle.
Definition at line 62 of file ROL_Bundle.hpp.
|
inlinevirtual |
Definition at line 120 of file ROL_Bundle.hpp.
|
inline |
Definition at line 121 of file ROL_Bundle.hpp.
References ROL::ROL_OVERFLOW.
|
inlineprivate |
Definition at line 81 of file ROL_Bundle.hpp.
References ROL::ROL_OVERFLOW, and ROL::Bundle< Real >::size_.
|
inlineprivate |
Definition at line 103 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::reset().
|
inline |
Definition at line 134 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::clone(), ROL::Bundle< Real >::ge_, ROL::Bundle< Real >::gx_, and ROL::Bundle< Real >::maxSize_.
|
inline |
Definition at line 153 of file ROL_Bundle.hpp.
|
inline |
Definition at line 157 of file ROL_Bundle.hpp.
|
inline |
Definition at line 161 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), ROL::Bundle_TT< Real >::evaluateObjective(), ROL::Bundle_TT< Real >::GiTGj(), and ROL::Bundle_TT< Real >::solveDual_dim2().
|
inline |
Definition at line 165 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), and ROL::ROL_EPSILON.
Referenced by ROL::Bundle< Real >::alpha(), and ROL::Bundle< Real >::solveDual_arbitrary().
|
inline |
Definition at line 173 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::computeAlpha().
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::checkPrimary(), ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle_TT< Real >::evaluateObjective(), ROL::Bundle< Real >::projectedCG(), ROL::Bundle< Real >::solveDual_arbitrary(), ROL::Bundle_TT< Real >::solveDual_dim2(), ROL::Bundle< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 177 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), ROL::Bundle_TT< Real >::evaluateObjective(), ROL::Bundle_TT< Real >::solveDual(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::solveSystem().
|
inline |
Definition at line 181 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::plus(), ROL::Vector< Real >::set(), ROL::Bundle< Real >::size_, and ROL::Vector< Real >::zero().
|
inline |
Definition at line 203 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::add(), ROL::ROL_EPSILON, and ROL::Bundle< Real >::size_.
|
inline |
Definition at line 230 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::dual(), and ROL::Bundle< Real >::size_.
|
inlineprotected |
Definition at line 257 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual(), ROL::Bundle_TT< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprotected |
Definition at line 261 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_dim1(), ROL::Bundle_TT< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprotected |
Definition at line 265 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 280 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 316 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), and ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 340 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 355 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 374 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 388 of file ROL_Bundle.hpp.
References ROL::ROL_EPSILON, ROL::ROL_OVERFLOW, and ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 406 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::ROL_EPSILON, and ROL::Bundle< Real >::size_.
|
inlineprivate |
Definition at line 421 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::projectedCG().
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 443 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::applyPreconditioner_Identity(), ROL::Bundle< Real >::applyPreconditioner_Jacobi(), and ROL::Bundle< Real >::applyPreconditioner_SymGS().
Referenced by ROL::Bundle< Real >::computeResidualUpdate().
|
inlineprivate |
Definition at line 454 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::applyG_Identity(), ROL::Bundle< Real >::applyG_Jacobi(), and ROL::Bundle< Real >::applyG_SymGS().
Referenced by ROL::Bundle< Real >::computeResidualUpdate().
|
inlineprivate |
Definition at line 463 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 479 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 483 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot().
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 508 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot().
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 516 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 564 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot().
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 572 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::applyG(), and ROL::Bundle< Real >::applyPreconditioner().
Referenced by ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 592 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::axpy(), ROL::Bundle< Real >::computeResidualUpdate(), ROL::Bundle< Real >::dot(), and ROL::Bundle< Real >::scale().
Referenced by ROL::Bundle< Real >::solveEQPsubproblem().
|
inlineprivate |
Definition at line 636 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyG_Jacobi(), ROL::Bundle< Real >::applyG_SymGS(), ROL::Bundle< Real >::applyPreconditioner_Jacobi(), ROL::Bundle< Real >::norm(), and ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 649 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot().
Referenced by ROL::Bundle< Real >::computeCriticality(), and ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 653 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::computeCriticality(), ROL::Bundle< Real >::projectedCG(), and ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 660 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::computeCriticality(), and ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 666 of file ROL_Bundle.hpp.
|
inlineprivate |
Definition at line 673 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::solveDual().
|
inlineprivate |
Definition at line 679 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), and ROL::ROL_EPSILON.
Referenced by ROL::Bundle< Real >::solveDual().
|
inlineprivate |
Definition at line 705 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::axpy(), ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::computeLagMult(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::isNonnegative(), ROL::Bundle< Real >::norm(), ROL::ROL_EPSILON, and ROL::Bundle< Real >::solveEQPsubproblem().
Referenced by ROL::Bundle< Real >::solveDual().
|
inlinevirtual |
Reimplemented in ROL::Bundle_TT< Real >.
Definition at line 751 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim1(), and ROL::Bundle< Real >::solveDual_dim2().
|
inlineprivate |
Definition at line 769 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::computeCriticality().
|
inlineprivate |
Definition at line 789 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::axpy(), ROL::Bundle< Real >::norm(), ROL::Bundle< Real >::project(), and ROL::Bundle< Real >::scale().
|
private |
Definition at line 67 of file ROL_Bundle.hpp.
|
private |
Definition at line 68 of file ROL_Bundle.hpp.
|
private |
Definition at line 69 of file ROL_Bundle.hpp.
|
private |
Definition at line 71 of file ROL_Bundle.hpp.
|
private |
Definition at line 73 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::isNonnegative(), ROL::Bundle< Real >::project(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::reset(), ROL::Bundle< Real >::size(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 75 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::initialize().
|
private |
Definition at line 76 of file ROL_Bundle.hpp.
|
private |
Definition at line 77 of file ROL_Bundle.hpp.
|
private |
Definition at line 79 of file ROL_Bundle.hpp.
|
protected |
Definition at line 112 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), and ROL::Bundle_TT< Real >::evaluateObjective().
|
protected |
Definition at line 113 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), and ROL::Bundle_TT< Real >::evaluateObjective().
|
protected |
Definition at line 114 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), and ROL::Bundle_TT< Real >::evaluateObjective().
|
protected |
Definition at line 273 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle_TT< Real >::checkPrimary(), ROL::Bundle_TT< Real >::evaluateObjective(), ROL::Bundle< Real >::initialize(), and ROL::Bundle_TT< Real >::solveDual_dim2().
|
protected |
Definition at line 274 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::initialize().
|
private |
Definition at line 277 of file ROL_Bundle.hpp.
|
private |
Definition at line 278 of file ROL_Bundle.hpp.