$treeview $search $mathjax
StdAir Logo  1.00.1
$projectbrief
$projectbrief
$searchbox

stdair/bom/BookingClass.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/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