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
Generated on Sat Jun 6 13:48:25 2009 for RMOL by Doxygen 1.5.7.1