44 #ifndef ROL_BUNDLE_U_H
45 #define ROL_BUNDLE_U_H
48 #include "ROL_Ptr.hpp"
58 template<
typename Real>
70 Ptr<Vector<Real>>
tG_;
71 Ptr<Vector<Real>>
eG_;
72 Ptr<Vector<Real>>
yG_;
73 Ptr<Vector<Real>>
gx_;
74 Ptr<Vector<Real>>
ge_;
85 void remove(
const std::vector<unsigned> &ind);
95 Bundle_U(
const unsigned maxSize = 10,
96 const Real coeff = 0.0,
97 const Real omega = 2.0,
98 const unsigned remSize = 2);
102 virtual unsigned solveDual(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8) = 0;
116 const Real
computeAlpha(
const Real dm,
const Real le)
const;
118 const Real
alpha(
const unsigned i)
const;
120 unsigned size(
void)
const;
126 void update(
const bool flag,
const Real linErr,
const Real distMeas,
130 const Real
GiGj(
const unsigned i,
const unsigned j)
const;
136 Real
evaluateObjective(std::vector<Real> &g,
const std::vector<Real> &x,
const Real t)
const;
138 unsigned solveDual_dim1(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8);
140 unsigned solveDual_dim2(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8);
void reset(const Vector< Real > &g, const Real le, const Real dm)
unsigned solveDual_dim1(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
void setDualVariable(const unsigned i, const Real val)
const Vector< Real > & subgradient(const unsigned i) const
const Real dotGi(const unsigned i, const Vector< Real > &x) const
void update(const bool flag, const Real linErr, const Real distMeas, const Vector< Real > &g, const Vector< Real > &s)
Ptr< Vector< Real > > yG_
const Real GiGj(const unsigned i, const unsigned j) const
std::vector< Real > dualVariables_
Provides the interface for and implements a bundle.
virtual unsigned solveDual(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)=0
const Real alpha(const unsigned i) const
std::vector< Real > distanceMeasures_
Defines the linear algebra or vector space interface.
virtual void initialize(const Vector< Real > &g)
void resetDualVariables(void)
unsigned size(void) const
void aggregate(Vector< Real > &aggSubGrad, Real &aggLinErr, Real &aggDistMeas) const
Bundle_U(const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
Real evaluateObjective(std::vector< Real > &g, const std::vector< Real > &x, const Real t) const
void add(const Vector< Real > &g, const Real le, const Real dm)
Ptr< Vector< Real > > gx_
Ptr< Vector< Real > > ge_
const Real distanceMeasure(const unsigned i) const
unsigned solveDual_dim2(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Ptr< Vector< Real > > eG_
std::vector< Ptr< Vector< Real > > > subgradients_
void addGi(const unsigned i, const Real a, Vector< Real > &x) const
const Real linearizationError(const unsigned i) const
Ptr< Vector< Real > > tG_
std::vector< Real > linearizationErrors_
const Real getDualVariable(const unsigned i) const
const Real computeAlpha(const Real dm, const Real le) const