ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
randvarfunctional
regret
ROL_RegretMeasureFactory.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_REGRETMEASUREFACTORY_HPP
11
#define ROL_REGRETMEASUREFACTORY_HPP
12
13
#include "ROL_ParameterList.hpp"
14
#include "
ROL_Types.hpp
"
15
#include "
ROL_ExpectationQuadRegret.hpp
"
16
#include "
ROL_QuantileQuadrangle.hpp
"
17
#include "
ROL_MoreauYosidaCVaR.hpp
"
18
#include "
ROL_GenMoreauYosidaCVaR.hpp
"
19
#include "
ROL_MeanVarianceQuadrangle.hpp
"
20
#include "
ROL_TruncatedMeanQuadrangle.hpp
"
21
#include "
ROL_LogExponentialQuadrangle.hpp
"
22
#include "
ROL_LogQuantileQuadrangle.hpp
"
23
#include "
ROL_SmoothedWorstCaseQuadrangle.hpp
"
24
25
namespace
ROL
{
26
27
enum
ERegretMeasure
{
28
REGRETMEASURE_MEANABSOLUTELOSS
= 0,
29
REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
,
30
REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
,
31
REGRETMEASURE_EXPONENTIAL
,
32
REGRETMEASURE_MEANL2
,
33
REGRETMEASURE_TRUNCATEDMEAN
,
34
REGRETMEASURE_LOGQUANTILE
,
35
REGRETMEASURE_SMOOTHEDWORSTCASE
,
36
REGRETMEASURE_LAST
37
};
38
39
inline
std::string
ERegretMeasureToString
(
ERegretMeasure
ed) {
40
std::string retString;
41
switch
(ed) {
42
case
REGRETMEASURE_MEANABSOLUTELOSS
:
43
retString =
"Mean Absolute Loss"
;
break
;
44
case
REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
:
45
retString =
"Moreau-Yosida Mean Absolute Loss"
;
break
;
46
case
REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
:
47
retString =
"Generalized Moreau-Yosida Mean Absolute Loss"
;
break
;
48
case
REGRETMEASURE_EXPONENTIAL
:
49
retString =
"Exponential"
;
break
;
50
case
REGRETMEASURE_MEANL2
:
51
retString =
"Mean L2"
;
break
;
52
case
REGRETMEASURE_TRUNCATEDMEAN
:
53
retString =
"Truncated Mean"
;
break
;
54
case
REGRETMEASURE_LOGQUANTILE
:
55
retString =
"Log Quantile"
;
break
;
56
case
REGRETMEASURE_SMOOTHEDWORSTCASE
:
57
retString =
"Smoothed Worst Case"
;
break
;
58
case
REGRETMEASURE_LAST
:
59
retString =
"Last Type (Dummy)"
;
break
;
60
default
:
61
retString =
"INVALID ERegretMeasure"
;
break
;
62
}
63
return
retString;
64
}
65
66
inline
int
isValidRegretMeasure
(
ERegretMeasure
ed) {
67
return
( (ed ==
REGRETMEASURE_MEANABSOLUTELOSS
) ||
68
(ed ==
REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
) ||
69
(ed ==
REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
) ||
70
(ed ==
REGRETMEASURE_EXPONENTIAL
) ||
71
(ed ==
REGRETMEASURE_MEANL2
) ||
72
(ed ==
REGRETMEASURE_TRUNCATEDMEAN
) ||
73
(ed ==
REGRETMEASURE_LOGQUANTILE
) ||
74
(ed ==
REGRETMEASURE_SMOOTHEDWORSTCASE
) );
75
}
76
77
inline
ERegretMeasure
&
operator++
(
ERegretMeasure
&type) {
78
return
type =
static_cast<
ERegretMeasure
>
(type+1);
79
}
80
81
inline
ERegretMeasure
operator++
(
ERegretMeasure
&type,
int
) {
82
ERegretMeasure
oldval = type;
83
++type;
84
return
oldval;
85
}
86
87
inline
ERegretMeasure
&
operator--
(
ERegretMeasure
&type) {
88
return
type =
static_cast<
ERegretMeasure
>
(type-1);
89
}
90
91
inline
ERegretMeasure
operator--
(
ERegretMeasure
&type,
int
) {
92
ERegretMeasure
oldval = type;
93
--type;
94
return
oldval;
95
}
96
97
inline
ERegretMeasure
StringToERegretMeasure
(std::string s) {
98
s =
removeStringFormat
(s);
99
for
(
ERegretMeasure
tr =
REGRETMEASURE_MEANABSOLUTELOSS
; tr <
REGRETMEASURE_LAST
; tr++ ) {
100
if
( !s.compare(
removeStringFormat
(
ERegretMeasureToString
(tr))) ) {
101
return
tr;
102
}
103
}
104
return
REGRETMEASURE_LAST
;
105
}
106
107
template
<
class
Real>
108
inline
Ptr<RandVarFunctional<Real>>
RegretMeasureFactory
(ParameterList &parlist) {
109
std::string regret = parlist.sublist(
"SOL"
).sublist(
"Regret Measure"
).get(
"Name"
,
"Mean Absolute Loss"
);
110
ERegretMeasure
ed =
StringToERegretMeasure
(regret);
111
switch
(ed) {
112
case
REGRETMEASURE_MEANABSOLUTELOSS
:
113
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<QuantileQuadrangle<Real>>(parlist));
114
case
REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
:
115
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<MoreauYosidaCVaR<Real>>(parlist));
116
case
REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
:
117
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<GenMoreauYosidaCVaR<Real>>(parlist));
118
case
REGRETMEASURE_EXPONENTIAL
:
119
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<LogExponentialQuadrangle<Real>>(parlist));
120
case
REGRETMEASURE_MEANL2
:
121
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<MeanVarianceQuadrangle<Real>>(parlist));
122
case
REGRETMEASURE_TRUNCATEDMEAN
:
123
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<TruncatedMeanQuadrangle<Real>>(parlist));
124
case
REGRETMEASURE_LOGQUANTILE
:
125
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<LogQuantileQuadrangle<Real>>(parlist));
126
case
REGRETMEASURE_SMOOTHEDWORSTCASE
:
127
return
makePtr<ExpectationQuadRegret<Real>>(makePtr<SmoothedWorstCaseQuadrangle<Real>>(parlist));
128
default
:
129
ROL_TEST_FOR_EXCEPTION(
true
,std::invalid_argument,
130
"Invalid regret measure type "
<< regret <<
"!"
);
131
}
132
}
133
}
134
#endif
ROL_ExpectationQuadRegret.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::removeStringFormat
std::string removeStringFormat(std::string s)
Definition
ROL_Types.hpp:215
ROL::isValidRegretMeasure
int isValidRegretMeasure(ERegretMeasure ed)
Definition
ROL_RegretMeasureFactory.hpp:66
ROL::operator--
EPolyProjAlgo & operator--(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:81
ROL::operator++
EPolyProjAlgo & operator++(EPolyProjAlgo &type)
Definition
ROL_PolyhedralProjectionFactory.hpp:71
ROL::RegretMeasureFactory
Ptr< RandVarFunctional< Real > > RegretMeasureFactory(ParameterList &parlist)
Definition
ROL_RegretMeasureFactory.hpp:108
ROL::ERegretMeasure
ERegretMeasure
Definition
ROL_RegretMeasureFactory.hpp:27
ROL::REGRETMEASURE_LOGQUANTILE
@ REGRETMEASURE_LOGQUANTILE
Definition
ROL_RegretMeasureFactory.hpp:34
ROL::REGRETMEASURE_EXPONENTIAL
@ REGRETMEASURE_EXPONENTIAL
Definition
ROL_RegretMeasureFactory.hpp:31
ROL::REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
@ REGRETMEASURE_GENMOREAUYOSIDAMEANABSOLUTELOSS
Definition
ROL_RegretMeasureFactory.hpp:30
ROL::REGRETMEASURE_MEANABSOLUTELOSS
@ REGRETMEASURE_MEANABSOLUTELOSS
Definition
ROL_RegretMeasureFactory.hpp:28
ROL::REGRETMEASURE_SMOOTHEDWORSTCASE
@ REGRETMEASURE_SMOOTHEDWORSTCASE
Definition
ROL_RegretMeasureFactory.hpp:35
ROL::REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
@ REGRETMEASURE_MOREAUYOSIDAMEANABSOLUTELOSS
Definition
ROL_RegretMeasureFactory.hpp:29
ROL::REGRETMEASURE_TRUNCATEDMEAN
@ REGRETMEASURE_TRUNCATEDMEAN
Definition
ROL_RegretMeasureFactory.hpp:33
ROL::REGRETMEASURE_LAST
@ REGRETMEASURE_LAST
Definition
ROL_RegretMeasureFactory.hpp:36
ROL::REGRETMEASURE_MEANL2
@ REGRETMEASURE_MEANL2
Definition
ROL_RegretMeasureFactory.hpp:32
ROL::ERegretMeasureToString
std::string ERegretMeasureToString(ERegretMeasure ed)
Definition
ROL_RegretMeasureFactory.hpp:39
ROL::StringToERegretMeasure
ERegretMeasure StringToERegretMeasure(std::string s)
Definition
ROL_RegretMeasureFactory.hpp:97
Generated by
1.17.0