ROL
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ROL::Bundle< Real > Class Template Reference

Provides the interface for and implments a bundle. More...

#include <ROL_Bundle.hpp>

+ Inheritance diagram for ROL::Bundle< Real >:

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_
 

Detailed Description

template<class Real>
class ROL::Bundle< Real >

Provides the interface for and implments a bundle.

Definition at line 62 of file ROL_Bundle.hpp.

Constructor & Destructor Documentation

◆ ~Bundle()

template<class Real >
virtual ROL::Bundle< Real >::~Bundle ( void  )
inlinevirtual

Definition at line 122 of file ROL_Bundle.hpp.

◆ Bundle()

template<class Real >
ROL::Bundle< Real >::Bundle ( const unsigned  maxSize = 10,
const Real  coeff = 0.0,
const unsigned  remSize = 2 
)
inline

Member Function Documentation

◆ remove()

template<class Real >
void ROL::Bundle< Real >::remove ( const std::vector< unsigned > &  ind)
inlineprivate

◆ add()

template<class Real >
void ROL::Bundle< Real >::add ( const Vector< Real > &  g,
const Real  le,
const Real  dm 
)
inlineprivate

◆ initialize()

template<class Real >
void ROL::Bundle< Real >::initialize ( const Vector< Real > &  g)
inline

◆ linearizationError()

template<class Real >
const Real ROL::Bundle< Real >::linearizationError ( const unsigned  i) const
inline

Definition at line 157 of file ROL_Bundle.hpp.

References ROL::Bundle< Real >::linearizationErrors_.

◆ distanceMeasure()

template<class Real >
const Real ROL::Bundle< Real >::distanceMeasure ( const unsigned  i) const
inline

Definition at line 161 of file ROL_Bundle.hpp.

References ROL::Bundle< Real >::distanceMeasures_.

◆ subgradient()

template<class Real >
const Vector<Real>& ROL::Bundle< Real >::subgradient ( const unsigned  i) const
inline

◆ computeAlpha() [1/2]

template<class Real >
const Real ROL::Bundle< Real >::computeAlpha ( const Real  dm,
const Real  le 
) const
inline

◆ alpha()

template<class Real >
const Real ROL::Bundle< Real >::alpha ( const unsigned  i) const
inline

◆ size()

template<class Real >
unsigned ROL::Bundle< Real >::size ( void  ) const
inline

◆ aggregate()

template<class Real >
void ROL::Bundle< Real >::aggregate ( Vector< Real > &  aggSubGrad,
Real &  aggLinErr,
Real &  aggDistMeas 
) const
inline

◆ reset()

template<class Real >
void ROL::Bundle< Real >::reset ( const Vector< Real > &  g,
const Real  le,
const Real  dm 
)
inline

◆ update()

template<class Real >
void ROL::Bundle< Real >::update ( const bool  flag,
const Real  linErr,
const Real  distMeas,
const Vector< Real > &  g,
const Vector< Real > &  s 
)
inline

◆ getDualVariables()

template<class Real >
Real ROL::Bundle< Real >::getDualVariables ( const unsigned  i)
inlineprotected

◆ setDualVariables()

template<class Real >
void ROL::Bundle< Real >::setDualVariables ( const unsigned  i,
const Real  val 
)
inlineprotected

◆ resetDualVariables()

template<class Real >
void ROL::Bundle< Real >::resetDualVariables ( void  )
inlineprotected

◆ initializeDualSolver()

template<class Real >
void ROL::Bundle< Real >::initializeDualSolver ( void  )
inlineprivate

◆ evaluateObjective()

template<class Real >
Real ROL::Bundle< Real >::evaluateObjective ( std::vector< Real > &  g,
const std::vector< Real > &  x,
const Real  t 
) const
inlineprivate

◆ applyFullMatrix()

