Revenue Management
Capacity allocation · Booking limits
Allocate fixed capacity \(C\) across multiple fare classes \(1, \ldots, n\) (with revenues \(r_1 \geq r_2 \geq \cdots\)) to maximise expected revenue when low-fare bookings arrive first and high-fare arrive late. Foundational results: Littlewood (1972) two-class rule \(P(D_1 \geq y) = r_2 / r_1\); Belobaba (1989) Expected Marginal Seat Revenue (EMSR-a, EMSR-b); Talluri & van Ryzin (2004) dynamic-programming reformulation. Born in airlines; now used in hotels, fashion clearance, event tickets, and advertising.
Why it matters
The original OR-driven pricing discipline — still the gold standard for fixed-capacity industries
Where the decision sits
Pre-period booking-limit setting · revisited daily as bookings accumulate
Revenue management was born in airline yield optimisation (deregulation 1978; American Airlines DINAMO system early 1980s). The retail flavour appears in three settings: fashion / seasonal clearance (capacity = pre-bought inventory; classes = early-bird, full price, markdown levels); hotel (capacity = rooms; classes = corporate, leisure, advance-purchase); and e-commerce limited-edition drops (capacity = SKU stock; classes = subscriber, public, secondary market). The decision is set before the booking horizon and re-optimised as actuals arrive.
Problem & formulation
Two-class Littlewood, EMSR-b heuristic, exact DP
Sets and parameters
| Symbol | Meaning | Unit |
|---|---|---|
| \(j \in \{1, \ldots, n\}\) | Fare class, indexed by descending revenue | integer |
| \(r_j\) | Revenue per booking in class \(j\); \(r_1 \geq r_2 \geq \cdots\) | $ |
| \(D_j\) | Random demand for class \(j\) (during its booking window) | units |
| \(\mu_j, \sigma_j\) | Mean and stdev of \(D_j\) (Normal approximation typical) | units |
| \(C\) | Total capacity | units |
Decision variables
| Symbol | Meaning | Domain |
|---|---|---|
| \(y_j\) | Protection level for class \(j\) and higher (seats reserved) | \(\geq 0\) |
| \(b_j\) | Booking limit for class \(j\) and lower (= \(C - y_{j+1}\)) | \(\leq C\) |
Littlewood’s two-class rule (1972)
For two classes (\(n = 2\)), accept class-2 booking iff there are at least \(y^{\ast}_1\) units left, where:
Equivalently, \(y^{\ast}_1 = F_1^{-1}(1 - r_2/r_1)\). The intuition: protect class-1 seats up to the quantile where expected marginal class-1 revenue equals the certain class-2 revenue. Identical to the newsvendor critical fractile with \(c_u = r_1, c_o = r_1 - r_2\). See newsvendor.
EMSR-b heuristic (Belobaba 1989) for \(n > 2\)
For each class \(j\), aggregate all higher classes \(1, \ldots, j-1\) into one virtual class with weighted-average revenue and combined Normal demand:
Then apply Littlewood between aggregate-of-higher and class \(j\):
Booking limit for class \(j\) is then \(b_j = C - y_j\). EMSR-b is within ~1-2% of optimal and runs in \(\mathcal{O}(n)\). EMSR-a (older) uses additive protection levels; EMSR-b is preferred.
Exact DP (Talluri-van Ryzin)
When demand arrival order is known and arrivals can be modelled as a stochastic process, the exact problem is a finite-horizon MDP. State: (time \(t\), capacity left \(c\)). Action: accept or reject the next arrival. Bellman:
Optimal policy is a bid price: accept iff \(r \geq V(t, c) - V(t, c-1)\) (marginal value of the seat). EMSR is a static-protection-level approximation; bid prices are the dynamic counterpart.
Interactive solver
5 fare classes · Littlewood / EMSR-b / first-come-first-served comparison
Per-class fare and demand (revenue descending)
Under the hood
EMSR-b protection levels: for each class \(j\), aggregate higher classes via revenue-weighted average and combined Normal (\(\mu, \sigma\)) parameters; apply Littlewood. Simulation: 2,000 runs of arriving bookings in low-to-high-fare order (the worst case for FCFS); for each run, EMSR accepts only if remaining capacity exceeds the class’s protection level, FCFS accepts everything until full. Inverse-Normal CDF computed via the Beasley-Springer-Moro rational approximation. Lift over FCFS reports the protection-level value for the chosen demand mix.
Reading the solution
Three patterns to watch for
- Higher-fare classes get larger protection. The protection level grows with the revenue ratio between an aggregate of higher classes and the next-lower class.
- Lift comes from rejecting low fares. EMSR’s win is closing low-fare buckets early enough to leave room for late-arriving high-fare bookings. FCFS always sells out fast on cheap fares.
- Demand variability widens the spread. Higher \(\sigma\) raises protection levels (more buffer); lower \(\sigma\) lets you cut closer to the bone.
Sensitivity questions
- Tighten the fare ladder (Class 1 from $500 to $350)? — EMSR lift shrinks; less reason to protect.
- Reduce capacity (100 → 70)? — tighter constraint; protection levels matter more.
- Widen \(\sigma\) on Class 1? — protection grows; load factor under EMSR may drop slightly because of buffering.
Model extensions
Network RM
Multi-leg / multi-resource: each booking consumes a bundle of resources (e.g., a flight uses several legs). Solved via deterministic LP + bid prices. Talluri-van Ryzin Ch. 3.
Dynamic-pricing reformulation
Replace booking limits with continuously updated prices — smoothly varies demand by class. Cross-link to dynamic pricing with learning.
Choice-based RM
Customer chooses among offered classes (MNL); some demand is “buy-up” or “buy-down”. More accurate; harder to solve. Liu-van Ryzin 2008.
Overbooking
Allow overbooking up to expected no-shows; re-optimise capacity. Combines RM with stochastic cancellation modelling.
Markdown integration
Retail RM = pre-season buy + in-season RM + clearance markdown. Joint problem; ties to markdown.
Newsvendor link
Two-class Littlewood is a newsvendor with \(c_u = r_1, c_o = r_1 - r_2\). The classical backbone of single-period inventory.
Newsvendor →Forecasting + RM
Demand forecasts feed protection levels; forecasting error directly degrades RM. Joint forecasting + optimisation pipelines.
RM with strategic customers
Customers anticipate sales (buying a low fare today vs hoping for a deeper discount tomorrow). Game-theoretic extension; Cachon-Swinney 2011 fashion analogue.
Key references
Back to the retail domain
Revenue management sits in the Price × Tactical cell — OR’s most-cited industrial success story, ported from airlines into retail markdown and fashion clearance.
Open Retail Landing