RMOL Logo  1.00.4
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 
24 namespace 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 
36 namespace RMOL {
37 
39  class RMOL_ServiceContext;
40 
44  class RMOL_Service {
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 
123  void setUpStudyStatManager();
124 
128  ~RMOL_Service();
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
stdair
Forward declarations.
Definition: DPOptimiser.hpp:11
RMOL::RMOL_Service::optimiseOnDUsingRMCooperation
void optimiseOnDUsingRMCooperation(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1990
RMOL::RMOL_Service::updateBidPrice
void updateBidPrice(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1563
RMOL::RMOL_Service::setOnDForecast
void setOnDForecast(const stdair::AirlineClassList &, const stdair::MeanValue_T &, const stdair::StdDevValue_T &, stdair::OnDDate &, const stdair::CabinCode_T &, stdair::BomRoot &)
Definition: RMOL_Service.cpp:994
RMOL::RMOL_Service::optimize
void optimize(const stdair::NbOfSamples_T iDraws=0)
RMOL::RMOL_Service::csvDisplay
std::string csvDisplay() const
RMOL::RMOL_Service::optimise
bool optimise(stdair::FlightDate &, const stdair::DateTime_T &, const stdair::UnconstrainingMethod &, const stdair::ForecastingMethod &, const stdair::PreOptimisationMethod &, const stdair::OptimisationMethod &, const stdair::PartnershipTechnique &)
Definition: RMOL_Service.cpp:630
RMOL::RMOL_Service::projectOnDDemandOnLegCabinsUsingDA
void projectOnDDemandOnLegCabinsUsingDA(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1692
RMOL::RMOL_Service::forecastOnD
void forecastOnD(const stdair::DateTime_T &iRMEventTime)
Definition: RMOL_Service.cpp:731
RMOL::RMOL_Service::optimiseOnDUsingAdvancedRMCooperation
void optimiseOnDUsingAdvancedRMCooperation(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:2050
RMOL::RMOL_Service::parseAndLoad
void parseAndLoad(const stdair::CabinCapacity_T &iCabinCapacity, const stdair::Filename_T &iDemandAndClassDataFile)
Definition: RMOL_Service.cpp:201
RMOL::RMOL_Service::setUpStudyStatManager
void setUpStudyStatManager()
RMOL::RMOL_Service::jsonExport
std::string jsonExport(const stdair::AirlineCode_T &, const stdair::FlightNumber_T &, const stdair::Date_T &iDepartureDate) const
RMOL::RMOL_Service
Interface for the RMOL Services.
Definition: RMOL_Service.hpp:44
OptimizationType.hpp
RMOL::RMOL_Service::getYieldFeatures
stdair::YieldFeatures * getYieldFeatures(const stdair::OnDDate &, const stdair::CabinCode_T &, stdair::BomRoot &)
Definition: RMOL_Service.cpp:806
RMOL::RMOL_Service::projectOnDDemandOnLegCabinsUsingYP
void projectOnDDemandOnLegCabinsUsingYP(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1415
RMOL::RMOL_Service::optimiseOnD
void optimiseOnD(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1514
RMOL::RMOL_Service::~RMOL_Service
~RMOL_Service()
Definition: RMOL_Service.cpp:124
RMOL::RMOL_Service::resetDemandInformation
void resetDemandInformation(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1234
RMOL::RMOL_Service::clonePersistentBom
void clonePersistentBom()
Definition: RMOL_Service.cpp:319
RMOL
Definition: BasConst.cpp:7
RMOL_Types.hpp
RMOL::RMOL_Service::buildSampleBom
void buildSampleBom()
Definition: RMOL_Service.cpp:260
RMOL::RMOL_Service::projectAggregatedDemandOnLegCabins
void projectAggregatedDemandOnLegCabins(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1310
RMOL::RMOL_Service::projectOnDDemandOnLegCabinsUsingDYP
void projectOnDDemandOnLegCabinsUsingDYP(const stdair::DateTime_T &)
Definition: RMOL_Service.cpp:1848
RMOL::RMOL_Service::retrieveDummySegmentCabin
const stdair::SegmentCabin & retrieveDummySegmentCabin(const bool isForFareFamilies=false)
Definition: RMOL_Service.cpp:608
RMOL::RMOL_ServiceContext
Inner class holding the context for the RMOL Service object.
Definition: RMOL_ServiceContext.hpp:29
RMOL::RMOL_Service::buildComplementaryLinks
void buildComplementaryLinks(stdair::BomRoot &)
Definition: RMOL_Service.cpp:357