10#ifndef ROL_GRADIENTSTEP_H
11#define ROL_GRADIENTSTEP_H
45 GradientStep( ROL::ParameterList &parlist,
const bool computeObj =
true )
48 verbosity_ = parlist.sublist(
"General").get(
"Print Verbosity",0);
58 s.
set((step_state->gradientVec)->dual());
64 Real tol = std::sqrt(ROL_EPSILON<Real>());
70 (step_state->descentVec)->set(s);
79 obj.
gradient(*(step_state->gradientVec),x,tol);
84 algo_state.
gnorm = (step_state->gradientVec)->norm();
88 std::stringstream hist;
91 hist << std::string(109,
'-') <<
"\n";
93 hist <<
" status output definitions\n\n";
94 hist <<
" iter - Number of iterates (steps taken) \n";
95 hist <<
" value - Objective function value \n";
96 hist <<
" gnorm - Norm of the gradient\n";
97 hist <<
" snorm - Norm of the step (update to optimization vector)\n";
98 hist <<
" #fval - Cumulative number of times the objective function was evaluated\n";
99 hist <<
" #grad - Number of times the gradient was computed\n";
100 hist << std::string(109,
'-') <<
"\n";
104 hist << std::setw(6) << std::left <<
"iter";
105 hist << std::setw(15) << std::left <<
"value";
106 hist << std::setw(15) << std::left <<
"gnorm";
107 hist << std::setw(15) << std::left <<
"snorm";
108 hist << std::setw(10) << std::left <<
"#fval";
109 hist << std::setw(10) << std::left <<
"#grad";
114 std::stringstream hist;
119 std::stringstream hist;
120 hist << std::scientific << std::setprecision(6);
121 if ( algo_state.
iter == 0 ) {
124 if ( print_header ) {
127 if ( algo_state.
iter == 0 ) {
129 hist << std::setw(6) << std::left << algo_state.
iter;
130 hist << std::setw(15) << std::left << algo_state.
value;
131 hist << std::setw(15) << std::left << algo_state.
gnorm;
136 hist << std::setw(6) << std::left << algo_state.
iter;
137 hist << std::setw(15) << std::left << algo_state.
value;
138 hist << std::setw(15) << std::left << algo_state.
gnorm;
139 hist << std::setw(15) << std::left << algo_state.
snorm;
140 hist << std::setw(10) << std::left << algo_state.
nfval;
141 hist << std::setw(10) << std::left << algo_state.
ngrad;
Contains definitions of custom data types in ROL.
Provides the interface to apply upper and lower bound constraints.
Provides the interface to compute optimization steps with the gradient descent method globalized usin...
void update(Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
Update step, if successful.
std::string print(AlgorithmState< Real > &algo_state, bool print_header=false) const
Print iterate status.
const bool computeObj_
Allows line search to compute objective.
void compute(Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
Compute step.
std::string printName(void) const
Print step name.
GradientStep(ROL::ParameterList &parlist, const bool computeObj=true)
Constructor.
std::string printHeader(void) const
Print iterate header.
int verbosity_
Verbosity setting.
Provides the interface to evaluate objective functions.
virtual void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
virtual Real value(const Vector< Real > &x, Real &tol)=0
Compute value.
virtual void update(const Vector< Real > &x, UpdateType type, int iter=-1)
Update objective function.
Provides the interface to compute optimization steps.
virtual void initialize(Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
Initialize step with bound constraint.
ROL::Ptr< StepState< Real > > getState(void)
Defines the linear algebra or vector space interface.
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 void plus(const Vector &x)=0
Compute , where .
std::string EDescentToString(EDescent tr)
State for algorithm class. Will be used for restarts.
ROL::Ptr< Vector< Real > > iterateVec