44 #ifndef ROL_PATHBASEDTARGETLEVEL_H 45 #define ROL_PATHBASEDTARGETLEVEL_H 58 Teuchos::RCP<Vector<Real> >
xnew_;
74 target_(0.0), sigma_(0.0) {
75 delta_ = parlist.sublist(
"Step").sublist(
"Line Search").sublist(
"Line-Search Method").sublist(
"Path-Based Target Level").get(
"Target Relaxation Parameter",0.1);
76 bound_ = parlist.sublist(
"Step").sublist(
"Line Search").sublist(
"Line-Search Method").sublist(
"Path-Based Target Level").get(
"Upper Bound on Path Length",1.0);
86 void run( Real &alpha, Real &fval,
int &ls_neval,
int &ls_ngrad,
93 if ( fval < min_value_ ) {
96 target_ = rec_value_ - 0.5*
delta_;
97 if ( fval < target_ ) {
102 if ( sigma_ > bound_ ) {
108 target_ = rec_value_ -
delta_;
110 alpha = (fval -
target_)/std::abs(gs);
115 fval = obj.
value(*xnew_,tol);
118 sigma_ += alpha*std::sqrt(std::abs(gs));
Provides the interface to evaluate objective functions.
void updateIterate(Vector< Real > &xnew, const Vector< Real > &x, const Vector< Real > &s, Real alpha, BoundConstraint< Real > &con)
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, BoundConstraint< Real > &con)
virtual Real value(const Vector< Real > &x, Real &tol)=0
Compute value.
virtual Teuchos::RCP< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
Teuchos::RCP< Vector< Real > > xnew_
Defines the linear algebra or vector space interface.
Provides interface for and implements line searches.
Provides an implementation of path-based target leve line search.
virtual ~PathBasedTargetLevel()
Provides the interface to apply upper and lower bound constraints.
virtual void update(const Vector< Real > &x, bool flag=true, int iter=-1)
Update objective function.
PathBasedTargetLevel(Teuchos::ParameterList &parlist)
static const double ROL_OVERFLOW
Platform-dependent maximum double.
virtual void initialize(const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con)
void initialize(const Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con)
static const double ROL_EPSILON
Platform-dependent machine epsilon.