ROL
|
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>
Public Member Functions | |
Bundle_TT (const unsigned maxSize=10, const Real coeff=0.0, const unsigned remSize=2) | |
Real | GiTGj (const int i, const int j) |
unsigned | solveDual (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
bool | checkPrimary (std::vector< Real > &g, const std::vector< Real > &x, const Real t) const |
![]() | |
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) |
Private Member Functions | |
void | swapRowsL (unsigned ind1, unsigned ind2, bool trans=false) |
void | updateK () |
void | addSubgradToBase (unsigned ind, Real delta) |
void | deleteSubgradFromBase (unsigned ind, Real tol) |
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) |
void | solveSystem (int size, char tran, Teuchos::SerialDenseMatrix< int, Real > &L, Teuchos::SerialDenseVector< int, Real > &v) |
bool | isFeasible (Teuchos::SerialDenseVector< int, Real > &v, const Real &tol) |
unsigned | solveDual_TT (const Real t, const unsigned maxit=1000, const Real tol=1.e-8) |
Private Attributes | |
unsigned | maxSize_ |
Teuchos::LAPACK< int, Real > | lapack_ |
int | QPStatus_ |
Real | INF |
int | maxind |
int | entering_ |
std::vector< int > | taboo_ |
bool | optimal_ |
unsigned | dependent_ |
Real | rho_ |
unsigned | currSize_ |
std::vector< int > | base |
Teuchos::SerialDenseMatrix< int, Real > | L |
Teuchos::SerialDenseMatrix< int, Real > | Id |
Teuchos::SerialDenseVector< int, Real > | tempv |
Teuchos::SerialDenseVector< int, Real > | tempw1 |
Teuchos::SerialDenseVector< int, Real > | tempw2 |
Teuchos::SerialDenseVector< int, Real > | lh |
Teuchos::SerialDenseVector< int, Real > | lj |
Teuchos::SerialDenseVector< int, Real > | z1 |
Teuchos::SerialDenseVector< int, Real > | z2 |
Real | lhNorm |
Real | ljNorm |
Real | z1Tz2 |
Real | z1Tz1 |
Real | lhTz1 |
Real | lhTz2 |
Real | ljTz1 |
int | LiMax |
int | LiMin |
Real | kappa |
Real | Quad |
Real | Lin |
Real | objval |
Real | minobjval |
Real | deltaLh |
Real | deltaLj |
Additional Inherited Members | |
![]() | |
Real | getDualVariables (const unsigned i) |
void | setDualVariables (const unsigned i, const Real val) |
void | resetDualVariables (void) |
![]() | |
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_ |
Provides the interface for and implements a bundle. The semidefinite quadratic subproblem is solved using TT algorithm by Antonio Frangioni (1996).
Definition at line 77 of file ROL_Bundle_TT.hpp.
|
inline |
Definition at line 84 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::Id, ROL::Bundle_TT< Real >::INF, ROL::Bundle_TT< Real >::maxind, and ROL::Bundle_TT< Real >::maxSize_.
|
inline |
Definition at line 93 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::subgradient().
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 129 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), and ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
inlineprivate |
Definition at line 150 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::INF, and ROL::Bundle_TT< Real >::L.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
inlineprivate |
Definition at line 171 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle_TT< Real >::L, ROL::Bundle_TT< Real >::lhTz1, ROL::Bundle_TT< Real >::lhTz2, and ROL::Bundle_TT< Real >::swapRowsL().
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 207 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::deltaLh, ROL::Bundle_TT< Real >::deltaLj, ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::GiTGj(), ROL::Bundle_TT< Real >::L, ROL::Bundle_TT< Real >::ljNorm, ROL::Bundle_TT< Real >::swapRowsL(), and ROL::Bundle_TT< Real >::updateK().
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 508 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::alpha(), 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_TT< Real >::solveDual().
|
inlineprivate |
Definition at line 532 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::setDualVariables().
Referenced by ROL::Bundle_TT< Real >::solveDual().
|
inlineprivate |
Definition at line 537 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle< Real >::getDualVariables(), ROL::Bundle< Real >::gx_, ROL::ROL_EPSILON, ROL::Bundle< Real >::setDualVariables(), and ROL::Bundle< Real >::subgradient().
Referenced by ROL::Bundle_TT< Real >::solveDual().
|
inlineprivate |
Definition at line 565 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::size().
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 580 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 590 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle< Real >::alpha(), ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::dependent_, ROL::Bundle< Real >::getDualVariables(), ROL::Bundle_TT< Real >::GiTGj(), ROL::Bundle_TT< Real >::INF, ROL::Bundle_TT< Real >::isFeasible(), ROL::Bundle_TT< Real >::L, ROL::Bundle_TT< Real >::lh, ROL::Bundle_TT< Real >::lhTz1, ROL::Bundle_TT< Real >::lhTz2, ROL::Bundle_TT< Real >::lj, ROL::Bundle_TT< Real >::maxind, ROL::Bundle_TT< Real >::objval, ROL::Bundle_TT< Real >::optimal_, ROL::Bundle< Real >::resetDualVariables(), ROL::Bundle_TT< Real >::rho_, ROL::Bundle< Real >::setDualVariables(), ROL::Bundle< Real >::size(), ROL::Bundle_TT< Real >::solveSystem(), ROL::Bundle_TT< Real >::tempw1, ROL::Bundle_TT< Real >::tempw2, ROL::Bundle_TT< Real >::z1, ROL::Bundle_TT< Real >::z1Tz1, and ROL::Bundle_TT< Real >::z2.
Referenced by ROL::Bundle_TT< Real >::solveDual().
|
inlinevirtual |
Reimplemented from ROL::Bundle< Real >.
Definition at line 1072 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::checkPrimary(), ROL::Bundle_TT< Real >::evaluateObjective(), ROL::Bundle< Real >::getDualVariables(), ROL::Bundle< Real >::size(), ROL::Bundle_TT< Real >::solveDual_dim1(), ROL::Bundle_TT< Real >::solveDual_dim2(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inline |
Definition at line 1123 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::alpha(), 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_TT< Real >::solveDual().
|
private |
Definition at line 80 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT().
|
private |
Definition at line 81 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 101 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 102 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 103 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 104 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 105 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 106 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 107 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 108 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 109 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 110 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 111 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 112 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT().
|
private |
Definition at line 113 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 114 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 115 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 116 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 117 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 118 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 119 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 120 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 121 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 122 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 123 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 124 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 124 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 125 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 126 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 127 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
private |
Definition at line 127 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().