44#ifndef ROL_ITERATIONSCALING_U_H
45#define ROL_ITERATIONSCALING_U_H
55template<
typename Real>
67 void initialize(
const Vector<Real> &x,
const Vector<Real> &g)
override {
73 void run( Real &alpha, Real &fval,
int &ls_neval,
int &ls_ngrad,
74 const Real &gs,
const Vector<Real> &s,
const Vector<Real> &x,
75 Objective<Real> &obj )
override {
76 Real tol = std::sqrt(ROL_EPSILON<Real>());
81 alpha =
getInitialAlpha(ls_neval,ls_ngrad,fval,gs,x,s,obj)/
static_cast<Real
>(algo_iter_);
83 xnew_->set(x); xnew_->axpy(alpha,s);
85 obj.update(*xnew_,UpdateType::Trial);
86 fval = obj.value(*xnew_,tol);
Provides an implementation of iteration scaled line search.
void run(Real &alpha, Real &fval, int &ls_neval, int &ls_ngrad, const Real &gs, const Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj) override
Ptr< Vector< Real > > xnew_
void initialize(const Vector< Real > &x, const Vector< Real > &g) override
IterationScaling_U(ParameterList &parlist)
Provides interface for and implements line searches.
virtual void initialize(const Vector< Real > &x, const Vector< Real > &g)
virtual Real getInitialAlpha(int &ls_neval, int &ls_ngrad, const Real fval, const Real gs, const Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj)