$treeview $search $mathjax
TraDemGen Logo  1.00.0
$projectbrief
$projectbrief
$searchbox

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       _changeFeeProb (0.5), _changeFeeDisutility (0.0),
00024       _nonRefundableProb (0.5), _nonRefundableDisutility (0.0),
00025       _preferredDepartureTimeCumulativeDistribution (PreferredDepartureTimeContinuousDistribution_T()),
00026       _minWTP (stdair::WTP_T()), _frat5Pattern (DEFAULT_FRAT5_PATTERN),
00027       _valueOfTimeCumulativeDistribution (ValueOfTimeContinuousDistribution_T()) {
00028   }
00029 
00030   // /////////////////////////////////////////////////////
00031   DemandCharacteristics::
00032   DemandCharacteristics (const DemandCharacteristics& iDC)
00033     : _arrivalPattern (iDC._arrivalPattern),
00034       _posProbabilityMass (iDC._posProbabilityMass),
00035       _channelProbabilityMass (iDC._channelProbabilityMass),
00036       _tripTypeProbabilityMass (iDC._tripTypeProbabilityMass),
00037       _stayDurationProbabilityMass (iDC._stayDurationProbabilityMass),
00038       _frequentFlyerProbabilityMass (iDC._frequentFlyerProbabilityMass),
00039       _changeFeeProb (iDC._changeFeeProb),
00040       _changeFeeDisutility (iDC._changeFeeDisutility),
00041       _nonRefundableProb (iDC._nonRefundableProb),
00042       _nonRefundableDisutility (iDC._nonRefundableDisutility),
00043       _preferredDepartureTimeCumulativeDistribution (iDC._preferredDepartureTimeCumulativeDistribution),
00044       _minWTP (iDC._minWTP), _frat5Pattern (iDC._frat5Pattern),
00045       _valueOfTimeCumulativeDistribution (iDC._valueOfTimeCumulativeDistribution) {
00046   }
00047 
00048   // /////////////////////////////////////////////////////
00049   DemandCharacteristics::
00050   DemandCharacteristics (const ArrivalPatternCumulativeDistribution_T& iArrivalPattern,
00051                          const POSProbabilityMassFunction_T& iPOSProbMass,
00052                          const ChannelProbabilityMassFunction_T& iChannelProbMass,
00053                          const TripTypeProbabilityMassFunction_T& iTripTypeProbMass,
00054                          const StayDurationProbabilityMassFunction_T& iStayDurationProbMass,
00055                          const FrequentFlyerProbabilityMassFunction_T& iFrequentFlyerProbMass,
00056                          const stdair::ChangeFeesRatio_T& iChangeFeeProb,
00057                          const stdair::Disutility_T& iChangeFeeDisutility,
00058                          const stdair::NonRefundableRatio_T& iNonRefundableProb,
00059                          const stdair::Disutility_T& iNonRefundableDisutility,
00060                          const PreferredDepartureTimeContinuousDistribution_T& iPreferredDepartureTimeContinuousDistribution,
00061                          const stdair::WTP_T& iMinWTP,
00062                          const ValueOfTimeContinuousDistribution_T& iValueOfTimeContinuousDistribution)
00063     : _arrivalPattern (iArrivalPattern),
00064       _posProbabilityMass (iPOSProbMass),
00065       _channelProbabilityMass (iChannelProbMass),
00066       _tripTypeProbabilityMass (iTripTypeProbMass),
00067       _stayDurationProbabilityMass (iStayDurationProbMass),
00068       _frequentFlyerProbabilityMass (iFrequentFlyerProbMass),
00069       _changeFeeProb (iChangeFeeProb),
00070       _changeFeeDisutility (iChangeFeeDisutility),
00071       _nonRefundableProb (iNonRefundableProb),
00072       _nonRefundableDisutility (iNonRefundableDisutility),
00073       _preferredDepartureTimeCumulativeDistribution (iPreferredDepartureTimeContinuousDistribution),
00074       _minWTP (iMinWTP), _frat5Pattern (DEFAULT_FRAT5_PATTERN),
00075       _valueOfTimeCumulativeDistribution (iValueOfTimeContinuousDistribution) {
00076   }
00077     
00078   // /////////////////////////////////////////////////////
00079   DemandCharacteristics::~DemandCharacteristics() {
00080   }
00081   
00082   // /////////////////////////////////////////////////////
00083   const stdair::AirportCode_T& DemandCharacteristics::
00084   getPOSValue (const stdair::Probability_T& iCumulativeProbability) const {
00085     return _posProbabilityMass.getValue (iCumulativeProbability);
00086   }
00087 
00088   // /////////////////////////////////////////////////////
00089   bool DemandCharacteristics::
00090   checkPOSValue (const stdair::AirportCode_T& iPOS) const {
00091     return _posProbabilityMass.checkValue (iPOS);
00092   }
00093 
00094   // /////////////////////////////////////////////////////
00095   const std::string DemandCharacteristics::describe() const {
00096     std::ostringstream oStr;
00097 
00098     //
00099     oStr << "****************** Demand characteristics ******************"
00100          << std::endl;
00101     oStr << "Arrival pattern (days from departure, proportion): ";
00102     oStr << _arrivalPattern.displayCumulativeDistribution() << std::endl;
00103     oStr << "POS probability mass (POS, propotion): ";
00104     oStr << _posProbabilityMass.displayProbabilityMass()
00105          << std::endl;
00106     oStr << "Channel probability mass (channel, propotion): ";
00107     oStr << _channelProbabilityMass.displayProbabilityMass()
00108          << std::endl;
00109     oStr << "Trip type probability mass (trip type, propotion): ";
00110     oStr << _tripTypeProbabilityMass.displayProbabilityMass()
00111          << std::endl;
00112     oStr << "Stay duration probability mass (number of days, propotion): ";
00113     oStr << _stayDurationProbabilityMass.displayProbabilityMass()
00114          << std::endl;
00115     oStr << "Frequent flyer probability mass (frequent flyer, propotion): ";
00116     oStr << _frequentFlyerProbabilityMass.displayProbabilityMass()
00117          << std::endl;
00118     oStr << "Change fee acceptation probability: "
00119          << _changeFeeProb
00120          << std::endl;
00121     oStr << "Change fee disutility: "
00122          << _changeFeeDisutility
00123          << std::endl;
00124     oStr << "Non refundable acceptation probability: "
00125          << _nonRefundableProb
00126          << std::endl;
00127     oStr << "Non refundable disutility: "
00128          << _nonRefundableDisutility
00129          << std::endl;
00130     oStr << "Preferred departure time cumulative distribution (time, proportion: ";
00131     oStr << _preferredDepartureTimeCumulativeDistribution.displayCumulativeDistribution() << std::endl;
00132     oStr << "min WTP: " << _minWTP << std::endl;
00133     oStr << "Value of time cumulative distribution (value of time, proportion: ";
00134     oStr << _valueOfTimeCumulativeDistribution.displayCumulativeDistribution()
00135          << std::endl;
00136 
00137     
00138     return oStr.str();
00139   }
00140     
00141 }
00142