Go to the documentation of this file.00001 #ifndef __RMOL_SVC_RMOL_SERVICE_HPP
00002 #define __RMOL_SVC_RMOL_SERVICE_HPP
00003
00004
00005
00006
00007
00008 #include <string>
00009
00010 #include <stdair/stdair_basic_types.hpp>
00011 #include <stdair/stdair_inventory_types.hpp>
00012 #include <stdair/stdair_service_types.hpp>
00013 #include <stdair/stdair_maths_types.hpp>
00014 #include <stdair/basic/ForecastingMethod.hpp>
00015 #include <stdair/basic/PartnershipTechnique.hpp>
00016
00017 #include <rmol/RMOL_Types.hpp>
00018
00020 namespace stdair {
00021 class FlightDate;
00022 struct BasLogParams;
00023 struct BasDBParams;
00024 class BomRoot;
00025 class AirlineClassList;
00026 class YieldFeatures;
00027 class Inventory;
00028 class OnDDate;
00029 }
00030
00031 namespace RMOL {
00032
00034 class RMOL_ServiceContext;
00035
00039 class RMOL_Service {
00040 public:
00041
00057 RMOL_Service (const stdair::BasLogParams&, const stdair::BasDBParams&);
00058
00070 RMOL_Service (const stdair::BasLogParams&);
00071
00087 RMOL_Service (stdair::STDAIR_ServicePtr_T);
00088
00112 void parseAndLoad (const stdair::CabinCapacity_T& iCabinCapacity,
00113 const stdair::Filename_T& iDemandAndClassDataFile);
00114
00118 void setUpStudyStatManager();
00119
00123 ~RMOL_Service();
00124
00125
00126 public:
00127
00133 void buildSampleBom();
00134
00138 void optimalOptimisationByMCIntegration (const int K);
00139
00143 void optimalOptimisationByDP();
00144
00148 void heuristicOptimisationByEmsr();
00149
00153 void heuristicOptimisationByEmsrA();
00154
00158 void heuristicOptimisationByEmsrB();
00159
00163 bool optimise (stdair::FlightDate&, const stdair::DateTime_T&,
00164 const stdair::ForecastingMethod&, const stdair::PartnershipTechnique&);
00165
00170
00171 void forecastOnD (const stdair::DateTime_T&);
00172
00173 stdair::YieldFeatures* getYieldFeatures(const stdair::OnDDate&, const stdair::CabinCode_T&,
00174 stdair::BomRoot&);
00175
00176 void forecastOnD (const stdair::YieldFeatures&, stdair::OnDDate&,
00177 const stdair::CabinCode_T&, const stdair::DTD_T&,
00178 stdair::BomRoot&);
00179
00180 void setOnDForecast (const stdair::AirlineClassList&, const stdair::MeanValue_T&,
00181 const stdair::StdDevValue_T&, stdair::OnDDate&, const stdair::CabinCode_T&,
00182 stdair::BomRoot&);
00183
00184
00185 void setOnDForecast (const stdair::AirlineCode_T&, const stdair::Date_T&, const stdair::AirportCode_T&,
00186 const stdair::AirportCode_T&, const stdair::CabinCode_T&, const stdair::ClassCode_T&,
00187 const stdair::MeanValue_T&, const stdair::StdDevValue_T&, const stdair::Yield_T&, stdair::BomRoot&);
00188
00189
00190 void setOnDForecast (const stdair::AirlineCodeList_T&, const stdair::AirlineCode_T&,const stdair::Date_T&,
00191 const stdair::AirportCode_T&, const stdair::AirportCode_T&, const stdair::CabinCode_T&,
00192 const stdair::ClassCodeList_T&, const stdair::MeanValue_T&, const stdair::StdDevValue_T&,
00193 const stdair::Yield_T&, stdair::BomRoot&);
00194
00195
00196 void resetDemandInformation (const stdair::DateTime_T&);
00197
00198 void resetDemandInformation (const stdair::DateTime_T&, const stdair::Inventory&);
00199
00200
00201
00202
00203 void projectAggregatedDemandOnLegCabins(const stdair::DateTime_T&);
00204
00205
00206 void projectOnDDemandOnLegCabinsUsingYP(const stdair::DateTime_T&);
00207
00208
00209 void projectOnDDemandOnLegCabinsUsingDA(const stdair::DateTime_T&);
00210
00211
00212 void projectOnDDemandOnLegCabinsUsingDYP(const stdair::DateTime_T&);
00213
00214 void projectOnDDemandOnLegCabinsUsingDYP(const stdair::DateTime_T&, const stdair::Inventory&);
00215
00217
00218 void optimiseOnD (const stdair::DateTime_T&);
00219
00220
00221 void optimiseOnDUsingRMCooperation (const stdair::DateTime_T&);
00222
00223
00224
00225 void optimiseOnDUsingAdvancedRMCooperation (const stdair::DateTime_T&);
00226
00227
00228 void updateBidPrice (const stdair::DateTime_T&);
00229 void updateBidPrice (const stdair::FlightDate&, stdair::BomRoot&);
00230
00231 public:
00232
00243 std::string jsonExport (const stdair::AirlineCode_T&,
00244 const stdair::FlightNumber_T&,
00245 const stdair::Date_T& iDepartureDate) const;
00246
00247
00248 public:
00249
00257 std::string csvDisplay() const;
00258
00259
00260 private:
00261
00265 RMOL_Service();
00266
00270 RMOL_Service (const RMOL_Service&);
00271
00281 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&,
00282 const stdair::BasDBParams&);
00283
00292 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&);
00293
00302 void addStdAirService (stdair::STDAIR_ServicePtr_T,
00303 const bool iOwnStdairService);
00304
00309 void initServiceContext();
00310
00317 void initRmolService();
00318
00322 void finalise();
00323
00324
00325 private:
00326
00330 RMOL_ServiceContext* _rmolServiceContext;
00331
00333 stdair::Date_T _previousForecastDate;
00334 };
00335 }
00336 #endif // __RMOL_SVC_RMOL_SERVICE_HPP