10#ifndef ROL_QUASINEWTON_U_H
11#define ROL_QUASINEWTON_U_H
26template<
typename Real>
49 if ( secant == nullPtr ) {
50 secantName_ = parlist.sublist(
"General").sublist(
"Secant").get(
"Type",
"Limited-Memory BFGS");
55 secantName_ = parlist.sublist(
"General").sublist(
"Secant").get(
"User Defined Secant Name",
56 "Unspecified User Defined Secant Method");
65 if (sdotg >=
static_cast<Real
>(0)) {
70 s.
scale(
static_cast<Real
>(-1));
78 const Real snorm,
const int iter)
override {
80 secant_->updateStorage(x,gnew,gold,s,snorm,iter+1);
84 std::stringstream name;
Contains definitions of custom data types in ROL.
Provides the interface to compute unconstrained optimization steps for line search.
Provides the interface to evaluate objective functions.
void update(const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &gold, const Vector< Real > &gnew, const Real snorm, const int iter) override
void compute(Vector< Real > &s, Real &snorm, Real &sdotg, int &iter, int &flag, const Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj) override
std::string printName(void) const override
QuasiNewton_U(ParameterList &parlist, const Ptr< Secant< Real > > &secant=nullPtr)
Constructor.
Ptr< Secant< Real > > secant_
Secant object (used for quasi-Newton).
std::string secantName_
Secant name.
ESecant esec_
Secant type.
Provides interface for and implements limited-memory secant operators.
Defines the linear algebra or vector space interface.
virtual Real apply(const Vector< Real > &x) const
Apply to a dual vector. This is equivalent to the call .
virtual Real norm() const =0
Returns where .
virtual void set(const Vector &x)
Set where .
virtual void scale(const Real alpha)=0
Compute where .
virtual const Vector & dual() const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis,...
ESecant StringToESecant(std::string s)
ROL::Ptr< Secant< Real > > SecantFactory(ROL::ParameterList &parlist, ESecantMode mode=SECANTMODE_BOTH)