ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
randvarfunctional
deviation
ROL_DeviationMeasureFactory.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_DEVIATIONMEASUREFACTORY_HPP
11
#define ROL_DEVIATIONMEASUREFACTORY_HPP
12
13
#include "ROL_ParameterList.hpp"
14
15
#include "
ROL_Types.hpp
"
16
17
// Risk Quadrangle Implementations
18
#include "
ROL_ExpectationQuadDeviation.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
EDeviationMeasure
{
31
DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
= 0,
32
DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
,
33
DEVIATIONMEASURE_QUANTILEQUADRANGLE
,
34
DEVIATIONMEASURE_MOREAUYOSIDACVAR
,
35
DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
,
36
DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
,
37
DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
,
38
DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
,
39
DEVIATIONMEASURE_LAST
40
};
41
42
inline
std::string
EDeviationMeasureToString
(
EDeviationMeasure
ed) {
43
std::string retString;
44
switch
(ed) {
45
case
DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
:
46
retString =
"Variance"
;
break
;
47
case
DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
:
48
retString =
"Truncated Mean"
;
break
;
49
case
DEVIATIONMEASURE_QUANTILEQUADRANGLE
:
50
retString =
"CVaR"
;
break
;
51
case
DEVIATIONMEASURE_MOREAUYOSIDACVAR
:
52
retString =
"Moreau-Yosida CVaR"
;
break
;
53
case
DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
:
54
retString =
"Generalized Moreau-Yosida CVaR"
;
break
;
55
case
DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
:
56
retString =
"Entropic"
;
break
;
57
case
DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
:
58
retString =
"Log Quantile"
;
break
;
59
case
DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
:
60
retString =
"Smoothed Upper Range"
;
break
;
61
case
DEVIATIONMEASURE_LAST
:
62
retString =
"Last Type (Dummy)"
;
break
;
63
default
:
64
retString =
"INVALID EDeviationMeasure"
;
break
;
65
}
66
return
retString;
67
}
68
69
inline
int
isValidDeviationMeasure
(
EDeviationMeasure
ed) {
70
return
( (ed ==
DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
) ||
71
(ed ==
DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
) ||
72
(ed ==
DEVIATIONMEASURE_QUANTILEQUADRANGLE
) ||
73
(ed ==
DEVIATIONMEASURE_MOREAUYOSIDACVAR
) ||
74
(ed ==
DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
) ||
75
(ed ==
DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
) ||
76
(ed ==
DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
) ||
77
(ed ==
DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
) );
78
}
79
80
inline
EDeviationMeasure
&
operator++
(
EDeviationMeasure
&type) {
81
return
type =
static_cast<
EDeviationMeasure
>
(type+1);
82
}
83
84
inline
EDeviationMeasure
operator++
(
EDeviationMeasure
&type,
int
) {
85
EDeviationMeasure
oldval = type;
86
++type;
87
return
oldval;
88
}
89
90
inline
EDeviationMeasure
&
operator--
(
EDeviationMeasure
&type) {
91
return
type =
static_cast<
EDeviationMeasure
>
(type-1);
92
}
93
94
inline
EDeviationMeasure
operator--
(
EDeviationMeasure
&type,
int
) {
95
EDeviationMeasure
oldval = type;
96
--type;
97
return
oldval;
98
}
99
100
inline
EDeviationMeasure
StringToEDeviationMeasure
(std::string s) {
101
s =
removeStringFormat
(s);
102
for
(
EDeviationMeasure
tr =
DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
; tr <
DEVIATIONMEASURE_LAST
; tr++ ) {
103
if
( !s.compare(
removeStringFormat
(
EDeviationMeasureToString
(tr))) ) {
104
return
tr;
105
}
106
}
107
return
DEVIATIONMEASURE_LAST
;
108
}
109
110
template
<
class
Real>
111
inline
Ptr<RandVarFunctional<Real>>
DeviationMeasureFactory
(ParameterList &parlist) {
112
std::string deviation = parlist.sublist(
"SOL"
).sublist(
"Deviation Measure"
).get(
"Name"
,
"Variance"
);
113
EDeviationMeasure
ed =
StringToEDeviationMeasure
(deviation);
114
switch
(ed) {
115
case
DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
:
116
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<MeanVarianceQuadrangle<Real>>(parlist));
117
case
DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
:
118
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<TruncatedMeanQuadrangle<Real>>(parlist));
119
case
DEVIATIONMEASURE_QUANTILEQUADRANGLE
:
120
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<QuantileQuadrangle<Real>>(parlist));
121
case
DEVIATIONMEASURE_MOREAUYOSIDACVAR
:
122
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<MoreauYosidaCVaR<Real>>(parlist));
123
case
DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
:
124
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<GenMoreauYosidaCVaR<Real>>(parlist));
125
case
DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
:
126
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<LogExponentialQuadrangle<Real>>(parlist));
127
case
DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
:
128
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<LogQuantileQuadrangle<Real>>(parlist));
129
case
DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
:
130
return
makePtr<ExpectationQuadDeviation<Real>>(makePtr<SmoothedWorstCaseQuadrangle<Real>>(parlist));
131
default
:
132
ROL_TEST_FOR_EXCEPTION(
true
,std::invalid_argument,
133
"Invalid deviation measure type "
<< deviation <<
"!"
);
134
}
135
}
136
}
137
#endif
ROL_ExpectationQuadDeviation.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::isValidDeviationMeasure
int isValidDeviationMeasure(EDeviationMeasure ed)
Definition
ROL_DeviationMeasureFactory.hpp:69
ROL::EDeviationMeasure
EDeviationMeasure
Definition
ROL_DeviationMeasureFactory.hpp:30
ROL::DEVIATIONMEASURE_LAST
@ DEVIATIONMEASURE_LAST
Definition
ROL_DeviationMeasureFactory.hpp:39
ROL::DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
@ DEVIATIONMEASURE_GENMOREAUYOSIDACVAR
Definition
ROL_DeviationMeasureFactory.hpp:35
ROL::DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
@ DEVIATIONMEASURE_TRUNCATEDMEANQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:32
ROL::DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
@ DEVIATIONMEASURE_LOGEXPONENTIALQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:36
ROL::DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
@ DEVIATIONMEASURE_MEANVARIANCEQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:31
ROL::DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
@ DEVIATIONMEASURE_LOGQUANTILEQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:37
ROL::DEVIATIONMEASURE_MOREAUYOSIDACVAR
@ DEVIATIONMEASURE_MOREAUYOSIDACVAR
Definition
ROL_DeviationMeasureFactory.hpp:34
ROL::DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
@ DEVIATIONMEASURE_SMOOTHEDWORSTCASEQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:38
ROL::DEVIATIONMEASURE_QUANTILEQUADRANGLE
@ DEVIATIONMEASURE_QUANTILEQUADRANGLE
Definition
ROL_DeviationMeasureFactory.hpp:33
ROL::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::EDeviationMeasureToString
std::string EDeviationMeasureToString(EDeviationMeasure ed)
Definition
ROL_DeviationMeasureFactory.hpp:42
ROL::DeviationMeasureFactory
Ptr< RandVarFunctional< Real > > DeviationMeasureFactory(ParameterList &parlist)
Definition
ROL_DeviationMeasureFactory.hpp:111
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::StringToEDeviationMeasure
EDeviationMeasure StringToEDeviationMeasure(std::string s)
Definition
ROL_DeviationMeasureFactory.hpp:100
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
Generated by
1.17.0