ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
algorithm
TypeU
linesearch
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
18
namespace
ROL
{
19
30
enum
EDescentU
{
31
DESCENT_U_STEEPEST
= 0,
32
DESCENT_U_NONLINEARCG
,
33
DESCENT_U_SECANT
,
34
DESCENT_U_NEWTON
,
35
DESCENT_U_NEWTONKRYLOV
,
36
DESCENT_U_USERDEFINED
,
37
DESCENT_U_LAST
38
};
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
60
inline
int
isValidDescentU
(
EDescentU
d){
61
return
( (d ==
DESCENT_U_STEEPEST
) ||
62
(d ==
DESCENT_U_NONLINEARCG
) ||
63
(d ==
DESCENT_U_SECANT
) ||
64
(d ==
DESCENT_U_NEWTON
) ||
65
(d ==
DESCENT_U_NEWTONKRYLOV
) ||
66
(d ==
DESCENT_U_USERDEFINED
)
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
110
enum
ELineSearchU
{
111
LINESEARCH_U_ITERATIONSCALING
= 0,
112
LINESEARCH_U_PATHBASEDTARGETLEVEL
,
113
LINESEARCH_U_BACKTRACKING
,
114
LINESEARCH_U_BISECTION
,
115
LINESEARCH_U_GOLDENSECTION
,
116
LINESEARCH_U_CUBICINTERP
,
117
LINESEARCH_U_BRENTS
,
118
LINESEARCH_U_USERDEFINED
,
119
LINESEARCH_U_LAST
120
};
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
144
inline
int
isValidLineSearchU
(
ELineSearchU
ls){
145
return
( (ls ==
LINESEARCH_U_BACKTRACKING
) ||
146
(ls ==
LINESEARCH_U_ITERATIONSCALING
) ||
147
(ls ==
LINESEARCH_U_PATHBASEDTARGETLEVEL
) ||
148
(ls ==
LINESEARCH_U_BISECTION
) ||
149
(ls ==
LINESEARCH_U_GOLDENSECTION
) ||
150
(ls ==
LINESEARCH_U_CUBICINTERP
) ||
151
(ls ==
LINESEARCH_U_BRENTS
) ||
152
(ls ==
LINESEARCH_U_USERDEFINED
)
153
);
154
}
155
156
inline
ELineSearchU
&
operator++
(
ELineSearchU
&type) {
157
return
type =
static_cast<
ELineSearchU
>
(type+1);
158
}
159
160
inline
ELineSearchU
operator++
(
ELineSearchU
&type,
int
) {
161
ELineSearchU
oldval = type;
162
++type;
163
return
oldval;
164
}
165
166
inline
ELineSearchU
&
operator--
(
ELineSearchU
&type) {
167
return
type =
static_cast<
ELineSearchU
>
(type-1);
168
}
169
170
inline
ELineSearchU
operator--
(
ELineSearchU
&type,
int
) {
171
ELineSearchU
oldval = type;
172
--type;
173
return
oldval;
174
}
175
176
inline
ELineSearchU
StringToELineSearchU
(std::string s) {
177
s =
removeStringFormat
(s);
178
for
(
ELineSearchU
ls =
LINESEARCH_U_ITERATIONSCALING
; ls <
LINESEARCH_U_LAST
; ls++ ) {
179
if
( !s.compare(
removeStringFormat
(
ELineSearchUToString
(ls))) ) {
180
return
ls;
181
}
182
}
183
return
LINESEARCH_U_ITERATIONSCALING
;
184
}
185
193
enum
ECurvatureConditionU
{
194
CURVATURECONDITION_U_WOLFE
= 0,
195
CURVATURECONDITION_U_STRONGWOLFE
,
196
CURVATURECONDITION_U_GENERALIZEDWOLFE
,
197
CURVATURECONDITION_U_APPROXIMATEWOLFE
,
198
CURVATURECONDITION_U_GOLDSTEIN
,
199
CURVATURECONDITION_U_NULL
,
200
CURVATURECONDITION_U_LAST
201
};
202
203
inline
std::string
ECurvatureConditionUToString
(
ECurvatureConditionU
ls) {
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
223
inline
int
isValidCurvatureConditionU
(
ECurvatureConditionU
ls){
224
return
( (ls ==
CURVATURECONDITION_U_WOLFE
) ||
225
(ls ==
CURVATURECONDITION_U_STRONGWOLFE
) ||
226
(ls ==
CURVATURECONDITION_U_GENERALIZEDWOLFE
) ||
227
(ls ==
CURVATURECONDITION_U_APPROXIMATEWOLFE
) ||
228
(ls ==
CURVATURECONDITION_U_GOLDSTEIN
) ||
229
(ls ==
CURVATURECONDITION_U_NULL
)
230
);
231
}
232
233
inline
ECurvatureConditionU
&
operator++
(
ECurvatureConditionU
&type) {
234
return
type =
static_cast<
ECurvatureConditionU
>
(type+1);
235
}
236
237
inline
ECurvatureConditionU
operator++
(
ECurvatureConditionU
&type,
int
) {
238
ECurvatureConditionU
oldval = type;
239
++type;
240
return
oldval;
241
}
242
243
inline
ECurvatureConditionU
&
operator--
(
ECurvatureConditionU
&type) {
244
return
type =
static_cast<
ECurvatureConditionU
>
(type-1);
245
}
246
247
inline
ECurvatureConditionU
operator--
(
ECurvatureConditionU
&type,
int
) {
248
ECurvatureConditionU
oldval = type;
249
--type;
250
return
oldval;
251
}
252
253
inline
ECurvatureConditionU
StringToECurvatureConditionU
(std::string s) {
254
s =
removeStringFormat
(s);
255
for
(
ECurvatureConditionU
cc =
CURVATURECONDITION_U_WOLFE
; cc <
CURVATURECONDITION_U_LAST
; cc++ ) {
256
if
( !s.compare(
removeStringFormat
(
ECurvatureConditionUToString
(cc))) ) {
257
return
cc;
258
}
259
}
260
return
CURVATURECONDITION_U_WOLFE
;
261
}
262
}
// namespace ROL
263
264
#endif
ROL_Types.hpp
Contains definitions of custom data types in ROL.
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::isValidCurvatureConditionU
int isValidCurvatureConditionU(ECurvatureConditionU ls)
Verifies validity of a CurvatureConditionU enum.
Definition
ROL_LineSearch_U_Types.hpp:223
ROL::EDescentU
EDescentU
Definition
ROL_LineSearch_U_Types.hpp:30
ROL::DESCENT_U_NONLINEARCG
@ DESCENT_U_NONLINEARCG
Definition
ROL_LineSearch_U_Types.hpp:32
ROL::DESCENT_U_USERDEFINED
@ DESCENT_U_USERDEFINED
Definition
ROL_LineSearch_U_Types.hpp:36
ROL::DESCENT_U_NEWTON
@ DESCENT_U_NEWTON
Definition
ROL_LineSearch_U_Types.hpp:34
ROL::DESCENT_U_SECANT
@ DESCENT_U_SECANT
Definition
ROL_LineSearch_U_Types.hpp:33
ROL::DESCENT_U_STEEPEST
@ DESCENT_U_STEEPEST
Definition
ROL_LineSearch_U_Types.hpp:31
ROL::DESCENT_U_LAST
@ DESCENT_U_LAST
Definition
ROL_LineSearch_U_Types.hpp:37
ROL::DESCENT_U_NEWTONKRYLOV
@ DESCENT_U_NEWTONKRYLOV
Definition
ROL_LineSearch_U_Types.hpp:35
ROL::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::ELineSearchUToString
std::string ELineSearchUToString(ELineSearchU ls)
Definition
ROL_LineSearch_U_Types.hpp:122
ROL::ECurvatureConditionU
ECurvatureConditionU
Definition
ROL_LineSearch_U_Types.hpp:193
ROL::CURVATURECONDITION_U_APPROXIMATEWOLFE
@ CURVATURECONDITION_U_APPROXIMATEWOLFE
Definition
ROL_LineSearch_U_Types.hpp:197
ROL::CURVATURECONDITION_U_GOLDSTEIN
@ CURVATURECONDITION_U_GOLDSTEIN
Definition
ROL_LineSearch_U_Types.hpp:198
ROL::CURVATURECONDITION_U_GENERALIZEDWOLFE
@ CURVATURECONDITION_U_GENERALIZEDWOLFE
Definition
ROL_LineSearch_U_Types.hpp:196
ROL::CURVATURECONDITION_U_LAST
@ CURVATURECONDITION_U_LAST
Definition
ROL_LineSearch_U_Types.hpp:200
ROL::CURVATURECONDITION_U_STRONGWOLFE
@ CURVATURECONDITION_U_STRONGWOLFE
Definition
ROL_LineSearch_U_Types.hpp:195
ROL::CURVATURECONDITION_U_NULL
@ CURVATURECONDITION_U_NULL
Definition
ROL_LineSearch_U_Types.hpp:199
ROL::CURVATURECONDITION_U_WOLFE
@ CURVATURECONDITION_U_WOLFE
Definition
ROL_LineSearch_U_Types.hpp:194
ROL::ECurvatureConditionUToString
std::string ECurvatureConditionUToString(ECurvatureConditionU ls)
Definition
ROL_LineSearch_U_Types.hpp:203
ROL::StringToECurvatureConditionU
ECurvatureConditionU StringToECurvatureConditionU(std::string s)
Definition
ROL_LineSearch_U_Types.hpp:253
ROL::ELineSearchU
ELineSearchU
Definition
ROL_LineSearch_U_Types.hpp:110
ROL::LINESEARCH_U_PATHBASEDTARGETLEVEL
@ LINESEARCH_U_PATHBASEDTARGETLEVEL
Definition
ROL_LineSearch_U_Types.hpp:112
ROL::LINESEARCH_U_BACKTRACKING
@ LINESEARCH_U_BACKTRACKING
Definition
ROL_LineSearch_U_Types.hpp:113
ROL::LINESEARCH_U_ITERATIONSCALING
@ LINESEARCH_U_ITERATIONSCALING
Definition
ROL_LineSearch_U_Types.hpp:111
ROL::LINESEARCH_U_LAST
@ LINESEARCH_U_LAST
Definition
ROL_LineSearch_U_Types.hpp:119
ROL::LINESEARCH_U_GOLDENSECTION
@ LINESEARCH_U_GOLDENSECTION
Definition
ROL_LineSearch_U_Types.hpp:115
ROL::LINESEARCH_U_USERDEFINED
@ LINESEARCH_U_USERDEFINED
Definition
ROL_LineSearch_U_Types.hpp:118
ROL::LINESEARCH_U_BISECTION
@ LINESEARCH_U_BISECTION
Definition
ROL_LineSearch_U_Types.hpp:114
ROL::LINESEARCH_U_CUBICINTERP
@ LINESEARCH_U_CUBICINTERP
Definition
ROL_LineSearch_U_Types.hpp:116
ROL::LINESEARCH_U_BRENTS
@ LINESEARCH_U_BRENTS
Definition
ROL_LineSearch_U_Types.hpp:117
ROL::isValidDescentU
int isValidDescentU(EDescentU d)
Verifies validity of a DescentU enum.
Definition
ROL_LineSearch_U_Types.hpp:60
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
ROL::StringToELineSearchU
ELineSearchU StringToELineSearchU(std::string s)
Definition
ROL_LineSearch_U_Types.hpp:176
ROL::isValidLineSearchU
int isValidLineSearchU(ELineSearchU ls)
Verifies validity of a LineSearchU enum.
Definition
ROL_LineSearch_U_Types.hpp:144
ROL::EDescentUToString
std::string EDescentUToString(EDescentU tr)
Definition
ROL_LineSearch_U_Types.hpp:40
ROL::StringToEDescentU
EDescentU StringToEDescentU(std::string s)
Definition
ROL_LineSearch_U_Types.hpp:90
Generated by
1.17.0