TraDemGen Logo  0.2.2
C++ Simulated Travel Demand Generation Library
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines
DemandManager.hpp
Go to the documentation of this file.
00001 #ifndef __TRADEMGEN_CMD_DEMANDMANAGER_HPP
00002 #define __TRADEMGEN_CMD_DEMANDMANAGER_HPP
00003 
00004 // //////////////////////////////////////////////////////////////////////
00005 // Import section
00006 // //////////////////////////////////////////////////////////////////////
00007 // StdAir
00008 #include <stdair/stdair_basic_types.hpp>
00009 #include <stdair/basic/RandomGeneration.hpp>
00010 #include <stdair/basic/DemandGenerationMethod.hpp>
00011 #include <stdair/bom/BookingRequestTypes.hpp>
00012 #include <stdair/command/CmdAbstract.hpp>
00013 // TraDemGen
00014 #include <trademgen/TRADEMGEN_Types.hpp>
00015 #include <trademgen/basic/DemandCharacteristicsTypes.hpp>
00016 #include <trademgen/bom/DemandStreamKey.hpp>
00017 
00018 // Forward declarations
00019 namespace stdair {
00020   class EventQueue;
00021   struct ProgressStatusSet;
00022   struct TravelSolutionStruct;
00023 }
00024 
00025 namespace TRADEMGEN {
00026 
00027   // Forward declarations
00028   struct DemandDistribution;
00029   struct DemandStruct;
00030   class DemandStream;
00031   namespace DemandParserHelper {
00032     struct doEndDemand;
00033   }
00034 
00038   class DemandManager : public stdair::CmdAbstract {
00039     friend struct DemandParserHelper::doEndDemand;
00040     friend class TRADEMGEN_Service;
00041     
00042   private:
00043     // //////// Business methodes //////////
00123     static void buildSampleBomStd (stdair::EventQueue&, stdair::RandomGeneration&,
00124                                 const POSProbabilityMass_T&);
00125 
00126     // Demand sample bom for partnerships study.
00127     static void buildSampleBom (stdair::EventQueue&, stdair::RandomGeneration&,
00128                                 const POSProbabilityMass_T&);
00129 
00137     static void createDemandCharacteristics (stdair::EventQueue&,
00138                                              stdair::RandomGeneration&,
00139                                              const POSProbabilityMass_T&,
00140                                              const DemandStruct&);
00141 
00149     static stdair::RandomSeed_T generateSeed (stdair::RandomGeneration&);
00150 
00172     static DemandStream&
00173     createDemandStream (stdair::EventQueue&,
00174                         const DemandStreamKey&,
00175                         const ArrivalPatternCumulativeDistribution_T&,
00176                         const POSProbabilityMassFunction_T&,
00177                         const ChannelProbabilityMassFunction_T&,
00178                         const TripTypeProbabilityMassFunction_T&,
00179                         const StayDurationProbabilityMassFunction_T&,
00180                         const FrequentFlyerProbabilityMassFunction_T&,
00181                         const PreferredDepartureTimeContinuousDistribution_T&,
00182                         const stdair::WTP_T&,
00183                         const ValueOfTimeContinuousDistribution_T&,
00184                         const DemandDistribution&, stdair::BaseGenerator_T&,
00185                         const stdair::RandomSeed_T&,
00186                         const stdair::RandomSeed_T&,
00187                         const POSProbabilityMass_T&);
00188 
00205     static const bool
00206     stillHavingRequestsToBeGenerated (const stdair::EventQueue&,
00207                                       const stdair::DemandStreamKeyStr_T&,
00208                                       stdair::ProgressStatusSet&,
00209                                       const stdair::DemandGenerationMethod&);
00210 
00225     static stdair::Count_T generateFirstRequests (stdair::EventQueue&,
00226                                                   stdair::RandomGeneration&,
00227                                                   const stdair::DemandGenerationMethod&);
00228 
00249     static stdair::BookingRequestPtr_T
00250     generateNextRequest (stdair::EventQueue&, stdair::RandomGeneration&,
00251                          const stdair::DemandStreamKeyStr_T&,
00252                          const stdair::DemandGenerationMethod&);
00253 
00262     static void reset (stdair::EventQueue&, stdair::BaseGenerator_T&);
00263 
00267     static bool generateCancellation (stdair::EventQueue&,
00268                                       stdair::RandomGeneration&,
00269                                       const stdair::TravelSolutionStruct&,
00270                                       const stdair::PartySize_T&,
00271                                       const stdair::DateTime_T&,
00272                                       const stdair::Date_T&);
00273   };
00274 
00275 }
00276 #endif // __TRADEMGEN_CMD_DEMANDMANAGER_HPP