10 #ifndef ROL_BUNDLE_U_H
11 #define ROL_BUNDLE_U_H
14 #include "ROL_Ptr.hpp"
24 template<
typename Real>
36 Ptr<Vector<Real>>
tG_;
37 Ptr<Vector<Real>>
eG_;
38 Ptr<Vector<Real>>
yG_;
39 Ptr<Vector<Real>>
gx_;
40 Ptr<Vector<Real>>
ge_;
51 void remove(
const std::vector<unsigned> &ind);
61 Bundle_U(
const unsigned maxSize = 10,
62 const Real coeff = 0.0,
63 const Real omega = 2.0,
64 const unsigned remSize = 2);
68 virtual unsigned solveDual(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8) = 0;
82 const Real
computeAlpha(
const Real dm,
const Real le)
const;
84 const Real
alpha(
const unsigned i)
const;
86 unsigned size(
void)
const;
92 void update(
const bool flag,
const Real linErr,
const Real distMeas,
96 const Real
GiGj(
const unsigned i,
const unsigned j)
const;
102 Real
evaluateObjective(std::vector<Real> &g,
const std::vector<Real> &x,
const Real t)
const;
104 unsigned solveDual_dim1(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8);
106 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