ROL
ROL::Bundle_U_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_U_TT.hpp>

Inheritance diagram for ROL::Bundle_U_TT< Real >:

Public Member Functions

 Bundle_U_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_U< Real >
virtual ~Bundle_U (void)
 Bundle_U (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 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

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_U< 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<typename Real>
class ROL::Bundle_U_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 27 of file ROL_Bundle_U_TT.hpp.

Constructor & Destructor Documentation

◆ Bundle_U_TT()

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

Member Function Documentation

◆ solveDual()

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

◆ sgn()

template<typename Real>
Real ROL::Bundle_U_TT< Real >::sgn ( const Real x) const
private

Definition at line 41 of file ROL_Bundle_U_TT_Def.hpp.

References zero.

Referenced by deleteSubgradFromBase().

◆ swapRowsL()

template<typename Real>
void ROL::Bundle_U_TT< Real >::swapRowsL ( unsigned ind1,
unsigned ind2,
bool trans = false )
private

Definition at line 63 of file ROL_Bundle_U_TT_Def.hpp.

References currSize_, Id_, L_, and zero.

Referenced by addSubgradToBase(), and deleteSubgradFromBase().

◆ updateK()

template<typename Real>
void ROL::Bundle_U_TT< Real >::updateK ( void )
private

Definition at line 88 of file ROL_Bundle_U_TT_Def.hpp.

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

Referenced by deleteSubgradFromBase().

◆ addSubgradToBase()

template<typename Real>
void ROL::Bundle_U_TT< Real >::addSubgradToBase ( unsigned ind,
Real delta )
private

◆ deleteSubgradFromBase()

template<typename Real>
void ROL::Bundle_U_TT< Real >::deleteSubgradFromBase ( unsigned ind,
Real tol )
private

◆ solveSystem()

template<typename Real>
void ROL::Bundle_U_TT< Real >::solveSystem ( int size,
char tran,
LA::Matrix< Real > & L,
LA::Vector< Real > & v )
private

Definition at line 371 of file ROL_Bundle_U_TT_Def.hpp.

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

Referenced by solveDual_TT().

◆ isFeasible()

template<typename Real>
bool ROL::Bundle_U_TT< Real >::isFeasible ( LA::Vector< Real > & v,
const Real & tol )
private

Definition at line 386 of file ROL_Bundle_U_TT_Def.hpp.

Referenced by solveDual_TT().

◆ solveDual_TT()

◆ solveDual_arbitrary()

template<typename Real>
unsigned ROL::Bundle_U_TT< Real >::solveDual_arbitrary ( const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8 )
private

Definition at line 765 of file ROL_Bundle_U_TT_Def.hpp.

References QPStatus_, and solveDual_TT().

Referenced by solveDual().

Member Data Documentation

◆ lapack_

template<typename Real>
LAPACK<int, Real> ROL::Bundle_U_TT< Real >::lapack_
private

Definition at line 29 of file ROL_Bundle_U_TT.hpp.

Referenced by solveSystem().

◆ QPStatus_

template<typename Real>
int ROL::Bundle_U_TT< Real >::QPStatus_
private

Definition at line 31 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_arbitrary(), and solveDual_TT().

◆ maxind_

template<typename Real>
int ROL::Bundle_U_TT< Real >::maxind_
private

Definition at line 32 of file ROL_Bundle_U_TT.hpp.

Referenced by Bundle_U_TT(), and solveDual_TT().

◆ entering_

template<typename Real>
int ROL::Bundle_U_TT< Real >::entering_
private

Definition at line 33 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ LiMax_

template<typename Real>
int ROL::Bundle_U_TT< Real >::LiMax_
private

Definition at line 34 of file ROL_Bundle_U_TT.hpp.

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

◆ LiMin_

template<typename Real>
int ROL::Bundle_U_TT< Real >::LiMin_
private

Definition at line 35 of file ROL_Bundle_U_TT.hpp.

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

◆ maxSize_

template<typename Real>
unsigned ROL::Bundle_U_TT< Real >::maxSize_
private

Definition at line 37 of file ROL_Bundle_U_TT.hpp.

Referenced by Bundle_U_TT().

◆ dependent_

template<typename Real>
unsigned ROL::Bundle_U_TT< Real >::dependent_
private

Definition at line 38 of file ROL_Bundle_U_TT.hpp.

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

◆ currSize_

template<typename Real>
unsigned ROL::Bundle_U_TT< Real >::currSize_
private

◆ isInitialized_

template<typename Real>
bool ROL::Bundle_U_TT< Real >::isInitialized_
private

Definition at line 41 of file ROL_Bundle_U_TT.hpp.

Referenced by Bundle_U_TT().

◆ optimal_

template<typename Real>
bool ROL::Bundle_U_TT< Real >::optimal_
private

Definition at line 42 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ rho_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::rho_
private

Definition at line 44 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ lhNorm

template<typename Real>
Real ROL::Bundle_U_TT< Real >::lhNorm
private

Definition at line 45 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ ljNorm

template<typename Real>
Real ROL::Bundle_U_TT< Real >::ljNorm
private

Definition at line 46 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ lhz1_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::lhz1_
private

Definition at line 47 of file ROL_Bundle_U_TT.hpp.

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

◆ lhz2_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::lhz2_
private

Definition at line 48 of file ROL_Bundle_U_TT.hpp.

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

◆ ljz1_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::ljz1_
private

Definition at line 49 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ kappa_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::kappa_
private

Definition at line 50 of file ROL_Bundle_U_TT.hpp.

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

◆ objval_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::objval_
private

Definition at line 51 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ minobjval_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::minobjval_
private

Definition at line 52 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ deltaLh_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::deltaLh_
private

Definition at line 53 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase().

◆ deltaLj_

template<typename Real>
Real ROL::Bundle_U_TT< Real >::deltaLj_
private

Definition at line 54 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase().

◆ taboo_

template<typename Real>
std::vector<int> ROL::Bundle_U_TT< Real >::taboo_
private

Definition at line 56 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ base_

template<typename Real>
std::vector<int> ROL::Bundle_U_TT< Real >::base_
private

Definition at line 57 of file ROL_Bundle_U_TT.hpp.

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

◆ L_

template<typename Real>
LA::Matrix<Real> ROL::Bundle_U_TT< Real >::L_
private

◆ Id_

template<typename Real>
LA::Matrix<Real> ROL::Bundle_U_TT< Real >::Id_
private

Definition at line 60 of file ROL_Bundle_U_TT.hpp.

Referenced by Bundle_U_TT(), and swapRowsL().

◆ tempv_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::tempv_
private

Definition at line 61 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ tempw1_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::tempw1_
private

Definition at line 62 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ tempw2_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::tempw2_
private

Definition at line 63 of file ROL_Bundle_U_TT.hpp.

Referenced by solveDual_TT().

◆ lh_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::lh_
private

Definition at line 64 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ lj_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::lj_
private

Definition at line 65 of file ROL_Bundle_U_TT.hpp.

Referenced by deleteSubgradFromBase(), and solveDual_TT().

◆ z1_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::z1_
private

Definition at line 66 of file ROL_Bundle_U_TT.hpp.

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

◆ z2_

template<typename Real>
LA::Vector<Real> ROL::Bundle_U_TT< Real >::z2_
private

Definition at line 67 of file ROL_Bundle_U_TT.hpp.

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


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