1.00.17
C++ library of Revenue Management and Optimisation classes and functions
Toggle main menu visibility
Loading...
Searching...
No Matches
OptimizationType.cpp
Go to the documentation of this file.
1
// //////////////////////////////////////////////////////////////////////
2
// Import section
3
// //////////////////////////////////////////////////////////////////////
4
// STL
5
#include <cassert>
6
#include <sstream>
7
// StdAir
8
#include <stdair/stdair_exceptions.hpp>
9
// RMOL
10
#include <
rmol/OptimizationType.hpp
>
11
12
namespace
RMOL
{
13
14
// //////////////////////////////////////////////////////////////////////
21
const
std::string OptimizationType::_labels[LAST_VALUE] =
22
{
"OptimalByMC"
,
"OptimalByDP"
,
23
"HeuristicByEMSR"
,
"HeuristicByEMSRa"
,
"HeuristicByEMSRb"
,
24
"HeuristicByMCForQFF"
,
"HeuristicByEMSRbForQFF"
,
"HeuristicByMRTForQFF"
};
25
26
// //////////////////////////////////////////////////////////////////////
27
const
char
OptimizationType::
28
_typeLabels[LAST_VALUE] = {
'M'
,
'D'
,
'E'
,
'A'
,
'B'
,
'Q'
,
'C'
,
'R'
};
29
30
// //////////////////////////////////////////////////////////////////////
31
OptimizationType::OptimizationType
()
32
: _type (LAST_VALUE) {
33
assert (
false
);
34
}
35
36
// //////////////////////////////////////////////////////////////////////
37
OptimizationType::OptimizationType
(
const
OptimizationType
& iOptimizationType)
38
: _type (iOptimizationType._type) {
39
}
40
41
// //////////////////////////////////////////////////////////////////////
42
OptimizationType::
43
OptimizationType
(
const
EN_OptimizationType
& iOptimizationType)
44
: _type (iOptimizationType) {
45
}
46
47
// //////////////////////////////////////////////////////////////////////
48
OptimizationType::OptimizationType
(
const
char
iType) {
49
switch
(iType) {
50
case
'M'
: _type =
OPT_MC
;
break
;
51
case
'D'
: _type =
OPT_DP
;
break
;
52
case
'E'
: _type =
HEUR_EMSR
;
break
;
53
case
'A'
: _type =
HEUR_EMSRA
;
break
;
54
case
'B'
: _type =
HEUR_EMSRB
;
break
;
55
case
'Q'
: _type =
HEUR_MC_4_QFF
;
break
;
56
case
'C'
: _type =
HEUR_EMSRB_4_QFF
;
break
;
57
case
'R'
: _type =
HEUR_MRT_QFF
;
break
;
58
default
: _type =
LAST_VALUE
;
break
;
59
}
60
61
if
(_type ==
LAST_VALUE
) {
62
const
std::string& lLabels =
describeLabels
();
63
std::ostringstream oMessage;
64
oMessage <<
"The optimization type '"
<< iType
65
<<
"' is not known. Known optimization types: "
<< lLabels;
66
throw
stdair::CodeConversionException (oMessage.str());
67
}
68
}
69
70
// //////////////////////////////////////////////////////////////////////
71
OptimizationType::OptimizationType
(
const
std::string& iTypeStr) {
72
for
(
unsigned
short
idx = 0; idx !=
LAST_VALUE
; ++idx) {
73
if
(iTypeStr.compare(_labels[idx]) == 0) {
74
_type =
static_cast<
EN_OptimizationType
>
(idx);
75
break
;
76
}
else
{
77
_type =
LAST_VALUE
;
78
}
79
}
80
if
(_type ==
LAST_VALUE
) {
81
const
std::string& lLabels =
describeLabels
();
82
std::ostringstream oMessage;
83
oMessage <<
"The optimization type '"
<< iTypeStr
84
<<
"' is not known. Known optimization types: "
<< lLabels;
85
throw
stdair::CodeConversionException (oMessage.str());
86
}
87
}
88
89
// //////////////////////////////////////////////////////////////////////
90
const
std::string&
OptimizationType::
91
getLabel
(
const
EN_OptimizationType
& iType) {
92
return
_labels[iType];
93
}
94
95
// //////////////////////////////////////////////////////////////////////
96
char
OptimizationType::getTypeLabel
(
const
EN_OptimizationType
& iType) {
97
return
_typeLabels[iType];
98
}
99
100
// //////////////////////////////////////////////////////////////////////
101
std::string
OptimizationType::
102
getTypeLabelAsString
(
const
EN_OptimizationType
& iType) {
103
std::ostringstream oStr;
104
oStr << _typeLabels[iType];
105
return
oStr.str();
106
}
107
108
// //////////////////////////////////////////////////////////////////////
109
std::string
OptimizationType::describeLabels
() {
110
std::ostringstream ostr;
111
for
(
unsigned
short
idx = 0; idx !=
LAST_VALUE
; ++idx) {
112
if
(idx != 0) {
113
ostr <<
", "
;
114
}
115
ostr << _labels[idx];
116
}
117
return
ostr.str();
118
}
119
120
// //////////////////////////////////////////////////////////////////////
121
OptimizationType::EN_OptimizationType
OptimizationType::getType
()
const
{
122
return
_type;
123
}
124
125
// //////////////////////////////////////////////////////////////////////
126
std::string
OptimizationType::getTypeAsString
()
const
{
127
std::ostringstream oStr;
128
oStr << _typeLabels[_type];
129
return
oStr.str();
130
}
131
132
// //////////////////////////////////////////////////////////////////////
133
const
std::string
OptimizationType::describe
()
const
{
134
std::ostringstream ostr;
135
ostr << _labels[_type];
136
return
ostr.str();
137
}
138
139
// //////////////////////////////////////////////////////////////////////
140
bool
OptimizationType::operator==
(
const
EN_OptimizationType
& iType)
const
{
141
return
(_type == iType);
142
}
143
144
}
OptimizationType.hpp
RMOL
Definition
BasConst.cpp:7
RMOL::OptimizationType::EN_OptimizationType
EN_OptimizationType
Definition
OptimizationType.hpp:19
RMOL::OptimizationType::HEUR_MC_4_QFF
@ HEUR_MC_4_QFF
Definition
OptimizationType.hpp:25
RMOL::OptimizationType::HEUR_MRT_QFF
@ HEUR_MRT_QFF
Definition
OptimizationType.hpp:27
RMOL::OptimizationType::HEUR_EMSR
@ HEUR_EMSR
Definition
OptimizationType.hpp:22
RMOL::OptimizationType::HEUR_EMSRB_4_QFF
@ HEUR_EMSRB_4_QFF
Definition
OptimizationType.hpp:26
RMOL::OptimizationType::OPT_DP
@ OPT_DP
Definition
OptimizationType.hpp:21
RMOL::OptimizationType::OPT_MC
@ OPT_MC
Definition
OptimizationType.hpp:20
RMOL::OptimizationType::LAST_VALUE
@ LAST_VALUE
Definition
OptimizationType.hpp:28
RMOL::OptimizationType::HEUR_EMSRB
@ HEUR_EMSRB
Definition
OptimizationType.hpp:24
RMOL::OptimizationType::HEUR_EMSRA
@ HEUR_EMSRA
Definition
OptimizationType.hpp:23
RMOL::OptimizationType::getType
EN_OptimizationType getType() const
Definition
OptimizationType.cpp:121
RMOL::OptimizationType::operator==
bool operator==(const EN_OptimizationType &) const
Definition
OptimizationType.cpp:140
RMOL::OptimizationType::OptimizationType
OptimizationType(const EN_OptimizationType &)
Definition
OptimizationType.cpp:43
RMOL::OptimizationType::getLabel
static const std::string & getLabel(const EN_OptimizationType &)
Definition
OptimizationType.cpp:91
RMOL::OptimizationType::describe
const std::string describe() const
Definition
OptimizationType.cpp:133
RMOL::OptimizationType::getTypeAsString
std::string getTypeAsString() const
Definition
OptimizationType.cpp:126
RMOL::OptimizationType::getTypeLabel
static char getTypeLabel(const EN_OptimizationType &)
Definition
OptimizationType.cpp:96
RMOL::OptimizationType::getTypeLabelAsString
static std::string getTypeLabelAsString(const EN_OptimizationType &)
Definition
OptimizationType.cpp:102
RMOL::OptimizationType::describeLabels
static std::string describeLabels()
Definition
OptimizationType.cpp:109
Generated for RMOL by
1.17.0