ROL
ROL_LineSearch_U_Types.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Rapid Optimization Library (ROL) Package
4//
5// Copyright 2014 NTESS and the ROL contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef ROL_LINESEARCH_U_TYPES_H
11#define ROL_LINESEARCH_U_TYPES_H
12
13#include "ROL_Types.hpp"
14
15#include "ROL_ParameterList.hpp"
16#include "ROL_Ptr.hpp"
17
18namespace ROL {
19
39
40 inline std::string EDescentUToString(EDescentU tr) {
41 std::string retString;
42 switch(tr) {
43 case DESCENT_U_STEEPEST: retString = "Steepest Descent"; break;
44 case DESCENT_U_NONLINEARCG: retString = "Nonlinear CG"; break;
45 case DESCENT_U_SECANT: retString = "Quasi-Newton Method"; break;
46 case DESCENT_U_NEWTON: retString = "Newton's Method"; break;
47 case DESCENT_U_NEWTONKRYLOV: retString = "Newton-Krylov"; break;
48 case DESCENT_U_USERDEFINED: retString = "User Defined"; break;
49 case DESCENT_U_LAST: retString = "Last Type (Dummy)"; break;
50 default: retString = "INVALID EDescentU";
51 }
52 return retString;
53 }
54
61 return( (d == DESCENT_U_STEEPEST) ||
62 (d == DESCENT_U_NONLINEARCG) ||
63 (d == DESCENT_U_SECANT) ||
64 (d == DESCENT_U_NEWTON) ||
67 );
68 }
69
70 inline EDescentU & operator++(EDescentU &type) {
71 return type = static_cast<EDescentU>(type+1);
72 }
73
74 inline EDescentU operator++(EDescentU &type, int) {
75 EDescentU oldval = type;
76 ++type;
77 return oldval;
78 }
79
80 inline EDescentU & operator--(EDescentU &type) {
81 return type = static_cast<EDescentU>(type-1);
82 }
83
84 inline EDescentU operator--(EDescentU &type, int) {
85 EDescentU oldval = type;
86 --type;
87 return oldval;
88 }
89
90 inline EDescentU StringToEDescentU(std::string s) {
91 s = removeStringFormat(s);
92 for ( EDescentU des = DESCENT_U_STEEPEST; des < DESCENT_U_LAST; des++ ) {
93 if ( !s.compare(removeStringFormat(EDescentUToString(des))) ) {
94 return des;
95 }
96 }
97 return DESCENT_U_SECANT;
98 }
99
121
122 inline std::string ELineSearchUToString(ELineSearchU ls) {
123 std::string retString;
124 switch(ls) {
125 case LINESEARCH_U_ITERATIONSCALING: retString = "Iteration Scaling"; break;
126 case LINESEARCH_U_PATHBASEDTARGETLEVEL: retString = "Path-Based Target Level"; break;
127 case LINESEARCH_U_BACKTRACKING: retString = "Backtracking"; break;
128 case LINESEARCH_U_BISECTION: retString = "Bisection"; break;
129 case LINESEARCH_U_GOLDENSECTION: retString = "Golden Section"; break;
130 case LINESEARCH_U_CUBICINTERP: retString = "Cubic Interpolation"; break;
131 case LINESEARCH_U_BRENTS: retString = "Brent's"; break;
132 case LINESEARCH_U_USERDEFINED: retString = "User Defined"; break;
133 case LINESEARCH_U_LAST: retString = "Last Type (Dummy)"; break;
134 default: retString = "INVALID ELineSearchU";
135 }
136 return retString;
137 }
138
145 return( (ls == LINESEARCH_U_BACKTRACKING) ||
148 (ls == LINESEARCH_U_BISECTION) ||
150 (ls == LINESEARCH_U_CUBICINTERP) ||
151 (ls == LINESEARCH_U_BRENTS) ||
153 );
154 }
155
157 return type = static_cast<ELineSearchU>(type+1);
158 }
159
161 ELineSearchU oldval = type;
162 ++type;
163 return oldval;
164 }
165
167 return type = static_cast<ELineSearchU>(type-1);
168 }
169
171 ELineSearchU oldval = type;
172 --type;
173 return oldval;
174 }
175
176 inline ELineSearchU StringToELineSearchU(std::string s) {
177 s = removeStringFormat(s);
179 if ( !s.compare(removeStringFormat(ELineSearchUToString(ls))) ) {
180 return ls;
181 }
182 }
184 }
185
202
204 std::string retString;
205 switch(ls) {
206 case CURVATURECONDITION_U_WOLFE: retString = "Wolfe Conditions"; break;
207 case CURVATURECONDITION_U_STRONGWOLFE: retString = "Strong Wolfe Conditions"; break;
208 case CURVATURECONDITION_U_GENERALIZEDWOLFE: retString = "Generalized Wolfe Conditions"; break;
209 case CURVATURECONDITION_U_APPROXIMATEWOLFE: retString = "Approximate Wolfe Conditions"; break;
210 case CURVATURECONDITION_U_GOLDSTEIN: retString = "Goldstein Conditions"; break;
211 case CURVATURECONDITION_U_NULL: retString = "Null Curvature Condition"; break;
212 case CURVATURECONDITION_U_LAST: retString = "Last Type (Dummy)"; break;
213 default: retString = "INVALID ECurvatureConditionU";
214 }
215 return retString;
216 }
217
232
234 return type = static_cast<ECurvatureConditionU>(type+1);
235 }
236
238 ECurvatureConditionU oldval = type;
239 ++type;
240 return oldval;
241 }
242
244 return type = static_cast<ECurvatureConditionU>(type-1);
245 }
246
248 ECurvatureConditionU oldval = type;
249 --type;
250 return oldval;
251 }
252
254 s = removeStringFormat(s);
256 if ( !s.compare(removeStringFormat(ECurvatureConditionUToString(cc))) ) {
257 return cc;
258 }
259 }
261 }
262} // namespace ROL
263
264#endif
Contains definitions of custom data types in ROL.
int isValidCurvatureConditionU(ECurvatureConditionU ls)
Verifies validity of a CurvatureConditionU enum.
std::string removeStringFormat(std::string s)
std::string ELineSearchUToString(ELineSearchU ls)
@ CURVATURECONDITION_U_APPROXIMATEWOLFE
@ CURVATURECONDITION_U_GENERALIZEDWOLFE
@ CURVATURECONDITION_U_STRONGWOLFE
std::string ECurvatureConditionUToString(ECurvatureConditionU ls)
ECurvatureConditionU StringToECurvatureConditionU(std::string s)
@ LINESEARCH_U_PATHBASEDTARGETLEVEL
int isValidDescentU(EDescentU d)
Verifies validity of a DescentU enum.
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
ELineSearchU StringToELineSearchU(std::string s)
int isValidLineSearchU(ELineSearchU ls)
Verifies validity of a LineSearchU enum.
std::string EDescentUToString(EDescentU tr)
EDescentU StringToEDescentU(std::string s)