template<class Real >
void ROL::Bundle< Real >::applyFullMatrix ( std::vector< Real > &  Hx,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyMatrix()

template<class Real >
void ROL::Bundle< Real >::applyMatrix ( std::vector< Real > &  Hx,
const std::vector< Real > &  x 
) const
inlineprivate

◆ computeLagMult()

template<class Real >
void ROL::Bundle< Real >::computeLagMult ( std::vector< Real > &  lam,
const Real  mu,
const std::vector< Real > &  g 
) const
inlineprivate

◆ isNonnegative()

template<class Real >
bool ROL::Bundle< Real >::isNonnegative ( unsigned &  ind,
const std::vector< Real > &  x 
) const
inlineprivate

◆ computeAlpha() [2/2]

template<class Real >
Real ROL::Bundle< Real >::computeAlpha ( unsigned &  ind,
const std::vector< Real > &  x,
const std::vector< Real > &  p 
) const
inlineprivate

◆ solveEQPsubproblem()

template<class Real >
unsigned ROL::Bundle< Real >::solveEQPsubproblem ( std::vector< Real > &  s,
Real &  mu,
const std::vector< Real > &  g,
const Real  tol 
) const
inlineprivate

◆ applyPreconditioner()

template<class Real >
void ROL::Bundle< Real >::applyPreconditioner ( std::vector< Real > &  Px,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyG()

template<class Real >
void ROL::Bundle< Real >::applyG ( std::vector< Real > &  Gx,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyPreconditioner_Identity()

template<class Real >
void ROL::Bundle< Real >::applyPreconditioner_Identity ( std::vector< Real > &  Px,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyG_Identity()

template<class Real >
void ROL::Bundle< Real >::applyG_Identity ( std::vector< Real > &  Gx,
const std::vector< Real > &  x 
) const
inlineprivate

Definition at line 492 of file ROL_Bundle.hpp.

Referenced by ROL::Bundle< Real >::applyG().

◆ applyPreconditioner_Jacobi()

template<class Real >
void ROL::Bundle< Real >::applyPreconditioner_Jacobi ( std::vector< Real > &  Px,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyG_Jacobi()

template<class Real >
void ROL::Bundle< Real >::applyG_Jacobi ( std::vector< Real > &  Gx,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyPreconditioner_SymGS()

template<class Real >
void ROL::Bundle< Real >::applyPreconditioner_SymGS ( std::vector< Real > &  Px,
const std::vector< Real > &  x 
) const
inlineprivate

◆ applyG_SymGS()

template<class Real >
void ROL::Bundle< Real >::applyG_SymGS ( std::vector< Real > &  Gx,
const std::vector< Real > &  x 
) const
inlineprivate

◆ computeResidualUpdate()

template<class Real >
void ROL::Bundle< Real >::computeResidualUpdate ( std::vector< Real > &  r,
std::vector< Real > &  g 
) const
inlineprivate

◆ projectedCG()

template<class Real >
unsigned ROL::Bundle< Real >::projectedCG ( std::vector< Real > &  x,
Real &  mu,
const std::vector< Real > &  b,
const Real  tol 
) const
inlineprivate

◆ dot()

template<class Real >
Real ROL::Bundle< Real >::dot ( const std::vector< Real > &  x,
const std::vector< Real > &  y 
) const
inlineprivate

◆ norm()

template<class Real >
Real ROL::Bundle< Real >::norm ( const std::vector< Real > &  x) const
inlineprivate

◆ axpy()

template<class Real >
void ROL::Bundle< Real >::axpy ( const Real  a,
const std::vector< Real > &  x,
std::vector< Real > &  y 
) const
inlineprivate

◆ scale() [1/2]

template<class Real >
void ROL::Bundle< Real >::scale ( std::vector< Real > &  x,
const Real  a 
) const
inlineprivate

◆ scale() [2/2]

template<class Real >
void ROL::Bundle< Real >::scale ( std::vector< Real > &  x,
const Real  a,
const std::vector< Real > &  y 
) const
inlineprivate

Definition at line 680 of file ROL_Bundle.hpp.

◆ solveDual_dim1()

template<class Real >
unsigned ROL::Bundle< Real >::solveDual_dim1 ( const Real  t,
const unsigned  maxit = 1000,
const Real  tol = 1.e-8 
)
inlineprivate

Definition at line 687 of file ROL_Bundle.hpp.

References ROL::Bundle< Real >::dualVariables_.

Referenced by ROL::Bundle< Real >::solveDual().

◆ solveDual_dim2()

template<class Real >
unsigned ROL::Bundle< Real >::solveDual_dim2 ( const Real  t,
const unsigned  maxit = 1000,
const Real  tol = 1.e-8 
)
inlineprivate

◆ solveDual_arbitrary()

template<class Real >
unsigned ROL::Bundle< Real >::solveDual_arbitrary ( const Real  t,
const unsigned  maxit = 1000,
const Real  tol = 1.e-8 
)
inlineprivate

◆ solveDual()

template<class Real >
virtual unsigned ROL::Bundle< Real >::solveDual ( const Real  t,
const unsigned  maxit = 1000,
const Real  tol = 1.e-8 
)
inlinevirtual

◆ project()

template<class Real >
void ROL::Bundle< Real >::project ( std::vector< Real > &  x,
const std::vector< Real > &  v 
) const
inlineprivate

Definition at line 783 of file ROL_Bundle.hpp.

References ROL::Bundle< Real >::size_.

Referenced by ROL::Bundle< Real >::computeCriticality().

◆ computeCriticality()

template<class Real >
Real ROL::Bundle< Real >::computeCriticality ( const std::vector< Real > &  g)
inlineprivate

Member Data Documentation

◆ subgradients_

template<class Real >
std::vector<Teuchos::RCP<Vector<Real> > > ROL::Bundle< Real >::subgradients_
private

◆ linearizationErrors_

template<class Real >
std::vector<Real> ROL::Bundle< Real >::linearizationErrors_
private

◆ distanceMeasures_

template<class Real >
std::vector<Real> ROL::Bundle< Real >::distanceMeasures_
private

◆ dualVariables_

template<class Real >
std::vector<Real> ROL::Bundle< Real >::dualVariables_
private

◆ size_

template<class Real >
unsigned ROL::Bundle< Real >::size_
private

◆ maxSize_

template<class Real >
unsigned ROL::Bundle< Real >::maxSize_
private

◆ remSize_

template<class Real >
unsigned ROL::Bundle< Real >::remSize_
private

Definition at line 76 of file ROL_Bundle.hpp.

Referenced by ROL::Bundle< Real >::Bundle(), and ROL::Bundle< Real >::reset().

◆ coeff_

template<class Real >
Real ROL::Bundle< Real >::coeff_
private

Definition at line 77 of file ROL_Bundle.hpp.

Referenced by ROL::Bundle< Real >::computeAlpha().

◆ isInitialized_

template<class Real >
bool ROL::Bundle< Real >::isInitialized_
private

Definition at line 79 of file ROL_Bundle.hpp.

Referenced by ROL::Bundle< Real >::initialize().

◆ tG_

template<class Real >
Teuchos::RCP<Vector<Real> > ROL::Bundle< Real >::tG_
protected

◆ eG_

template<class Real >
Teuchos::RCP<Vector<Real> > ROL::Bundle< Real >::eG_
protected

◆ yG_

template<class Real >
Teuchos::RCP<Vector<Real> > ROL::Bundle< Real >::yG_
protected

◆ gx_

template<class Real >
Teuchos::RCP<Vector<Real> > ROL::Bundle< Real >::gx_
protected

◆ ge_

template<class Real >
Teuchos::RCP<Vector<Real> > ROL::Bundle< Real >::ge_
protected

◆ workingSet_

template<class Real >
std::set<unsigned> ROL::Bundle< Real >::workingSet_
private

◆ nworkingSet_

template<class Real >
std::set<unsigned> ROL::Bundle< Real >::nworkingSet_
private

The documentation for this class was generated from the following file: