ROL
ROL::Bundle_TT< Real > Class Template Reference

Provides the interface for and implements a bundle. The semidefinite quadratic subproblem is solved using TT algorithm by Antonio Frangioni (1996). More...

#include <ROL_Bundle_TT.hpp>

Inheritance diagram for ROL::Bundle_TT< Real >:

Public Member Functions

 Bundle_TT (const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
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)
virtual 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 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

Real GiGj (const int i, const int j) const
Real sgn (const Real x) const
void swapRowsL (unsigned ind1, unsigned ind2, bool trans=false)
void updateK (void)
void addSubgradToBase (unsigned ind, Real delta)
void deleteSubgradFromBase (unsigned ind, Real tol)
void solveSystem (int size, char tran, LA::Matrix< Real > &L, LA::Vector< Real > &v)
bool isFeasible (LA::Vector< Real > &v, const Real &tol)
unsigned solveDual_TT (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)

Private Attributes

ROL::LAPACK< int, Real > lapack_
int QPStatus_
int maxind_
int entering_
int LiMax_
int LiMin_
unsigned maxSize_
unsigned dependent_
unsigned currSize_
bool isInitialized_
bool optimal_
Real rho_
Real lhNorm
Real ljNorm
Real lhz1_
Real lhz2_
Real ljz1_
Real kappa_
Real objval_
Real minobjval_
Real deltaLh_
Real deltaLj_
std::vector< int > taboo_
std::vector< int > base_
LA::Matrix< Real > L_
LA::Matrix< Real > Id_
LA::Vector< Real > tempv_
LA::Vector< Real > tempw1_
LA::Vector< Real > tempw2_
LA::Vector< Real > lh_
LA::Vector< Real > lj_
LA::Vector< Real > z1_
LA::Vector< Real > z2_

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_TT< Real >

Provides the interface for and implements a bundle. The semidefinite quadratic subproblem is solved using TT algorithm by Antonio Frangioni (1996).

Definition at line 43 of file ROL_Bundle_TT.hpp.

Constructor & Destructor Documentation

◆ Bundle_TT()

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

Definition at line 96 of file ROL_Bundle_TT.hpp.

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

Member Function Documentation

◆ GiGj()

template<class Real>
Real ROL::Bundle_TT< Real >::GiGj ( const int i,
const int j ) const
inlineprivate

Definition at line 85 of file ROL_Bundle_TT.hpp.

References ROL::Bundle< Real >::subgradient().

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ sgn()

template<class Real>
Real ROL::Bundle_TT< Real >::sgn ( const Real x) const
inlineprivate

Definition at line 89 of file ROL_Bundle_TT.hpp.

References zero.

Referenced by deleteSubgradFromBase().

◆ solveDual()

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

◆ swapRowsL()

template<class Real>
void ROL::Bundle_TT< Real >::swapRowsL ( unsigned ind1,
unsigned ind2,
bool trans = false )
inlineprivate

Definition at line 127 of file ROL_Bundle_TT.hpp.

References currSize_, Id_, L_, and zero.

Referenced by addSubgradToBase(), and deleteSubgradFromBase().

◆ updateK()

template<class Real>
void ROL::Bundle_TT< Real >::updateK ( void )
inlineprivate

Definition at line 151 of file ROL_Bundle_TT.hpp.

References currSize_, dependent_, kappa_, L_, LiMax_, LiMin_, ROL::ROL_INF(), and ROL::ROL_NINF().

Referenced by deleteSubgradFromBase().

◆ addSubgradToBase()

template<class Real>
void ROL::Bundle_TT< Real >::addSubgradToBase ( unsigned ind,
Real delta )
inlineprivate

◆ deleteSubgradFromBase()

template<class Real>
void ROL::Bundle_TT< Real >::deleteSubgradFromBase ( unsigned ind,
Real tol )
inlineprivate

◆ solveSystem()

template<class Real>
void ROL::Bundle_TT< Real >::solveSystem ( int size,
char tran,
LA::Matrix< Real > & L,
LA::Vector< Real > & v )
inlineprivate

Definition at line 432 of file ROL_Bundle_TT.hpp.

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

Referenced by solveDual_TT().

◆ isFeasible()

template<class Real>
bool ROL::Bundle_TT< Real >::isFeasible ( LA::Vector< Real > & v,
const Real & tol )
inlineprivate

Definition at line 447 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ solveDual_TT()

◆ solveDual_arbitrary()

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

Definition at line 824 of file ROL_Bundle_TT.hpp.

References QPStatus_, and solveDual_TT().

Referenced by solveDual().

Member Data Documentation

◆ lapack_

