ROL
ROL::Bundle_AS< Real > Class Template Reference

Provides the interface for and implements an active set bundle. More...

#include <ROL_Bundle_AS.hpp>

Inheritance diagram for ROL::Bundle_AS< Real >:

Public Member Functions

 Bundle_AS (const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
void initialize (const Vector< Real > &g)
unsigned solveDual (const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Public Member Functions inherited from ROL::Bundle< Real >
virtual ~Bundle (void)
 Bundle (const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
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)

Private Member Functions

void initializeDualSolver (void)
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 computeStepSize (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
void applyFullMatrix (std::vector< Real > &Hx, const std::vector< Real > &x) const
void applyMatrix (std::vector< Real > &Hx, const std::vector< Real > &x) 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_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, const std::vector< Real > &sol)

Private Attributes

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_
std::set< unsigned > workingSet_
std::set< unsigned > nworkingSet_
bool isInitialized_

Additional Inherited Members

Protected Member Functions inherited from ROL::Bundle< Real >
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)

Detailed Description

template<class Real>
class ROL::Bundle_AS< Real >

Provides the interface for and implements an active set bundle.

Definition at line 22 of file ROL_Bundle_AS.hpp.

Constructor & Destructor Documentation

◆ Bundle_AS()

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

Definition at line 43 of file ROL_Bundle_AS.hpp.

References ROL::Bundle< Real >::Bundle(), and isInitialized_.

Member Function Documentation

◆ initialize()

template<class Real>
void ROL::Bundle_AS< Real >::initialize ( const Vector< Real > & g)
inlinevirtual

◆ solveDual()

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

◆ initializeDualSolver()

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

◆ computeLagMult()

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

Definition at line 105 of file ROL_Bundle_AS.hpp.

References workingSet_, and zero.

Referenced by solveDual_arbitrary().

◆ isNonnegative()

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

◆ computeStepSize()

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

◆ solveEQPsubproblem()

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

Definition at line 153 of file ROL_Bundle_AS.hpp.

References nworkingSet_, projectedCG(), ROL::Bundle< Real >::size(), and zero.

Referenced by solveDual_arbitrary().

◆ applyPreconditioner()

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

◆ applyG()

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

Definition at line 188 of file ROL_Bundle_AS.hpp.

References applyG_Identity(), applyG_Jacobi(), and applyG_SymGS().

Referenced by computeResidualUpdate().

◆ applyPreconditioner_Identity()

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

Definition at line 197 of file ROL_Bundle_AS.hpp.

References dim, and nworkingSet_.

Referenced by applyPreconditioner().

◆ applyG_Identity()

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

Definition at line 214 of file ROL_Bundle_AS.hpp.

Referenced by applyG().

◆ applyPreconditioner_Jacobi()

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

Definition at line 218 of file ROL_Bundle_AS.hpp.

References dim, ROL::Bundle< Real >::GiGj(), nworkingSet_, and zero.

Referenced by applyPreconditioner().

◆ applyG_Jacobi()

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

Definition at line 245 of file ROL_Bundle_AS.hpp.

References dim, ROL::Bundle< Real >::GiGj(), and nworkingSet_.

Referenced by applyG().

◆ applyPreconditioner_SymGS()

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

◆ applyG_SymGS()

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

Definition at line 301 of file ROL_Bundle_AS.hpp.

References dim, ROL::Bundle< Real >::GiGj(), and nworkingSet_.

Referenced by applyG().

◆ computeResidualUpdate()

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

Definition at line 309 of file ROL_Bundle_AS.hpp.

References applyG(), and applyPreconditioner().

Referenced by projectedCG().

◆ applyFullMatrix()

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

◆ applyMatrix()

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

◆ projectedCG()

template<class Real>
unsigned ROL::Bundle_AS< 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_AS< Real >::dot ( const std::vector< Real > & x,
const std::vector< Real > & y ) const
inlineprivate

Definition at line 414 of file ROL_Bundle_AS.hpp.

Referenced by norm(), and projectedCG().

◆ norm()

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

Definition at line 428 of file ROL_Bundle_AS.hpp.

References dot().

Referenced by computeCriticality(), and solveDual_arbitrary().

◆ axpy()

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

Definition at line 432 of file ROL_Bundle_AS.hpp.

Referenced by computeCriticality(), projectedCG(), and solveDual_arbitrary().

◆ scale() [1/2]

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

Definition at line 439 of file ROL_Bundle_AS.hpp.

Referenced by computeCriticality(), and projectedCG().

◆ scale() [2/2]

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

Definition at line 445 of file ROL_Bundle_AS.hpp.

◆ solveDual_arbitrary()

◆ project()

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

Definition at line 508 of file ROL_Bundle_AS.hpp.

References ROL::Bundle< Real >::size(), and zero.

Referenced by computeCriticality().

◆ computeCriticality()

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

Definition at line 528 of file ROL_Bundle_AS.hpp.

References axpy(), norm(), project(), scale(), ROL::Bundle< Real >::size(), and zero.

Member Data Documentation

◆ tG_

template<class Real>
ROL::Ptr<Vector<Real> > ROL::Bundle_AS< Real >::tG_
private

Definition at line 28 of file ROL_Bundle_AS.hpp.

Referenced by applyFullMatrix(), applyMatrix(), and initialize().

◆ eG_

template<class Real>
ROL::Ptr<Vector<Real> > ROL::Bundle_AS< Real >::eG_
private

Definition at line 29 of file ROL_Bundle_AS.hpp.

Referenced by applyFullMatrix(), applyMatrix(), and initialize().

◆ yG_

template<class Real>
ROL::Ptr<Vector<Real> > ROL::Bundle_AS< Real >::yG_
private

Definition at line 30 of file ROL_Bundle_AS.hpp.

Referenced by applyFullMatrix(), applyMatrix(), and initialize().

◆ gx_

template<class Real>
ROL::Ptr<Vector<Real> > ROL::Bundle_AS< Real >::gx_
private

◆ ge_

template<class Real>
ROL::Ptr<Vector<Real> > ROL::Bundle_AS< Real >::ge_
private

Definition at line 32 of file ROL_Bundle_AS.hpp.

Referenced by applyPreconditioner_SymGS(), and initialize().

◆ workingSet_

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

◆ nworkingSet_

◆ isInitialized_

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

Definition at line 37 of file ROL_Bundle_AS.hpp.

Referenced by Bundle_AS(), and initialize().


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