10 #ifndef ROL_BUNDLE_U_AS_H
11 #define ROL_BUNDLE_U_AS_H
21 template<
typename Real>
28 Ptr<Vector<Real>>
tG_;
29 Ptr<Vector<Real>>
eG_;
30 Ptr<Vector<Real>>
yG_;
31 Ptr<Vector<Real>>
gx_;
32 Ptr<Vector<Real>>
ge_;
44 const Real coeff = 0.0,
45 const Real omega = 2.0,
46 const unsigned remSize = 2);
50 unsigned solveDual(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8);
58 void computeLagMult(std::vector<Real> &lam,
const Real mu,
const std::vector<Real> &g)
const;
60 bool isNonnegative(
unsigned &ind,
const std::vector<Real> &x)
const;
62 Real
computeStepSize(
unsigned &ind,
const std::vector<Real> &x,
const std::vector<Real> &p)
const;
65 const std::vector<Real> &g,
const Real tol)
const;
69 void applyG(std::vector<Real> &Gx,
const std::vector<Real> &x)
const;
73 void applyG_Identity(std::vector<Real> &Gx,
const std::vector<Real> &x)
const;
77 void applyG_Jacobi(std::vector<Real> &Gx,
const std::vector<Real> &x)
const;
81 void applyG_SymGS(std::vector<Real> &Gx,
const std::vector<Real> &x)
const;
85 void applyFullMatrix(std::vector<Real> &Hx,
const std::vector<Real> &x)
const;
87 void applyMatrix(std::vector<Real> &Hx,
const std::vector<Real> &x)
const;
89 unsigned projectedCG(std::vector<Real> &x, Real &mu,
const std::vector<Real> &b,
const Real tol)
const;
91 Real
dot(
const std::vector<Real> &x,
const std::vector<Real> &y)
const;
93 Real
norm(
const std::vector<Real> &x)
const;
95 void axpy(
const Real a,
const std::vector<Real> &x, std::vector<Real> &y)
const;
97 void scale(std::vector<Real> &x,
const Real a)
const;
99 void scale(std::vector<Real> &x,
const Real a,
const std::vector<Real> &y)
const;
101 unsigned solveDual_arbitrary(
const Real t,
const unsigned maxit = 1000,
const Real tol = 1.e-8);
106 void project(std::vector<Real> &x,
const std::vector<Real> &v)
const;
108 Real
computeCriticality(
const std::vector<Real> &g,
const std::vector<Real> &sol)
const;
bool isNonnegative(unsigned &ind, const std::vector< Real > &x) const
Real norm(const std::vector< Real > &x) const
void scale(std::vector< Real > &x, const Real a) const
Ptr< Vector< Real > > yG_
void applyPreconditioner(std::vector< Real > &Px, const std::vector< Real > &x) const
Ptr< Vector< Real > > eG_
unsigned solveEQPsubproblem(std::vector< Real > &s, Real &mu, const std::vector< Real > &g, const Real tol) const
void applyPreconditioner_Jacobi(std::vector< Real > &Px, const std::vector< Real > &x) const
Real dot(const std::vector< Real > &x, const std::vector< Real > &y) const
void applyG_Identity(std::vector< Real > &Gx, const std::vector< Real > &x) const
Provides the interface for and implements a bundle.
Ptr< Vector< Real > > ge_
Defines the linear algebra or vector space interface.
void applyPreconditioner_SymGS(std::vector< Real > &Px, const std::vector< Real > &x) const
Ptr< Vector< Real > > tG_
void applyMatrix(std::vector< Real > &Hx, const std::vector< Real > &x) const
Ptr< Vector< Real > > gx_
Real computeCriticality(const std::vector< Real > &g, const std::vector< Real > &sol) const
std::set< unsigned > workingSet_
std::set< unsigned > nworkingSet_
unsigned projectedCG(std::vector< Real > &x, Real &mu, const std::vector< Real > &b, const Real tol) const
unsigned solveDual_arbitrary(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
unsigned solveDual(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Provides the interface for and implements an active set bundle.
void computeResidualUpdate(std::vector< Real > &r, std::vector< Real > &g) const
void applyG(std::vector< Real > &Gx, const std::vector< Real > &x) const
void initialize(const Vector< Real > &g)
Real computeStepSize(unsigned &ind, const std::vector< Real > &x, const std::vector< Real > &p) const
void applyG_Jacobi(std::vector< Real > &Gx, const std::vector< Real > &x) const
void axpy(const Real a, const std::vector< Real > &x, std::vector< Real > &y) const
void applyPreconditioner_Identity(std::vector< Real > &Px, const std::vector< Real > &x) const
void initializeDualSolver(void)
void applyFullMatrix(std::vector< Real > &Hx, const std::vector< Real > &x) const
void computeLagMult(std::vector< Real > &lam, const Real mu, const std::vector< Real > &g) const
void project(std::vector< Real > &x, const std::vector< Real > &v) const
Bundle_U_AS(const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
void applyG_SymGS(std::vector< Real > &Gx, const std::vector< Real > &x) const