44#ifndef ROL_TRUSTREGIONMODEL_U_H
45#define ROL_TRUSTREGIONMODEL_U_H
65template<
typename Real>
69 Ptr<const Vector<Real>>
x_,
g_;
85 obj_->hessVec(hv,v,*
x_,tol);
94 obj_->invHessVec(hv,v,*
x_,tol);
103 obj_->precond(Pv,v,*
x_,tol);
118 ParameterList &slist = list.sublist(
"General").sublist(
"Secant");
122 secant_ = SecantFactory<Real>(list,mode);
141 Real htol = std::sqrt(ROL_EPSILON<Real>());
142 Ptr<Vector<Real>> v = g.
clone();
143 Ptr<Vector<Real>> hv = x.
clone();
146 catch (std::exception &e) {
155 obj_ = makePtrFromRef(obj);
156 x_ = makePtrFromRef(x);
157 g_ = makePtrFromRef(g);
162 const Real snorm,
const int iter) {
165 secant_->updateStorage(x,gnew,gold,s,snorm,iter);
174 dual_->scale(
static_cast<Real
>(0.5));
177 return dual_->apply(s);
207 virtual const Ptr<const Vector<Real>>
getIterate(
void)
const {
Contains definitions of enums for trust region algorithms.
Provides the interface to evaluate objective functions.
virtual void invHessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply inverse Hessian approximation to vector.
Provides interface for and implements limited-memory secant operators.
Provides the interface to evaluate trust-region model functions.
void applyPrecond(Vector< Real > &Pv, const Vector< Real > &v, Real &tol)
virtual Real value(const Vector< Real > &s, Real &tol) override
Compute value.
Ptr< Vector< Real > > dual_
void update(const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &gold, const Vector< Real > &gnew, const Real snorm, const int iter)
virtual void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &s, Real &tol) override
Apply Hessian approximation to vector.
virtual void invHessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &s, Real &tol) override
Apply inverse Hessian approximation to vector.
TrustRegionModel_U(ParameterList &list, const Ptr< Secant< Real > > &secant=nullPtr, ESecantMode mode=SECANTMODE_BOTH)
virtual const Ptr< const Vector< Real > > getIterate(void) const
virtual void gradient(Vector< Real > &g, const Vector< Real > &s, Real &tol) override
Compute gradient.
virtual void precond(Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &s, Real &tol) override
Apply preconditioner to vector.
Ptr< const Vector< Real > > g_
Ptr< Secant< Real > > secant_
virtual void setData(Objective< Real > &obj, const Vector< Real > &x, const Vector< Real > &g)
Ptr< Objective< Real > > obj_
void validate(Objective< Real > &obj, const Vector< Real > &x, const Vector< Real > &g, ETrustRegionU etr)
Ptr< const Vector< Real > > x_
void initialize(const Vector< Real > &x, const Vector< Real > &g)
virtual const Ptr< const Vector< Real > > getGradient(void) const
void applyHessian(Vector< Real > &hv, const Vector< Real > &v, Real &tol)
virtual const Ptr< Objective< Real > > getObjective(void) const
void applyInvHessian(Vector< Real > &hv, const Vector< Real > &v, Real &tol)
virtual ~TrustRegionModel_U()
Defines the linear algebra or vector space interface.
virtual void plus(const Vector &x)=0
Compute , where .
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
@ TRUSTREGION_U_DOUBLEDOGLEG