ROL
|
Provides the interface for and implments a bundle. More...
#include <ROL_Bundle.hpp>
Public Member Functions | |
~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) |
unsigned | solveDual (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
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_ |
Teuchos::RCP< Vector< Real > > | tG_ |
Teuchos::RCP< Vector< Real > > | eG_ |
Teuchos::RCP< Vector< Real > > | yG_ |
unsigned | size_ |
unsigned | maxSize_ |
unsigned | remSize_ |
Real | coeff_ |
bool | isInitialized_ |
Teuchos::RCP< Vector< Real > > | gx_ |
Teuchos::RCP< Vector< Real > > | ge_ |
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.
|
inline |
Definition at line 119 of file ROL_Bundle.hpp.
|
inline |
|
inlineprivate |
Definition at line 85 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::ROL_OVERFLOW, ROL::Bundle< Real >::size_, and ROL::Bundle< Real >::subgradients_.
|
inlineprivate |
Definition at line 107 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::size_, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::reset().
|
inline |
Definition at line 133 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::clone(), ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::ge_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::isInitialized_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::maxSize_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, and ROL::Bundle< Real >::yG_.
|
inline |
Definition at line 152 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::linearizationErrors_.
|
inline |
Definition at line 156 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_.
|
inline |
Definition at line 160 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::subgradients_.
|
inline |
Definition at line 164 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::coeff_, and ROL::ROL_EPSILON.
Referenced by ROL::Bundle< Real >::alpha(), and ROL::Bundle< Real >::solveDual_arbitrary().
|
inline |
Definition at line 172 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::distanceMeasures_, and ROL::Bundle< Real >::linearizationErrors_.
Referenced by ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::projectedCG(), ROL::Bundle< Real >::solveDual_arbitrary(), and ROL::Bundle< Real >::solveDual_dim2().
|
inline |
Definition at line 176 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
|
inline |
Definition at line 180 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::linearizationErrors_, ROL::Vector< Real >::plus(), ROL::Vector< Real >::set(), ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, ROL::Bundle< Real >::yG_, and ROL::Vector< Real >::zero().
|
inline |
Definition at line 202 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::add(), ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::maxSize_, ROL::Bundle< Real >::remSize_, ROL::ROL_EPSILON, and ROL::Bundle< Real >::size_.
|
inline |
Definition at line 229 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::size_, and ROL::Bundle< Real >::subgradients_.
|
inlineprivate |
Definition at line 262 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::nworkingSet_, ROL::Bundle< Real >::size_, and ROL::Bundle< Real >::workingSet_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 298 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, and ROL::Bundle< Real >::yG_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 322 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, and ROL::Bundle< Real >::yG_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 337 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::nworkingSet_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, and ROL::Bundle< Real >::yG_.
Referenced by ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 356 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::workingSet_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 370 of file ROL_Bundle.hpp.
References ROL::ROL_EPSILON, ROL::ROL_OVERFLOW, ROL::Bundle< Real >::size_, and ROL::Bundle< Real >::workingSet_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 388 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::nworkingSet_, ROL::ROL_EPSILON, and ROL::Bundle< Real >::size_.
|
inlineprivate |
Definition at line 403 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::nworkingSet_, ROL::Bundle< Real >::projectedCG(), and ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 425 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 436 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 445 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::nworkingSet_.
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 461 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 465 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot(), ROL::Bundle< Real >::nworkingSet_, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 490 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot(), ROL::Bundle< Real >::nworkingSet_, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 498 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::ge_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::nworkingSet_, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::applyPreconditioner().
|
inlineprivate |
Definition at line 546 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dot(), ROL::Bundle< Real >::nworkingSet_, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::applyG().
|
inlineprivate |
Definition at line 554 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 574 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(), ROL::Bundle< Real >::nworkingSet_, and ROL::Bundle< Real >::scale().
Referenced by ROL::Bundle< Real >::solveEQPsubproblem().
|
inlineprivate |
Definition at line 618 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 631 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 635 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 642 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::computeCriticality(), and ROL::Bundle< Real >::projectedCG().
|
inlineprivate |
Definition at line 648 of file ROL_Bundle.hpp.
|
inlineprivate |
Definition at line 655 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dualVariables_.
Referenced by ROL::Bundle< Real >::solveDual().
|
inlineprivate |
Definition at line 661 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::gx_, ROL::ROL_EPSILON, and ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::solveDual().
|
inlineprivate |
Definition at line 687 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 >::dualVariables_, ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::isNonnegative(), ROL::Bundle< Real >::norm(), ROL::Bundle< Real >::nworkingSet_, ROL::ROL_EPSILON, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::solveEQPsubproblem(), and ROL::Bundle< Real >::workingSet_.
Referenced by ROL::Bundle< Real >::solveDual().
|
inline |
Definition at line 733 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_, ROL::Bundle< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim1(), and ROL::Bundle< Real >::solveDual_dim2().
|
inlineprivate |
Definition at line 751 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle< Real >::computeCriticality().
|
inlineprivate |
Definition at line 771 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::axpy(), ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::norm(), ROL::Bundle< Real >::project(), ROL::Bundle< Real >::scale(), and ROL::Bundle< Real >::size_.
|
private |
Definition at line 67 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::applyG_Jacobi(), ROL::Bundle< Real >::applyG_SymGS(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::applyPreconditioner_Jacobi(), ROL::Bundle< Real >::applyPreconditioner_SymGS(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::solveDual_dim2(), ROL::Bundle< Real >::subgradient(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 68 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::linearizationError(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::reset(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 69 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::distanceMeasure(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::remove(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 71 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::computeCriticality(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim1(), ROL::Bundle< Real >::solveDual_dim2(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 73 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 74 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 75 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 77 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 >::computeCriticality(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::isNonnegative(), ROL::Bundle< Real >::project(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::reset(), ROL::Bundle< Real >::size(), ROL::Bundle< Real >::solveDual(), ROL::Bundle< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveEQPsubproblem(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 78 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::initialize(), and ROL::Bundle< Real >::reset().
|
private |
Definition at line 79 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), and ROL::Bundle< Real >::reset().
|
private |
Definition at line 81 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::computeAlpha().
|
private |
Definition at line 83 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::initialize().
|
private |
Definition at line 257 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyFullMatrix(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::applyPreconditioner_SymGS(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initialize(), and ROL::Bundle< Real >::solveDual_dim2().
|
private |
Definition at line 258 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyPreconditioner_SymGS(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 259 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::computeLagMult(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::isNonnegative(), and ROL::Bundle< Real >::solveDual_arbitrary().
|
private |
Definition at line 260 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::applyG_Jacobi(), ROL::Bundle< Real >::applyG_SymGS(), ROL::Bundle< Real >::applyMatrix(), ROL::Bundle< Real >::applyPreconditioner_Identity(), ROL::Bundle< Real >::applyPreconditioner_Jacobi(), ROL::Bundle< Real >::applyPreconditioner_SymGS(), ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::initializeDualSolver(), ROL::Bundle< Real >::projectedCG(), ROL::Bundle< Real >::solveDual_arbitrary(), and ROL::Bundle< Real >::solveEQPsubproblem().