ROL
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
15#ifndef ROL_TRUSTREGIONTYPES_HPP
16#define ROL_TRUSTREGIONTYPES_HPP
17
18#include "ROL_Types.hpp"
19
20namespace ROL {
21
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
59 return( (ls == TRUSTREGION_CAUCHYPOINT) ||
61 (ls == TRUSTREGION_DOGLEG) ||
64 );
65 }
66
68 return type = static_cast<ETrustRegion>(type+1);
69 }
70
72 ETrustRegion oldval = type;
73 ++type;
74 return oldval;
75 }
76
78 return type = static_cast<ETrustRegion>(type-1);
79 }
80
82 ETrustRegion oldval = type;
83 --type;
84 return oldval;
85 }
86
87 inline ETrustRegion StringToETrustRegion(std::string s) {
88 s = removeStringFormat(s);
90 if ( !s.compare(removeStringFormat(ETrustRegionToString(tr))) ) {
91 return tr;
92 }
93 }
95 }
96
109
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
128 return( (ls == TRUSTREGION_MODEL_COLEMANLI) ||
131 );
132 }
133
135 return type = static_cast<ETrustRegionModel>(type+1);
136 }
137
139 ETrustRegionModel oldval = type;
140 ++type;
141 return oldval;
142 }
143
145 return type = static_cast<ETrustRegionModel>(type-1);
146 }
147
149 ETrustRegionModel oldval = type;
150 --type;
151 return oldval;
152 }
153
155 s = removeStringFormat(s);
157 if ( !s.compare(removeStringFormat(ETrustRegionModelToString(tr))) ) {
158 return tr;
159 }
160 }
162 }
163
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
207
208
210 std::string retString;
211 switch(trf) {
213 retString = "Both actual and predicted reductions are positive (success)";
214 break;
216 retString = "Actual reduction is positive and predicted reduction is negative (impossible)";
217 break;
219 retString = "Actual reduction is nonpositive and predicted reduction is positive";
220 break;
222 retString = "Actual reduction is nonpositive and predicted reduction is negative (impossible)";
223 break;
225 retString = "Sufficient decrease of the quadratic model not met (bound constraints only)";
226 break;
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
Contains definitions of custom data types in ROL.
ETrustRegionModel StringToETrustRegionModel(std::string s)
std::string removeStringFormat(std::string s)
int isValidTrustRegion(ETrustRegion ls)
Verifies validity of a TrustRegion enum.
ETrustRegion StringToETrustRegion(std::string s)
bool isValidTrustRegionSubproblem(ETrustRegion etr, ETrustRegionModel etrm, bool isBnd)
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
std::string ETrustRegionModelToString(ETrustRegionModel tr)
@ TRUSTREGION_FLAG_POSPREDNEG
@ TRUSTREGION_FLAG_NPOSPREDNEG
@ TRUSTREGION_FLAG_QMINSUFDEC
@ TRUSTREGION_FLAG_NPOSPREDPOS
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
std::string ETrustRegionFlagToString(ETrustRegionFlag trf)
std::string ETrustRegionToString(ETrustRegion tr)
@ TRUSTREGION_MODEL_COLEMANLI
@ TRUSTREGION_MODEL_KELLEYSACHS
int isValidTrustRegionModel(ETrustRegionModel ls)
Verifies validity of a TrustRegionModel enum.