template<class Real>
ROL::LAPACK<int, Real> ROL::Bundle_TT< Real >::lapack_
private

Definition at line 45 of file ROL_Bundle_TT.hpp.

Referenced by solveSystem().

◆ QPStatus_

template<class Real>
int ROL::Bundle_TT< Real >::QPStatus_
private

Definition at line 47 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_arbitrary(), and solveDual_TT().

◆ maxind_

template<class Real>
int ROL::Bundle_TT< Real >::maxind_
private

Definition at line 48 of file ROL_Bundle_TT.hpp.

Referenced by Bundle_TT(), and solveDual_TT().

◆ entering_

template<class Real>
int ROL::Bundle_TT< Real >::entering_
private

Definition at line 49 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ LiMax_

template<class Real>
int ROL::Bundle_TT< Real >::LiMax_
private

Definition at line 50 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), solveDual_TT(), and updateK().

◆ LiMin_

template<class Real>
int ROL::Bundle_TT< Real >::LiMin_
private

Definition at line 51 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), solveDual_TT(), and updateK().

◆ maxSize_

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

Definition at line 53 of file ROL_Bundle_TT.hpp.

Referenced by Bundle_TT().

◆ dependent_

template<class Real>
unsigned ROL::Bundle_TT< Real >::dependent_
private

Definition at line 54 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), solveDual_TT(), and updateK().

◆ currSize_

template<class Real>
unsigned ROL::Bundle_TT< Real >::currSize_
private

◆ isInitialized_

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

Definition at line 57 of file ROL_Bundle_TT.hpp.

Referenced by Bundle_TT().

◆ optimal_

template<class Real>
bool ROL::Bundle_TT< Real >::optimal_
private

Definition at line 58 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ rho_

template<class Real>
Real ROL::Bundle_TT< Real >::rho_
private

Definition at line 60 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ lhNorm

template<class Real>
Real ROL::Bundle_TT< Real >::lhNorm
private

Definition at line 61 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ ljNorm

template<class Real>
Real ROL::Bundle_TT< Real >::ljNorm
private

Definition at line 62 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ lhz1_

template<class Real>
Real ROL::Bundle_TT< Real >::lhz1_
private

Definition at line 63 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), and solveDual_TT().

◆ lhz2_

template<class Real>
Real ROL::Bundle_TT< Real >::lhz2_
private

Definition at line 64 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), and solveDual_TT().

◆ ljz1_

template<class Real>
Real ROL::Bundle_TT< Real >::ljz1_
private

Definition at line 65 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ kappa_

template<class Real>
Real ROL::Bundle_TT< Real >::kappa_
private

Definition at line 66 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), solveDual_TT(), and updateK().

◆ objval_

template<class Real>
Real ROL::Bundle_TT< Real >::objval_
private

Definition at line 67 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ minobjval_

template<class Real>
Real ROL::Bundle_TT< Real >::minobjval_
private

Definition at line 68 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ deltaLh_

template<class Real>
Real ROL::Bundle_TT< Real >::deltaLh_
private

Definition at line 69 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase().

◆ deltaLj_

template<class Real>
Real ROL::Bundle_TT< Real >::deltaLj_
private

Definition at line 70 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase().

◆ taboo_

template<class Real>
std::vector<int> ROL::Bundle_TT< Real >::taboo_
private

Definition at line 72 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ base_

template<class Real>
std::vector<int> ROL::Bundle_TT< Real >::base_
private

Definition at line 73 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), and solveDual_TT().

◆ L_

template<class Real>
LA::Matrix<Real> ROL::Bundle_TT< Real >::L_
private

◆ Id_

template<class Real>
LA::Matrix<Real> ROL::Bundle_TT< Real >::Id_
private

Definition at line 76 of file ROL_Bundle_TT.hpp.

Referenced by Bundle_TT(), and swapRowsL().

◆ tempv_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::tempv_
private

Definition at line 77 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ tempw1_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::tempw1_
private

Definition at line 78 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ tempw2_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::tempw2_
private

Definition at line 79 of file ROL_Bundle_TT.hpp.

Referenced by solveDual_TT().

◆ lh_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::lh_
private

Definition at line 80 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ lj_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::lj_
private

Definition at line 81 of file ROL_Bundle_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ z1_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::z1_
private

Definition at line 82 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), and solveDual_TT().

◆ z2_

template<class Real>
LA::Vector<Real> ROL::Bundle_TT< Real >::z2_
private

Definition at line 83 of file ROL_Bundle_TT.hpp.

Referenced by addSubgradToBase(), deleteSubgradFromBase(), and solveDual_TT().


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