$treeview $search $mathjax
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