1 #ifndef __TRADEMGEN_BOM_DEMANDSTREAM_HPP 2 #define __TRADEMGEN_BOM_DEMANDSTREAM_HPP 8 #include <stdair/bom/BomAbstract.hpp> 9 #include <stdair/bom/BookingRequestTypes.hpp> 10 #include <stdair/basic/RandomGeneration.hpp> 11 #include <stdair/basic/DemandGenerationMethod.hpp> 22 template <
typename BOM>
class FacBom;
32 friend class stdair::FacBomManager;
56 return _key.getOrigin();
61 return _key.getDestination();
66 return _key.getPreferredDepartureDate();
71 return _key.getPreferredCabin();
81 return _demandCharacteristics;
86 return _demandDistribution;
91 return _totalNumberOfRequestsToBeGenerated;
96 return _demandDistribution._meanNumberOfRequests;
101 return _demandDistribution._stdDevNumberOfRequests;
106 return _randomGenerationContext.getNumberOfRequestsGeneratedSoFar();
111 return _demandCharacteristics._changeFeeDisutility;
116 return _demandCharacteristics._nonRefundableDisutility;
132 _randomGenerationContext.setNumberOfRequestsGeneratedSoFar (iCount);
137 _demandDistribution = iDemandDistribution;
148 const stdair::ChangeFeesRatio_T& iChangeFeeProb,
149 const stdair::Disutility_T& iChangeFeeDisutility,
150 const stdair::NonRefundableRatio_T& iNonRefundableProb,
151 const stdair::Disutility_T& iNonRefundableDisutility,
153 const stdair::WTP_T& iMinWTP,
155 _demandCharacteristics =
157 iChannelProbMass, iTripTypeProbMass,
158 iStayDurationProbMass, iFrequentFlyerProbMass,
159 iChangeFeeProb, iChangeFeeDisutility,
160 iNonRefundableProb, iNonRefundableDisutility,
161 iPreferredDepartureTimeContinuousDistribution,
162 iMinWTP, iValueOfTimeContinuousDistribution);
167 _totalNumberOfRequestsToBeGenerated = iNbOfRequests;
172 _requestDateTimeRandomGenerator.init (iSeed);
177 _demandCharacteristicsRandomGenerator.init (iSeed);
185 _posProMass = iProbMass;
197 const stdair::ChangeFeesRatio_T&,
198 const stdair::Disutility_T&,
199 const stdair::NonRefundableRatio_T&,
200 const stdair::Disutility_T&,
202 const stdair::WTP_T&,
205 stdair::BaseGenerator_T& ioSharedGenerator,
206 const stdair::RandomSeed_T& iRequestDateTimeSeed,
207 const stdair::RandomSeed_T& iDemandCharacteristicsSeed,
215 _firstDateTimeRequest = iFirstDateTimeRequest;
223 _randomGenerationContext.incrementGeneratedRequestsCounter();
227 const bool stillHavingRequestsToBeGenerated (
const stdair::DemandGenerationMethod& iDemandGenerationMethod)
const;
230 const stdair::DateTime_T generateTimeOfRequestPoissonProcess();
233 const stdair::DateTime_T generateTimeOfRequestStatisticsOrder();
236 const stdair::AirportCode_T generatePOS();
239 const stdair::ChannelLabel_T generateChannel();
242 const stdair::TripType_T generateTripType();
245 const stdair::DayDuration_T generateStayDuration();
248 const stdair::FrequentFlyer_T generateFrequentFlyer();
251 const stdair::ChangeFees_T generateChangeFees();
254 const stdair::NonRefundable_T generateNonRefundable();
257 const stdair::Duration_T generatePreferredDepartureTime();
260 const stdair::WTP_T generateWTP (stdair::RandomGeneration&,
261 const stdair::Date_T&,
262 const stdair::DateTime_T&,
263 const stdair::DayDuration_T&);
266 const stdair::PriceValue_T generateValueOfTime();
278 stdair::BookingRequestPtr_T
279 generateNextRequest (stdair::RandomGeneration&,
280 const stdair::DemandGenerationMethod&);
283 void reset (stdair::BaseGenerator_T& ioSharedGenerator);
306 std::string toString()
const;
312 return _key.toString();
318 std::string display()
const;
319 const stdair::Duration_T convertFloatIntoDuration (
const stdair::FloatDuration_T);
338 void init (stdair::BaseGenerator_T& ioSharedGenerator);
395 bool _stillHavingRequestsToBeGenerated;
396 bool _firstDateTimeRequest;
397 stdair::FloatDuration_T _dateTimeLastRequest;
401 #endif // __TRADEMGEN_BOM_DEMANDSTREAM_HPP
const stdair::Count_T & getNumberOfRequestsGeneratedSoFar() const
void setNumberOfRequestsGeneratedSoFar(const stdair::Count_T &iCount)
Class modeling the distribution of a demand type.
const stdair::Date_T & getPreferredDepartureDate() const
const DemandCharacteristics & getDemandCharacteristics() const
BomAbstract *const getParent() const
const stdair::StdDevValue_T & getStdDevNumberOfRequests() const
const stdair::HolderMap_T & getHolderMap() const
void toStream(std::ostream &ioOut) const
Class modeling a demand stream.
void incrementGeneratedRequestsCounter()
ValueOfTimeCumulativeDistribution_T::ContinuousDistribution_T ValueOfTimeContinuousDistribution_T
const POSProbabilityMass_T & getPOSProbabilityMass() const
FrequentFlyerProbabilityMass_T::ProbabilityMassFunction_T FrequentFlyerProbabilityMassFunction_T
POSProbabilityMass_T _posProMass
void setPOSProbabilityMass(const POSProbabilityMass_T &iProbMass)
stdair::NbOfRequests_T _totalNumberOfRequestsToBeGenerated
const stdair::NbOfRequests_T & getTotalNumberOfRequestsToBeGenerated() const
const stdair::AirportCode_T & getDestination() const
Class modeling the characteristics of a demand type.
POSProbabilityMass_T::ProbabilityMassFunction_T POSProbabilityMassFunction_T
void setTotalNumberOfRequestsToBeGenerated(const stdair::NbOfRequests_T &iNbOfRequests)
const std::string describeKey() const
ChannelProbabilityMass_T::ProbabilityMassFunction_T ChannelProbabilityMassFunction_T
stdair::RandomGeneration _demandCharacteristicsRandomGenerator
const stdair::AirportCode_T & getOrigin() const
void setRequestDateTimeRandomGeneratorSeed(const stdair::RandomSeed_T &iSeed)
const stdair::NbOfRequests_T & getMeanNumberOfRequests() const
RandomGenerationContext _randomGenerationContext
const stdair::Disutility_T & getNonRefundableDisutility() const
stdair::RandomGeneration _requestDateTimeRandomGenerator
void setDemandCharacteristicsRandomGeneratorSeed(const stdair::RandomSeed_T &iSeed)
void fromStream(std::istream &ioIn)
DemandCharacteristics _demandCharacteristics
const DemandDistribution & getDemandDistribution() const
void setDemandDistribution(const DemandDistribution &iDemandDistribution)
PreferredDepartureTimeCumulativeDistribution_T::ContinuousDistribution_T PreferredDepartureTimeContinuousDistribution_T
TripTypeProbabilityMass_T::ProbabilityMassFunction_T TripTypeProbabilityMassFunction_T
StayDurationProbabilityMass_T::ProbabilityMassFunction_T StayDurationProbabilityMassFunction_T
void setDemandCharacteristics(const ArrivalPatternCumulativeDistribution_T &iArrivalPattern, const POSProbabilityMassFunction_T &iPOSProbMass, const ChannelProbabilityMassFunction_T &iChannelProbMass, const TripTypeProbabilityMassFunction_T &iTripTypeProbMass, const StayDurationProbabilityMassFunction_T &iStayDurationProbMass, const FrequentFlyerProbabilityMassFunction_T &iFrequentFlyerProbMass, const stdair::ChangeFeesRatio_T &iChangeFeeProb, const stdair::Disutility_T &iChangeFeeDisutility, const stdair::NonRefundableRatio_T &iNonRefundableProb, const stdair::Disutility_T &iNonRefundableDisutility, const PreferredDepartureTimeContinuousDistribution_T &iPreferredDepartureTimeContinuousDistribution, const stdair::WTP_T &iMinWTP, const ValueOfTimeContinuousDistribution_T &iValueOfTimeContinuousDistribution)
DemandDistribution _demandDistribution
stdair::HolderMap_T _holderMap
void setBoolFirstDateTimeRequest(const bool &iFirstDateTimeRequest)
const Key_T & getKey() const
const stdair::Disutility_T & getChangeFeeDisutility() const
const stdair::CabinCode_T & getPreferredCabin() const
ContinuousFloatDuration_T::ContinuousDistribution_T ArrivalPatternCumulativeDistribution_T