ROL
|
Provides the interface for and implements a bundle. More...
#include <ROL_Bundle.hpp>
Public Member Functions | |
virtual | ~Bundle (void) |
Bundle (const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2) | |
virtual void | initialize (const Vector< Real > &g) |
virtual unsigned | solveDual (const Real t, const unsigned maxit=1000, const Real tol=1.e-8)=0 |
const Real | linearizationError (const unsigned i) const |
const Real | distanceMeasure (const unsigned i) const |
const Vector< Real > & | subgradient (const unsigned i) const |
const Real | getDualVariable (const unsigned i) const |
void | setDualVariable (const unsigned i, const Real val) |
void | resetDualVariables (void) |
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) |
Protected Member Functions | |
const Real | GiGj (const unsigned i, const unsigned j) const |
const Real | dotGi (const unsigned i, const Vector< Real > &x) const |
void | addGi (const unsigned i, const Real a, Vector< Real > &x) const |
Real | evaluateObjective (std::vector< Real > &g, const std::vector< Real > &x, const Real t) 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) |
Private Member Functions | |
void | remove (const std::vector< unsigned > &ind) |
void | add (const Vector< Real > &g, const Real le, const Real dm) |
Private Attributes | |
std::vector< ROL::Ptr< Vector < Real > > > | subgradients_ |
std::vector< Real > | linearizationErrors_ |
std::vector< Real > | distanceMeasures_ |
std::vector< Real > | dualVariables_ |
ROL::Ptr< Vector< Real > > | tG_ |
ROL::Ptr< Vector< Real > > | eG_ |
ROL::Ptr< Vector< Real > > | yG_ |
ROL::Ptr< Vector< Real > > | gx_ |
ROL::Ptr< Vector< Real > > | ge_ |
unsigned | size_ |
unsigned | maxSize_ |
unsigned | remSize_ |
Real | coeff_ |
Real | omega_ |
bool | isInitialized_ |
Provides the interface for and implements a bundle.
Definition at line 28 of file ROL_Bundle.hpp.
|
inlinevirtual |
Definition at line 90 of file ROL_Bundle.hpp.
|
inline |
Definition at line 92 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::coeff_, ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::maxSize_, ROL::Bundle< Real >::omega_, ROL::Bundle< Real >::remSize_, ROL::Bundle< Real >::subgradients_, and zero.
|
inlineprivate |
Definition at line 54 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, and zero.
|
inlineprivate |
Definition at line 77 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, and zero.
Referenced by ROL::Bundle< Real >::reset().
|
inlinevirtual |
Reimplemented in ROL::Bundle_AS< Real >.
Definition at line 112 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_, ROL::Bundle< Real >::yG_, and zero.
Referenced by ROL::Bundle_AS< Real >::initialize().
|
pure virtual |
Implemented in ROL::Bundle_TT< Real >, and ROL::Bundle_AS< Real >.
|
inline |
Definition at line 134 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::linearizationErrors_.
|
inline |
Definition at line 138 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_.
|
inline |
Definition at line 142 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::subgradients_.
Referenced by ROL::Bundle< Real >::addGi(), ROL::Bundle< Real >::dotGi(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::GiGj(), and ROL::Bundle< Real >::solveDual_dim2().
|
inline |
Definition at line 146 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dualVariables_.
Referenced by ROL::Bundle_AS< Real >::initializeDualSolver(), ROL::Bundle_AS< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 150 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dualVariables_.
Referenced by ROL::Bundle_AS< Real >::initializeDualSolver(), ROL::Bundle_AS< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim1(), ROL::Bundle< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 154 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::size_, and zero.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 159 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::coeff_, and ROL::Bundle< Real >::omega_.
Referenced by ROL::Bundle< Real >::alpha().
|
inline |
Definition at line 167 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::computeAlpha(), ROL::Bundle< Real >::distanceMeasures_, and ROL::Bundle< Real >::linearizationErrors_.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle< Real >::computeAlpha(), ROL::Bundle_AS< Real >::computeStepSize(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle_AS< Real >::projectedCG(), ROL::Bundle_AS< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 171 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::size_.
Referenced by ROL::Bundle_AS< Real >::computeStepSize(), ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle_AS< Real >::isNonnegative(), ROL::Bundle_AS< Real >::project(), and ROL::Bundle_TT< Real >::solveSystem().
|
inline |
Definition at line 175 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 >::set(), ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, ROL::Bundle< Real >::tG_, ROL::Bundle< Real >::yG_, zero, and ROL::Vector< Real >::zero().
|
inline |
Definition at line 201 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::add(), ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::maxSize_, ROL::Bundle< Real >::remSize_, and ROL::Bundle< Real >::size_.
|
inline |
Definition at line 228 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::distanceMeasures_, ROL::Vector< Real >::dual(), ROL::Bundle< Real >::dualVariables_, ROL::Bundle< Real >::linearizationErrors_, ROL::Bundle< Real >::size_, ROL::Bundle< Real >::subgradients_, and zero.
|
inlineprotected |
Definition at line 254 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::subgradient().
Referenced by ROL::Bundle_AS< Real >::applyPreconditioner_SymGS().
|
inlineprotected |
Definition at line 258 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::dot(), and ROL::Bundle< Real >::subgradient().
Referenced by ROL::Bundle_AS< Real >::applyFullMatrix(), ROL::Bundle_AS< Real >::applyMatrix(), ROL::Bundle_AS< Real >::applyPreconditioner_SymGS(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::solveDual_dim2().
|
inlineprotected |
Definition at line 262 of file ROL_Bundle.hpp.
References ROL::Vector< Real >::axpy(), and ROL::Bundle< Real >::subgradient().
Referenced by ROL::Bundle_AS< Real >::applyPreconditioner_SymGS(), and ROL::Bundle< Real >::solveDual_dim2().
|
inlineprotected |
Definition at line 266 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::dotGi(), ROL::Bundle< Real >::eG_, ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::size(), ROL::Bundle< Real >::subgradient(), ROL::Bundle< Real >::tG_, and ROL::Bundle< Real >::yG_.
Referenced by ROL::Bundle_AS< Real >::solveDual_arbitrary().
|
inlineprotected |
Definition at line 293 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::setDualVariable().
Referenced by ROL::Bundle_AS< Real >::solveDual(), and ROL::Bundle_TT< Real >::solveDual().
|
inlineprotected |
Definition at line 299 of file ROL_Bundle.hpp.
References ROL::Bundle< Real >::addGi(), ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::dotGi(), ROL::Bundle< Real >::getDualVariable(), ROL::Bundle< Real >::gx_, ROL::Bundle< Real >::setDualVariable(), ROL::Bundle< Real >::subgradient(), and zero.
Referenced by ROL::Bundle_AS< Real >::solveDual(), and ROL::Bundle_TT< Real >::solveDual().
|
private |
Definition at line 33 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::subgradient(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 34 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 35 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 37 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::getDualVariable(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::resetDualVariables(), ROL::Bundle< Real >::setDualVariable(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 39 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 40 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 41 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::evaluateObjective(), and ROL::Bundle< Real >::initialize().
|
private |
Definition at line 42 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::evaluateObjective(), ROL::Bundle< Real >::initialize(), and ROL::Bundle< Real >::solveDual_dim2().
|
private |
Definition at line 43 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::initialize().
|
private |
Definition at line 45 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::add(), ROL::Bundle< Real >::aggregate(), ROL::Bundle< Real >::initialize(), ROL::Bundle< Real >::remove(), ROL::Bundle< Real >::reset(), ROL::Bundle< Real >::resetDualVariables(), ROL::Bundle< Real >::size(), and ROL::Bundle< Real >::update().
|
private |
Definition at line 47 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), ROL::Bundle< Real >::initialize(), and ROL::Bundle< Real >::reset().
|
private |
Definition at line 48 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), and ROL::Bundle< Real >::reset().
|
private |
Definition at line 49 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), and ROL::Bundle< Real >::computeAlpha().
|
private |
Definition at line 50 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::Bundle(), and ROL::Bundle< Real >::computeAlpha().
|
private |
Definition at line 52 of file ROL_Bundle.hpp.
Referenced by ROL::Bundle< Real >::initialize().