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 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) |
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.
|
inline |
Definition at line 96 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::Id_, ROL::Bundle_TT< Real >::maxind_, and ROL::Bundle_TT< Real >::maxSize_.
|
inlineprivate |
Definition at line 85 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 89 of file ROL_Bundle_TT.hpp.
References zero.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
inlinevirtual |
Implements ROL::Bundle< Real >.
Definition at line 109 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::solveDual_arbitrary(), ROL::Bundle< Real >::solveDual_dim1(), and ROL::Bundle< Real >::solveDual_dim2().
|
inlineprivate |
Definition at line 127 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::Id_, ROL::Bundle_TT< Real >::L_, and zero.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), and ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
inlineprivate |
Definition at line 151 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::kappa_, ROL::Bundle_TT< Real >::L_, ROL::Bundle_TT< Real >::LiMax_, and ROL::Bundle_TT< Real >::LiMin_.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
inlineprivate |
Definition at line 172 of file ROL_Bundle_TT.hpp.
References ROL::Bundle< Real >::alpha(), ROL::Bundle_TT< Real >::base_, ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::kappa_, ROL::Bundle_TT< Real >::L_, ROL::Bundle_TT< Real >::lhz1_, ROL::Bundle_TT< Real >::lhz2_, ROL::Bundle_TT< Real >::LiMax_, ROL::Bundle_TT< Real >::LiMin_, ROL::Bundle_TT< Real >::swapRowsL(), ROL::Bundle_TT< Real >::z1_, and ROL::Bundle_TT< Real >::z2_.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 205 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::base_, ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::deltaLh_, ROL::Bundle_TT< Real >::deltaLj_, ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::GiGj(), ROL::Bundle_TT< Real >::kappa_, ROL::Bundle_TT< Real >::L_, ROL::Bundle_TT< Real >::lh_, ROL::Bundle_TT< Real >::lhNorm, ROL::Bundle_TT< Real >::lhz1_, ROL::Bundle_TT< Real >::lhz2_, ROL::Bundle_TT< Real >::lj_, ROL::Bundle_TT< Real >::ljNorm, ROL::Bundle_TT< Real >::sgn(), ROL::Bundle_TT< Real >::swapRowsL(), ROL::Bundle_TT< Real >::updateK(), ROL::Bundle_TT< Real >::z1_, ROL::Bundle_TT< Real >::z2_, and zero.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 432 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::lapack_, and ROL::Bundle< Real >::size().
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 447 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
inlineprivate |
Definition at line 457 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle< Real >::alpha(), ROL::Bundle_TT< Real >::base_, ROL::Bundle_TT< Real >::currSize_, ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::dependent_, ROL::Bundle_TT< Real >::entering_, ROL::Bundle< Real >::getDualVariable(), ROL::Bundle_TT< Real >::GiGj(), ROL::Bundle_TT< Real >::isFeasible(), ROL::Bundle_TT< Real >::kappa_, ROL::Bundle_TT< Real >::L_, ROL::Bundle_TT< Real >::lh_, ROL::Bundle_TT< Real >::lhNorm, ROL::Bundle_TT< Real >::lhz1_, ROL::Bundle_TT< Real >::lhz2_, ROL::Bundle_TT< Real >::LiMax_, ROL::Bundle_TT< Real >::LiMin_, ROL::Bundle_TT< Real >::lj_, ROL::Bundle_TT< Real >::ljNorm, ROL::Bundle_TT< Real >::ljz1_, ROL::Bundle_TT< Real >::maxind_, ROL::Bundle_TT< Real >::minobjval_, ROL::Bundle_TT< Real >::objval_, ROL::Bundle_TT< Real >::optimal_, ROL::Bundle_TT< Real >::QPStatus_, ROL::Bundle< Real >::resetDualVariables(), ROL::Bundle_TT< Real >::rho_, ROL::Bundle< Real >::setDualVariable(), ROL::Bundle_TT< Real >::solveSystem(), ROL::Bundle_TT< Real >::taboo_, ROL::Bundle_TT< Real >::tempv_, ROL::Bundle_TT< Real >::tempw1_, ROL::Bundle_TT< Real >::tempw2_, ROL::Bundle_TT< Real >::z1_, ROL::Bundle_TT< Real >::z2_, and zero.
Referenced by ROL::Bundle_TT< Real >::solveDual_arbitrary().
|
inlineprivate |
Definition at line 824 of file ROL_Bundle_TT.hpp.
References ROL::Bundle_TT< Real >::QPStatus_, and ROL::Bundle_TT< Real >::solveDual_TT().
Referenced by ROL::Bundle_TT< Real >::solveDual().
|
private |
Definition at line 45 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveSystem().
|
private |
Definition at line 47 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_arbitrary(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 48 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 49 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 50 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 51 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::solveDual_TT(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 53 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT().
|
private |
Definition at line 54 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 55 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::solveDual_TT(), ROL::Bundle_TT< Real >::swapRowsL(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 57 of file ROL_Bundle_TT.hpp.
|
private |
Definition at line 58 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 60 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 61 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 62 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 63 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 64 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 65 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 66 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 67 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 68 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 69 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
private |
Definition at line 70 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase().
|
private |
Definition at line 72 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 73 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 75 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), ROL::Bundle_TT< Real >::solveDual_TT(), ROL::Bundle_TT< Real >::swapRowsL(), and ROL::Bundle_TT< Real >::updateK().
|
private |
Definition at line 76 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::Bundle_TT(), and ROL::Bundle_TT< Real >::swapRowsL().
|
private |
Definition at line 77 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 78 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 79 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 80 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 81 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 82 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().
|
private |
Definition at line 83 of file ROL_Bundle_TT.hpp.
Referenced by ROL::Bundle_TT< Real >::addSubgradToBase(), ROL::Bundle_TT< Real >::deleteSubgradFromBase(), and ROL::Bundle_TT< Real >::solveDual_TT().