RMOL Logo Get Revenue Management Optimisation Library at SourceForge.net. Fast, secure and Free Open Source software downloads

Overbooking.hpp

Go to the documentation of this file.
00001 #ifndef __RMOL_OVERBOOKING_HPP
00002 #define __RMOL_OVERBOOKING_HPP
00003 
00004 // //////////////////////////////////////////////////////////////////////
00005 // Import section
00006 // //////////////////////////////////////////////////////////////////////
00007 // STL
00008 #include <iostream>
00009 #include <vector>
00010 // RMOL
00011 #include <rmol/field/FldDistributionParameters.hpp>
00012 #include <rmol/field/FldOverbookingPolicy.hpp>
00013 #include <rmol/bom/DistributionParameterList.hpp>
00014 #include <rmol/bom/BomAbstract.hpp>
00015 
00016 namespace RMOL {
00017 
00020   class Overbooking : public BomAbstract {
00024     friend class FacOverbooking;
00025 
00026   public:
00027     // ///////// Getters /////////
00029     const FldOverbookingPolicy& getPolicy () const {
00030       return _policy;
00031     }
00032 
00034     double getOverbookingPercentage () const {
00035       return _overbookingPercentage;
00036     }
00037 
00039     double getLoadFactor () const {
00040       return _loadFactor;
00041     }
00042 
00044     unsigned int getCapacity () const {
00045       return _capacity;
00046     }
00047 
00049     unsigned int getNetBookings () const {
00050       return _netBookings;
00051     }
00052 
00053 
00055     FldDistributionParameters getNoShowDistributionParameters () const {
00056       return _noShowDistributionParameters;
00057     }
00058 
00060     FldDistributionParameters getCancellationDistributionParameters () const {
00061       return _cancellationDistributionParameters;
00062     }
00063 
00065     FldDistributionParameters getRemainingCancellationDistributionParameters () const {
00066       return _remainingCancellationDistributionParameters;
00067     }
00068 
00070     FldDistributionParameters getDemandDistributionParameters () const {
00071       return _demandDistributionParameters;
00072     }
00073 
00074     // ///////// Setters /////////
00076     void setOverbookingPercentage (const FldOverbookingPolicy& iPolicy) {
00077       _policy = iPolicy;
00078     }
00079 
00081     void setOverbookingPercentage (const double iOverbookingPercentage) {
00082       _overbookingPercentage = iOverbookingPercentage;
00083     }
00084 
00086     void setLoadFactor (const double iLoadFactor) {
00087       _loadFactor = iLoadFactor;
00088     }
00089 
00091     void setNoShowDistributionParameters (const FldDistributionParameters iNoShowDistributionParameters) {
00092       _noShowDistributionParameters = iNoShowDistributionParameters;
00093     }
00094 
00096     void setCancellationDistributionParameters (const FldDistributionParameters iCancellationDistributionParameters) {
00097       _cancellationDistributionParameters = iCancellationDistributionParameters;
00098     }
00099 
00101     void setRemainingCancellationDistributionParameters (const FldDistributionParameters iRemainingCancellationDistributionParameters) {
00102       _remainingCancellationDistributionParameters = 
00103         iRemainingCancellationDistributionParameters;
00104     }
00105 
00107     void setDemandDistributionParameters (const FldDistributionParameters iDemandDistributionParameters) {
00108       _demandDistributionParameters = iDemandDistributionParameters;
00109     }
00110 
00112     void setCapacity (const unsigned int iCapacity) {
00113       _capacity = iCapacity;
00114     }
00115 
00117     void setNetBookings (const unsigned int iNetBookings) {
00118       _netBookings = iNetBookings;
00119     }
00120 
00121     
00122     // ///////////
00125     FldDistributionParameters getOverbookingCalculation () const;
00126     
00128     FldDistributionParameters calculateHeuristic() const;
00129     
00131     FldDistributionParameters calculateRiskBased() const;
00132     
00134     FldDistributionParameters calculateServiceLevel() const;
00135     
00137     FldDistributionParameters calculateHybridPolicy() const;
00138 
00139 
00140   public:
00141     // ///////// Display methods ////////
00144     void toStream (std::ostream&) const;
00145 
00148     void fromStream (std::istream&);
00149 
00151     std::string toString() const;
00152 
00155     const std::string describeKey() const;
00156 
00159     const std::string describeShortKey() const;
00160     
00162     const std::string display() const;
00163 
00165     const std::string shortDisplay() const;
00166 
00167 
00168   private:
00171     Overbooking ();
00172     Overbooking (const Overbooking&);
00173     Overbooking (const FldOverbookingPolicy&);
00174 
00176     virtual ~Overbooking();
00177 
00178     
00179   private:
00181     double calculateBookingLimit () const;
00182     
00184     double probabilityNormal (const int, const double, const double) const;
00185     
00187     double binomialProbability_F_b_s (const double, 
00188                                       const int, const int) const;
00190     double serviceLevel1 (const double, const int, const int) const;
00191     
00193     double fractionServiceLevel2 (const double ,  const int , const int) const;
00194 
00195     
00196   private:
00197     // /////// Attributes //////////
00199     FldOverbookingPolicy _policy;
00200 
00202     double _overbookingPercentage;
00203 
00205     unsigned int _capacity;
00206 
00208     unsigned int _netBookings;
00209 
00211     double _loadFactor;
00212 
00214     FldDistributionParameters _noShowDistributionParameters;
00215 
00217     FldDistributionParameters _cancellationDistributionParameters;
00218 
00220     FldDistributionParameters _remainingCancellationDistributionParameters;
00221 
00223     FldDistributionParameters _demandDistributionParameters;
00224   };
00225 }
00226 
00227 #endif // __RMOL_OVERBOOKING_HPP
SourceForge Logo

Generated on Thu Jan 21 22:01:02 2010 for RMOL by Doxygen 1.6.2