$treeview $search $mathjax
00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <sstream> 00007 // StdAir 00008 #include <stdair/basic/BasConst_General.hpp> 00009 #include <stdair/basic/BasConst_Inventory.hpp> 00010 #include <stdair/basic/RandomGeneration.hpp> 00011 #include <stdair/bom/BookingClass.hpp> 00012 00013 namespace stdair { 00014 00015 // //////////////////////////////////////////////////////////////////// 00016 BookingClass::BookingClass() : _key (DEFAULT_CLASS_CODE), _parent (NULL) { 00017 assert (false); 00018 } 00019 00020 // //////////////////////////////////////////////////////////////////// 00021 BookingClass::BookingClass (const BookingClass& iBookingClass) 00022 : _key (iBookingClass._key), 00023 _parent (NULL), 00024 _subclassCode (iBookingClass._subclassCode), 00025 _cumulatedProtection (iBookingClass._cumulatedProtection), 00026 _protection (iBookingClass._protection), 00027 _cumulatedBookingLimit (iBookingClass._cumulatedBookingLimit), 00028 _au (iBookingClass._au), 00029 _nego (iBookingClass._nego), 00030 _noShowPercentage (iBookingClass._noShowPercentage), 00031 _cancellationPercentage (iBookingClass._cancellationPercentage), 00032 _nbOfBookings (iBookingClass._nbOfBookings), 00033 _groupNbOfBookings (iBookingClass._groupNbOfBookings), 00034 _groupPendingNbOfBookings (iBookingClass._groupPendingNbOfBookings), 00035 _staffNbOfBookings (iBookingClass._staffNbOfBookings), 00036 _wlNbOfBookings (iBookingClass._wlNbOfBookings), 00037 _nbOfCancellations (iBookingClass._nbOfCancellations), 00038 _etb (iBookingClass._etb), 00039 _netClassAvailability (iBookingClass._netClassAvailability), 00040 _segmentAvailability (iBookingClass._segmentAvailability), 00041 _netRevenueAvailability (iBookingClass._netRevenueAvailability), 00042 _yield (iBookingClass._yield), 00043 _adjustedYield (iBookingClass._adjustedYield), 00044 _mean (iBookingClass._mean), 00045 _stdDev (iBookingClass._stdDev) { 00046 } 00047 00048 // //////////////////////////////////////////////////////////////////// 00049 BookingClass::BookingClass (const Key_T& iKey) 00050 : _key (iKey), _parent (NULL), _subclassCode(0), _cumulatedProtection (0.0), 00051 _protection (0.0), _cumulatedBookingLimit (0.0), _au (0.0), _nego (0.0), 00052 _noShowPercentage (0.0), _cancellationPercentage (0.0), 00053 _nbOfBookings (0.0), _groupNbOfBookings (0.0), 00054 _groupPendingNbOfBookings (0.0), _staffNbOfBookings (0.0), 00055 _wlNbOfBookings (0.0), _nbOfCancellations (0.), _etb (0.0), 00056 _netClassAvailability (0.0), _segmentAvailability (0.0), 00057 _netRevenueAvailability (0.0), _yield (0.0), _mean (0.0), _stdDev (0.0) { 00058 } 00059 00060 // //////////////////////////////////////////////////////////////////// 00061 BookingClass::~BookingClass() { 00062 } 00063 00064 // //////////////////////////////////////////////////////////////////// 00065 std::string BookingClass::toString() const { 00066 std::ostringstream oStr; 00067 oStr << describeKey(); 00068 return oStr.str(); 00069 } 00070 00071 // //////////////////////////////////////////////////////////////////// 00072 void BookingClass::sell (const NbOfBookings_T& iNbOfBookings) { 00073 _nbOfBookings += iNbOfBookings; 00074 } 00075 00076 // //////////////////////////////////////////////////////////////////// 00077 void BookingClass::cancel (const NbOfBookings_T& iNbOfCancellations) { 00078 _nbOfBookings -= iNbOfCancellations; 00079 _nbOfCancellations += iNbOfCancellations; 00080 } 00081 00082 // //////////////////////////////////////////////////////////////////// 00083 void BookingClass::generateDemandSamples (const NbOfSamples_T& K) { 00084 _generatedDemandVector.clear(); 00085 if (_stdDev > 0) { 00086 RandomGeneration lGenerator (DEFAULT_RANDOM_SEED); 00087 for (unsigned int i = 0; i < K; ++i) { 00088 RealNumber_T lDemandSample = lGenerator.generateNormal (_mean, _stdDev); 00089 _generatedDemandVector.push_back (lDemandSample); 00090 } 00091 } 00092 } 00093 00094 // //////////////////////////////////////////////////////////////////// 00095 void BookingClass::generateDemandSamples (const NbOfSamples_T& K, 00096 const RandomSeed_T& iSeed) { 00097 _generatedDemandVector.clear(); 00098 if (_stdDev > 0) { 00099 RandomGeneration lGenerator (iSeed); 00100 for (unsigned int i = 0; i < K; ++i) { 00101 RealNumber_T lDemandSample = lGenerator.generateNormal (_mean, _stdDev); 00102 _generatedDemandVector.push_back (lDemandSample); 00103 } 00104 } 00105 } 00106 00107 } 00108