Revenue Management & Hospitality Analytics
Overbooking Critical Fractile & Booking Limit Formula
Balance empty-seat spoilage c_u against denied-boarding bump compensation c_o via the Critical Fractile CF = c_u/(c_u + c_o) to set optimal flight and hotel overbooking limits.
Why overbooking by average no-shows is a costly mistake whenever bump vouchers exceed ticket fares!
In airline, hotel, and clinic capacity management, accepting only Physical_Capacity_K reservations leaves seats empty whenever booked guests cancel or no-show (costing Net_Fare_cu in irreversible spoilage per empty seat). Conversely, overbooking too aggressively forces involuntary denied-boarding / "walking" compensation Bump_Cost_co per displaced guest! Applying marginal Newsvendor logic to the b-th overbooked ticket: if NoShows > b (probability 1 - F(b)), you save c_u; if NoShows <= b (probability F(b)), you pay c_o! Optimal overbooking pad b* solves F(b*) = c_u / (c_u + c_o) — overbooking CONSERVATIVELY below average no-shows whenever Bump_Cost_co > Net_Fare_cu!
Verify on Cabin_Seats_K = 150 (B2), Net_Fare_cu = 300 (B3), Denied_Boarding_Cost_co = 900 (B4), and historical no-shows Uniform on [a_ns = 6, b_ns = 26] (B5 = 6, B6 = 26 -> Mean No-Shows = 16): Critical Fractile is CF = 300 / (300 + 900) = 0.2500 (25th percentile!). Whereas a naive planner overbooks by Mean = 16 seats (166 bookings), optimal pad is b* = 6 + 0.25 * (26 - 6) = 11.00 seats, setting Optimal Booking Authorization Limit at 150 + 11 = 161 seats!
| Overbooking Metric (K=150, c_u=300, c_o=900, NoShows ~ U[6, 26]) | Formula | Verified Output |
|---|---|---|
| Overbooking Critical Fractile (CF) | c_u / (c_u + c_o) | 0.2500 (25th Percentile) |
| Optimal Overbooking Pad (b*) | a_ns + CF * (b_ns - a_ns) | 11.00 seats (vs Naive Mean 16!) |
| Optimal Total Booking Limit | K + FLOOR(b*, 1) | 161 reservations |
| Low Bump Cost Case (c_o = 100 < c_u = 300) | CF = 0.7500 -> b* = 21 | 171 reservations |
Overbooking Critical Fractile & Optimal Pad b* Formula
Validate K >= 1, c_u > 0, c_o > 0, and 0 <= a_ns <= b_ns.
=LET(k_cp, B2, c_sp, B3, c_bm, B4, a_ns, B5, b_ns, B6, IF(OR(k_cp < 1, c_sp <= 0, c_bm <= 0, a_ns < 0, b_ns < a_ns), "Invalid Overbooking Input", LET(cf_r, c_sp / (c_sp + c_bm), ROUND(a_ns + cf_r * (b_ns - a_ns), 4))))Authorized Reservation Booking Limit (K + FLOOR(b*, 1)) Formula
Floor fractional pads conservatively to integer reservations so denied-boarding risk stays strictly at or below CF.
=IF(ISTEXT(E3), E3, B2 + FLOOR(E3, 1))Try the example
Use the original values or change them to test your understanding.