76 void run( Real &alpha, Real &fval,
int &ls_neval,
int &ls_ngrad,
77 const Real &gs,
const Vector<Real> &s,
const Vector<Real> &x,
78 Objective<Real> &obj )
override {
79 Real tol = std::sqrt(ROL_EPSILON<Real>());
85 xnew_->set(x); xnew_->axpy(alpha,s);
88 obj.update(*xnew_,UpdateType::Trial);
89 fval = obj.value(*xnew_,tol);
92 while ( !
status(LINESEARCH_U_BACKTRACKING,ls_neval,ls_ngrad,alpha,fold,gs,fval,*xnew_,s,obj) ) {
95 xnew_->set(x); xnew_->axpy(alpha,s);
97 obj.update(*xnew_,UpdateType::Trial);
98 fval = obj.value(*xnew_,tol);
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
virtual bool status(const ELineSearchU type, int &ls_neval, int &ls_ngrad, const Real alpha, const Real fold, const Real sgold, const Real fnew, const Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj)
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)