ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
randvarfunctional
risk
ROL_RiskMeasureFactory.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_RISKMEASUREFACTORY_HPP
11
#define ROL_RISKMEASUREFACTORY_HPP
12
13
#include "ROL_ParameterList.hpp"
14
15
#include "
ROL_Types.hpp
"
16
17
// Standard Risk Measure Implementations
18
#include "
ROL_CVaR.hpp
"
19
#include "
ROL_MixedCVaR.hpp
"
20
#include "
ROL_SecondOrderCVaR.hpp
"
21
#include "
ROL_ChebyshevSpectral.hpp
"
22
#include "
ROL_SpectralRisk.hpp
"
23
#include "
ROL_QuantileRadius.hpp
"
24
#include "
ROL_HMCR.hpp
"
25
#include "
ROL_EntropicRisk.hpp
"
26
#include "
ROL_CoherentEntropicRisk.hpp
"
27
#include "
ROL_MeanDeviationFromTarget.hpp
"
28
#include "
ROL_MeanDeviation.hpp
"
29
#include "
ROL_MeanVarianceFromTarget.hpp
"
30
#include "
ROL_MeanVariance.hpp
"
31
#include "
ROL_MeanSemiDeviation.hpp
"
32
#include "
ROL_MeanSemiDeviationFromTarget.hpp
"
33
34
// Risk Quadrangle Risk Measure Implementations
35
#include "
ROL_ExpectationQuadRisk.hpp
"
36
#include "
ROL_LogQuantileQuadrangle.hpp
"
37
#include "
ROL_SmoothedWorstCaseQuadrangle.hpp
"
38
#include "
ROL_TruncatedMeanQuadrangle.hpp
"
39
#include "
ROL_MoreauYosidaCVaR.hpp
"
40
#include "
ROL_GenMoreauYosidaCVaR.hpp
"
41
#include "
ROL_LogExponentialQuadrangle.hpp
"
42
#include "
ROL_MeanVarianceQuadrangle.hpp
"
43
44
// F-Divergence Distributionally Robust Risk Measure Implementations
45
#include "
ROL_Chi2Divergence.hpp
"
46
#include "
ROL_KLDivergence.hpp
"
47
48
namespace
ROL
{
49
50
enum
ERiskMeasure
{
51
RISKMEASURE_CVAR
= 0,
52
RISKMEASURE_MOREAUYOSIDACVAR
,
53
RISKMEASURE_GENMOREAUYOSIDACVAR
,
54
RISKMEASURE_MIXEDCVAR
,
55
RISKMEASURE_SPECTRALRISK
,
56
RISKMEASURE_SECONDORDERCVAR
,
57
RISKMEASURE_CHEBYSHEVSPECTRAL
,
58
RISKMEASURE_QUANTILERADIUS
,
59
RISKMEASURE_HMCR
,
60
RISKMEASURE_ENTROPICRISK
,
61
RISKMEASURE_COHERENTENTROPICRISK
,
62
RISKMEASURE_MEANSEMIDEVIATION
,
63
RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
,
64
RISKMEASURE_MEANDEVIATIONFROMTARGET
,
65
RISKMEASURE_MEANDEVIATION
,
66
RISKMEASURE_MEANVARIANCEFROMTARGET
,
67
RISKMEASURE_MEANVARIANCE
,
68
RISKMEASURE_TRUNCATEDMEAN
,
69
RISKMEASURE_LOGQUANTILE
,
70
RISKMEASURE_SMOOTHEDWORSTCASE
,
71
RISKMEASURE_LOGEXPONENTIAL
,
72
RISKMEASURE_SAFETYMARGIN
,
73
RISKMEASURE_CHI2DIVERGENCE
,
74
RISKMEASURE_KLDIVERGENCE
,
75
RISKMEASURE_LAST
76
};
77
78
inline
std::string
ERiskMeasureToString
(
ERiskMeasure
ed) {
79
std::string retString;
80
switch
(ed) {
81
case
RISKMEASURE_CVAR
:
82
retString =
"CVaR"
;
break
;
83
case
RISKMEASURE_MOREAUYOSIDACVAR
:
84
retString =
"Moreau-Yosida CVaR"
;
break
;
85
case
RISKMEASURE_GENMOREAUYOSIDACVAR
:
86
retString =
"Generalized Moreau-Yosida CVaR"
;
break
;
87
case
RISKMEASURE_MIXEDCVAR
:
88
retString =
"Mixed CVaR"
;
break
;
89
case
RISKMEASURE_SPECTRALRISK
:
90
retString =
"Spectral Risk"
;
break
;
91
case
RISKMEASURE_SECONDORDERCVAR
:
92
retString =
"Second Order CVaR"
;
break
;
93
case
RISKMEASURE_CHEBYSHEVSPECTRAL
:
94
retString =
"Chebyshev Spectral Risk"
;
break
;
95
case
RISKMEASURE_QUANTILERADIUS
:
96
retString =
"Quantile Radius"
;
break
;
97
case
RISKMEASURE_HMCR
:
98
retString =
"HMCR"
;
break
;
99
case
RISKMEASURE_ENTROPICRISK
:
100
retString =
"Entropic Risk"
;
break
;
101
case
RISKMEASURE_COHERENTENTROPICRISK
:
102
retString =
"Coherent Entropic Risk"
;
break
;
103
case
RISKMEASURE_MEANSEMIDEVIATION
:
104
retString =
"Mean Plus Semi-Deviation"
;
break
;
105
case
RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
:
106
retString =
"Mean Plus Semi-Deviation From Target"
;
break
;
107
case
RISKMEASURE_MEANDEVIATIONFROMTARGET
:
108
retString =
"Mean Plus Deviation From Target"
;
break
;
109
case
RISKMEASURE_MEANDEVIATION
:
110
retString =
"Mean Plus Deviation"
;
break
;
111
case
RISKMEASURE_MEANVARIANCEFROMTARGET
:
112
retString =
"Mean Plus Variance From Target"
;
break
;
113
case
RISKMEASURE_MEANVARIANCE
:
114
retString =
"Mean Plus Variance"
;
break
;
115
case
RISKMEASURE_TRUNCATEDMEAN
:
116
retString =
"Truncated Mean"
;
break
;
117
case
RISKMEASURE_LOGQUANTILE
:
118
retString =
"Log Quantile"
;
break
;
119
case
RISKMEASURE_SMOOTHEDWORSTCASE
:
120
retString =
"Smoothed Worst Case"
;
break
;
121
case
RISKMEASURE_LOGEXPONENTIAL
:
122
retString =
"Log Exponential"
;
break
;
123
case
RISKMEASURE_SAFETYMARGIN
:
124
retString =
"Safety Margin"
;
break
;
125
case
RISKMEASURE_CHI2DIVERGENCE
:
126
retString =
"Chi-Squared Divergence"
;
break
;
127
case
RISKMEASURE_KLDIVERGENCE
:
128
retString =
"KL Divergence"
;
break
;
129
case
RISKMEASURE_LAST
:
130
retString =
"Last Type (Dummy)"
;
break
;
131
default
:
132
retString =
"INVALID ERiskMeasure"
;
break
;
133
}
134
return
retString;
135
}
136
137
inline
int
isValidRiskMeasure
(
ERiskMeasure
ed) {
138
return
( (ed ==
RISKMEASURE_CVAR
) ||
139
(ed ==
RISKMEASURE_MOREAUYOSIDACVAR
) ||
140
(ed ==
RISKMEASURE_GENMOREAUYOSIDACVAR
) ||
141
(ed ==
RISKMEASURE_MIXEDCVAR
) ||
142
(ed ==
RISKMEASURE_SPECTRALRISK
) ||
143
(ed ==
RISKMEASURE_SECONDORDERCVAR
) ||
144
(ed ==
RISKMEASURE_CHEBYSHEVSPECTRAL
) ||
145
(ed ==
RISKMEASURE_QUANTILERADIUS
) ||
146
(ed ==
RISKMEASURE_HMCR
) ||
147
(ed ==
RISKMEASURE_ENTROPICRISK
) ||
148
(ed ==
RISKMEASURE_COHERENTENTROPICRISK
) ||
149
(ed ==
RISKMEASURE_MEANSEMIDEVIATION
) ||
150
(ed ==
RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
) ||
151
(ed ==
RISKMEASURE_MEANDEVIATIONFROMTARGET
) ||
152
(ed ==
RISKMEASURE_MEANDEVIATION
) ||
153
(ed ==
RISKMEASURE_MEANVARIANCEFROMTARGET
) ||
154
(ed ==
RISKMEASURE_MEANVARIANCE
) ||
155
(ed ==
RISKMEASURE_TRUNCATEDMEAN
) ||
156
(ed ==
RISKMEASURE_LOGQUANTILE
) ||
157
(ed ==
RISKMEASURE_SMOOTHEDWORSTCASE
) ||
158
(ed ==
RISKMEASURE_LOGEXPONENTIAL
) ||
159
(ed ==
RISKMEASURE_SAFETYMARGIN
) ||
160
(ed ==
RISKMEASURE_CHI2DIVERGENCE
) ||
161
(ed ==
RISKMEASURE_KLDIVERGENCE
));
162
}
163
164
inline
ERiskMeasure
&
operator++
(
ERiskMeasure
&type) {
165
return
type =
static_cast<
ERiskMeasure
>
(type+1);
166
}
167
168
inline
ERiskMeasure
operator++
(
ERiskMeasure
&type,
int
) {
169
ERiskMeasure
oldval = type;
170
++type;
171
return
oldval;
172
}
173
174
inline
ERiskMeasure
&
operator--
(
ERiskMeasure
&type) {
175
return
type =
static_cast<
ERiskMeasure
>
(type-1);
176
}
177
178
inline
ERiskMeasure
operator--
(
ERiskMeasure
&type,
int
) {
179
ERiskMeasure
oldval = type;
180
--type;
181
return
oldval;
182
}
183
184
inline
ERiskMeasure
StringToERiskMeasure
(std::string s) {
185
s =
removeStringFormat
(s);
186
for
(
ERiskMeasure
tr =
RISKMEASURE_CVAR
; tr <
RISKMEASURE_LAST
; tr++ ) {
187
if
( !s.compare(
removeStringFormat
(
ERiskMeasureToString
(tr))) ) {
188
return
tr;
189
}
190
}
191
return
RISKMEASURE_LAST
;
192
}
193
194
template
<
class
Real>
195
inline
Ptr<RandVarFunctional<Real>>
RiskMeasureFactory
(ParameterList &parlist) {
196
std::string risk = parlist.sublist(
"SOL"
).sublist(
"Risk Measure"
).get(
"Name"
,
"CVaR"
);
197
ERiskMeasure
ed =
StringToERiskMeasure
(risk);
198
switch
(ed) {
199
case
RISKMEASURE_CVAR
:
200
return
makePtr<CVaR<Real>>(parlist);
201
case
RISKMEASURE_MOREAUYOSIDACVAR
:
202
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<MoreauYosidaCVaR<Real>>(parlist));
203
case
RISKMEASURE_GENMOREAUYOSIDACVAR
:
204
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<GenMoreauYosidaCVaR<Real>>(parlist));
205
case
RISKMEASURE_MIXEDCVAR
:
206
return
makePtr<MixedCVaR<Real>>(parlist);
207
case
RISKMEASURE_SPECTRALRISK
:
208
return
makePtr<SpectralRisk<Real>>(parlist);
209
case
RISKMEASURE_SECONDORDERCVAR
:
210
return
makePtr<SecondOrderCVaR<Real>>(parlist);
211
case
RISKMEASURE_CHEBYSHEVSPECTRAL
:
212
return
makePtr<ChebyshevSpectral<Real>>(parlist);
213
case
RISKMEASURE_QUANTILERADIUS
:
214
return
makePtr<QuantileRadius<Real>>(parlist);
215
case
RISKMEASURE_HMCR
:
216
return
makePtr<HMCR<Real>>(parlist);
217
case
RISKMEASURE_ENTROPICRISK
:
218
return
makePtr<EntropicRisk<Real>>(parlist);
219
case
RISKMEASURE_COHERENTENTROPICRISK
:
220
return
makePtr<CoherentEntropicRisk<Real>>();
221
case
RISKMEASURE_MEANSEMIDEVIATION
:
222
return
makePtr<MeanSemiDeviation<Real>>(parlist);
223
case
RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
:
224
return
makePtr<MeanSemiDeviationFromTarget<Real>>(parlist);
225
case
RISKMEASURE_MEANDEVIATIONFROMTARGET
:
226
return
makePtr<MeanDeviationFromTarget<Real>>(parlist);
227
case
RISKMEASURE_MEANDEVIATION
:
228
return
makePtr<MeanDeviation<Real>>(parlist);
229
case
RISKMEASURE_MEANVARIANCEFROMTARGET
:
230
return
makePtr<MeanVarianceFromTarget<Real>>(parlist);
231
case
RISKMEASURE_MEANVARIANCE
:
232
return
makePtr<MeanVariance<Real>>(parlist);
233
case
RISKMEASURE_TRUNCATEDMEAN
:
234
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<TruncatedMeanQuadrangle<Real>>(parlist));
235
case
RISKMEASURE_LOGQUANTILE
:
236
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<LogQuantileQuadrangle<Real>>(parlist));
237
case
RISKMEASURE_SMOOTHEDWORSTCASE
:
238
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<SmoothedWorstCaseQuadrangle<Real>>(parlist));
239
case
RISKMEASURE_LOGEXPONENTIAL
:
240
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<LogExponentialQuadrangle<Real>>(parlist));
241
case
RISKMEASURE_SAFETYMARGIN
:
242
return
makePtr<ExpectationQuadRisk<Real>>(makePtr<MeanVarianceQuadrangle<Real>>(parlist));
243
case
RISKMEASURE_CHI2DIVERGENCE
:
244
return
makePtr<Chi2Divergence<Real>>(parlist);
245
case
RISKMEASURE_KLDIVERGENCE
:
246
return
makePtr<KLDivergence<Real>>(parlist);
247
default
:
248
ROL_TEST_FOR_EXCEPTION(
true
,std::invalid_argument,
249
"Invalid risk measure type "
<< risk <<
"!"
);
250
}
251
}
252
}
253
#endif
ROL_CVaR.hpp
ROL_ChebyshevSpectral.hpp
ROL_Chi2Divergence.hpp
ROL_CoherentEntropicRisk.hpp
ROL_EntropicRisk.hpp
ROL_ExpectationQuadRisk.hpp
ROL_GenMoreauYosidaCVaR.hpp
ROL_HMCR.hpp
ROL_KLDivergence.hpp
ROL_LogExponentialQuadrangle.hpp
ROL_LogQuantileQuadrangle.hpp
ROL_MeanDeviationFromTarget.hpp
ROL_MeanDeviation.hpp
ROL_MeanSemiDeviationFromTarget.hpp
ROL_MeanSemiDeviation.hpp
ROL_MeanVarianceFromTarget.hpp
ROL_MeanVarianceQuadrangle.hpp
ROL_MeanVariance.hpp
ROL_MixedCVaR.hpp
ROL_MoreauYosidaCVaR.hpp
ROL_QuantileRadius.hpp
ROL_SecondOrderCVaR.hpp
ROL_SmoothedWorstCaseQuadrangle.hpp
ROL_SpectralRisk.hpp
ROL_TruncatedMeanQuadrangle.hpp
ROL_Types.hpp
Contains definitions of custom data types in ROL.
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::isValidRiskMeasure
int isValidRiskMeasure(ERiskMeasure ed)
Definition
ROL_RiskMeasureFactory.hpp:137
ROL::ERiskMeasureToString
std::string ERiskMeasureToString(ERiskMeasure ed)
Definition
ROL_RiskMeasureFactory.hpp:78
ROL::RiskMeasureFactory
Ptr< RandVarFunctional< Real > > RiskMeasureFactory(ParameterList &parlist)
Definition
ROL_RiskMeasureFactory.hpp:195
ROL::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::StringToERiskMeasure
ERiskMeasure StringToERiskMeasure(std::string s)
Definition
ROL_RiskMeasureFactory.hpp:184
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
ROL::ERiskMeasure
ERiskMeasure
Definition
ROL_RiskMeasureFactory.hpp:50
ROL::RISKMEASURE_CHI2DIVERGENCE
@ RISKMEASURE_CHI2DIVERGENCE
Definition
ROL_RiskMeasureFactory.hpp:73
ROL::RISKMEASURE_SECONDORDERCVAR
@ RISKMEASURE_SECONDORDERCVAR
Definition
ROL_RiskMeasureFactory.hpp:56
ROL::RISKMEASURE_TRUNCATEDMEAN
@ RISKMEASURE_TRUNCATEDMEAN
Definition
ROL_RiskMeasureFactory.hpp:68
ROL::RISKMEASURE_MOREAUYOSIDACVAR
@ RISKMEASURE_MOREAUYOSIDACVAR
Definition
ROL_RiskMeasureFactory.hpp:52
ROL::RISKMEASURE_ENTROPICRISK
@ RISKMEASURE_ENTROPICRISK
Definition
ROL_RiskMeasureFactory.hpp:60
ROL::RISKMEASURE_LAST
@ RISKMEASURE_LAST
Definition
ROL_RiskMeasureFactory.hpp:75
ROL::RISKMEASURE_MEANDEVIATIONFROMTARGET
@ RISKMEASURE_MEANDEVIATIONFROMTARGET
Definition
ROL_RiskMeasureFactory.hpp:64
ROL::RISKMEASURE_MEANDEVIATION
@ RISKMEASURE_MEANDEVIATION
Definition
ROL_RiskMeasureFactory.hpp:65
ROL::RISKMEASURE_MEANVARIANCE
@ RISKMEASURE_MEANVARIANCE
Definition
ROL_RiskMeasureFactory.hpp:67
ROL::RISKMEASURE_SPECTRALRISK
@ RISKMEASURE_SPECTRALRISK
Definition
ROL_RiskMeasureFactory.hpp:55
ROL::RISKMEASURE_MEANSEMIDEVIATION
@ RISKMEASURE_MEANSEMIDEVIATION
Definition
ROL_RiskMeasureFactory.hpp:62
ROL::RISKMEASURE_LOGEXPONENTIAL
@ RISKMEASURE_LOGEXPONENTIAL
Definition
ROL_RiskMeasureFactory.hpp:71
ROL::RISKMEASURE_QUANTILERADIUS
@ RISKMEASURE_QUANTILERADIUS
Definition
ROL_RiskMeasureFactory.hpp:58
ROL::RISKMEASURE_CVAR
@ RISKMEASURE_CVAR
Definition
ROL_RiskMeasureFactory.hpp:51
ROL::RISKMEASURE_MEANVARIANCEFROMTARGET
@ RISKMEASURE_MEANVARIANCEFROMTARGET
Definition
ROL_RiskMeasureFactory.hpp:66
ROL::RISKMEASURE_HMCR
@ RISKMEASURE_HMCR
Definition
ROL_RiskMeasureFactory.hpp:59
ROL::RISKMEASURE_GENMOREAUYOSIDACVAR
@ RISKMEASURE_GENMOREAUYOSIDACVAR
Definition
ROL_RiskMeasureFactory.hpp:53
ROL::RISKMEASURE_LOGQUANTILE
@ RISKMEASURE_LOGQUANTILE
Definition
ROL_RiskMeasureFactory.hpp:69
ROL::RISKMEASURE_KLDIVERGENCE
@ RISKMEASURE_KLDIVERGENCE
Definition
ROL_RiskMeasureFactory.hpp:74
ROL::RISKMEASURE_CHEBYSHEVSPECTRAL
@ RISKMEASURE_CHEBYSHEVSPECTRAL
Definition
ROL_RiskMeasureFactory.hpp:57
ROL::RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
@ RISKMEASURE_MEANSEMIDEVIATIONFROMTARGET
Definition
ROL_RiskMeasureFactory.hpp:63
ROL::RISKMEASURE_MIXEDCVAR
@ RISKMEASURE_MIXEDCVAR
Definition
ROL_RiskMeasureFactory.hpp:54
ROL::RISKMEASURE_SMOOTHEDWORSTCASE
@ RISKMEASURE_SMOOTHEDWORSTCASE
Definition
ROL_RiskMeasureFactory.hpp:70
ROL::RISKMEASURE_SAFETYMARGIN
@ RISKMEASURE_SAFETYMARGIN
Definition
ROL_RiskMeasureFactory.hpp:72
ROL::RISKMEASURE_COHERENTENTROPICRISK
@ RISKMEASURE_COHERENTENTROPICRISK
Definition
ROL_RiskMeasureFactory.hpp:61
Generated by
1.17.0