TraDemGen Logo  0.2.2
C++ Simulated Travel Demand Generation Library
DemandCharacteristics.cpp
Go to the documentation of this file.
00001 // //////////////////////////////////////////////////////////////////////
00002 // Import section
00003 // //////////////////////////////////////////////////////////////////////
00004 // STL
00005 #include <cassert>
00006 #include <sstream>
00007 // StdAir
00008 #include <stdair/stdair_basic_types.hpp>
00009 // TraDemGen
00010 #include <trademgen/basic/BasConst_DemandGeneration.hpp>
00011 #include <trademgen/basic/DemandCharacteristics.hpp>
00012 
00013 namespace TRADEMGEN {
00014   
00015   // /////////////////////////////////////////////////////
00016   DemandCharacteristics::DemandCharacteristics()
00017     : _arrivalPattern (ArrivalPatternCumulativeDistribution_T()),
00018       _posProbabilityMass (POSProbabilityMassFunction_T()),
00019       _channelProbabilityMass (ChannelProbabilityMassFunction_T()),
00020       _tripTypeProbabilityMass (TripTypeProbabilityMassFunction_T()),
00021       _stayDurationProbabilityMass (StayDurationProbabilityMassFunction_T()),
00022       _frequentFlyerProbabilityMass (FrequentFlyerProbabilityMassFunction_T()),
00023       _preferredDepartureTimeCumulativeDistribution (PreferredDepartureTimeContinuousDistribution_T()),
00024       _minWTP (stdair::WTP_T()), _frat5Pattern (DEFAULT_FRAT5_PATTERN),
00025       _valueOfTimeCumulativeDistribution (ValueOfTimeContinuousDistribution_T()) {
00026   }
00027 
00028   // /////////////////////////////////////////////////////
00029   DemandCharacteristics::
00030   DemandCharacteristics (const DemandCharacteristics& iDC)
00031     : _arrivalPattern (iDC._arrivalPattern),
00032       _posProbabilityMass (iDC._posProbabilityMass),
00033       _channelProbabilityMass (iDC._channelProbabilityMass),
00034       _tripTypeProbabilityMass (iDC._tripTypeProbabilityMass),
00035       _stayDurationProbabilityMass (iDC._stayDurationProbabilityMass),
00036       _frequentFlyerProbabilityMass (iDC._frequentFlyerProbabilityMass),
00037       _preferredDepartureTimeCumulativeDistribution (iDC._preferredDepartureTimeCumulativeDistribution),
00038       _minWTP (iDC._minWTP), _frat5Pattern (iDC._frat5Pattern),
00039       _valueOfTimeCumulativeDistribution (iDC._valueOfTimeCumulativeDistribution) {
00040   }
00041 
00042   // /////////////////////////////////////////////////////
00043   DemandCharacteristics::
00044   DemandCharacteristics (const ArrivalPatternCumulativeDistribution_T& iArrivalPattern,
00045                          const POSProbabilityMassFunction_T& iPOSProbMass,
00046                          const ChannelProbabilityMassFunction_T& iChannelProbMass,
00047                          const TripTypeProbabilityMassFunction_T& iTripTypeProbMass,
00048                          const StayDurationProbabilityMassFunction_T& iStayDurationProbMass,
00049                          const FrequentFlyerProbabilityMassFunction_T& iFrequentFlyerProbMass,
00050                          const PreferredDepartureTimeContinuousDistribution_T& iPreferredDepartureTimeContinuousDistribution,
00051                          const stdair::WTP_T& iMinWTP,
00052                          const ValueOfTimeContinuousDistribution_T& iValueOfTimeContinuousDistribution)
00053     : _arrivalPattern (iArrivalPattern),
00054       _posProbabilityMass (iPOSProbMass),
00055       _channelProbabilityMass (iChannelProbMass),
00056       _tripTypeProbabilityMass (iTripTypeProbMass),
00057       _stayDurationProbabilityMass (iStayDurationProbMass),
00058       _frequentFlyerProbabilityMass (iFrequentFlyerProbMass),
00059       _preferredDepartureTimeCumulativeDistribution (iPreferredDepartureTimeContinuousDistribution),
00060       _minWTP (iMinWTP), _frat5Pattern (DEFAULT_FRAT5_PATTERN),
00061       _valueOfTimeCumulativeDistribution (iValueOfTimeContinuousDistribution) {
00062   }
00063     
00064   // /////////////////////////////////////////////////////
00065   DemandCharacteristics::~DemandCharacteristics() {
00066   }
00067   
00068   // /////////////////////////////////////////////////////
00069   const stdair::AirportCode_T& DemandCharacteristics::
00070   getPOSValue (const stdair::Probability_T& iCumulativeProbability) const {
00071     return _posProbabilityMass.getValue (iCumulativeProbability);
00072   }
00073 
00074   // /////////////////////////////////////////////////////
00075   bool DemandCharacteristics::
00076   checkPOSValue (const stdair::AirportCode_T& iPOS) const {
00077     return _posProbabilityMass.checkValue (iPOS);
00078   }
00079 
00080   // /////////////////////////////////////////////////////
00081   const std::string DemandCharacteristics::describe() const {
00082     std::ostringstream oStr;
00083 
00084     //
00085     oStr << "****************** Demand characteristics ******************"
00086          << std::endl;
00087     oStr << "Arrival pattern (days from departure, proportion): ";
00088     oStr << _arrivalPattern.displayCumulativeDistribution() << std::endl;
00089     oStr << "POS probability mass (POS, propotion): ";
00090     oStr << _posProbabilityMass.displayProbabilityMass()
00091          << std::endl;
00092     oStr << "Channel probability mass (channel, propotion): ";
00093     oStr << _channelProbabilityMass.displayProbabilityMass()
00094          << std::endl;
00095     oStr << "Trip type probability mass (trip type, propotion): ";
00096     oStr << _tripTypeProbabilityMass.displayProbabilityMass()
00097          << std::endl;
00098     oStr << "Stay duration probability mass (number of days, propotion): ";
00099     oStr << _stayDurationProbabilityMass.displayProbabilityMass()
00100          << std::endl;
00101     oStr << "Frequent flyer probability mass (frequent flyer, propotion): ";
00102     oStr << _frequentFlyerProbabilityMass.displayProbabilityMass()
00103          << std::endl;
00104     oStr << "Preferred departure time cumulative distribution (time, proportion: ";
00105     oStr << _preferredDepartureTimeCumulativeDistribution.displayCumulativeDistribution() << std::endl;
00106     oStr << "min WTP: " << _minWTP << std::endl;
00107     oStr << "Value of time cumulative distribution (value of time, proportion: ";
00108     oStr << _valueOfTimeCumulativeDistribution.displayCumulativeDistribution()
00109          << std::endl;
00110 
00111     
00112     return oStr.str();
00113   }
00114     
00115 }
00116