ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
step
trustregion
ROL_TrustRegionTypes.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
14
15
#ifndef ROL_TRUSTREGIONTYPES_HPP
16
#define ROL_TRUSTREGIONTYPES_HPP
17
18
#include "
ROL_Types.hpp
"
19
20
namespace
ROL
{
21
30
enum
ETrustRegion
{
31
TRUSTREGION_CAUCHYPOINT
= 0,
32
TRUSTREGION_TRUNCATEDCG
,
33
TRUSTREGION_DOGLEG
,
34
TRUSTREGION_DOUBLEDOGLEG
,
35
TRUSTREGION_LINMORE
,
36
TRUSTREGION_LAST
37
};
38
39
inline
std::string
ETrustRegionToString
(
ETrustRegion
tr) {
40
std::string retString;
41
switch
(tr) {
42
case
TRUSTREGION_CAUCHYPOINT
: retString =
"Cauchy Point"
;
break
;
43
case
TRUSTREGION_TRUNCATEDCG
: retString =
"Truncated CG"
;
break
;
44
case
TRUSTREGION_DOGLEG
: retString =
"Dogleg"
;
break
;
45
case
TRUSTREGION_DOUBLEDOGLEG
: retString =
"Double Dogleg"
;
break
;
46
case
TRUSTREGION_LINMORE
: retString =
"Lin-More"
;
break
;
47
case
TRUSTREGION_LAST
: retString =
"Last Type (Dummy)"
;
break
;
48
default
: retString =
"INVALID ETrustRegion"
;
49
}
50
return
retString;
51
}
52
58
inline
int
isValidTrustRegion
(
ETrustRegion
ls){
59
return
( (ls ==
TRUSTREGION_CAUCHYPOINT
) ||
60
(ls ==
TRUSTREGION_TRUNCATEDCG
) ||
61
(ls ==
TRUSTREGION_DOGLEG
) ||
62
(ls ==
TRUSTREGION_DOUBLEDOGLEG
) ||
63
(ls ==
TRUSTREGION_LINMORE
)
64
);
65
}
66
67
inline
ETrustRegion
&
operator++
(
ETrustRegion
&type) {
68
return
type =
static_cast<
ETrustRegion
>
(type+1);
69
}
70
71
inline
ETrustRegion
operator++
(
ETrustRegion
&type,
int
) {
72
ETrustRegion
oldval = type;
73
++type;
74
return
oldval;
75
}
76
77
inline
ETrustRegion
&
operator--
(
ETrustRegion
&type) {
78
return
type =
static_cast<
ETrustRegion
>
(type-1);
79
}
80
81
inline
ETrustRegion
operator--
(
ETrustRegion
&type,
int
) {
82
ETrustRegion
oldval = type;
83
--type;
84
return
oldval;
85
}
86
87
inline
ETrustRegion
StringToETrustRegion
(std::string s) {
88
s =
removeStringFormat
(s);
89
for
(
ETrustRegion
tr =
TRUSTREGION_CAUCHYPOINT
; tr <
TRUSTREGION_LAST
; tr++ ) {
90
if
( !s.compare(
removeStringFormat
(
ETrustRegionToString
(tr))) ) {
91
return
tr;
92
}
93
}
94
return
TRUSTREGION_CAUCHYPOINT
;
95
}
96
103
enum
ETrustRegionModel
{
104
TRUSTREGION_MODEL_COLEMANLI
= 0,
105
TRUSTREGION_MODEL_KELLEYSACHS
,
106
TRUSTREGION_MODEL_LINMORE
,
107
TRUSTREGION_MODEL_LAST
108
};
109
110
inline
std::string
ETrustRegionModelToString
(
ETrustRegionModel
tr) {
111
std::string retString;
112
switch
(tr) {
113
case
TRUSTREGION_MODEL_COLEMANLI
: retString =
"Coleman-Li"
;
break
;
114
case
TRUSTREGION_MODEL_KELLEYSACHS
: retString =
"Kelley-Sachs"
;
break
;
115
case
TRUSTREGION_MODEL_LINMORE
: retString =
"Lin-More"
;
break
;
116
case
TRUSTREGION_MODEL_LAST
: retString =
"Last Type (Dummy)"
;
break
;
117
default
: retString =
"INVALID ETrustRegionModel"
;
118
}
119
return
retString;
120
}
121
127
inline
int
isValidTrustRegionModel
(
ETrustRegionModel
ls){
128
return
( (ls ==
TRUSTREGION_MODEL_COLEMANLI
) ||
129
(ls ==
TRUSTREGION_MODEL_KELLEYSACHS
) ||
130
(ls ==
TRUSTREGION_MODEL_LINMORE
)
131
);
132
}
133
134
inline
ETrustRegionModel
&
operator++
(
ETrustRegionModel
&type) {
135
return
type =
static_cast<
ETrustRegionModel
>
(type+1);
136
}
137
138
inline
ETrustRegionModel
operator++
(
ETrustRegionModel
&type,
int
) {
139
ETrustRegionModel
oldval = type;
140
++type;
141
return
oldval;
142
}
143
144
inline
ETrustRegionModel
&
operator--
(
ETrustRegionModel
&type) {
145
return
type =
static_cast<
ETrustRegionModel
>
(type-1);
146
}
147
148
inline
ETrustRegionModel
operator--
(
ETrustRegionModel
&type,
int
) {
149
ETrustRegionModel
oldval = type;
150
--type;
151
return
oldval;
152
}
153
154
inline
ETrustRegionModel
StringToETrustRegionModel
(std::string s) {
155
s =
removeStringFormat
(s);
156
for
(
ETrustRegionModel
tr =
TRUSTREGION_MODEL_COLEMANLI
; tr <
TRUSTREGION_MODEL_LAST
; tr++ ) {
157
if
( !s.compare(
removeStringFormat
(
ETrustRegionModelToString
(tr))) ) {
158
return
tr;
159
}
160
}
161
return
TRUSTREGION_MODEL_COLEMANLI
;
162
}
163
164
inline
bool
isValidTrustRegionSubproblem
(
ETrustRegion
etr,
ETrustRegionModel
etrm,
bool
isBnd) {
165
if
(etrm !=
TRUSTREGION_MODEL_LINMORE
|| !isBnd) {
166
switch
(etr) {
167
case
TRUSTREGION_CAUCHYPOINT
:
return
true
;
168
case
TRUSTREGION_DOGLEG
:
return
true
;
169
case
TRUSTREGION_DOUBLEDOGLEG
:
return
true
;
170
case
TRUSTREGION_TRUNCATEDCG
:
return
true
;
171
case
TRUSTREGION_LINMORE
:
return
false
;
172
default
:
return
false
;
173
}
174
}
175
else
{
176
switch
(etr) {
177
case
TRUSTREGION_CAUCHYPOINT
:
return
false
;
178
case
TRUSTREGION_DOGLEG
:
return
false
;
179
case
TRUSTREGION_DOUBLEDOGLEG
:
return
false
;
180
case
TRUSTREGION_TRUNCATEDCG
:
return
false
;
181
case
TRUSTREGION_LINMORE
:
return
true
;
182
default
:
return
false
;
183
}
184
}
185
}
186
198
enum
ETrustRegionFlag
{
199
TRUSTREGION_FLAG_SUCCESS
= 0,
200
TRUSTREGION_FLAG_POSPREDNEG
,
201
TRUSTREGION_FLAG_NPOSPREDPOS
,
202
TRUSTREGION_FLAG_NPOSPREDNEG
,
203
TRUSTREGION_FLAG_QMINSUFDEC
,
204
TRUSTREGION_FLAG_NAN
,
205
TRUSTREGION_FLAG_UNDEFINED
206
};
207
208
209
inline
std::string
ETrustRegionFlagToString
(
ETrustRegionFlag
trf) {
210
std::string retString;
211
switch
(trf) {
212
case
TRUSTREGION_FLAG_SUCCESS
:
213
retString =
"Both actual and predicted reductions are positive (success)"
;
214
break
;
215
case
TRUSTREGION_FLAG_POSPREDNEG
:
216
retString =
"Actual reduction is positive and predicted reduction is negative (impossible)"
;
217
break
;
218
case
TRUSTREGION_FLAG_NPOSPREDPOS
:
219
retString =
"Actual reduction is nonpositive and predicted reduction is positive"
;
220
break
;
221
case
TRUSTREGION_FLAG_NPOSPREDNEG
:
222
retString =
"Actual reduction is nonpositive and predicted reduction is negative (impossible)"
;
223
break
;
224
case
TRUSTREGION_FLAG_QMINSUFDEC
:
225
retString =
"Sufficient decrease of the quadratic model not met (bound constraints only)"
;
226
break
;
227
case
TRUSTREGION_FLAG_NAN
:
228
retString =
"Actual and/or predicted reduction is a NaN"
;
229
break
;
230
default
:
231
retString =
"INVALID ETrustRegionFlag"
;
232
}
233
return
retString;
234
}
235
236
237
238
239
240
}
241
242
#endif
ROL_Types.hpp
Contains definitions of custom data types in ROL.
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::StringToETrustRegionModel
ETrustRegionModel StringToETrustRegionModel(std::string s)
Definition
ROL_TrustRegionTypes.hpp:154
ROL::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::isValidTrustRegion
int isValidTrustRegion(ETrustRegion ls)
Verifies validity of a TrustRegion enum.
Definition
ROL_TrustRegionTypes.hpp:58
ROL::StringToETrustRegion
ETrustRegion StringToETrustRegion(std::string s)
Definition
ROL_TrustRegionTypes.hpp:87
ROL::isValidTrustRegionSubproblem
bool isValidTrustRegionSubproblem(ETrustRegion etr, ETrustRegionModel etrm, bool isBnd)
Definition
ROL_TrustRegionTypes.hpp:164
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::ETrustRegionModelToString
std::string ETrustRegionModelToString(ETrustRegionModel tr)
Definition
ROL_TrustRegionTypes.hpp:110
ROL::ETrustRegionFlag
ETrustRegionFlag
Definition
ROL_TrustRegionTypes.hpp:198
ROL::TRUSTREGION_FLAG_NAN
@ TRUSTREGION_FLAG_NAN
Definition
ROL_TrustRegionTypes.hpp:204
ROL::TRUSTREGION_FLAG_POSPREDNEG
@ TRUSTREGION_FLAG_POSPREDNEG
Definition
ROL_TrustRegionTypes.hpp:200
ROL::TRUSTREGION_FLAG_NPOSPREDNEG
@ TRUSTREGION_FLAG_NPOSPREDNEG
Definition
ROL_TrustRegionTypes.hpp:202
ROL::TRUSTREGION_FLAG_UNDEFINED
@ TRUSTREGION_FLAG_UNDEFINED
Definition
ROL_TrustRegionTypes.hpp:205
ROL::TRUSTREGION_FLAG_QMINSUFDEC
@ TRUSTREGION_FLAG_QMINSUFDEC
Definition
ROL_TrustRegionTypes.hpp:203
ROL::TRUSTREGION_FLAG_NPOSPREDPOS
@ TRUSTREGION_FLAG_NPOSPREDPOS
Definition
ROL_TrustRegionTypes.hpp:201
ROL::TRUSTREGION_FLAG_SUCCESS
@ TRUSTREGION_FLAG_SUCCESS
Definition
ROL_TrustRegionTypes.hpp:199
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
ROL::ETrustRegionFlagToString
std::string ETrustRegionFlagToString(ETrustRegionFlag trf)
Definition
ROL_TrustRegionTypes.hpp:209
ROL::ETrustRegionToString
std::string ETrustRegionToString(ETrustRegion tr)
Definition
ROL_TrustRegionTypes.hpp:39
ROL::ETrustRegionModel
ETrustRegionModel
Definition
ROL_TrustRegionTypes.hpp:103
ROL::TRUSTREGION_MODEL_COLEMANLI
@ TRUSTREGION_MODEL_COLEMANLI
Definition
ROL_TrustRegionTypes.hpp:104
ROL::TRUSTREGION_MODEL_KELLEYSACHS
@ TRUSTREGION_MODEL_KELLEYSACHS
Definition
ROL_TrustRegionTypes.hpp:105
ROL::TRUSTREGION_MODEL_LAST
@ TRUSTREGION_MODEL_LAST
Definition
ROL_TrustRegionTypes.hpp:107
ROL::TRUSTREGION_MODEL_LINMORE
@ TRUSTREGION_MODEL_LINMORE
Definition
ROL_TrustRegionTypes.hpp:106
ROL::ETrustRegion
ETrustRegion
Definition
ROL_TrustRegionTypes.hpp:30
ROL::TRUSTREGION_LAST
@ TRUSTREGION_LAST
Definition
ROL_TrustRegionTypes.hpp:36
ROL::TRUSTREGION_DOGLEG
@ TRUSTREGION_DOGLEG
Definition
ROL_TrustRegionTypes.hpp:33
ROL::TRUSTREGION_LINMORE
@ TRUSTREGION_LINMORE
Definition
ROL_TrustRegionTypes.hpp:35
ROL::TRUSTREGION_DOUBLEDOGLEG
@ TRUSTREGION_DOUBLEDOGLEG
Definition
ROL_TrustRegionTypes.hpp:34
ROL::TRUSTREGION_CAUCHYPOINT
@ TRUSTREGION_CAUCHYPOINT
Definition
ROL_TrustRegionTypes.hpp:31
ROL::TRUSTREGION_TRUNCATEDCG
@ TRUSTREGION_TRUNCATEDCG
Definition
ROL_TrustRegionTypes.hpp:32
ROL::isValidTrustRegionModel
int isValidTrustRegionModel(ETrustRegionModel ls)
Verifies validity of a TrustRegionModel enum.
Definition
ROL_TrustRegionTypes.hpp:127
Generated by
1.17.0