TraDemGen Logo  0.2.2
C++ Simulated Travel Demand Generation Library
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
DemandStream.hpp
Go to the documentation of this file.
1 #ifndef __TRADEMGEN_BOM_DEMANDSTREAM_HPP
2 #define __TRADEMGEN_BOM_DEMANDSTREAM_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // StdAir
8 #include <stdair/bom/BomAbstract.hpp>
9 #include <stdair/bom/BookingRequestTypes.hpp>
10 #include <stdair/basic/RandomGeneration.hpp>
11 #include <stdair/basic/DemandGenerationMethod.hpp>
12 // TraDemGen
18 
20 namespace stdair {
21  class FacBomManager;
22  template <typename BOM> class FacBom;
23 }
24 
25 namespace TRADEMGEN {
26 
30  class DemandStream : public stdair::BomAbstract {
31  template <typename BOM> friend class stdair::FacBom;
32  friend class stdair::FacBomManager;
33 
34  public:
35  // ////////// Type definitions ////////////
40 
41 
42  public:
43  // ///////////// Getters ///////////
45  const Key_T& getKey() const {
46  return _key;
47  }
48 
50  BomAbstract* const getParent() const {
51  return _parent;
52  }
53 
55  const stdair::AirportCode_T& getOrigin() const {
56  return _key.getOrigin();
57  }
58 
60  const stdair::AirportCode_T& getDestination() const {
61  return _key.getDestination();
62  }
63 
65  const stdair::Date_T& getPreferredDepartureDate() const {
67  }
68 
70  const stdair::CabinCode_T& getPreferredCabin() const {
71  return _key.getPreferredCabin();
72  }
73 
75  const stdair::HolderMap_T& getHolderMap() const {
76  return _holderMap;
77  }
78 
82  }
83 
86  return _demandDistribution;
87  }
88 
90  const stdair::NbOfRequests_T& getTotalNumberOfRequestsToBeGenerated() const{
92  }
93 
95  const stdair::NbOfRequests_T& getMeanNumberOfRequests() const {
97  }
98 
100  const stdair::StdDevValue_T& getStdDevNumberOfRequests() const {
102  }
103 
105  const stdair::Count_T& getNumberOfRequestsGeneratedSoFar() const {
107  }
108 
114  return _posProMass;
115  }
116 
117 
118  public:
119  // //////////////// Setters //////////////////
121  void setNumberOfRequestsGeneratedSoFar (const stdair:: Count_T& iCount) {
123  }
124 
126  void setDemandDistribution (const DemandDistribution& iDemandDistribution) {
127  _demandDistribution = iDemandDistribution;
128  }
129 
131  void
133  const POSProbabilityMassFunction_T& iPOSProbMass,
134  const ChannelProbabilityMassFunction_T& iChannelProbMass,
135  const TripTypeProbabilityMassFunction_T& iTripTypeProbMass,
136  const StayDurationProbabilityMassFunction_T& iStayDurationProbMass,
137  const FrequentFlyerProbabilityMassFunction_T& iFrequentFlyerProbMass,
138  const PreferredDepartureTimeContinuousDistribution_T& iPreferredDepartureTimeContinuousDistribution,
139  const stdair::WTP_T& iMinWTP,
140  const ValueOfTimeContinuousDistribution_T& iValueOfTimeContinuousDistribution) {
142  DemandCharacteristics (iArrivalPattern, iPOSProbMass,
143  iChannelProbMass, iTripTypeProbMass,
144  iStayDurationProbMass, iFrequentFlyerProbMass,
145  iPreferredDepartureTimeContinuousDistribution,
146  iMinWTP, iValueOfTimeContinuousDistribution);
147  }
148 
150  void setTotalNumberOfRequestsToBeGenerated (const stdair::NbOfRequests_T& iNbOfRequests) {
151  _totalNumberOfRequestsToBeGenerated = iNbOfRequests;
152  }
153 
155  void setRequestDateTimeRandomGeneratorSeed (const stdair::RandomSeed_T& iSeed) {
156  _requestDateTimeRandomGenerator.init (iSeed);
157  }
158 
160  void setDemandCharacteristicsRandomGeneratorSeed (const stdair::RandomSeed_T& iSeed) {
162  }
163 
168  void setPOSProbabilityMass (const POSProbabilityMass_T& iProbMass) {
169  _posProMass = iProbMass;
170  }
171 
182  const stdair::WTP_T&,
184  const DemandDistribution&,
185  stdair::BaseGenerator_T& ioSharedGenerator,
186  const stdair::RandomSeed_T& iRequestDateTimeSeed,
187  const stdair::RandomSeed_T& iDemandCharacteristicsSeed,
188  const POSProbabilityMass_T&);
189 
194  void setBoolFirstDateTimeRequest (const bool& iFirstDateTimeRequest) {
195  _firstDateTimeRequest = iFirstDateTimeRequest;
196  }
197 
198 
199  public:
200  // /////////////////// Business Methods ///////////////////
204  }
205 
207  const bool stillHavingRequestsToBeGenerated (const stdair::DemandGenerationMethod& iDemandGenerationMethod) const;
208 
210  const stdair::DateTime_T generateTimeOfRequestPoissonProcess();
211 
213  const stdair::DateTime_T generateTimeOfRequestStatisticsOrder();
214 
216  const stdair::AirportCode_T generatePOS();
217 
219  const stdair::ChannelLabel_T generateChannel();
220 
222  const stdair::TripType_T generateTripType();
223 
225  const stdair::DayDuration_T generateStayDuration();
226 
228  const stdair::FrequentFlyer_T generateFrequentFlyer();
229 
231  const stdair::Duration_T generatePreferredDepartureTime();
232 
234  const stdair::WTP_T generateWTP (stdair::RandomGeneration&,
235  const stdair::Date_T&,
236  const stdair::DateTime_T&,
237  const stdair::DayDuration_T&);
238 
240  const stdair::PriceValue_T generateValueOfTime();
241 
252  stdair::BookingRequestPtr_T
253  generateNextRequest (stdair::RandomGeneration&,
254  const stdair::DemandGenerationMethod&);
255 
257  void reset (stdair::BaseGenerator_T& ioSharedGenerator);
258 
259 
260  public:
261  // ////////////////// Display support methods //////////////
266  void toStream (std::ostream& ioOut) const {
267  ioOut << toString();
268  }
269 
274  void fromStream (std::istream& ioIn) {
275  }
276 
280  std::string toString() const;
281 
285  const std::string describeKey() const {
286  return _key.toString();
287  }
288 
292  std::string display() const;
293 
294  const stdair::Duration_T convertFloatIntoDuration (const stdair::FloatDuration_T);
295 
296  protected:
297  // ////////// Constructors and destructors /////////
301  DemandStream (const Key_T&);
305  virtual ~DemandStream();
306 
307  private:
309  DemandStream();
311  DemandStream (const DemandStream&);
313  void init (stdair::BaseGenerator_T& ioSharedGenerator);
314 
315 
316  protected:
317  // ////////// Attributes //////////
322 
327 
331  stdair::HolderMap_T _holderMap;
332 
337 
342 
346  stdair::NbOfRequests_T _totalNumberOfRequestsToBeGenerated;
347 
352 
356  stdair::RandomGeneration _requestDateTimeRandomGenerator;
357 
361  stdair::RandomGeneration _demandCharacteristicsRandomGenerator;
362 
368 
369  private:
370  bool _stillHavingRequestsToBeGenerated;
371 
372  bool _firstDateTimeRequest;
373 
374  stdair::FloatDuration_T _dateTimeLastRequest;
375  };
376 
377 }
378 #endif // __TRADEMGEN_BOM_DEMANDSTREAM_HPP