RMOL Logo  1.00.8
C++ library of Revenue Management and Optimisation classes and functions
RMOL_Service.hpp
Go to the documentation of this file.
1#ifndef __RMOL_SVC_RMOL_SERVICE_HPP
2#define __RMOL_SVC_RMOL_SERVICE_HPP
3
4// //////////////////////////////////////////////////////////////////////
5// Import section
6// //////////////////////////////////////////////////////////////////////
7// STL
8#include <string>
9// StdAir
10#include <stdair/stdair_basic_types.hpp>
11#include <stdair/stdair_inventory_types.hpp>
12#include <stdair/stdair_service_types.hpp>
13#include <stdair/stdair_maths_types.hpp>
14#include <stdair/basic/UnconstrainingMethod.hpp>
15#include <stdair/basic/ForecastingMethod.hpp>
16#include <stdair/basic/PreOptimisationMethod.hpp>
17#include <stdair/basic/OptimisationMethod.hpp>
18#include <stdair/basic/PartnershipTechnique.hpp>
19// RMOL
20#include <rmol/RMOL_Types.hpp>
22
24namespace stdair {
25 class FlightDate;
26 struct BasLogParams;
27 struct BasDBParams;
28 class BomRoot;
29 class AirlineClassList;
30 class YieldFeatures;
31 class Inventory;
32 class OnDDate;
33 class SegmentCabin;
34}
35
36namespace RMOL {
37
39 class RMOL_ServiceContext;
40
45 public:
46 // ////////// Constructors and destructors //////////
62 RMOL_Service (const stdair::BasLogParams&, const stdair::BasDBParams&);
63
75 RMOL_Service (const stdair::BasLogParams&);
76
92 RMOL_Service (stdair::STDAIR_ServicePtr_T);
93
117 void parseAndLoad (const stdair::CabinCapacity_T& iCabinCapacity,
118 const stdair::Filename_T& iDemandAndClassDataFile);
119
124
129
130
131 public:
132 // /////////////// Business Methods /////////////////
138 void buildSampleBom();
139
143 void clonePersistentBom();
144
149 void buildComplementaryLinks (stdair::BomRoot&);
150
154 template <unsigned int I>
155 void optimize (const stdair::NbOfSamples_T iDraws = 0);
156
164 const stdair::SegmentCabin&
165 retrieveDummySegmentCabin (const bool isForFareFamilies = false);
166
170 bool optimise (stdair::FlightDate&, const stdair::DateTime_T&,
171 const stdair::UnconstrainingMethod&,
172 const stdair::ForecastingMethod&,
173 const stdair::PreOptimisationMethod&,
174 const stdair::OptimisationMethod&,
175 const stdair::PartnershipTechnique&);
176
184 void forecastOnD (const stdair::DateTime_T& iRMEventTime);
185
189 stdair::YieldFeatures* getYieldFeatures (const stdair::OnDDate&,
190 const stdair::CabinCode_T&,
191 stdair::BomRoot&);
192
196 void forecastOnD (const stdair::YieldFeatures&, stdair::OnDDate&,
197 const stdair::CabinCode_T&, const stdair::DTD_T&,
198 stdair::BomRoot&);
199
203 void setOnDForecast (const stdair::AirlineClassList&,
204 const stdair::MeanValue_T&,
205 const stdair::StdDevValue_T&, stdair::OnDDate&,
206 const stdair::CabinCode_T&, stdair::BomRoot&);
207
211 void setOnDForecast (const stdair::AirlineCode_T&,
212 const stdair::Date_T& iDepartureDate,
213 const stdair::AirportCode_T& iOrigin,
214 const stdair::AirportCode_T& iDestination,
215 const stdair::CabinCode_T&, const stdair::ClassCode_T&,
216 const stdair::MeanValue_T&,
217 const stdair::StdDevValue_T&,
218 const stdair::Yield_T&, stdair::BomRoot&);
219
223 void setOnDForecast (const stdair::AirlineCodeList_T&,
224 const stdair::AirlineCode_T&,const stdair::Date_T&,
225 const stdair::AirportCode_T&,
226 const stdair::AirportCode_T&,
227 const stdair::CabinCode_T&,
228 const stdair::ClassCodeList_T&,
229 const stdair::MeanValue_T&,
230 const stdair::StdDevValue_T&,
231 const stdair::Yield_T&, stdair::BomRoot&);
232
236 void resetDemandInformation (const stdair::DateTime_T&);
237
241 void resetDemandInformation (const stdair::DateTime_T&,
242 const stdair::Inventory&);
243
251 void projectAggregatedDemandOnLegCabins(const stdair::DateTime_T&);
252
256 void projectOnDDemandOnLegCabinsUsingYP(const stdair::DateTime_T&);
257
261 void projectOnDDemandOnLegCabinsUsingDA(const stdair::DateTime_T&);
262
267 void projectOnDDemandOnLegCabinsUsingDYP (const stdair::DateTime_T&);
268
269 void projectOnDDemandOnLegCabinsUsingDYP (const stdair::DateTime_T&,
270 const stdair::Inventory&);
271
277 void optimiseOnD (const stdair::DateTime_T&);
278
282 void optimiseOnDUsingRMCooperation (const stdair::DateTime_T&);
283
289 void optimiseOnDUsingAdvancedRMCooperation (const stdair::DateTime_T&);
290
294 void updateBidPrice (const stdair::DateTime_T&);
295 void updateBidPrice (const stdair::FlightDate&, stdair::BomRoot&);
296
297 public:
298 // //////////////// Export support methods /////////////////
309 std::string jsonExport (const stdair::AirlineCode_T&,
310 const stdair::FlightNumber_T&,
311 const stdair::Date_T& iDepartureDate) const;
312
313
314 public:
315 // //////////////// Display support methods /////////////////
323 std::string csvDisplay() const;
324
325
326 private:
327 // /////// Construction and Destruction helper methods ///////
331 RMOL_Service();
332
336 RMOL_Service (const RMOL_Service&);
337
347 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&,
348 const stdair::BasDBParams&);
349
358 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&);
359
368 void addStdAirService (stdair::STDAIR_ServicePtr_T,
369 const bool iOwnStdairService);
370
375 void initServiceContext();
376
383 void initRmolService();
384
388 void finalise();
389
390
391 private:
392 // /////////////// Business Methods /////////////////
396 void optimalOptimisationByMCIntegration (const stdair::NbOfSamples_T&);
397
401 void optimalOptimisationByDP();
402
406 void heuristicOptimisationByEmsr();
407
411 void heuristicOptimisationByEmsrA();
412
416 void heuristicOptimisationByEmsrB();
417
418
419 private:
420 // ////////// Service Context //////////
424 RMOL_ServiceContext* _rmolServiceContext;
425
427 stdair::Date_T _previousForecastDate;
428 };
429}
430#endif // __RMOL_SVC_RMOL_SERVICE_HPP
Definition: BasConst.cpp:7
Forward declarations.
Definition: DPOptimiser.hpp:11
Interface for the RMOL Services.
void optimiseOnDUsingAdvancedRMCooperation(const stdair::DateTime_T &)
stdair::YieldFeatures * getYieldFeatures(const stdair::OnDDate &, const stdair::CabinCode_T &, stdair::BomRoot &)
bool optimise(stdair::FlightDate &, const stdair::DateTime_T &, const stdair::UnconstrainingMethod &, const stdair::ForecastingMethod &, const stdair::PreOptimisationMethod &, const stdair::OptimisationMethod &, const stdair::PartnershipTechnique &)
void setUpStudyStatManager()
const stdair::SegmentCabin & retrieveDummySegmentCabin(const bool isForFareFamilies=false)
std::string jsonExport(const stdair::AirlineCode_T &, const stdair::FlightNumber_T &, const stdair::Date_T &iDepartureDate) const
void updateBidPrice(const stdair::DateTime_T &)
void parseAndLoad(const stdair::CabinCapacity_T &iCabinCapacity, const stdair::Filename_T &iDemandAndClassDataFile)
void optimiseOnD(const stdair::DateTime_T &)
std::string csvDisplay() const
void projectOnDDemandOnLegCabinsUsingDA(const stdair::DateTime_T &)
void resetDemandInformation(const stdair::DateTime_T &)
void buildComplementaryLinks(stdair::BomRoot &)
void projectAggregatedDemandOnLegCabins(const stdair::DateTime_T &)
void projectOnDDemandOnLegCabinsUsingYP(const stdair::DateTime_T &)
void optimiseOnDUsingRMCooperation(const stdair::DateTime_T &)
void projectOnDDemandOnLegCabinsUsingDYP(const stdair::DateTime_T &)
void setOnDForecast(const stdair::AirlineClassList &, const stdair::MeanValue_T &, const stdair::StdDevValue_T &, stdair::OnDDate &, const stdair::CabinCode_T &, stdair::BomRoot &)
void forecastOnD(const stdair::DateTime_T &iRMEventTime)
void optimize(const stdair::NbOfSamples_T iDraws=0)
Inner class holding the context for the RMOL Service object.