ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
randvarfunctional
error
ROL_ErrorMeasureFactory.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_ERRORMEASUREFACTORY_HPP
11
#define ROL_ERRORMEASUREFACTORY_HPP
12
13
#include "ROL_ParameterList.hpp"
14
15
#include "
ROL_Types.hpp
"
16
17
// Risk Quadrangle Implementations
18
#include "
ROL_ExpectationQuadError.hpp
"
19
#include "
ROL_GenMoreauYosidaCVaR.hpp
"
20
#include "
ROL_MoreauYosidaCVaR.hpp
"
21
#include "
ROL_LogExponentialQuadrangle.hpp
"
22
#include "
ROL_LogQuantileQuadrangle.hpp
"
23
#include "
ROL_MeanVarianceQuadrangle.hpp
"
24
#include "
ROL_QuantileQuadrangle.hpp
"
25
#include "
ROL_SmoothedWorstCaseQuadrangle.hpp
"
26
#include "
ROL_TruncatedMeanQuadrangle.hpp
"
27
28
namespace
ROL
{
29
30
enum
EErrorMeasure
{
31
ERRORMEASURE_MEANVARIANCEQUADRANGLE
= 0,
32
ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
,
33
ERRORMEASURE_QUANTILEQUADRANGLE
,
34
ERRORMEASURE_MOREAUYOSIDACVAR
,
35
ERRORMEASURE_GENMOREAUYOSIDACVAR
,
36
ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
,
37
ERRORMEASURE_LOGQUANTILEQUADRANGLE
,
38
ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
,
39
ERRORMEASURE_LAST
40
};
41
42
inline
std::string
EErrorMeasureToString
(
EErrorMeasure
ed) {
43
std::string retString;
44
switch
(ed) {
45
case
ERRORMEASURE_MEANVARIANCEQUADRANGLE
:
46
retString =
"Least Squares"
;
break
;
47
case
ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
:
48
retString =
"Huber"
;
break
;
49
case
ERRORMEASURE_QUANTILEQUADRANGLE
:
50
retString =
"Koenker-Bassett"
;
break
;
51
case
ERRORMEASURE_MOREAUYOSIDACVAR
:
52
retString =
"Moreau-Yosida-Koenker-Bassett"
;
break
;
53
case
ERRORMEASURE_GENMOREAUYOSIDACVAR
:
54
retString =
"Generalized Moreau-Yosida-Koenker-Bassett"
;
break
;
55
case
ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
:
56
retString =
"Exponential"
;
break
;
57
case
ERRORMEASURE_LOGQUANTILEQUADRANGLE
:
58
retString =
"Log Quantile"
;
break
;
59
case
ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
:
60
retString =
"Smoothed Worst Case"
;
break
;
61
case
ERRORMEASURE_LAST
:
62
retString =
"Last Type (Dummy)"
;
break
;
63
default
:
64
retString =
"INVALID EErrorMeasure"
;
break
;
65
}
66
return
retString;
67
}
68
69
inline
int
isValidErrorMeasure
(
EErrorMeasure
ed) {
70
return
( (ed ==
ERRORMEASURE_MEANVARIANCEQUADRANGLE
) ||
71
(ed ==
ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
) ||
72
(ed ==
ERRORMEASURE_QUANTILEQUADRANGLE
) ||
73
(ed ==
ERRORMEASURE_MOREAUYOSIDACVAR
) ||
74
(ed ==
ERRORMEASURE_GENMOREAUYOSIDACVAR
) ||
75
(ed ==
ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
) ||
76
(ed ==
ERRORMEASURE_LOGQUANTILEQUADRANGLE
) ||
77
(ed ==
ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
) );
78
}
79
80
inline
EErrorMeasure
&
operator++
(
EErrorMeasure
&type) {
81
return
type =
static_cast<
EErrorMeasure
>
(type+1);
82
}
83
84
inline
EErrorMeasure
operator++
(
EErrorMeasure
&type,
int
) {
85
EErrorMeasure
oldval = type;
86
++type;
87
return
oldval;
88
}
89
90
inline
EErrorMeasure
&
operator--
(
EErrorMeasure
&type) {
91
return
type =
static_cast<
EErrorMeasure
>
(type-1);
92
}
93
94
inline
EErrorMeasure
operator--
(
EErrorMeasure
&type,
int
) {
95
EErrorMeasure
oldval = type;
96
--type;
97
return
oldval;
98
}
99
100
inline
EErrorMeasure
StringToEErrorMeasure
(std::string s) {
101
s =
removeStringFormat
(s);
102
for
(
EErrorMeasure
tr =
ERRORMEASURE_MEANVARIANCEQUADRANGLE
; tr <
ERRORMEASURE_LAST
; tr++ ) {
103
if
( !s.compare(
removeStringFormat
(
EErrorMeasureToString
(tr))) ) {
104
return
tr;
105
}
106
}
107
return
ERRORMEASURE_LAST
;
108
}
109
110
template
<
class
Real>
111
inline
Ptr<RandVarFunctional<Real>>
ErrorMeasureFactory
(ParameterList &parlist) {
112
std::string error = parlist.sublist(
"SOL"
).sublist(
"Error Measure"
).get(
"Name"
,
"Least Squares"
);
113
EErrorMeasure
ed =
StringToEErrorMeasure
(error);
114
switch
(ed) {
115
case
ERRORMEASURE_MEANVARIANCEQUADRANGLE
:
116
return
makePtr<ExpectationQuadError<Real>>(makePtr<MeanVarianceQuadrangle<Real>>(parlist));
117
case
ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
:
118
return
makePtr<ExpectationQuadError<Real>>(makePtr<TruncatedMeanQuadrangle<Real>>(parlist));
119
case
ERRORMEASURE_QUANTILEQUADRANGLE
:
120
return
makePtr<ExpectationQuadError<Real>>(makePtr<QuantileQuadrangle<Real>>(parlist));
121
case
ERRORMEASURE_MOREAUYOSIDACVAR
:
122
return
makePtr<ExpectationQuadError<Real>>(makePtr<MoreauYosidaCVaR<Real>>(parlist));
123
case
ERRORMEASURE_GENMOREAUYOSIDACVAR
:
124
return
makePtr<ExpectationQuadError<Real>>(makePtr<GenMoreauYosidaCVaR<Real>>(parlist));
125
case
ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
:
126
return
makePtr<ExpectationQuadError<Real>>(makePtr<LogExponentialQuadrangle<Real>>(parlist));
127
case
ERRORMEASURE_LOGQUANTILEQUADRANGLE
:
128
return
makePtr<ExpectationQuadError<Real>>(makePtr<LogQuantileQuadrangle<Real>>(parlist));
129
case
ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
:
130
return
makePtr<ExpectationQuadError<Real>>(makePtr<SmoothedWorstCaseQuadrangle<Real>>(parlist));
131
default
:
132
ROL_TEST_FOR_EXCEPTION(
true
,std::invalid_argument,
133
"Invalid error measure type "
<< error <<
"!"
);
134
}
135
}
136
}
137
#endif
ROL_ExpectationQuadError.hpp
ROL_GenMoreauYosidaCVaR.hpp
ROL_LogExponentialQuadrangle.hpp
ROL_LogQuantileQuadrangle.hpp
ROL_MeanVarianceQuadrangle.hpp
ROL_MoreauYosidaCVaR.hpp
ROL_QuantileQuadrangle.hpp
ROL_SmoothedWorstCaseQuadrangle.hpp
ROL_TruncatedMeanQuadrangle.hpp
ROL_Types.hpp
Contains definitions of custom data types in ROL.
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::EErrorMeasureToString
std::string EErrorMeasureToString(EErrorMeasure ed)
Definition
ROL_ErrorMeasureFactory.hpp:42
ROL::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::StringToEErrorMeasure
EErrorMeasure StringToEErrorMeasure(std::string s)
Definition
ROL_ErrorMeasureFactory.hpp:100
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::ErrorMeasureFactory
Ptr< RandVarFunctional< Real > > ErrorMeasureFactory(ParameterList &parlist)
Definition
ROL_ErrorMeasureFactory.hpp:111
ROL::isValidErrorMeasure
int isValidErrorMeasure(EErrorMeasure ed)
Definition
ROL_ErrorMeasureFactory.hpp:69
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
ROL::EErrorMeasure
EErrorMeasure
Definition
ROL_ErrorMeasureFactory.hpp:30
ROL::ERRORMEASURE_LAST
@ ERRORMEASURE_LAST
Definition
ROL_ErrorMeasureFactory.hpp:39
ROL::ERRORMEASURE_QUANTILEQUADRANGLE
@ ERRORMEASURE_QUANTILEQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:33
ROL::ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
@ ERRORMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:38
ROL::ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
@ ERRORMEASURE_LOGEXPONENTIALQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:36
ROL::ERRORMEASURE_MEANVARIANCEQUADRANGLE
@ ERRORMEASURE_MEANVARIANCEQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:31
ROL::ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
@ ERRORMEASURE_TRUNCATEDMEANQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:32
ROL::ERRORMEASURE_GENMOREAUYOSIDACVAR
@ ERRORMEASURE_GENMOREAUYOSIDACVAR
Definition
ROL_ErrorMeasureFactory.hpp:35
ROL::ERRORMEASURE_MOREAUYOSIDACVAR
@ ERRORMEASURE_MOREAUYOSIDACVAR
Definition
ROL_ErrorMeasureFactory.hpp:34
ROL::ERRORMEASURE_LOGQUANTILEQUADRANGLE
@ ERRORMEASURE_LOGQUANTILEQUADRANGLE
Definition
ROL_ErrorMeasureFactory.hpp:37
Generated by
1.17.0