queation 1,4,5,6

I need full detail explaination.

 rm_dep_demands_2013v1  removed due to copy rights issues.

IEOR 460

1

Homework 1: Due Wednesday, February 6

1. A coffee shop gets a daily allocation of 100 bagels. The bagels can be either sold
individually at $0.90 each or can be used later in the day for sandwiches. Each bagel
sold as a sandwich provides a revenue of $1.50 independent of the other ingredients.

a) Suppose that demand for bagel sandwiches is estimated to be Poisson with param-
eter 100. How many bagels would you reserve for sandwiches?

b) Compare the expected revenue of the solution of part a) to the expected revenue
of the heuristic that does not reserve capacity for sandwiches assuming that the
demand for individual bagels is Poisson with parameter 150?

c) Answer part a) if the demand for bagel sandwiches is normal with mean 100 and
standard deviation

2

0.

2. Problem 2 in the textbook (page 173)

3. Problem 3 in the textbook (page 173)

[Hint: For problem 2 and 3, you might want to consider the NORMINV() function in
Excel.]

4. Suppose capacity is 120 seats and there are four fares. The demand distributions for
the different fares are given in the the following table.

Class Fare Demand Distribution
1 $200 Poisson(25)
2 $175 Poisson(30)
3 $165 Poisson(29)
4 $130 Poisson(30)

Determine the optimal protection levels. [Hints: The sum of independent Poisson ran-
dom variables is Poisson with the obvious choice of parameter to make the means match.
If D is Poisson with parameter λ then P(D = k + 1) = P(D = k)λ/(k + 1) for any non-
negative integer k. You might want to investigate the POISSON() function in Excel.]

5. Consider a parking lot in a community near Manhattan. The parking lot has 100 parking
spaces. The parking lot attracts both commuters and daily parkers. The parking lot
manager knows that he can fill the lot with commuters at a monthly fee of $180 each. The
parking lot manager has conducted a study and has found that the expected monthly
revenue from x parking spaces dedicated to daily parkers is approximated well by the
quadratic function R(x) = 300x − 1.5×2 over the range x ∈ {0, 1, . . . , 100}. Note:
Assume for the purpose of the analysis that parking slots rented to commuters cannot
be used for daily parkers even if some commuter do not always use their slots.

a) What would the expected monthly revenue of the parking lot be if all the capacity
is allocated to commuters?

1

b) What would the expected monthly revenue of the parking lot be if all the capacity
is allocated to daily parkers?

c) How many units should the parking manager allocate to daily parkers and how
many to commuters?

d) What is the expected revenue under the optimal allocation policy?

6. A fashion retailer has decided to remove a certain item of clothing from the racks in
one week to make room for a new item. There are currently 80 units of the item and
the current sale price is $150 per unit. Consider the following three strategies assuming
that any units remaining at the end of the week can be sold to a jobber at $30 per unit.

a) Keep the current price. Find the expected revenue under this strategy under the
assumption that demand at the current price is Poisson with parameter 50.

b) Lower the price to $90 per unit. Find the expected revenue under this strategy
under the assumption that demand at $90 is Poisson with parameter 120.

c) Keep the price at $150 but e-mail a 40% discount coupon for the item to a popula-
tion of price sensitive customers that would not buy the item at $150. The coupon
is valid only for the first day and does not affect the demand for the item at $150.
Compute the expected revenue under this strategy assuming that the you can con-
trol the number of coupons e-mailed so that demand from the coupon population
is Poisson with parameter x for values of x in the set {0, 5, 10, 15, 20, 25, 30, 35}. In
your calculations assume that demand from coupon holders arrives before demand
from customers willing to pay the full price. Assume also that you cannot deny
capacity to a coupon holder as long as capacity is available (so capacity cannot be
protected for customers willing to pay the full price). What value of x would you
select? You can assume, as in parts a) and b) that any leftover units are sold to
the jobber at $30 per unit.

2

DynamicPricing and
Revenue

Management

IEOR 4601 Spring 2013

Professor Guillermo Gallego
Class: Monday and Wednesday 11:40-12:55pm
Office Hours: Wednesdays 3:30-4:30pm
Office Location: 820 CEPSR
E-mail: gmg2@columbia.edu

Why Study Dynamic Pricing and Revenue
Management?

¡  Revenue Management had its origins in the
airline industry and is one of the most
successful applications of Operations
Research to decision making

¡  Pricing and capacity allocation decisions
directly impact the bottom line

¡  Pricing transparency and

competition

make
pricing and capacity allocation decisions
more difficult and more important

Applications of Dynamic Pricing and
Revenue Management

¡  Capacity allocation of limited, perishable,
resources to different fare

classes

l  Airlines, hotels, car rentals, cruises, travel

packages, tickets for events
¡  Design and pricing of products

l  Fare

restrictions

and pricing
l  Consumption and fulfillment options
l  Upgrades, downgrades and upsells

¡  Pricing under competition
l  Electronic-commerce

Objectives of this course
¡  Understand the critical tradeoffs and

decisions in Revenue Management
¡  Learn how to

l  Monitor and control product availability for single
and multiple resources

l  Overbook limited resources when customers
shows are random

l  Use upgrades, upsells and real options to improve

revenues

l  Price under competition
l  Improve on the current practice of Revenue

Management

“Physics should be explained as simply as possible, but
no simpler.”

Albert Einstein

Professor Gallego’s experience and
background on subject

¡  Author of seminal papers on dynamic
pricing and revenue management

¡  Winner of several prices from academia
and industry related to work on Revenue
Management

¡  Consultant for airlines and RM solution
providers

¡  Consultant for other users of Revenue
Management

Readings
¡  Class Notes

l  I will provide with notes of the different
topic we cover in class

¡  Textbook
l  R.L. Phillips, Pricing and Revenue

Optimization, Stanford University Press,
2005, ISBN 0-8047-4698-2.

¡  References
l  K.T. Talluri and G.J. Van Ryzin, The Theory

and Practice of Revenue Management,
Springer, 2005, ISBN 0-387-24376-3.

l  Assigned papers

Prerequisites and Grading

¡  Prerequisites
l  Probability and Statistics at the level of IEOR

4150
l  Deterministic Models at the level of IEOR 4003

¡  Corequisites: Stochastic Models IEOR 4106
¡  Grading

l  Assignments 20%
l  Midterm 35%
l  Final 45%

Introduction to Revenue Management

¡  Revenue Management refers to the
strategy and tactics used by perishable
capacity providers to allocate capacity to
different fare classes or market segments
to maximize expected revenues. (See
Chapter 6 in Phillips.)

¡  RM is often practice when
l  Sellers have fixed stock of perishable capacity
l  Customers book capacity prior to usage
l  Seller offers a sets of fare classes
l  Seller can change the availability of fare

classes

History of Revenue Management

¡  Prior to 1978 the Airline Industry was
heavily regulated

¡  In the early 80’s the industry was
deregulated to encourage new entrants

¡  Low-cost carriers such as People Express
started encroaching into key markets of
large carriers

¡  American Airline dilemma:
l  Match fares and lose money
l  Keep fares and lose customers

AA’s Response to People Express

¡  Ultimate Super Saver Discount Fare
l  Same fare as People Express
l  Passenger must buy at least two weeks

prior to departure
l  Stay at his destination over a Saturday

night
¡  AA restricted the number of

discount seats sold on each flight to
save seats for full-fare passengers

Rational and Impact of Strategy

¡  Product Design
l  Imposing restrictions that appealed to the

leisure segment without cannibalizing the
business segment

¡  Capacity Allocation
l  Carefully control capacity to maximize

revenues

¡  Strategy started in January 85
l  PE was struggling by March
l  PE was at the verge of bankruptcy by August

Post-mortem

¡  People Express was bought by
Texas Air for 10% of the market
value it had enjoyed a year before

¡ “We had great people, tremendous
value, terrific growth. We did a lot
of things right. But we didn’t get
our hands around the yield
management and automation
issues.” Donald Burr CEO of PE

RM: The System Context

¡  AA was based on a computerized
reservation system (CRS) called Sabre
developed in 1963. This system:
l  Replaced index cards to manage reservations
l  Sabre is also a GDS (global distribution

system) that allowed AA to distribute its
products and fares globally

¡  Other GDSs: Amadeus, Galileo, Worldspan.

RM Constraints Imposed by Systems

¡  AA’s used Sabre’s Computerized
Reservation System as the backbone to
Revenue Management
l  The reservation system served as a repository

of all the bookings that have been accepted for
future flights

l  The CRS also contains the controls that specify
how many bookings from different fare classes
the airline will accept on future flights

¡  Remember: RM systems were developed
in the context of existing CRSs.

Levels of Revenue Management

¡  Strategic:
l  Market segmentation (leisure vs business)
l  Product design (restrictions, fares, options)
l  Pricing (Static vs. Dynamic)

¡  Tactical:
l  Calculate and updated booking limits

¡  Booking Control:
l  Determine which booking to accept and which

to reject based on booking limits

Strategic Revenue Management

¡  Design low fares to increase sales without
cannibalizing full fare demand
l  Time of Purchase Restrictions

¡  Advance purchase requirements
l  Traveling Restrictions

¡  Saturday night stays
l  High cancellation and change penalties

¡  Other opportunities
l  Contingent options on capacity
l  Flexible and callable products

Tactical Revenue Management

¡  Resources
l  Units of capacity

¡  Seats on a flight
¡  Hotel capacity for a specific night

¡  Products
l  What consumers seek to purchase

¡  May involve one or more resources

¡  Fares
l  A combination of a price and a set of

restrictions

Tactical Definition of RM

¡  A supplier controls a set of resources with
fixed and perishable capacity, a portfolio
of products consisting of combinations of
one or more of the resources, and a set of
fare classes associated with each of the
products. The tactical revenue
management problem is to chose which
fare classes should be open and which
closed for sale at each moment to
maximize total revenue.

Components of Tactical RM

¡  Capacity Allocation
l  How many customers from different

fare classes should be allowed to book?
¡  Network Management

l  How should bookings be managed
across a network of resources?

¡  Overbooking
l  How many total bookings should be

accepted for a product when there are
cancellations and show uncertainty?

Booking Controls

¡  Limits on bookings for different fare
classes:
l  Example: An airline receives a B-class

request for 3 seats departing in two
weeks. The current B-class booking
limit is two seats. As a result, the
request is rejected

Booking Limits

¡  Nesting Controls:
l  Label the fare classes so that 1 is the highest

fare class and n is the lowest fare class. For any
i let bi denote the nested booking limit for class
i.

l  Protection Levels:

l  Updates: If x units are sold in a transaction

nbbb ≥≥≥ 21

1,2,1,11 −=−= + nibby ii 

1,2,1),0,max( −=−← nixbb ii 

Nested Booking Limits (Example)

Booking Limits Protection Levels Requests

1 2 3 4 5 1 2 3 4 5 Seats Class Action

1 100 73 12 4 0 27 88 96 100 100 2 5 Reject

2 100 73 12 4 0 27 88 96 100 100 5 2 Accept

3 95 68 7 0 0 27 88 95 95 95 1 2 Accept

4 94 67 6 0 0 27 88 94 94 94 1 4 Reject

5 94 67 6 0 0 27 88 94 94 94 3 3 Accept

6 91 64 3 0 0 27 88 91 91 91 4 3 Reject

7 91 64 3 0 0 27 88 91 91 91 2 3 Accept

8 89 62 1 0 0 27 88 89 89 89

Is RM successful?

¡  By most measures (revenues relative to
resources) it has been a success at most
major airline, hotel, rental car companies.
l  Why have major airlines have been losing

money?
¡  Costs are 25-30% higher per mile, so even though

larger carriers bring in about 25% more revenue
per mile the cost disadvantage is overwhelming

l  What can be done?
¡  Cost costs
¡  Improve RM systems

l  Big move from independent to dependent demand
models

RM and Price Discrimination

¡  Price discrimination exists when sales of identical goods or
services are transacted at different prices from the same
provider.

¡  A feature of monopolistic or oligopolistic markets where
market power can be exercised.

¡  Requires market segmentation and means to discourage
discount customers becoming resellers.
l  This is achieved by fences to keep segments separate.

¡  Price discrimination is more common in services where
resale is not possible.

¡  Price discrimination can also be seen when the
requirement of identical goods is relaxed.
l  Premium products have price differential not explained by production

costs.

Taxonomies of Price Discrimination

¡  First degree: requires selling at maximum willingness to
pay

¡  Second degree: quantity discounts (sellers not able to
differentiate consumer types)

¡  Third degree: Prices vary by attributes (e.g., senior
discounts)

¡  Fourth degree: Prices are the same but costs are different
(reverse discrimination)

¡  Alternative taxonomy:
l  Complete discrimination (like first degree)
l  Direct discrimination: seller conditions price on some attribute (like

third degree)
l  Indirect discrimination: the seller relies on some proxy such as

quantity discounts (like second degree)

RM and Price Discrimination

¡  Differentiating by time-of-purchase and imposing traveling
restrictions like Saturday night stays is a form of second
degree or indirect discrimination.

¡  Selling premium seats is another form of second degree or

indirect discrimination.
l  Eg., uncomfortable second class seats on trains to entice

wealthier people to purchase first class seats.
l  Advance seat selection, mileage accrual, use of lounge, and

priority boarding may be forms of second and/or fourth
degree discrimination.

Other Examples of Price Discrimination

¡  Retail price discrimination is in violation of the Robinson-
Patman Act (1936)

¡  Coupons
¡  Segmentation by age group and student status
¡  Discounts for members of certain occupations
¡  Employee discounts
¡  Retail incentives (rebates, seasonal discounts, quantity

discounts)
¡  Gender based examples
¡  College financial aid
¡  User-controlled price discrimination
¡  See http://en.wikipedia.org/wiki/Price_discrimination

Static and Dynamic Pricing

¡  Pricing is studied by people in Economics
and Marketing

¡  Economist look at equilibrium prices
¡  Marketing focuses on demand estimation
¡  We focus on more tactical aspects of

pricing
l  Customer arrival rates
l  Capacity constraints
l  And increasingly on choice models and

competition

Static Pricing

¡  d(p) demand at p
¡  z unit cost or dual of capacity constraint
¡  r(p,z) = (p-z)d(p) profit function
¡  Find p to maximize r(p,z)
¡  Is there a finite maximizer p(z)?
¡  Is p(z) monotone?
¡  Is r(z) = r(p(z),z) monotone? Convex?
¡  Multiple market segments with limited

price menus

Dynamic Pricing
¡  Finite sales horizon
¡  Customers arrive stochastically over time
¡  State (t,x)

l  t time-to-go
l  x remaining inventory

¡  What price p(t,x) should be charged at
state (t,x)?

¡  Are there simple and effective pricing
heuristics?

¡  What about strategic customers?
¡  What about competition?

Topics to be Covered

¡  Single Resource RM
l  Independent Demands

¡  Dynamic Programming, Bounds and Heuristics
l  Dependent Demands based on choice models

¡  Static and Dynamic Pricing
¡  Network RM

l  Independent Demands, Choice Models
¡  Overbooking
¡  Service Engineering

l  Design and pricing of service features

Useful Techniques you will Learn

¡  Dynamic Programming (DP)
l  Tool for sequential decision making
l  Optimal Control (continuous time DP)

¡  Approximate Dynamic Programming
l  Tool to approximate DPs

¡  Bounds and Heuristics Techniques
¡  Choice Modeling
¡  Game Theory

Probability
and Dynamic Programming

Review
for

Dynamic Pricing and Revenue
Management

  • Probability Review
  • • Poisson: http://en.wikipedia.org/wiki/Poisson_random_variable

    – Read Sections: 1, 2, 3,

    4

    • Compound Poisson:
    http://en.wikipedia.org/wiki/Compound_Poisson_distribution

    • Poisson Process: http://en.wikipedia.org/wiki/Poisson_process
    • Compound Poisson Process:

    http://en.wikipedia.org/wiki/Compound_Poisson_process

    • Normal: http://en.wikipedia.org/wiki/Normal_random_variable
    – Read Sections 1,2.1,2.2,3,1,3.2,3.

    3

    • Brownian Motion: http://en.wikipedia.org/wiki/Wiener_process
    – Read sections 1, 2.

    DP AS AN OPTIMIZATION METHODOLOGY

    • Basic optimization problem

    min
    u∈U

    g(u)

    where u is the optimization/decision variable, g(u)
    is the cost function, and U is the constraint set

    • Categories of problems:
    − Discrete (U is finite) or continuous
    − Linear (g is linear and U is polyhedral) or

    nonlinear
    − Stochastic or deterministic: In stochastic prob-

    lems the cost involves a stochastic parameter
    w, which is averaged, i.e., it has the form

    g(u) = Ew
    {
    G(u, w)

    }

    where w is a random parameter.

    • DP can deal with complex stochastic problems
    where information about w becomes available in
    stages, and the decisions are also made in stages
    and make use of this information.

    { } ∑
    { } ∑ ( )

    INVENTORY CONTROL EXAMPL

    E

    Inventory
    S y s t e m

    Stock Ordered at
    Period k

    Stock at Period k Stock at Period k + 1

    Demand at Period k

    xk

    wk

    xk + 1 = xk + uk – wk

    u k
    Co s t o f P e rio d k

    c uk + r (xk + uk – wk)

    • Discrete-time system

    xk+1 = fk(xk, uk, wk) = xk + uk − wk
    • Cost function that is additive over time

    N−1
    E gN (xN ) +

    gk(xk, uk, wk)

    k=0

    N−1
    = E cuk + r(xk + uk − wk)

    k=0

    • Optimization over policies: Rules/functions uk =
    µk(xk) that map states to controls

    BASIC STRUCTURE OF STOCHASTIC DP

    • Discrete-time system

    xk+1 = fk(xk, uk, wk), k = 0, 1, . . . , N −

    1

    − k: Discrete time
    − xk: State; summarizes past information that

    is relevant for future optimization
    − uk: Control; decision to be selected at time

    k from a given set
    − wk: Random parameter (also called distur-

    bance or noise depending on the context)
    − N : Horizon or number of times control is

    applied

    • Cost function that is additive over time

    E

    {
    gN (xN ) +

    N−1∑
    k=0

    gk(xk, uk, wk)

    }

    Guillermo
    Pencil

    BASIC PROBLEM

    • System xk+1 = fk(xk, uk, wk), k = 0, . . . , N −1
    • Control constraints uk ∈ U (xk)
    • Probability distribution Pk(· | xk, uk) of wk
    • Policies π = {µ0, . . . , µN−1}, where µk maps
    states xk into controls uk = µk(xk) and is such
    that µk(xk) ∈ Uk(xk) for all xk
    • Expected cost of π starting at x0 is

    Jπ(x0) = E

    {
    gN (xN ) +
    N−1∑
    k=0

    gk(xk, µk(xk), wk)

    }

    • Optimal cost function

    J∗(x0) = min
    π

    Jπ(x0)

    • Optimal policy π∗ is one that satisfies

    Jπ∗ (x0) = J∗(x0)

    PRINCIPLE OF OPTIMALITY

    • Let π∗ = {µ∗0, µ∗1, . . . , µ∗N−1} be an optimal pol-
    icy

    • Consider the “tail subproblem” whereby we are
    at xi at time i and wish to minimize the “cost-to-
    go” from time i to time N

    E
    {
    gN (xN ) +

    N−1∑
    k=i

    gk
    (
    xk, µk(xk), wk

    )}

    and the “tail policy” {µ∗i , µ∗i+1, . . . , µ∗N−1}

    0 Ni

    xi Tail Subproblem

    • Principle of optimality: The tail policy is opti-
    mal for the tail subproblem

    • DP first solves ALL tail subroblems of final
    stage

    • At the generic step, it solves ALL tail subprob-
    lems of a given time length, using the solution of
    the tail subproblems of shorter time length

    DP ALGORITHM

    • Start with

    JN (xN ) = gN (xN ),

    and go backwards using

    Jk(xk) = min
    uk∈Uk(xk)

    E
    wk

    {
    gk(xk, uk, wk)

    + Jk+1
    (
    fk(xk, uk, wk)

    )}
    , k = 0, 1, . . . , N − 1.

    • Then J0(x0), generated at the last step, is equal
    to the optimal cost J∗(x0). Also, the policy

    π∗ = {µ∗0, . . . , µ∗N−1}
    where µ∗k(xk) minimizes in the right side above for
    each xk and k, is optimal.

    • Justification: Proof by induction that Jk(xk)
    is equal to J∗k (xk), defined as the optimal cost of
    the tail subproblem that starts at time k at state
    xk.

    • Note that ALL the tail subproblems are solved
    in addition to the original problem, and the inten-
    sive computational requirements.

    DETERMINISTIC FINITE-STATE PROBLEM

    Terminal Arcs

    . . .

    . . .
    . . .

    Initial State
    s

    t
    Artificial Terminal
    N o d e

    with Cost Equal
    to Terminal Cost

    S t a g e 0 S t a g e 1 S t a g e 2 . . . S t a g e N – 1 S t a g e N

    • States <==> Nodes
    • Controls <==> Arcs
    • Control sequences (open-loop) <==> paths
    from initial state to terminal states

    • ak : Cost of transition from state i ∈ Sk to state ij
    j ∈ Sk+1 at time k (view it as “length” of the arc)
    • aN : Terminal cost of state i ∈ SNit
    • Cost of control sequence <==> Cost of the cor­

    responding path (view it as “length” of the path)

    BACKWARD AND FORWARD DP ALGORITHMS

    • DP algorithm:
    JN (i) = aNit , i ∈ SN ,

    Jk(i) = min
    j∈Sk+1

    [
    akij +Jk+1(j)

    ]
    , i ∈ Sk, k = 0, . . . , N−1.

    The optimal cost is J0(s) and is equal to the
    length of the shortest path from s to t.

    • Observation: An optimal path s → t is also an
    optimal path t → s in a “reverse” shortest path
    problem where the direction of each arc is reversed
    and its length is left unchanged.

    • Forward DP algorithm (= backward DP algo-
    rithm for the reverse problem):

    J̃N (j) = a0sj , j ∈ S1,
    J̃k(j) = min

    i∈SN−k

    [
    aN−kij + J̃k+1(i)

    ]
    , j ∈ SN−k+1

    The optimal cost is J̃0(t) = mini∈SN
    [
    aNit + J̃1(i)

    ]
    .

    • View J̃k(j) as optimal cost-to-arrive to state j
    from initial state s.

    A NOTE ON FORWARD DP ALGORITHMS

    • There is no forward DP algorithm for stochastic
    problems.

    • Mathematically, for stochastic problems, we
    cannot restrict ourselves to open-loop sequences,
    so the shortest path viewpoint fails.

    • Conceptually, in the presence of uncertainty,
    the concept of “optimal-cost-to-arrive” at a state
    xk does not make sense. The reason is that it may
    be impossible to guarantee (with prob. 1) that any
    given state can be reached.

    • By contrast, even in stochastic problems, the
    concept of “optimal cost-to-go” from any state xk
    makes clear sense.

    GENERIC SHORTEST PATH PROBLEMS

    • {1, 2, . . . , N, t}: nodes of a graph (t: the desti-
    nation)

    • aij : cost of moving from node i to node j
    • Find a shortest (minimum cost) path from each
    node i to node t

    • Assumption: All cycles have nonnegative length.
    Then an optimal path need not take more than N
    moves

    • We formulate the problem as one where we re-
    quire exactly N moves but allow degenerate moves
    from a node i to itself with cost aii = 0.

    Jk(i) = optimal cost of getting from i to t in N−k moves.

    J0(i): Cost of the optimal path from i to t.

    • DP algorithm:
    Jk(i) = min

    j=1,…,N

    [
    aij +Jk+1(j)

    ]
    , k = 0, 1, . . . , N−2,

    with JN−1(i) = ait, i = 1, 2, . . . , N.

    EXAMPLE

    2

    7

    5

    2
    5 5

    6 1

    3

    0 . 5
    3

    1
    2
    4

    0 1 2 3 4

    1
    2
    3
    4
    5

    State i

    S t a g e k

    3 3 3 3

    4 4 4 5

    4 . 5 4 . 5 5 . 5 7

    2 2 2 2

    Destination
    5

    (a) (b)

    JN−1(i) = ait, i = 1, 2, . . . , N,

    Jk(i) = min
    j=1,…,N

    [
    aij +Jk+1(j)

    ]
    , k = 0, 1, . . . , N−2.

    • Probability and Dynamic ProgrammingReview
    • Probability Review

    Single Resource Revenue Management with Independent Demands

    Guillermo Gallego

    Updated Spring

    2

    0

    1

    3

    Abstrac

    t

    Providers of fixed perishable capacity, such as airline seats and hotel rooms use price discrimination
    to improve revenues; in practice, this discrimination is typically achieved by imposing booking and usage
    restrictions or including ancillary services such as mileage accrual and luggage handling, to sell the same
    capacity to different customers at different prices. We will assume that the set of fare classes (a menu
    of prices, restrictions and ancillary services) is given, and that the capacity provider’s goal is to allocate
    capacity among the different fare classes to maximize expected revenues. The problem of designing

    and

    pricing fare classes is treated in a separate chapter. We analyze the two fare class problem under the
    assumption that the lower fare class books first. We use marginal analysis to informally derive Littlewood’s
    rule and then show that Littlewood’s rule is in fact optimal. Spill rates, spill penalties and callable
    products are discussed next. A dynamic programming formulation for the multiple fare class problem is
    then introduced under the assumption that lower fare classes book first. Commonly used heuristics as well
    as bounds on the value function are presented. Dynamic models that explicitly take time into account,
    allow for more general fare arrival patterns and for randomness in the size of the requests. We compare
    the performance of static and dynamic policies and find that dynamic policies have a real advantage when
    the fare arrivals patterns are not low-to-high. We finalize the chapter with a model where fare classes are
    not allowed to reopen after they are closed for the first time.

    1 Introduction

    This chapter considers the simplest and best known revenue management problem, the single resource, inde-
    pendent demand problem. We assume that the capacity provider is trying to maximize the expected revenues
    from a sunk investment in c units of capacity. We assume that capacity is sold through a reservation system
    and that capacity cannot be modified or replenished during the booking horizon. We also assume that unsold
    capacity has no salvage value. Later we will see that the zero salvage value assumption is made without loss
    of generality as any problem with positive salvage value can be transformed into a problem with zero salvage
    value. We assume that the set of fare classes (a menu of prices and restrictions) is given, and that the demands
    for the different fare classes are statistically independent. In particular, we assume that if a customer finds his
    preferred fare class closed, he will leave the system without purchasing. This assumption holds approximately
    if the difference in fares is large so that demands are decoupled or if customers can find alternative sources
    of capacity for their preferred fare class. In some cases, however, part of the demand may be recaptured by
    other available fare classes. In such cases, the independent demand assumption is too strong and needs to be
    relaxed. We address this issue in a separate chapter where we discussed demand models based on discrete
    choice theory.

    In this chapter, we present a variety of models that have been developed in industry and in academia.
    There has been a preference in industry for models that suppress the time dimension and assume that the
    arrival pattern of the fare classes is low-to-high. We call these class of models static to distinguish them
    from the dynamic models, favored by academics, that model time explicitly. Both models have advantages
    and disadvantages as we will soon see. Static models are relatively easy to understand. Also, good heuristics

    1

    were developed before optimal solutions based on dynamic programming were discovered. Bringing in the
    time dimension helps deal with more general fare arrival patterns, but specifying the model requires a more
    detailed estimation of demand. This Chapter starts with a review of the two fare class problem in §2 where we
    present a heuristic derivation of Littlewood’s rule via marginal analysis. Littlewood’s rule is formally derived
    in §2.3 where a formal DP for the two fare class problem is presented. The dynamic program for multiple fare
    classes is presented in §3. Commonly used heuristics are presented in §

    4

    and bounds on the optimal expected
    revenue are presented in §

    5

    . The dynamic model is presented in §

    6

    , for the Poisson case and for the compound
    Poisson case in §

    7

    , where each request is for a random demand size. In §

    8

    , we restrict fares so that they cannot
    be opened once they are closed.

    2 Two Fare Classes: Marginal Analysis

    The product can be sold either at the full-fare p1 or at a discounted-fare p2 < p1. The discounted-fare typically has advance purchasing and usage restrictions. Let D1 and D2 denote respectively the random demand for the two fare classes for a specific instance of the problem, e.g., for a specific flight for an airline or a specific night for a hotel.

    We assume that all booked customers will actually travel. This avoids the need to overbook capacity and
    allow us to focus on the problem of allocating capacity between the two fares. We will discuss how to deal
    with pre-travel cancellations and day-of-travel no shows in a separate chapter on overbooking models.

    Fare class arrival order is an important part of the model. We assume what is commonly known as the
    low-to-high fare class arrival order, which implies that demand for the discounted fare book earlier than for
    full-fare. This arrival pattern holds approximately in practice, and it is encouraged by advance purchase
    restrictions imposed on lower fare classes. Notice that this is a worst case arrival pattern. Indeed, if full-fare
    class customers arrived first then we would accept them up to capacity and use residual capacity, if any, to
    satisfy demand from the discounted-fare class. We will relax the low-to-high fare order arrival assumption
    after we solve the multi-fare problem via dynamic programming.

    Under the low-to-high arrival pattern, discount-fare customers may exhaust capacity, say c, unless part
    of it is protected for later-booking by full-fare customers. Consequently, booking limits (known as discount
    authorizations) are placed on the discount sales. Suppose we protect y ∈ {0, 1, . . . ,c} units of capacity for
    the full-fare demand, D1, before observing the actual demand for the discount-fare, D2. This results in a
    booking limit c−y on the discounted-fare, so sales at the discounted-fare class are given by min(c−y,D2).
    The remaining capacity is equal to c − min(c − y,D2) = max(y,c − D2) and it is all made available to the
    full-fare class. Consequently, sales at the full fare equal min(max(y,c−D2),D1). The total expected revenue
    is

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)

    and the goal is to find a protection level y that maximizes W(y,c). The extreme strategies y = 0 and y = c
    correspond, respectively, to the case where no capacity is protected and all of the capacity is protected. We
    will later come back and discuss when these extreme strategies are optimal. In most cases, however, an
    intermediate strategy is optimal.

    The fare ratio r = p2/p1 plays an important role in determining optimal protection levels. If the ratio is
    very small then we would be inclined to protect more capacity for the full-fare demand. If the ratio is close
    to one, we would be inclined to accept nearly all discount-fare requests since we can get almost the same
    revenue, per unit of capacity, without risk. The distribution of full-fare demand is also important in deciding
    how many units to protect for that fare. If, P(D1 ≥ c) is very large, then it makes sense to protect the entire
    capacity for full-fare sales as it is likely that the provider can sell all of the capacity at the full-fare. However,
    if P(D1 ≥ c) is very low then it is unlikely that all the capacity can be sold at the full-fare, so fewer units
    should be protected. It turns out that the demand distribution of the discount-fare D2 has no influence on the
    optimal protection level under our assumption that D2 and D1 are independent. A formula for the optimal
    protection level, involving only P(D1 ≥ y) and r, was first proposed by Littlewood [

    14

    ] in 1

    9

    72. His arguments
    were not formal; however, they were later justified by Bhatia and Prakesh [1] in

    19

    73, and Richter [

    17

    ] in 1982.

    2

    One can obtain Littlewood’s formula intuitively by using marginal analysis. The advantage of marginal
    analysis is that it allows us to quickly derive the solution for the two fare class problem. The marginal analysis
    argument goes as follows: Suppose we have y > 0 units of capacity, and that we receive a request for the
    discounted-fare. Consider the marginal revenue associated with accepting and rejecting this request. If we
    accept, we obtain p2. If we close down the discount-fare then we will be able to sell the y

    th unit at p1 only
    if the full-fare demand D1 is at least as large as y, so it is intuitively optimal to reject the discount fare if
    p1P(D1 ≥ y) > p2. This suggests that an optimal protection level y1 should be given by:

    y1 = max{y ∈N : P(D1 ≥ y) > r}, (1)

    where N = {0, 1, . . . ,} is the set of non-negative integers. Equation (1) is known as Littlewood’s rule.

    Example 1. Suppose D1 is Poisson with parameter 80, the full fare is p1 = $

    10

    0 and the discounted fare is
    p2 = $60, so r = 60/100 = 0.6. We are interested in the cumulative tail distribution P(D1 ≥ y) = 1−P(D1 ≤
    y − 1). Since most statistical software packages return the value of P(D1 ≤ y), we see that y1 satisfies
    P(D1 ≤ y1 − 1) < 1 − r ≤ P(D1 ≤ y1). Since P(D1 ≤ 77) =< 0.4 ≤ P(D1 ≤ 78) we conclude that y1 = 78. Consequently, if c =

    20

    0 then the booking limit for the discount fare is

    12

    2. However, if c < y1, then all units should be protected for the full-fare resulting in a booking limit of zero.

    Remarks:

    • y(c) = min(y1,c) is also an optimal protection level. If y(c) = c, or equivalently if y1 ≥ c, then all the
    capacity should be reserved for sale at the full-fare.

    • The quantity b2 = max(c−y1, 0) is known as the optimal booking limit for the discount fare. It is the
    maximum number of discount-fare customers that we will book.

    • y1 is independent of the distribution of D2.

    • If P(D1 ≥ y1 + 1) = r, then y1 + 1 is also optimal protection level, so both y1 and y1 + 1 result in the
    same expected revenue. Protecting the y1 + 1 unit of capacity increases the variance of the revenue, but
    it reduces the probability of rejecting requests from full-fare customers.

    From Littlewood’s rule (1), we see that the extreme strategy y = 0 is optimal when P(D1 ≥ 1) ≤ r and
    the extreme strategy y = c is optimal when P(D1 ≥ c) > r.

    2.1 Continuous Demand Model

    Although revenue management demands are actually discrete, continuous distributions can be easier to work
    with and are often employed in practice. If we model D1 as a continuous random variable with cumulative
    distribution function F1(y) = P(D1 ≤ y), then

    y1 = F
    −1
    1 (1 −r)

    where F−

    11

    denotes the inverse of F. In particular, if D1 is Normal with mean µ1 and standard deviation σ1
    then

    y1 = µ1 + σ1Φ
    −1(1 −r) (2)

    where Φ denotes the cumulative distribution function of the standard Normal random variable.

    This formula allows for comparative statics as given in Table 1:

    Example 2. Suppose that D1 is Normal with mean 80 and standard deviation 9, the full-fare is p1 = $100
    and the discount-fare is p2 = $60. Then y1 = F

    −1
    1 (1 − 0.6) = 77.72 < 80 since r > 1/2. Notice that the

    solution is quite close to that of Example 1. This is because a Poisson random variable with mean 80 can be
    well approximated by a normal with mean 80 and standard deviation


    80 ‘ 9.

    3

    Fare Ratio Dependence of protection level

    r > 1
    2

    y1 < µ1 and y1 decreases with σ1

    r = 1
    2

    y1 = µ1 independent of σ1

    r < 1 2

    y1 > µ1 and y1 increases with σ1

    Table 1: Comparative Statics for Normal Full Fare Demand

    2.2 Connection with the Newsvendor Problem

    There is a close connection between the classical Newsvendor Problem and the two-fare Revenue Management
    Problem that we will briefly explore here. In the classical Newsvendor Problem a manager must decide how
    many units, say y, to stock for random sales D1 at p1 assuming a unit cost p2 < p1. The solution is to stock y1 units where y1 is the largest integer such that P(D1 ≥ y) > r = p2/p1. We can think of the two-fare Revenue
    Management Problem as a situation where capacity c is pre-decided, at a possible sub-optimal level, there is
    random demand D1 at ”salvage value” p1 > p2 that arrives after demand D2 at p2. The revenue management
    problem is to determine how many units to allow to be sold at p2. We know that the solution is to allow
    (c−y1)+ units to book at p2, reserving max(y1,c−D2) units for sale at p1.

    2.3 Two Fare Classes: Dynamic Programming

    In this section we formulate and analyze the two fare class problem using dynamic programming and present
    a formal proof of the optimality of Littlewood’s rule. We will from now on refer to the full-fare class as fare
    class 1 and to the discounted fare class as fare class 2. Dynamic programming starts by solving the problem
    at the last stage, just before demand for fare class 1. Let V1(y) be the optimal expected revenue that can be
    obtained from fare class 1 when capacity is y. Since it is optimal to allow fare class 1 customers to book all
    of the available capacity, sales are equal to min(D1,y) and the optimal expected revenue is

    V1(y) = p1E min(D1,y).

    Our next task is to find V2(c), the optimal expected revenue that can be obtained from c units of ca-
    pacity. Suppose that y ∈ {0, 1, . . . ,c} units are protected for fare class 1 demand. This results in revenues
    p2 min(D2,c − y) from sales to fare class 2 and remaining inventory max(c − D2,y) available for fare class
    1. Notice that we can obtain expected revenue EV1(max(c − D2,y)) from this inventory from fare class 1
    customers. Then

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)
    = E{p2 min(D2,c−y) + V1(max(c−D2,y))}

    is the expected revenue associated with protecting y ∈{0, 1, . . . ,c} units for the full-fare. V2(c) can be obtained
    by maximizing W(y,c) over y. More precisely,

    V2(c) = max
    y∈{0,1,…,c}

    E{p2 min(D2,c−y) + V1(max(c−D2,y))}. (3)

    The key to Dynamic Programming is that it involves a recursive equation (3) linking the expected revenues
    V2(c), at stage 2, to the expected revenue function V1 at stage 1. To solve for V2(c) we first need to solve
    for V1(y) for y ∈ {0, 1, . . . ,c}. Before moving on to the multi-fare formulation we will provide a formal
    proof of Littlewood’s rule (1), and discuss the quality of service implications of using Littlewood’s rule under
    competition.

    4

    2.4 Formal Proof of Littlewood’s Rule

    For any function f(y) over the integers, let ∆f(y) = f(y) − f(y − 1). The following result will help us to
    determine ∆V (y) and ∆W(y,c) = W(y,c) −W(y − 1,c).

    Lemma 1 Let g(y) = EG(min(X,y)) where X is an integer valued random variable with E[X] < ∞ and G is an arbitrary function defined over the integers. Then

    ∆g(y) = ∆G(y)P(X ≥ y).

    Let r(y) = ER(max(X,y)) where X is an integer valued random variable with E[X] < ∞ and R is an arbitrary function defined over the integers. Then

    ∆r(y) = ∆R(y)P(X < y).

    An application of the Lemma 1 yields the following proposition that provides the desired formulas for
    ∆V1(y) and ∆W(y,c).

    Proposition 1
    ∆V1(y) = p1P(D1 ≥ y) y ∈{1, . . . ,}

    ∆W(y,c) = [∆V1(y) −p2]P(D2 > c−y) y ∈{1, . . . ,c}.

    The proof of the Lemma 1 and Proposition 1 are relegated to the Appendix. With the help of Proposition 1
    we can now formally establish the main result for the Two-Fare Problem.

    Theorem 1 The function W(y,c) is unimodal in y and is maximized at y(c) = min(y1,c) where

    y1 = max{y ∈N : ∆V1(y) > p2}.

    Moreover, V2(c) = W(y(c),c).

    Proof: Consider the expression in brackets for ∆W(y,c) and notice that the sign of ∆W(y,c) is determined
    by ∆V1(y) −p2 as P(D2 > c−y) ≥ 0.Thus W(y,c) ≥ W(y − 1,c) as long as ∆V1(y) −p2 > 0 and W(y,c) ≤
    W(y−1,c) as long as ∆V1(y)−p2 ≤ 0. Since ∆V1(y) = p1P(D1 ≥ y) is decreasing1 in y, ∆V1(y)−p2 changes
    signs from + to − since ∆V1(0) − p2 = p1P(D1 ≥ 0) − p2 = p1 − p2 > 0 and limy→∞[∆V1(y) − p2] = −p2.
    This means that W(y,c) is unimodal in y. Then

    y1 = max{y ∈N : ∆V1(y) > p2}.

    coincides with Littlewood’s rule (1). When restricted to {0, 1, . . . ,c}, W (y,c) is maximized at y(c)

    =

    min(c,y1). Consequently, V2(c) = maxy∈{0,1,…,c}W(y,c) = W(y(c),c), completing the proof.

    2.5 Quality of Service, Spill Penalties, Callable Products and Salvage Values

    Since max(y1,c−D2) units of capacity are available for fare class 1, at least one fare class 1 customer will be
    denied capacity when D1 > max(y1,c−D2). The probability of this happening is a measure of the quality of
    service to fare class 1, known as the full-fare spill rate. Brumelle et al. [4] have observed that

    P(D1 > max(y1,c−D2)) ≤ P(D1 > y1) ≤ r < P(D1 ≥ y1). (4)

    They call P(D1 > y1) the maximal spill rate. Notice that if the inequality y1 ≥ c − D2 holds with high
    probability, as it typically does in practice when D2 is large relative to c, then the spill rate approaches the

    1We use the term increasing and decreasing in the weak sense.

    5

    maximal flight spill rate which is, by design, close to the ratio r. High spill rates may lead to the loss of
    full-fare customers to competition. To see this, imagine two airlines each offering a discount fare and a full-
    fare in the same market where the fare ratio r is high and demand from fare class 2 is high. Suppose Airline
    A practices tactically optimal Revenue Management by applying Littlewood’s rule with spill rates close to
    r. Airline B can protect more seats than recommended by Littlewood’s rule. By doing this Airline B will
    sacrifice revenues in the short run but will attract some of the full-fare customers spilled by Airline A. Over
    time, Airline A may see a decrease in full-fare demand as a secular change and protect even fewer seats for
    full-fare passengers. In the meantime, Airline B will see an increase in full-fare demand at which time it can
    set tactically optimal protection levels and derive higher revenues in the long-run. In essence, Airline B has
    (correctly) traded discount-fare customers for full-fare customers with Airline A.

    One way to cope with high spill rates and its adverse strategic consequences is to impose a penalty cost
    ρ for each unit of full-fare demand in excess of the protection level. This penalty is suppose to measure the
    ill-will incurred when capacity is denied to a full-fare customer. This results in a modified value function
    V1(y) = p1E min(D1,y) − ρE[(D1 − y)+] = (p1 + ρ)E min(D1,y) − ρED1. From this it is easy to see that
    ∆V1(y) = (p + ρ)P(D1 ≥ y), resulting in

    ∆W(y,c) = [(p1 + ρ)P(D1 ≥ y) −p2]P(D2 > c−y)

    and

    y1 = max

    {
    y ∈N : P(D1 ≥ y) >

    p2
    p1 + ρ

    }
    . (5)

    Notice that this is just Littlewood’s rule applied to fares p1 + ρ and p2, resulting in fare ratio p2/(p1 + ρ) and,
    consequently, lower maximal spill rates. Obviously this adjustment comes at the expense of having higher
    protection levels and therefore lower sales at the discount-fare and lower overall revenues. Consequently, an
    airline that wants to protect its full-fare market by imposing a penalty on rejected full-fare demand does it at
    the expense of making less available capacity for the discount-fare and less expected revenue. One way to avoid
    sacrificing sales at the discount-fare and improve the spill rate at the same time is to modify the discount-fare
    by adding a restriction that allows the provider to recall or buy back capacity when needed. This leads to
    revenue management with callable products; see Gallego, Kou and Phillips [12]. Callable products can be
    sold either by giving customers an upfront discount or by giving them a compensation if and when capacity
    is recalled. If managed correctly, callable products can lead to better capacity utilization, better service to
    full-fare customers and to demand induction from customers who are attracted to either the upfront discount
    or to the compensation if their capacity is recalled.

    The value function V1(y) may also be modified to account for salvage values (also known as the ‘distressed
    inventory problem’). Suppose there is a salvage value s < p2 on excess capacity after the arrival of the full-fare demand (think of standby tickets or last-minute travel deals). We can handle this case by modifying V1(y) to account for the salvaged units. Then V1(y) = p1E min(D1,y) + sE(y −D1)+ = (p1 −s)E min(D1,y) + sy, so ∆V1(y) = (p1 −s)P(D1 ≥ y) + s, resulting in

    ∆W(y,c) = [(p1 −s)P(D1 ≥ y) − (p2 −s)]P(D2 > c−y)

    and
    y1 = max
    {
    y ∈N : P(D1 ≥ y) >

    p2 −s
    p1 −s

    }
    . (6)

    Notice that this is just Littlewood’s rule applied to net fares p1 −s and p2 −s. This suggests that a problem
    with salvage values can be converted into a problem without salvage values by using net fares pi ← pi − s,
    i = 1, 2 and then adding cs to the resulting optimal expected revenue V2(c) in excess of salvage values.

    3 Multiple Fare Classes: Exact Solution

    In this section we present an exact solution to the muli-fare class problem using dynamic programming. We
    assume that the capacity provider has c units of perishable capacity to be allocated among n fares indexed

    6

    so pn < ... < p1. Lower fares typically have severe time of purchase and traveling restrictions and may have restricted advanced selection that denies access to the more desirable capacity. Given the time-of-purchase restriction, it is natural to assume that demands for fare classes arrive in n stages, with fare class n arriving first, followed by n − 1, with fare class 1 arriving last. Let Dj denote the random demand for fare class j ∈ N = {1, . . . ,n}. We assume that, conditional on the given fares, the demands D1, . . . ,Dn are independent random variables with finite means µj = E[Dj] j ∈ N. The independent assumption is approximately valid in situations where fares are well spread and there are alternative sources of capacity. Indeed, a customer who finds his preferred fare closed is more likely to buy the same fare for an alternative flight (perhaps with a competing carrier) rather than buying up to the next fare class if the difference in fare is high. The case of dependent demands, where fare closures may result in demand recapture, will be treated in a different chapter. The use of Dynamic Programming for the multi-fare problem with discrete demands is due to Wollmer [

    22

    ].
    Curry [6] derives optimality conditions when demands are assumed to follow a continuos distribution. Brumelle
    and McGill [5] allow for either discrete or continuous demand distributions and makes a connection with the
    theory of optimal stopping.

    Let Vj(x) denote the maximum expected revenue that can be obtained from x ∈ {0, 1, . . . ,c} units of
    capacity from fare classes {j, . . . , 1}. The sequence of events for stage j are as follows:

    1. Decide the protection level, say y ≤ x, for fares j − 1,j − 2, . . . , 1 thus allowing at most x−y units of
    fare j demand.

    2. The realization of the demand Dj occurs, and we observe min(Dj,x−y) sales at fare j.

    3. The revenue pj min(Dj,x−y) is collected, and we proceed to the beginning of stage j−1 with a remaining
    capacity of max(x−Dj,y).

    The revenue from this process is

    Wj(y,x) = pjE min(Dj,x−y) + EVj−1 (max(x−Dj,y)) . (7)

    We can think of Wj(y,x) as the expected revenue from x units of capacity prior to seeing the demand for fare
    class j when up to x−y units are allowed to book at fare j and an optimal policy is followed thereafter. This
    leads to the dynamic programming recursion

    Vj(x)

    = max
    y∈{0,1,…,x}

    Wj(y,x)

    = max
    y∈{0,1,…,x}

    {pjE min(Dj,x−y) + EVj−1(max(x−Dj,y))} . (8)

    The dynamic program simply states that the optimal value function is the sum of the expected revenues
    from fare class j plus the expected revenues from fare classes j−1, . . . , 1 evaluated at the protection level that
    maximizes this sum. Notice that once we are at the beginning of stage j−1 we face a similar problem over the
    remaining j−1 fare classes. Vj(x) is then the maximum expected revenue that can be obtained from x units of
    capacity for the j-fare problem. Consequently Vn(c) is the maximum expected revenue for the n-fare problem
    with capacity c. The recursion can be started with V0(x) = 0 if there are no salvage values or penalties for
    spill. Alternatively, the recursion can start with V1(x) = p1E min(D1,x) + sE[(x−D1)+]−ρE[(D1 −x)+] for
    x ≥ 0 if there is a salvage value s per unit of excess capacity and a penalty ρ per unit of fare class 1 demand
    that is denied.

    3.1 Structure of the Optimal Policy

    In order to analyze the structure of the optimal policy, we begin by describing a few properties of the value
    function. As a convention we set V0 ≡ 0. A function V (y) defined on y ∈ N is concave if ∆V (y) =
    V (y) −V (y − 1) is decreasing in y ∈N+.

    7

    Lemma 2 For any j ≥ 1,

    a) ∆Vj(y) = Vj(y) −Vj(y − 1) is decreasing in y ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(y) is increasing in j ∈ {1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    The proof of Lemma 2 is in the Appendix. Using the Lemma we can characterize an optimal policy as
    stated in the following theorem. For the purpose of simplifying notation we will extend the definition of ∆Vj(y)
    to y = 0 by setting ∆Vj(0) = ∆V1(0) = p1 just as we did for j = 1.

    Theorem 2 The function Wj(y,x) is unimodal in y and it is maximized at min(yj−1,c), where the nested
    protection levels 0 = y0 ≤ y1 ≤ y2 ≤ ···≤ yn−1 are given by

    yj = max{y ∈N : ∆Vj(y) > pj+1} j = 1, . . . ,n− 1. (9)

    The optimal value functions are given by

    Vj(x) = Wj(min(x,yj−1),x) j = 1, . . . ,n, x ∈N . (10)

    Moreover, Vj(x) is concave in x ∈N for each j = 1, . . . ,n.

    Proof: An algebraic argument similar to that used to justify Littlewood’s rule for n = 2, reveals that for
    y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Let yj−1 = max{y ∈N : ∆Vj−1(y) > pj}. By part a) of Lemma 2, ∆Vj−1(y) is decreasing in y so ∆Vj−1(y)−
    pj > 0 for all y ≤ yj−1 and ∆Vj−1(y)−pj ≤ 0 for all y > yj−1. Consequently, if x ≤ yj−1 then ∆Wj(y,x) ≥ 0
    for all y ∈ {1, . . . ,x} implying that Vj(x) = Wj(x,x). Alternatively, if x > yj−1 then ∆Wj(y,x) ≥ 0
    for y ∈ {1, . . . ,yj} and ∆Wj(y,x) ≤ 0 for y ∈ {yj−1 + 1, . . . ,x} implying Vj(x) = Wj(yj−1,x). Since
    ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1, it follows that ∆Vj(yj−1) = ∆Vj−1(yj−1) > pj > pj+1, so yj ≥ yj−1. The
    concavity of Vj(x) is is equivalent to ∆Vj(x) decreasing in x, and this follows directly from part a) of Lemma 2.

    Remarks:

    1. Notice that the unconstrained protection level yj−1 is independent of the demands Dk, k ≥ j as observed
    before in the two fare setting (Littlewood’s Rule).

    2. We can think of yj,j = 1, . . . ,n− 1 as the unconstrained protection levels. If we start stage j with xj
    units of capacity, the constrained protection level for fares {j−1, . . . , 1} is min(xj,yj−1). Thus capacity
    is made available to fare j only if xj > yj−1.

    3. The policy is implemented as follows. At stage n we start with xn = c units of inventory, and we protect
    yn−1(xn) = min(xn,yn−1) units of capacity for fares {n−1, . . . , 1} by allowing up to (xn −yn−1)+ units
    to be sold at fare pn. Since min(Dn, (xn−yn−1)+) units are sold during stage n, we start stage n−1 with
    xn−1 = xn − min(Dn, (xn − yn−1)+). We protect yn−2(xn−1) = min(xn−1,yn−2) units of capacity for
    fares {n−2, . . . , 1} and thus allow up to (xn−1−yn−2)+ units of capacity to be sold at pn−1. The process
    continues until we reach stage one with x1 units of capacity and allow (x1 − y0)+ = (x1 − 0)+ = x1
    to be sold at p1. Assuming discrete distributions, the computational requirement to solve the dynamic
    program for the n stages has been estimated by Talluri and van Ryzin [20] to be of order O(nc2).

    4. The concavity of Vn(c) is helpful if capacity can be procured at a linear or convex cost because in this
    case the problem of finding an optimal capacity level is a concave problem in c.

    8

    Example 3. Suppose there are five different fare classes. We assume the demand for each of the fares is
    Poisson. The fares and the expected demands are given in the first two columns of Table 2. The third column
    includes the optimal protection levels for fares 1, 2, 3 and 4.

    j pj E[Dj] yj
    1 $100

    15

    14
    2 $60 40 54
    3 $40 50 101
    4 $35 55

    16

    9
    5 $15 120

    Table 2: Five Fare Example with Poisson Demands: Data and Optimal Protection Levels

    Table 3 provides the expected revenues for different capacity levels as well as the corresponding demand
    factors (

    ∑5
    j=1 E[Dj])/c =

    28

    0/c. These results should be intuitive. Greater revenue potential is seen as

    capacity increases (since potentially more demand can be accepted). Further, the effect of restrictions on
    discounted fares is apparent in the pattern of revenue across classes; e.g. revenue V2(50) through V5(50) is
    $3,4

    26

    .8 because fare classes 3,4, and 5 are rationed since y2 = 54 > c = 50 units are protected for fare 1 and
    2. However, V1(350) through V5(350) vary from $1,500 to $9,6

    25

    because there is sufficient capacity to accept
    sales in all fare classes.

    c DF V1(c) V2(c) V3(c) V4(c) V5(c)
    50 560% 1,500.0 3,426.8 3,426.8 3,426.8 3,426.8

    100 280% 1,500.0 3,900.0 5,441.3 5,441.3 5,441.3
    150

    18

    7% 1,500.0 3,900.0 5,900.0 7,188.7 7,188.7
    200 140% 1,500.0 3,900.0 5,900.0 7,8

    24

    .6 8,159.1
    250 112% 1,500.0 3,900.0 5,900.0 7,825.0 8,909.1

    30

    0 93% 1,500.0 3,900.0 5,900.0 7,825.0 9,563.9
    350 80% 1,500.0 3,900.0 5,900.0 7,825.0 9,625.0

    Table 3: Expected Revenues Vj(c) and Demand Factors

    Figure 1 shows the marginal value as a function of the remaining resources for the data of Example 3.

     $-­‐
     
     
     
     

     $20.00
     
     

     $40.00
     
     

     $60.00
     
     

     $80.00
     
     

     $100.00
     
     

     $120.00
     
     

    0
      20
      40
      60
      80
      100
      120
      140
      16

    0
     

    DV_1(x)
     

    DV_2(x)
     

    DV_3(x)
     

    DV_4(x)
     

    DV_5(x)
     

    Figure 1: ∆Vj(x),x = 1, . . . , 350, j = 1, 2, 3, 4, 5 for Example 3

    9

    3.2 Speeding up the Computation of the Value Function

    While the value functions Vj(x), j ∈ {1, . . . ,n}, x ∈ {1, . . .c}, can be computed recursively there are some
    tricks to speed up the computations. Here we focus on how to efficiently update ∆Vj+1(x) from ∆Vj(x). The
    key idea is to express ∆Vj+1(x) for x > yj in terms of previously computed values of ∆Vj(x). The proof of
    Proposition 2 is in the Appendix.

    Proposition 2

    ∆Vj+1(x) =

    {
    ∆Vj(x) if x = 1, . . . ,yj
    E min(∆Vj(x−Dj+1),pj+1) if x = yj + 1, . . ..

    Since ∆Vj+1(x) = ∆Vj(x) for x ≤ yj, we only need to worry about ∆Vj+1(x) for x > yj. The following
    corollary to Proposition 2 makes the formula for ∆Vj+1(x),x > yj more explicit.

    Corollary 1

    ∆Vj+1(yj + k) = pj+1P(Dj+1 ≥ k)

    +

    k−1∑
    i=0

    ∆Vj(yj + k − i)P(Dj+1 = i) k ∈{1, . . . ,c−yj}.

    3.3 Linear and Convex Procurement Costs

    Suppose that capacity c can be procured at a linear cost kc before observing demands for the n fares: pn < pn−1 < ... < p1. How much capacity should be procured? The objective is to find c to maximize Πn(c,k) = Vn(c) −kc. Let c(k) be the smallest optimizer of Πn(c,k) as a function of the marginal cost k. The following Proposition characterizes c(k), shows that c(k) is decreasing in k and relates c(pj+1) to protection level yj for j < n.

    Proposition 3 The optimal procurement quantity at linear cost kc is given by

    c(k) = max{c ∈N : ∆Vn(c) > k}.

    Moreover, c(k) is decreasing in k, and yj = c(pj+1) for all j ∈{1, . . . ,n− 1}.

    Clearly c(0) = ∞ since ∆Vn(c) ≥ ∆V1(c) = p1P(D1 ≥ c) > 0 for all c ∈ N . At the other extreme,
    c(p1) = y0 = 0 since ∆Vn(1) = p1P(D1 ≥ 1) < p1 = ∆Vn(0), so no capacity would be purchased if k ≥ p1.

    If the cost of capacity k(c) is increasing convex then Π(c,k(c)) is concave in c and

    c(k) = max{c ∈N : ∆Vn(c) − ∆k(c) > 0}.

    Consider the convex cost function k(c) = K if c ≤ c̄ and k(c) = ∞ for k > c̄. This may reflect the situation
    where there is a fixed cost to leasing a resource with capacity c̄. The optimal choice is then to lease the
    resource if Vn(c̄) > K and not lease it otherwise.

    3.4 Relaxing the Monotonicity of Fares

    We continue to assume that demands arrive in the order Dn,Dn−1, . . . ,D1 but will relax the assumption that
    the fares are monotone p1 > p2 > … > pn. All of the results work as stated, except the monotonicity of the
    protection levels, if we redefine ∆Vj(0) = max{p1, . . . ,pj}. It is also possible to skip some of the optimization

    10

    0
     

    50
     

    100
     

    150
     

    200
     

    250
     

    300
     

    350
     

    400
     

    450
     

    0
      10
      20
      30
      40
      50
      60
      70
      80
      90
      100
     
    C

    ap
    ac

    it
    y

    cost

    optimal capacity

    Figure 2: Optimal Capacity as a Function of Cost for the Data of Example 3

    steps as it is clear that yj−1 = 0 whenever pj > max(p1, . . . ,pj−1) since it is optimal to allow all bookings at
    fare pj. The reader is referred to Robinson [18] for more details. As an example, suppose that p3 < p2 > p1.
    Then V1(x) = p1E min(D1,x) and at stage 2 the decision is y1 = 0, so

    V2(x) = p2E min(D2,x) + p1E min(D1, (x−D2)+).

    Notice that
    ∆V2(x) = p2P(D2 ≥ x) + p1P(D2 < x ≤ D[1, 2])

    so
    y2 = max{y ∈N : ∆V2(y) > p3}.

    Notice that the capacity protected for fare 2 is higher than it would be if there was no demand at fare 1.

    4 Multiple Fare Classes: Commonly Used Heuristics

    Several heuristics, essentially extensions of Littlewood’s rule, were developed in the 1980’s. The most important
    heuristics are known as EMSR-a and EMSR-b, where EMSR stands for expected marginal seat revenue. Credit
    for these heuristics is sometimes given to the American Airlines team working on revenue management problems
    shortly after deregulation. The first published account of these heuristics appear in Simpson [19] and Belobaba
    [2], [3]. For a while, some of these heuristics were even thought to be optimal by their proponents until optimal
    policies based on dynamic programming were discovered in the 1990’s. By then heuristics were already part of
    implemented systems, and industry practitioners were reluctant to replace them with the solutions provided
    by dynamic programming algorithms. There are several reasons for this. First, people feel more comfortable
    with something they understand. Also, the performance gap between the heuristics and the optimal dynamic
    program tends to be small. Finally, there is a feeling among some users that the heuristics may be more robust
    to estimates of the mean and variance of demand.

    Version a of the heuristic, EMSR-a, is based on the idea of adding protection levels produced by applying
    Littlewood’s rule to successive pairs of classes. At state j, we need to decide how much capacity to protect
    for fares j − 1, . . . , 1. We can use Littlewood’s rule to decide how much capacity to protect for fare k demand
    against fare j for k = j − 1, . . . , 1 and then add the protection levels. More precisely, let rk,j = pj/pk and set

    yk,j = max{y ∈N : P(Dk ≥ y) > rk,j}.

    11

    Then the EMSR-a heuristic will protect

    yaj−1 =

    j−1∑
    k=1

    yk,j

    units of capacity for fares j − 1, . . . , 1 against fare j.

    In particular, if Dk is Normal with mean µk and standard deviation σk, then

    yaj−1 = µ[1,j − 1] +
    j−1∑
    k=1

    σkΦ
    −1(1 −rk,j),

    where for any j, µ[1,j − 1] =
    ∑j−1

    k=1 µk and sums over empty sets are zero.

    Notice that the EMSR-a heuristic involves j − 1 calls to Littlewood’s rule to find the protection level for
    fares j − 1, . . . , 1. In contrast, the EMSR-b heuristic is based on a single call to Littlewood’s rule for each
    protection level. However, using the EMSR-b heuristic requires the distribution of D[1,j − 1] =

    ∑j−1
    k=1 Dk.

    This typically requires computing a convolution but in some cases, such as the Normal or the Poisson, the
    distribution of D[1,j − 1] can be easily obtained (because sums of independent Normal or Poisson random
    variables are, respectively, Normal or Poisson). The distribution of D[1,j − 1] is used together with the
    weighted average fare

    p̄j−1 =

    j−1∑
    k=1

    pk
    µk

    µ[1,j − 1]

    and calls on Littlewood’s rule to obtain protection level

    ybj−1 = max{y ∈N : P(D[1,j − 1] ≥ y) > r
    b
    j−1,j}

    where rbj−1,j = pj/p̄j−1. Notice that the weighted average fare assumes that a proportion µk/µ[1,j−1] of the
    protected capacity will be sold at fare pk,k = 1, . . . ,j − 1. In the special case when demands are Normal we
    obtain

    ybj−1 = µ[1,j − 1] + σ[1,j − 1]Φ
    −1(1 −rbj−1,j).

    Recall that for the Normal, variances are additive, so the standard deviation σ[1,j − 1] =
    √∑j−1

    k=1 σ
    2
    k.

    4.1 Evaluating the Performance of Heuristics

    While heuristic protection levels are easy to compute, evaluating them is as hard as solving for the optimal
    policy. The expected return of a heuristic policy based on protection levels 0 = yh0 ≤ yh1 ≤ . . . ≤ yhn−1 can be
    computed exactly or via simulation. To compute the expected revenues exactly, let V hj (x) be the expected profit

    from x units of capacity from fares {j, . . . , 1} under the heuristic policy h. Then V hj (x) = W
    h
    j (min(x,y

    h
    j−1),x)

    where for all y ≤ x we define Whj (y,x) = pjE min(x−y,Dj) + EV
    h
    j−1(max(y,x−Dj)). The following result

    is a direct consequence of Proposition 2 and its corollary.

    Proposition 4

    ∆V hj+1(x) =

    {
    ∆V hj (x) if x = 1, . . . ,y

    h
    j

    = pj+1P(Dj+1 ≥ x−yhj ) +
    ∑x−yhj −1

    i=0 ∆V
    h
    j (x− i)P(Dj+1 = i) if x > y

    h
    j

    Thus, if V hj (x) has already been computed then V
    h
    j+1(x) = V

    h
    j (x) for x = 1, . . . ,y

    h
    j . For x > y

    h
    j we can

    use the recursion V hj+1(x) = V
    h
    j+1(x− 1) + ∆V

    h
    j+1(x) starting with x = y

    h
    j + 1 in conjunction with the second

    part of Proposition 4.

    12

    To estimate the expected revenue and other measures of performance, such as the variance, we can also
    use Monte Carlo simulation. Suppose we generate many random copies of simulated demands (D1, . . . ,Dn).
    For each copy we compute sales (sh1, . . . ,s

    h
    n) and revenues R

    h =
    ∑n

    i=1 pis
    h
    i under heuristic h. Averaging

    over all the values of Rh gives an estimate of V hn (c). Simulated sales can be generated sequentially via s
    h
    j =

    min(Dj, (xj−yhn−1)+) starting with j = n and xn = c and using the capacity update formula xj = xj+1−shj+1.

    Example 3 (continued) We have applied the EMSR-a and EMSR-b heuristics to the data of Example 3. Table
    4 repeats the data and reports the heuristic protection levels ya, yb as well as the optimal protection levels.
    Table 5 reports V a5 (c) and V

    b
    5 (c) as well as V5(c) for values of c ∈{50, 100, 150, 200, 250, 300, 350}.

    j pj E[Dj] y
    a
    j y

    b
    j yj

    1 $100 15 14 14 14
    2 $60 40 53 54 54
    3 $40 50 97 102 101
    4 $35 55 171 166 169
    5 $15 120

    Table 4: Optimal and Heuristic Protection Levels for Example 3

    c DF V a5 (c) V
    b
    5 (c) V5(c)

    50 560% 3,426.8 3,426.8 3,426.8
    100 280% 5,4

    31

    .9 5,441.3 5,441.3
    150 187% 7,184.4 7,188.6 7,188.7
    200 140% 8,157.3 8,154.4 8,159.1
    250 112% 8,907.3 8,901.4 8,909.1
    300 93% 9,536.5 9,536.0 9,563.9
    350 80% 9,625.0 9,625.0 9,625.0

    Table 5: Performance of Heuristics for Example 3

    As seen in Table 5, both the EMSR-a and the EMSR-b heuristic perform very well against Poisson demands
    under a low-to-high arrival pattern. The heuristics continue to perform well if demands are compound Poisson
    and aggregate demands are approximated by the use of a Gamma distribution. However, EMSR based
    heuristics can significantly underperform relative to models that allow more general fare arrival rates. We will
    have an opportunity to revisit this issue in Section 7.

    5 Bounds, Revenue Opportunity Model, and New Heuristics

    In this section we develop bounds on Vn(c) which may be useful in evaluating the potential of applying revenue
    management solutions. To obtain an upper bound, consider the perfect foresight problem where the demand
    vector D = (D1, . . . ,Dn) is known in advance. This demand knowledge allows us to optimally allocate capacity
    by solving the following knapsack type problem

    V Un (c,D) = max

    n∑
    k=1

    pkxk (11)

    s.t. xk ≤ Dk ∀ k = 1, . . . ,n

    n∑
    k=1

    xk ≤ c

    xk ≥ 0 ∀ k = 1, . . . ,n.

    13

    Clearly, for each realization of D, advance knowledge results in revenues that are at least as high as the optimal
    dynamic policy that does not have perfect foresight. As a result, Vn(c) ≤ EV Un (c,D). For convenience, we
    will denote this upper bound as V Un (c) = EV

    U
    n (c,D).

    The solution to (11) can be written explicitly as xk = min(Dk, (c − D[1,k − 1])+),k = 1, . . . ,n where
    for convenience we define D[1, 0] = 0. The intuition here is that we give priority to higher fares so fare
    k ∈ {1, . . . ,n} gets the residual capacity (c − D[1,k − 1])+. The expected revenue can be written more
    succinctly after a few algebraic calculations:

    V Un (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[1,k − 1])+) (12)

    =
    n∑
    k=1

    pk (E min(D[1,k],c) −E min(D[1,k − 1],c))

    =
    n∑
    k=1

    (pk −pk+1)E min(D[1,k],c) (13)

    where for convenience we define pn+1 = 0. Moreover, since V
    U
    n (c,D) is concave in D, it follows from Jensen’s

    inequality that V Un (c) = EV
    U
    n (c,D) ≤ V Un (c,µ) where V Un (c,µ) is the solution to formulation (11) with

    µ = E[D] instead of D. More precisely,

    V Un (c,µ) = max

    n∑
    k=1

    pkxk (14)

    s.t. xk ≤ µk ∀ k = 1, . . . ,n

    n∑
    k=1
    xk ≤ c
    xk ≥ 0 ∀ k = 1, . . . ,n.

    The linear program (14) is known as the fluid model or the deterministic capacity allocation problem. It is
    essentially a knapsack problem whose solution can be given in closed form xk = min(µk, (c−µ[1,k−1])+) for
    all k = 1, . . . ,n. Consequently, V Un (c) ≤ V Un (c,µ) =

    ∑n
    k=1(pk −pk+1) min(µ[1,k],c).

    A lower bound can be obtained by assuming a low to high arrival pattern with zero protection levels.
    This gives rise to sales min(Dk, (c−D[k + 1,n])+) at fare k = 1, . . . ,n and revenue lower bound V L(c,D) =∑n

    k=1 pkE min(Dk, (c−D[k + 1,n])
    +).

    Taking expectations we obtain

    V Ln (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[k + 1,n])+) (15)

    =
    n∑
    k=1

    pk (E min(D[k,n],c) −E min(D[k + 1,n],c))

    =
    n∑
    k=1

    (pk −pk−1)E min(D[k,n],c) (16)

    where p0 = 0. Notice that all of the terms in the sum are negative except for k = 1. Clearly V
    L
    n (c) ≤ Vn(c)

    since the expected revenue is computed under sub-optimal protection levels. The above arguments justify the
    main result of this section.

    14

    Proposition 5
    V Ln (c) ≤ Vn(c) ≤ V

    U
    n (c) ≤ V

    U
    n (c,µ) (17)

    Of course, the bounds require the computation of E min(D[1,k],c), k = 1, . . . ,n. However, this is often
    an easy computation. Indeed, if D[1,k] is any non-negative integer random variable then E min(D[1,k],c) =∑c

    j=1 P(D[1,k] ≥ j). If D[1,k] is Normal we can take advantage of the fact that E min(Z,z) = z(1−Φ(z))−
    φ(z) when Z is a standard Normal random variable and φ is the standard Normal density function. If follows
    that if D[1,k] is Normal with mean µ and variance σ2, then

    E min(D[1,k],c) = µ + σE min(Z,z) = µ + σ [z(1 − Φ(z)) −φ(z)]

    where z = (c−µ)/σ.

    Tables 6 and 7 report V Ln (c),Vn(c),V
    U
    n (c) and Vn(c,µ) for the data of Examples 4 and 5, respectively.

    Notice that V Un (c) represents a significant improvement over the better known bound Vn(c,µ), particularly
    for intermediate values of capacity. The spread V Un (c) − V Ln (c) between the lower and upper bound is a
    gauge of the potential improvements in revenues from using an optimal or heuristic admission control policy.
    When capacity is scarce relative to the potential demand, then the relative gap is large, and the potential
    for applying revenue management solutions is also relatively large. This is because significant improvements
    in revenues can be obtained from rationing capacity to lower fares. As capacity increases, the relative gap
    decreases indicating that less can be gained by rationing capacity. At very high levels of capacity it is optimal
    to accept all requests, and at this point there is nothing to be gained from the use of an optimal admission
    control policy.

    c V Ln (c) Vn(c) V
    U
    n (c) V

    U
    n (c,µ)

    80 $42,728 $49,642 $53,039 $53,315
    90 $48,493 $54,855 $58,

    29

    3 $58,475

    100 $54,415 $60,015 $63,366 $63,815
    110 $60,393 $65,076 $68,126 $69,043
    120 $66,180 $69,801 $72,380 $74,243
    130 $71,398 $73,926 $75,9

    23

    $79,443
    140 $75,662 $77,252 $78,618 $82,563
    150 $78,751 $79,617 $80,456 $82,563
    160 $80,704 $81,100 $81,564 $82,563

    Table 6: Optimal Revenue and Bounds for Example 4.

    c V Ln (c) Vn(c) V
    U
    n (c) V

    Un(c,µ)
    80 $52,462 $67,505 $72,717 $73,312
    90 $61,

    21

    5 $74,003 $79,458 $80,302

    100 $70,136 $79,615 $85,621 $87,292
    110 $78,803 $84,817 $91,122 $92,850
    120 $86,728 $89,963 $95,819 $98,050
    130 $93,446 $94,869 $99,588 $103,250
    140 $98,630 $99,164 $102,379 $106,370
    150 $102,209 $102,418 $104,251 $106,370
    160 $104,385 $104,390 $105,368 $106,370

    Table 7: Optimal Revenue and Bounds for Example 5.

    5.1 Revenue Opportunity Model

    The bounds presented here can help with the so called Revenue Opportunity Model (ROM). The revenue
    opportunity is the spread between the optimal revenue, obtained by hindsight using the estimated uncensored

    15

    demand, and the revenue that results from not applying booking controls. Demand uncensoring refers to a sta-
    tistical technique that attempts to estimate actual demand from the observed sales which may be constrained
    by booking limits. The ex-post optimal revenue is a hindsight optimization and is equivalent to our perfect
    foresight model, resulting in revenue V Un (c,D), where D is the uncensored demand. On the other hand, the
    revenue based on not applying booking controls is just V Ln (c,D), so a measure of the revenue opportunity is
    V Un (c,D) − V Ln (c,D). The achieved revenue opportunity is the difference between the actual revenue from
    applying optimal or heuristic controls and the lower bound. The ratio of the achieved revenue opportunity to
    the revenue opportunity is often called the percentage achieved revenue opportunity. The revenue opportunity
    V Un (c,D)−V Ln (c,D) is sometimes approximated by V Un (c)−V Ln (c) to get an idea of the revenue opportunity.
    Table 6 and 7 shows there is significant revenue opportunity, particularly for c ≤ 140. Thus, one use for the
    ROM is to identify situations where RM has the most potential so that more effort can be put where is most
    needed. The ROM has also been used to show the benefits of using leg-based control versus network-based
    controls. The reader is refer to Chandler and Ja ([8]) and to Temath et al. ([21]) for further information on
    the uses of the ROM.

    5.2 Bounds Based Heuristic

    It is common to use an approximation to the value function as a heuristic. To do this, suppose that Ṽj(x) is
    an approximation to Vj(x). Then a heuristic admission control rule can be obtained as follows:

    ỹj = max{y ∈N : ∆Ṽj(y) > pj+1} j = 1, . . . ,n− 1. (18)

    Suppose we approximate the value function Vj(x) by Ṽj(x) = θV
    L
    j (x) + (1 − θ)V

    U
    j (x) for some θ ∈ [0, 1]

    and V Lj (x) and V
    U
    j (x) are the bounds obtained in this section applied to n = j and c = x. Notice that

    ∆V Lj (x) = p1P(D[1,j] ≥ x) +
    ∑j

    k=2(pk −pk−1)P(D[k,j] ≥ x), while ∆V
    U
    j (x) =

    ∑j−1
    k=1(pk −pk+1)P(D[1,k] ≥

    x) + pjP(D[1,j] ≥ x).

    6 Multiple Fare Classes with Arbitrary Fare Arrival Patterns

    So far we have suppressed the time dimension; the order of the arrivals has provided us with stages that are
    a proxy for time, with the advance purchase restriction for fare j serving as a mechanism to end stage j. In
    this section we consider models where time is considered explicitly. There are advantages of including time as
    part of the model as this allows for a more precise formulation of the customer arrival process. For example,
    we can relax the low-to-high arrival assumption and allow for overlapping or concurrent arrival rates. On the
    other hand, the flexibility advantage comes at the cost of estimating arrival rates for each of the fare classes
    over the sales horizon. If arrival rates are not estimated accurately, then adding the time dimension may hurt
    rather than help performance. In addition, the formulations presented in this section assumes that demand
    for each fare class follows a Poisson process, whereas our earlier models based on sequential fare arrivals do
    not have this restriction. We will extend the formulation in this section to the case of compound Poisson in
    §7.

    We assume that customers arrive to the system according to a time heterogeneous Poisson process with
    intensity λjt, 0 ≤ t ≤ T where T is the length of the horizon, t represents the time-to-go and j ∈ {1, . . . ,n}.
    Then the number of customers that arrive during the last t units of time and request product j, say Njt, is

    Poisson with mean Λjt =
    ∫ t
    0
    λjsds. For simplicity we will write Λj, instead of ΛjT , to denote the expected

    number of requests for fare j over the entire horizon [0,T]. The low-to-high arrival pattern can be embedded
    into the time varying model by dividing the selling horizon into n sub-intervals [tj−1, tj],j = 1, . . . ,n with
    tj = jT/n, and setting λjt = nΛj/T over t ∈ [tj−1, tj] and λjt = 0 otherwise.

    Let V (t,x) denote the maximum expected revenue that can be attained over the last t units of the sale
    horizon with x units of capacity. We will develop both discrete and continuous time dynamic programs to
    compute V (t,x). To construct a dynamic program we will need the notion of functions that go to zero faster

    16

    than their argument. More precisely, we say that a function g(x) is o(x) if limx↓0 g(x)/x = 0. We will show
    that the probability that over the interval [t−δt,t] there is exactly one request and the request is for product
    j is of the form λjtδt + o(δt). To see this notice that the probability that a customer arrives and requests one
    unit of product j over the interval [t− δt,t]is

    λjtδ exp(−λjtδt) + o(δt) = λjtδt[1 −λjtδt] + o(δt) = λjtδt + o(δt),

    while the probability that there are no requests for the other products over the same interval is

    exp(−

    k 6=j

    λktδt) + o(δt) = 1 −

    k 6=j

    λktδt + o(δt).

    Multiplying the two terms and collecting terms we obtain λjtδt + o(δt) as claimed.

    Recall that some fares have embedded time-of-purchase restrictions. Let Nt ⊂ N = {1, . . . ,n} to be the
    set of allowable fares at time-to-go t. Usually Nt = N for large t, but low fares are dropped from Nt as the
    time-of-purchase restrictions become binding.

    We can now write

    V (t,x) =

    j∈Nt

    λjtδt max(pj + V (t−δt,x− 1),V (t−δt,x)) + (1 −

    j∈Nt

    λjtδt)V (t− δt,x) + o(δt)

    = V (t−δt,x) + δt

    j∈Nt

    λjt[pj − ∆V (t− δt,x)]+ + o(δt) (19)

    with boundary conditions V (t, 0) = 0 and V (0,x) = 0 for all x ≥ 0, where ∆V (t,x) = V (t,x)−V (t,x−1) for
    x ≥ 1 and t ≥ 0.

    Subtracting V (t−δt,x) from both sides of equation (19), dividing by δt and taking the limit as δt ↓ 0, we
    obtain the following equation, known as the Hamilton Jacobi Bellman (HJB) equation:

    ∂V (t,x)

    ∂t
    =


    j∈Nt

    λjt[pj − ∆V (t,x)]+ (20)

    with the same boundary conditions. The equation tells us that the rate at which V (t,x) grows with t is the
    weighted sum of the positive part of the fares net of the marginal value of capacity ∆V (t,x) at state (t,x).

    While the value function can be computed by solving and pasting the differential equation (20), in practice
    it is easier to understand and compute V (t,x) using a discrete time dynamic programming formulation. A
    discrete time dynamic programming formulation emerges from (19) by rescaling time, setting δt = 1, and
    dropping the o(δt) term. This can be done by selecting a > 1, so that T ← aT is an integer, and setting
    λjt ← 1aλj,t/a, for t ∈ [0,aT]. The scale factor a should be selected so that, after scaling,


    j∈Nt λjt << 1,

    e.g.,

    j∈Nt λjt ≤ .01 for all t. The resulting dynamic program, after rescaling time, is given by

    V (t,x)

    = V (t− 1,x) +

    j∈Nt

    λjt[pj − ∆V (t− 1,x)]+. (21)

    with the same boundary conditions. Computing V (t,x) via (21) is quite easy and fairly accurate if time is
    scaled appropriately. For each t, the complexity is order O(n) for each x ∈ {1 . . . ,c} so the complexity per
    period is O(nc), and the overall computational complexity is O(ncT).

    A formulation equivalent to (21) was first proposed by Lee and Hersh [13], who also show that ∆V (t,x) is
    increasing in t and decreasing in x. The intuition is that the marginal value of capacity goes up if we have more
    time to sell and goes down when we have more units available for sale. From the dynamic program (21), it is
    optimal to accept a request for product j when pj ≥ ∆V (t−1,x) or equivalently, when pj + V (t−1,x−1) ≥
    V (t−1,x), i.e., when the expecte revenue from accepting the request exceeds the expected revenue of denying
    the request. Notice that if it is optimal to accept a request for fare j, then it is also optimal to accept a request

    17

    for any higher fare. Indeed, if pk ≥ pj and pj ≥ ∆V (t−1,x), then pk ≥ ∆V (t−1,x). Assuming that the fares
    are ordered: p1 ≥ p2 ≥ . . . ≥ pn, then it is optimal to accept all fares in the active set A(t,x) = {1, . . . ,a(t,x)},
    where

    a(t,x) = max{j ∈ Nt : pj ≥ ∆V (t− 1,x)} t ≥ 1,x ≥ 1},

    and to reject all fares in the complement R(t,x) = {j ∈ {1, . . . ,n} : j > a(t,x)}. For convenience we define
    a(t, 0) = a(0,x) = 0 and A(t, 0) = A(0,x) = ∅. For each time-to-go t let the protection level for fares in
    {1, . . . ,j} be

    yj(t) = max{x : a(t,x) = j},

    so if x ≤ yj(t) then fares j + 1 and higher should be closed.

    Proposition 6 The active set A(t,x) is decreasing in t and increasing in x. Moreover, yj(t) is increasing in
    j and increasing in t.

    Proof: Both results follow directly from the fact that ∆V (t,x) is increasing in t and decreasing in x.

    That intuition is that A(t,x) is decreasing in t because it is optimal to open fewer fares when we have more
    time to sell capacity at higher fares. The intuition that A(t,x) is increasing in x is that it we may need open
    more fares when we have more inventory. The intuition for yj(t) to be monotone in j is that we should protect
    at least as many units for sales of fares in {1, . . . ,j + 1} than for sales of fares in {1, . . . ,j}, so yj+1(t) ≥ yj(t).
    The intuition for yj(t) to be monotone in t is that with more time to sell, say t

    ′ > t, we have the potential to
    sell more from set {1, . . . ,j} so at least as many units should be protected: yj(t′) ≥ yj(t).

    6.1 A Pricing Formulation with Broader Interpretation

    At any time t, let λt =
    ∑n

    j=1 λjt be the overall arrival rate at time t. Define πjt =
    ∑j

    k=1 λkt/λt and

    rjt =
    ∑j

    k=1 pkλkt/λt. We can think of πjt and rjt as the probability of sale and the average revenue rate,
    per arriving customer, when we offer all the fares in the consecutive set Sj = {1, . . . ,j}. For convenience,
    let π0t = r0t = 0 denote, respectively, the sales rate and the revenue rate associated with S0 = ∅. Now let
    qjt = rjt/πjt be the average fare per unit sold when the offer set is Sj. If πjt = 0, we define qjt = 0. This
    implies that πjt[qjt − ∆V (t− 1,x)] is zero whenever πjt = 0, e.g., when j = 0.

    Let N+t = Nt ∪{0}. With this notation, we can write formulation (21) as

    V (t,x)

    = V (t− 1,x) + λt max
    j∈N+

    t

    [rjt −πjt∆V (t− 1,x)]

    = V (t− 1,x) + λt max
    j∈N+
    t

    πjt[qjt − ∆V (t− 1,x)]. (22)

    The reason to include 0 as a choice is that for j = 0, the term vanishes and this allow us to drop the positive
    part that was present in formulation (21). The equivalent formulation for the continuous time model (20) is

    ∂V (t,x)

    ∂t
    = λt max

    j∈N+
    t

    πjt[qjt − ∆V (t,x)]. (23)

    These formulation suggest that we are selecting among the actions S0,S1, . . . ,Sn to maximize the sales rate
    πjt times the average fare qjt net of the marginal value of capacity (∆V (t−1,x) for model (22) and ∆V (t,x)
    for model (23)). In essence, the problem has been reduced to a pricing problem with a finite price menu.
    Formulations (22) and (23) can be interpreted broadly as the problem of optimizing the expected revenue
    from state (t,x) where there are a finite number of actions. These actions can be, as above, associated with
    offering products in the sets S0,S1, . . . ,Sn, but other interpretations are possible. For example, the different
    actions can be associated with offering a product at different prices qjt, each price associated with a sales rate

    18

    πjt for all j ∈ N+. This turns the capacity allocation problem into a pricing problem with a finite price menu.
    We will come back to this pricing formulation when we discuss the dynamic capacity allocation problem with
    dependent demands. We will see there that essentially the same pricing formulation works for dependent
    demands. For the case of dependent demands, the set N+ will be the index corresponding to a collection of
    sets that is efficient in a sense that will be made precise later.

    7 Compound Poisson Demands

    The formulations of the dynamic programs (20) and (21), implicitly assume that each request is for a single
    unit. Suppose instead, that each arrival is for a random number of units. More specifically, suppose that
    request for fare j are of random size Zj, and that the probability mass function Pj(z) = P(Zj = z),z ≥ 1 is
    known for each j. As before, we assume independent demands for the different fare classes j ∈ N. We seek
    to generalize the dynamic programs (20) and (21) so that at each state (t,x) we can decide whether or not to
    accept a fare pj request of size Zj = z. The expected revenue from accepting the request is zpj +V (t−1,x−z)
    and the expected revenue from rejecting the request is V (t− 1,x). Let ∆zV (t,x) = V (t,x) −V (t,x− z) for
    all z ≤ x and ∆zV (t,x) = ∞ if z > x. We can think of ∆zV (t,x) as a the sum of the the z marginal values
    ∆V (t,x) + ∆V (t,x− 1) + . . . + ∆V (t,x−z + 1).

    The dynamic program (20) with compound Poisson demands is given by

    ∂V (t,x)
    ∂t
    =

    j∈Nt

    λjt

    ∞∑

    z=1

    Pj(z)[zpj − ∆zV (t,x)]+, (24)

    while the dynamic program (21) with compound Poisson demands is given by

    V (t,x) = V (t− 1,x) +

    j∈Nt
    λjt

    ∞∑
    z=1

    Pj(z)[zpj − ∆zV (t− 1,x)]+, (25)

    with boundary conditions V (t, 0) = V (0,x) = 0. Notice that the sums in (24) and (25) can be changed to
    ∑x

    z=1

    instead of
    ∑∞

    z=1 as the terms z > x do not contribute to the sum given our convention that ∆zV (t,x) = ∞ for
    x > z. The optimal policies for the two programs are, respectively, to accept a size z request fare pj, j ∈ Nt,
    if zpj ≥ ∆zV (t,x), and to accept a z request fare pj, j ∈ Nt, if zpj ≥ ∆zV (t− 1,x). The two policies should
    largely coincide time is scaled correctly so that


    j∈Nt λjt << 1 for all t ∈ [0,T].

    For compound Poisson demands, we can no longer claim that the marginal value of capacity ∆V (t,x) is
    decreasing in x, although it is still true that ∆V (t,x) is increasing in t. To see why ∆V (t,x) is not monotone in
    x, consider a problem where the majority of the requests are for two units and request are seldom for one unit.
    Then the marginal value of capacity for even values of x may be larger than the marginal value of capacity for
    odd values of x. Consequently, some of the structure may be lost. For example, it may be optimal to accept a
    request of a single unit of capacity when x is odd, but not if x is even, violating the monotonicity of ∆V (t,x).
    However, even if some of the structure is lost, the computations involved to solve (25) are straightforward as
    long as the distribution of Zj is known. Airlines, for example, have a very good idea of the distribution of Zj
    for different fare classes that may depend on the market served.

    Example 4. Consider again the data of Examples 3 with fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and
    p5 = $15 with independent compound Poisson demands, with uniform arrival rates λ1 = 15,λ2 = 40,λ3 =
    50,λ4 = 55,λ5 = 120 over the horizon [0, 1]. We will assume that Nt = N for all t ∈ [0, 1]. The aggregate
    arrival rates are given by Λj = λjT = λj for all j. We will assume that the distribution of the demand sizes is
    given by P(Z = 1) = 0.65,P(Z = 2) = 0.25,P(Z = 3) = 0.05 and P(Z = 4) = .05 for all fare classes. Notice
    that E[Z] = 1.5 and E[Z2] = 2.90, so the variance to mean ratio is 1.933. We used the dynamic program
    (25) with a rescaled time horizon T ← aT = 2, 800, and rescaled arrival rates λj ← λj/a for all j. Table 8
    provides the values V (T,c) for c ∈{50, 100, 150, 200, 250, 300, 350}. Table 8 also provides the values ∆V (t,x)

    19

    for t = 207 in the rescaled horizon for x ∈ {1, . . . , 6} to illustrate the behavior of the policy. The reader can
    verify that at state (t,x) = (208, 3) it is optimal to accept a request for one unit at fare p2, and to reject the
    request if it is for two units. Conversely, if the state is (t,x) = (208, 4) then it is optimal to reject a request
    for one unit at fare p2, and to accept the request if it is for two units. The reason for this is that the value of
    ∆V (t,x) is not monotone decreasing at x = 4.

    c 50 100 150 200 250 300
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    x 1 2 3 4 5 6
    ∆V (t,x) 70.05 66.48 59.66 60.14 54.62 50.41

    Table 8: Value function V (T,c) and marginal revenues ∆V (t,c) for Example 4: Compound Poisson

    7.1 Static vs Dynamic Policies

    Let Nj be the random number of request arrivals for fare j over the horizon [0,T], Then Nj is Poisson with

    parameter Λj =
    ∫ T
    0
    λjtdt. Suppose each arrival is of random size Zj. Then the aggregate demand, say Dj, for

    fare j is equal to

    Dj =

    Nj∑
    k=1

    Zjk, (26)

    where Zjk is the size of the kth request. It is well known that E[Dj] = E[Nj]E[Zj] = ΛjE[Zj] and that
    Var[Dj] = E[Nj]E[Z

    2
    j ] = ΛjE[Z

    2
    j ], where E[Z

    2
    j ] is the second moment of Zj. Notice that Jensen’s inequality

    implies that the the variance to mean ratio E[Z2j ]/E[Zj] ≥ E[Zj] ≥ 1.

    In practice, demands D1, . . . ,Dn are fed, under the low-to-high arrival assumption, into static policies to
    compute Vj(c),j = 1, . . . ,n and protection levels yj,j = 1, . . . ,n − 1 using the dynamic program (8), or to
    the EMSR-b heuristic to compute protection levels yb1, . . . ,y

    b
    n−1. Since the compound Poisson demands are

    difficult to deal with numerically, practitioners often approximate the aggregate demands Dj by a Gamma
    distribution with parameters αj and βj, such that αjβj = E[Nj]E[Zj] and αjβ

    2
    j = E[Nj]E[Z

    2
    j ], yielding

    αj = ΛjE[Zj]
    2/E[Z2j ], and βj = E[Z

    2
    j ]/E[Zj].

    We are interested in comparing the expected revenues obtained from static policies to those of dynamic
    policies. More precisely, suppose that that demands are compound poisson and Dj is given by (26) for every
    j = 1, . . . ,n. Suppose that protection levels y1,y2, . . . ,yn−1 are computed using the low-to-high static dynamic
    program (8) and let yb1,y

    b
    2, . . . ,y

    b
    n−1 be the protection levels computed using the EMSR-b heuristic. Protection

    levels like these are often used in practice in situations where the arrival rates λjt, t ∈ [0,T],j = 1, . . . ,n, are
    not necessarily low-to-high. Two possible implementations are common. Under theft nesting a size z request
    for fare class j as state (t,x) is accepted if x − z ≥ yj−1. This method is called theft nesting because the
    remaining inventory x at time-to-go t is x = c − b[1,n] includes all bookings up to time-to-go t, including
    bookings b[1,j − 1]. Standard nesting counts only bookings for lower fare classes and is implemented by
    accepting a size z request for fare j at state (t,x) if x − z ≥ (yj−1 − b[1,j − 1])+, where b[1,j − 1] are the
    observed bookings of fares [1,j − 1] up to state (t,x). When c > yj−1 > b[1,j − 1], this is equivalent to
    accepting a request for z units for fare j if c− b[j,n] − z ≥ yj−1, or equivalently if b[j,n] + z ≤ c−yj−1, so
    only bookings of low fares count. In practice, standard nesting works much better than theft nesting when
    the arrival pattern is not

    low-to-high.

    Notice that the expected revenue, say V s(T,c), resulting from applying the static protection levels y1, . . . ,yn−1
    with theft nesting is not, in general, equal to Vn(c), the optimal expected revenue when the arrivals are low-
    to-high. Similarly, the expected revenue, say V b(T,c), resulting from applying the EMSR-b protection levels
    yb1, . . . ,y

    b
    n−1 with theft nesting is not, in general, equal to V

    b
    n (c), the expected revenue when the arrivals are

    low-to-high.

    The next proposition shows that V s(T,x) ≤ V (T,x), where V (T,x) is the optimal expected revenue for the
    compound Poisson Dynamic Program. The same simple proof can be used to show that V b(T,x) ≤ V (T,x).

    20

    In fact, a proof is hardly needed as we are comparing heuristics to optimal dynamic policies.

    Proposition 7
    V s(T,x) ≤ V (T,x) ∀x ∈{0, 1, . . . ,c}.

    Proof: Clearly for V s(0,x) = V (0,x) = 0 so the result holds for t = 0, for all x ∈ {0, 1, . . . ,c}. Suppose
    the result holds for time-to-go t− 1, so V s(t− 1,x) ≤ V (t− 1,x) for all x ∈ {0, 1, . . . ,c}. We will show that
    it also holds for time-to-go t. If a request of size z arrives for fare class j, at state (t,x), the policy based on
    protection levels y1, . . . ,yn−1 will accept the request if x−z ≥ (yj−1−b[1,j−1])+ and will rejected otherwise.
    In the following equations, we will use Qj(z) to denote P(Zj > z). We have

    V s(t,x) =

    j∈Nt

    λjt[

    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V
    s(t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V s(t− 1,x)] + (1 −

    j∈Nt

    λjt)V
    s(t− 1,x)



    j∈Nt

    λjt[
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V (t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V (t− 1,x)] + (1 −

    j∈Nt

    λjt)V (t− 1,x)

    = V (t− 1,x) +

    j∈Nt
    λjt
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))

    ≤ V (t− 1,x) +

    j∈Nt

    λjt
    ∞∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))+

    = V (t,x),

    where the first equation follows from the application of the protection level policy, the first inequality follows
    from the inductive hypothesis V s(t − 1,x) ≤ V (t − 1,x). The second equality collects terms, the second
    inequality follows because we are taking positive parts, and the last equality from the definition of V (t,x).

    While we have shown that V s(T,c) ≤ V (T,c), one may wonder whether there are conditions where equality
    holds. The following results answers this question.

    Corollary 2 If the Dj’s are independent Poisson random variables and the arrivals are low-to-high then
    Vn(c) = V

    s(T,c) = V (T,c).

    Proof: Notice that if the Djs are Poisson and the arrivals are low-to-high, then we can stage the arrivals
    so that λjt = nE[Dj]/T over t ∈ (tj−1, tj] where tj = jT/n for j = 1, . . . ,n. We will show by induction in
    j that Vj(x) = V (tj,x). Clearly y0 = 0 and V1(x) = p1E min(D1,x) = V (t1,x) assuming a sufficiently large
    rescale factor. Suppose, by induction, that Vj−1(x) = V (tj−1,x). Consider now an arrival at state (t,x) with
    t ∈ (tj−1, tj]. This means that an arrival, if any, will be for one unit of fare j. The static policy will accept this
    request if x−1 ≥ yj−1, or equivalently if x > yj−1. However, if x > yj−1, then ∆(t−1,x) ≥ ∆V (tj−1,x) ≥ pj,
    because ∆V (t,x) is increasing in t and because yj−1 = max{y : ∆Vj−1(y) > pj} = max{y : ∆V (tj−1,x) > pj},
    by the inductive hypothesis. Conversely, if the dynamic program accepts a request, then pj ≥ ∆V (t,x) and
    therefore x > yj−1 on account of ∆V (t,x) ≥ ∆V (tj−1,x).

    We have come a long way in this chapter and have surveyed most of the models for the independent
    demand case. Practitioners and proponents of static models, have numerically compared the performance of
    static vs dynamic policies. Diwan [7], for example, compares the performance of the EMSR-b heuristic against
    the performance of the dynamic formulation for Poisson demands (21) even for cases where the aggregate

    21

    demands Dj,j = 1, . . . ,n are not Poisson. Not surprisingly, this heuristic use of (21) can underperform relative
    to the EMSR-b heuristic. However, as seen in Proposition 7, the expected revenue under the optimal dynamic
    program (25) is always at least as large as the expected revenue generated by any heuristic, including the
    EMSR-b. In addition, the dynamic program does not require assumptions about the arrival being low-to-high
    as the EMSR-b does. Even so, the EMSR-b heuristic performs very well when the low-to-high assumptions
    hold. However, when the low-to-high assumptions are relaxed, then the performance of the EMSR-b heuristic
    suffers relative to that of the dynamic program as illustrated by the following example.

    Example 5. Consider again the data of Example 4 with uniform arrival rates. Table 9 compares the perfor-
    mance V (T,c) of the compound poisson formulation (25) to the performance of the EMSR-b under standard
    nesting. Part of the gap between V b(T,c) and V (T,c) can be reduced by frequently recomputing the booking
    limits applying the EMSR-b heuristic during the sales horizon.

    c 50 100 150 200 250 300
    V b(T,c) $3,653 $6,177 $8,187 $9,942 $11,511 $12,266
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    Gap 4.8% 4.4% 3.1% 2.9% 1.8% 2.3%

    Table 9: Sub-Optimality of EMSR-b with Standard Nesting

    7.2 Bounds on V (T, c)

    We will now briefly show that the upper bound V Un (c) for Vn(c), developed in Section 5 for the static multi-fare
    model is still valid for V (T,c). The random revenue associated with the perfect foresight model is Vn(c,D)
    and can be obtained by solving the linear program (11). Notice that for all sample paths, this revenue is
    at least as large as the revenue for the dynamic policy. Taking expectations we obtain V (T,c) ≤ V Un (c) =
    EVn(c,D) =

    ∑n
    k=1(pk − pk+1)E min(D[1,k],c), where for convenience pn+1 = 0. Moreover, since dynamic

    policies do at least as well as static policies, the lower bounds obtained in Section 5 also apply to dynamic
    policies.

    8 Monotonic Fare Offerings

    The dynamic programs (20) and (21) and their counterparts (22) and (23), all implicitly assume that fares
    can be opened and closed at any time. To see how a closed fare may reopen, suppose that a(t,x) = j so set
    A(t,x) = {1, . . . ,j} is offered at state (t,x), but an absence of sales may trigger fare/action j + 1 to open as
    a(s,x) increases as the time-to-go s decreases. . This can lead to the emergence of third parties that specialize
    on inter-temporal fare arbitrage. To avoid this capacity provider may commit to a policy of never opening fares
    once they are closed. To handle monotonic fares requires modifying the dynamic programming into something
    akin to the dynamic program (8) where time was handled implicitly. Let Vj(t,x) be the maximum expected
    revenue from state (t,x) when we can offer any consecutive subset of open fares Sk = {1, . . . ,k},k ≤ j and are
    not allowed to reopen fares once they are closed. Let Wk(t,x) be the expected revenue from accepting fares
    Sk at state (t,x) and then following an optimal policy. More precisely,

    Wk(t,x) =

    k∑

    i=1

    λit[pi + Vk(t− 1,x− 1)] + (1 −
    k∑

    i=1

    λit)Vk(t− 1,x)

    = Vk(t− 1,x) + rkt −πkt∆Vk(t− 1,x)
    = Vk(t− 1,x) + πkt[pkt − ∆Vk(t− 1,x)],

    where ∆Vk(t,x) = Vk(t,x) −Vk(t,x− 1), where πkt =
    ∑k

    i=1 λit and rkt =
    ∑j

    i=1 piλit and pkt = rkt/πkt when
    πkt > 0 and pkt = 0 otherwise.

    22

    Then Vj(t,x) satisfies the dynamic program

    Vj(t,x) = max
    k≤j

    Wk(t,x) = max{Wj(t,x),Vj−1(t,x)} (

    27

    )

    with the boundary conditions Vj(t, 0) = Vj(0,x) = 0 for all t ≥ 0 and all x ∈ N for all j = 1, . . . ,n. Notice
    that the optimization is over consecutive subsets Sk = {1, . . . ,k}, k ≤ j. It follows immediately that Vj(t,x)
    is monotone increasing in j. An equivalent version of (27) for the case n = 2 can be found in Weng and
    Zheng [23]. The complexity to compute Vj(t,x),x = 1, . . . ,c for each j is O(c) so the complexity to compute
    Vj(t,x),j = 1, . . . ,n,x = 1, . . . ,c is O(nc). Since there are T time periods the overall complexity is O(ncT).
    While computing Vj(t,x) numerically is fairly simple, it is satisfying to know more about the structure of
    optimal policies as this gives both managerial insights and can simplify computations. The proof of the
    structural results are intricate and subtle, but they parallel the results for the dynamic program (8) and (21).
    The following Lemma is the counterpart to Lemma 2 and uses sample path arguments based on ideas in [23]
    to extend their results from n = 2 to general n. The proof can be found in the Appendix.

    Lemma 3 For any j ≥ 1,

    a) ∆Vj(t,x) is decreasing in x ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(t,x) is increasing in j ∈{1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    c) ∆Vj(t,x) is increasing in t, so the marginal value of capacity increases as the time-to-go increases.

    Let
    aj(t,x) = max{k ≤ j : Wk(t,x) = Vj(t,x)}.

    In words, aj(t,x) is the index of the lowest open fare that is optimal to post at state (t,x) if we are allowed
    to use any fares in Sj. Let

    Aj(t,x) = {1, . . . ,aj(t,x)}.

    Then Aj(t,x) is the optimal set of fares to open at state (j,t,x). Clearly Vi(t,x) = Vj(t,x) for all i ∈
    {aj(t,x), . . . ,j}. The following Lemma asserts that aj(t,x) is monotone decreasing in t (it is optimal to have
    fewer open fares with more time-to-go and the same inventory), monotone increasing in x (it is optimal to
    have more open fares with more inventory and the same time-to-go) and monotonically increasing in j.

    Lemma 4 aj(t,x) is decreasing in t and increasing in x and j. Moreover, aj(t,x) = k < j implies ai(t,x) = k for all i ≥ k.

    It is possible to think of the policy in terms of protection levels and in terms of stopping sets. Indeed, let
    Zj = {(t,x) : Vj(t,x) = Vj−1(t,x)}. We can think of Zj as the stopping set for fare j as it is optimal to close
    down fare j upon entering set Zj. For each t let yj(t) = max{x ∈N : (t,x) ∈ Zj+1}. We can think of yj(t) as
    the protection level for fares in Sj against higher fares. The following result is the counterpart to Theorem 2.

    Theorem 3 • Aj(t,x) is decreasing in t and increasing in x and j.

    • Z1 ⊂ Z2 ⊂ . . . ⊂ Zn.

    • yj(t) is increasing in t and in j.

    • If x ≤ yj(t) then Vi(t,x) = Vj(t,x) for all i > j.

    Proof: The properties of Aj(t,x) follow from the properties of aj(t,x) established in Lemma 4. Zj = {(t,x) :
    aj(t,x) < j}. From Lemma 4, aj(t,x) < j implies that ai(t,x) < i for all i > j, so Zj ⊂ Zi for all i > j. This

    23

    implies that yj(t) is increasing in j for any t ≥ 0. If t′ > t, then aj+1(t′,yj(t)) ≤ aj+1(t,yj(t)) < j + 1, so yj(t

    ′) ≥ yj(t). Since yj(t) ≤ yi(t) for all i > j, then x ≤ yj(t) implies Vi+1(t,x) = Vi(t,x) for all i ≥ j and
    therefore Vi(t,x) = Vj(t,x) for all i > j.

    The policy is implemented as follows: The starting state is (n,T,c) as we can use any of the fares {1, . . . ,n},
    we have T units of time to go and c is the initial inventory. At any state (j,t,x) we post fares Aj(t,x) =
    {1, . . . ,aj(t,x)}. If a unit is sold during period t the state is updated to (aj(t,x), t−1,x−1) since all fares in
    the set Aj(t,x) are allowed, the time-to-go is t− 1 and the inventory is x− 1. If no sales occur during period
    t the state is updated to (aj(t,x), t− 1,x). The process continues until either t = 0 or x = 0.

    Example 6. Consider Example 1 again with 5 fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and p5 = $15
    with independent Poisson demands with means Λ1 = 15, Λ2 = 40, Λ3 = 50, Λ4 = 55 and Λ5 = 120 and
    T = 1. The scaling factor was selected so that

    ∑5
    i=1 Λi/a < .01 resulting in T ← aT = 2, 800. We also

    assume that the arrival rates are uniform over the horizon [0,T], i.e., λj = Λj/T. In Table 10 we present
    the expected revenues Vj(T,c),j = 1, . . . , 5 and V (T,c) for c ∈ {50, 100, 150, 200, 250}. The first row is V5(c)
    from Example 1. Notice that V5(c) ≤ V5(T,c). This is because we here we are assuming uniform, rather than
    low-to-high arrivals. V (T,c) is even higher because we have the flexibility of opening and closing fares at
    will. While the increase in expected revenues [V (T,c) −V5(T,c)] due to the flexibility of opening and closing
    fares may be significant for some small values of c (it is 1.7% for c = 50), attempting to go for this extra
    revenue may invite strategic customers or third parties to arbitrage the system. As such, it is not generally
    recommended in practice.

    c 50 100 150 200 250 300 350
    V5(c) 3,426.8 5,441.3 7,188.7 8,159.1 8,909.1 9,563.9 9,625.0

    V (T,c) 3,553.6 5,654.9 7,410.1 8,390.6 9,139.3 9,609.6 9,625.0
    V5(T,c) 3,494.5 5,572.9 7,364.6 8,262.8 9,072.3 9,607.2 9,625.0
    V4(T,c) 3,494.5 5,572.9 7,364.6 7,824.9 7,825.0 7,825.0 7,825.0
    V3(T,c) 3,494.5 5,572.9 5,900.0 5,900.0 5,900.0 5,900.0 5,900.0
    V2(T,c) 3,494.5 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0
    V1(T,c) 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0

    Table 10: Expected Revenues V (T,c) with uniform arrival rates

    To obtain a continuous time formulation, we can use the same logic that lead to (20) to obtain

    ∂Vj(t,x)

    ∂t
    =

    {
    rjt −πjt∆Vj(t,x) if (t,x) /∈ Zj−1
    ∂Vj−1(t,x)

    ∂t
    if (t,x) ∈ Zj−1

    (28)

    with the same boundary conditions.

    8.1 Mark-up and Mark-down Policies

    We now go back to the broader pricing interpretation coupled with the monotonic fare formulation (27). In
    many applications the price menu pjt,j = 1, . . . ,n is time invariant, but the associated sales rates πjt,j =
    1, . . . ,n are time varying. In addition, we will assume that there is a price p0t such that π0t = 0 for all t.
    This technicality helps with the formulation as a means of turning off demand when the system runs out of
    inventory. The case p1t ≥ p2t ≥ . . . ≥ pnt and π1t ≤ π2t ≤ . . . ≤ πnt is known as the mark-up problem, while
    the case p1t ≤ p2t ≤ . . . ≤ pnt and π1t ≥ π2t ≥ . . . ≥ πnt is known as the mark-down problem. The former
    model is relevant in Revenue Management while the second is relevant in Retailing.

    For the RM formulation, the problem can be viewed as determining when to mark-up (switch from action
    j to j − 1). The optimal mark-up times are random as they depend on the evolution of sales under the
    optimal policy. Suppose that the current state is (j,t,x), so the last action was j, the time-to-go is t and the
    inventory is x. We want to determine whether we should continue using action j or switch to action j − 1.
    We know that if x > yj−1(t), then we should keep action j and if x ≤ yj−1(t) then we should close action

    24

    j. Let Zj = {(t,x) : x ≤ yj−1(t)}, then it is optimal to stop action j upon first entering set Zj. Notice
    that a mark-up occurs when the current inventory falls below a curve, so low inventories trigger mark-ups,
    and mark-ups are triggered by sales. The retailing formulation also has a threshold structure, but this time a
    mark-down is triggered by inventories that are high relative to a curve, so the optimal timing of a mark-down
    is triggered by the absence of sales. Both the mark-up and the mark-down problems can be studied from the
    point of view of stopping times. We refer the reader to Feng and Gallego [9], [10], and Feng and Xiao [11] and
    reference therein for more on the markup and markdown problems.

    9 Acknowledgments

    I acknowledge the feedback from my students and collaborators. In particular, I would like to recognize the
    contributions and feedback from Anran Li, Lin Li, and Richard Ratliff.

    25

    10 Appendix

    Proof of Lemma 1. Notice that g(y) = G(y)P(X ≥ y) +

    j≤y−1 G(j)P(X = j), while g(y − 1) = G(y −
    1)P(X ≥ y) +


    j≤y−1 G(j)P(X = j). Taking the difference yields ∆g(y) = G(y)P(X ≥ y). Notice that

    r(y) = R(y)P(X < y) + ∑

    j≥y R(j)P(X = j) while r(y − 1) = R(y − 1)P(X < y) + ∑

    j≥y R(j)P(X = j).
    Taking the difference we see that ∆r(y) = ∆R(y)P(X < y).

    Proof of Proposition 1. Let G(y) = p1y, then V1(y) = g(y) = EG(min(D1,y)), so ∆V1(y) = ∆g(y) =
    p1P(D1 ≥ y). This establishes the first part of the Proposition. To establish the second part of the Proposition
    we use the first part of Lemma 1 to show that p2E min(D2,c−y)−p2E min(D2,c−y + 1) = −p2P(D2 > c−y)
    and the second part of the Lemma 1 to show that EV1(max(x − D2,y)) − EV1(max(x − D2,y − 1)) =
    ∆V1(y)P(D2 > c−y). The second part of the Proposition then follows from putting the two parts together. To
    see the first part, let r(y) = p2c−p2E max(c−D2,y), then ∆r(y) = p2E min(D2,c−y)−p2E min(D2,c−y+1) =
    ∆R(y)P(c − D2 < y) where R(y) = −p2y, so ∆r(y) = −p2P(c − D2 < y) = −p2P(D2 > c − y). Now let
    R(y) = V1(y), then ∆r(y) = ∆V1(y)P(c−D2 < y) = ∆V1(y)P(D2 > c−y) completing the proof.

    Proof of Lemma 2: We will prove the above result by induction on j. The result is true for j = 1 since
    ∆V1(y) = p1P(D1 ≥ y) is decreasing in y and clearly ∆V1(y) = p1P(D1 ≥ y) ≥ ∆V0(y) = 0. Assume that the
    result is true for Vj−1. It follows from the dynamic programming equation (8) that

    Vj(x) = max
    y≤x

    {Wj (y,x))} ,

    where for any y ≤ x,

    Wj(y,x) = E [pj min{Dj,x−y}] + E [Vj−1 (max{x−Dj,y})]

    A little work reveals that for y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Since ∆Vj−1(y) is decreasing in y (this is the inductive hypothesis), we see that Wj(y,x) ≥ Wj(y − 1,x)
    if ∆Vj−1(y) > pj and Wj(y,x) ≤ Wj(y − 1,x) if ∆Vj−1(y) ≤ pj.

    Consider the expression

    yj−1 = max{y ∈N : ∆Vj−1(y) > pj} (29)

    where the definition of ∆Vj(y) is extend to y = 0 for all j by setting ∆Vj(0) = p1. If yj−1 ≤ x then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(yj−1,x)

    On the other hand, if x < yj−1 then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(x,x).

    In summary,

    Vj(x) = Wj(min(x,yj−1),x)

    =

    {
    Vj−1(x), if x ≤ yj−1
    E [pj min{Dj,x−yj−1}] + E [Vj−1 (max{x−Dj,yj−1})] if x > yj−1

    26

    Computing ∆Vj(x) = Vj(x) −Vj(x− 1) for x ∈N results in:

    ∆Vj(x) =

    {
    ∆Vj−1(x), if x ≤ yj−1
    E min(pj, ∆Vj−1(x−Dj)) if x > yj−1

    (30)

    We will now use this result to show that ∆Vj(x) is itself decreasing in x. Since ∆Vj(x) = ∆Vj−1(x) for
    x ≤ yj−1 and ∆Vj−1(x) is decreasing in x we only need to worry about the case x > yj−1.

    However, in this case
    ∆Vj(x) = E min(pj, ∆Vj−1(x−Dj))

    is decreasing in x since ∆Vj−1(x) is itself decreasing in x.

    We now show that ∆Vj(x) ≥ ∆Vj−1(x). For x > yj−1 we have min(pj, ∆Vj−1(x−Dj)) ≥ min(pj, ∆Vj−1(x)) =
    ∆Vj−1(x) where the inequality follows since ∆Vj−1(x) is decreasing in x and the equality since x > yj−1. Tak-
    ing expectations we see that ∆Vj(x) ≥ ∆Vj−1(x) on x > yj−1 while ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1.

    Proof of Proposition 2. We first show that ∆Vj+1(x) = ∆Vj(x) for x = 1, . . . ,yj. This follows since
    Vj+1(x) = Wj+1(x,x) = Vj(x) in this range as no capacity is made available for fare pj+1 when x ≤ yj. For
    x > yj

    Vj+1(x) = pj+1E min(x−yj,Dj+1) + EVj(max(x−Dj+1,yj)

    = pj+1

    x−yj∑
    k=1

    Pr(Dj+1 ≥ k) + Vj(yj)Pr(Dj+1 > x−yj)

    +

    x−yj∑

    k=0

    Vj(x−k)Pr(Dj+1 = k).

    Consequently, for x > yj

    ∆Vj+1(x) = pj+1Pr(Dj+1 ≥ x−yj) +
    x−yj−1∑

    k=0

    ∆Vj(x−k)Pr(Dj+1 = k) (31)

    follows from Vj(x − 1) = Vj(yk) for x = yj + 1. Since pj+1 < ∆Vj(y) for y ≤ yj, we can write ∆Vj+1(x) =∑∞ k=0 min(pj+1, ∆Vj(x−k))P(Dj+1 = k) = E min(pj+1, ∆Vj(x−Dj+1)).

    Proof of Proposition 3. Since Πn(c,k) is the difference of a concave and a linear function, Πn(c,k) it is
    itself concave. The marginal value of adding the cth unit of capacity is ∆Vn(c) − k so the cth unit increase
    profits as long as ∆Vn(c) > k. Therefore, the smallest optimal capacity is given by c(k). (Notice that c(k) + 1
    may be also optimal if ∆Vn(c(k) + 1) = k.) c(k) is decreasing in k since ∆Vn(c) is decreasing in c. Suppose
    that k = pj+1. To establish c(pj+1) = yj it is enough to show that that ∆Vn(yj) > pj+1 ≥ ∆Vn(yj + 1). By
    definition yj = max{y ∈N : ∆Vj(y) > pj+1} so ∆Vj(yj) > pj+1 ≥ ∆Vj(yj + 1). Since it is optimal to protect
    up to yj units of capacity for sale at fares j,j − 1, . . . , 1, it follows that Vn(c) = Vj(c) for all c ≤ yj, and
    consequently ∆Vn(yj) = ∆Vj(yj) > pj+1. Now ∆Vn(yj + 1) can be written as a convex combination of pj+1
    and ∆Vj(yj + 1) ≤ pj+1 which implies that ∆Vn(yj + 1) ≤ pj+1, completing the proof.

    Proof of Lemma 3: We will first show part that ∆Vj(t,x) is decreasing in x which is equivalent to showing
    that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1)] for all x ≥ 1. Let A be an optimal admission control rule starting
    from state (t,x + 1) and let B be an optimal admission control rule starting from (t,x− 1). These admission
    control rules are mappings from the state space to subsets Sk = {1, . . . ,k},k = 0, 1, . . . ,j where S0 = ∅ is
    the optimal control whenever a system runs out of inventory. Consider four systems: two starting from state
    (t,x), using control rules A′ and B′, respectively, and one each starting from (t,x + 1) and (t,x − 1), using
    control rule A and B, respectively. Our goal is to specify heuristic control rules A′ and B′ that together make
    the expected revenues of the two systems starting with (t,x) at least as large as the expected revenues from
    the systems starting at (t,x + 1) and (t,x− 1). This will imply that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1).

    27

    We will use the control rules A′ = A ∩ B and B′ = A ∪ B until the first time, if ever, the remaining
    inventory of the system (t,x) controlled by A′ is equal to the remaining inventory of the system (t,x + 1)
    controlled by A. This will happen the first time, if ever, there is a sale under A and not under A′, i.e., a sale
    under A but not under B. Let t′ be the first time this happens, if it happens before the end of the horizon,
    and set t′ = 0 otherwise. If t′ > 0 then we apply policy A′ = A and B′ = B over s ∈ [0, t′). We claim that the
    expected revenue from the two systems starting with (t,x) is the same as the expected revenue from the other
    two systems. This is because the sales and revenues up to, but before t′, are the same in the two systems.
    At t′ sales occur only for the system (t,x) controlled by B′ and the system (t,x + 1) controlled by A and the
    revenues from the two sales are identical. After the sales at t′, the inventory of the system (t,x) controlled by
    A′ becomes identical to the inventory of the system (t,x+ 1) controlled by A while the inventory of the system
    (t,x) controlled by B′ becomes identical to the inventory of the system (t,x− 1) controlled by B. Since the
    policy switches to A′ = A and B′ = B then sales and revenues are the same over [0, t′). If t′ = 0 then the
    sales of the two systems are the same during the entire horizon.

    It remains to verify that inventories don’t become negative. Prior to time t′ the systems remain balance
    in the sense that system (t,x) governed by A′ always has one unit of inventory less than system (t,x + 1)
    governed by A and system (t,x) governed by B′ has one more unit of inventory than system (t,x−1) governed
    by B. Thus the only two systems that could potential run out of inventory before t′ are A′ and B.

    Since sales under A′ = A∩B are more restricted than sales under B, the inventory of system (t,x) governed
    by A′ will always be at least one unit since at most x − 1 units of sale are allowed under B. Therefore the
    only way the system can run out of inventory is if system (t,x− 1) runs out of inventory under B before t′.
    However, in this case sales would stop under systems A′ and B, while sales will continue under B′ = A and A
    so revenues will continue to be the same until the first sale under A at which point we reached t′. This shows
    that even if the system (t,x − 1) runs out of inventory under B the two systems continue to have the same
    revenues over the entire horizon. Consequently 2∆Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1) for all x ≥ 1.

    To show that ∆Vj(t,x) is increasing in j it is enough to show that

    Vj(t,x) + Vj−1(t,x− 1) ≥ Vj(t,x− 1) + Vj−1(t,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (j,t,x−1) and B be an admission control rule for the system (j−1, t,x) Let A′ and B′ be heuristic admission
    rules applied, respectively, to the systems (j,t,x) and (j−1, t,x−1). Our goal is to exhibit heuristics A′ and B′
    such that when applied to the systems (j,t,x) and (j−1, t,x−1) they generate as much revenue as the applying
    A to (j,t,x−1) and B to (j−1, t,x). This will imply that Vj(t,x) + Vj−1(t,x−1) ≥ Vj(t,x−1) + Vj−1(t,x).

    Let A′ = A ∪ B and B′ = A ∩ B and let t′ be the first time there is a sale under A ∪ B without a
    corresponding sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets
    of two systems are equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and
    revenues under both sets of two systems are equal up to t′. At t′ there are sales for the system (j,t,x) and
    (j−1, t,x−1) that generate the same revenues. Moreover, the inventories of the two sets of two systems have
    the same inventories immediately after the sale at t′. Since the policy then switches to A′ = A and B′ = B
    then sales and revenues are the same for the two set of systems over s ∈ [0, t′). The only system in danger to
    run out of inventory is system (j,t,x) under A′ = A∪B, but that system has the same number of sales as the
    system (j,t,x− 1) under A up to t′. Therefore the system (j,t,x) has at least one unit of inventory up to t′.

    To show that ∆Vj(t,x) is increasing in t it is enough to show that

    Vj(t,x) + Vj(t− 1,x− 1) ≥ Vj(t,x− 1) + Vj(t− 1,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (t,x − 1) and B be an optimal admission control rule for the system (t − 1,x) Let A′ and B′ be heuristic
    admission rules applied, respectively, to the systems (t,x) and (t− 1,x− 1). Our goal is to exhibit heuristics
    A′ and B′ such that when applied to the systems (t,x) and (t−1,x−1) they generate as much revenue as the
    applying A to (t,x−1) and B to (t−1,x). This will imply that Vj(t,x)+Vj(t−1,x−1) ≥ Vj(t,x−1)+Vj(t−1,x).
    Let A′ = A∪B and B′ = A∩B and let t′ be the first time there is a sale under A′ without a corresponding

    28

    sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets of two systems are
    equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and revenues under both
    sets of two systems are equal up to t′. At t′ there are sales for the system (t,x) and (t−1,x) that generate the
    same revenues. Moreover, the inventories of the two sets of two systems have the same inventories immediately
    after the sale at t′. Since the policy then switches to A′ = A and B′ = B then sales and revenues are the
    same for the two set of systems over s ∈ [0, t′). The only system in danger to run out of inventory is system
    (t− 1,x− 1) under B′ = A∪B, but that system has the same number of sales as the system (t− 1,x) under
    B up to t′. Therefore the system (t− 1,x− 1) has at least one unit of inventory up to t′.

    Proof of Lemma 4. We will first show that aj(t,x) can also be characterized as aj(t,x) = max{k ≤
    j : pk ≥ ∆Vk(t − 1,x)}. The result will then follow from Lemma 3. First notice that if aj(t,x) = k < j then Vi(t,x) = Vk(t,x) for all i ∈ {k,. . . ,j}. Moreover, aj(t,x) = k < j implies that Wk(t,x) > Wk+1(t,x).
    Consequently 0 > Wk+1(t,x)−Wk(t,x) = (pk+1−∆Vk+1(t−1,x))λk+1, so pk+1 < ∆Vk+1(t−1,x). Conversely, if pk ≥ ∆Vk(t−1,x) then Wk(t,x)−Wk−1(t,x) ≥ (pk −∆Vk(t−1,x))λk ≥ 0 so Wk(t,x) ≥ Wk−1(t,x). With the new characterization we now turn to the monotonicity of aj(t,x) = max{k ≤ j : pk ≥ ∆Vk(t − 1,x)}. The monotonicity with respect to j is obvious because it expands the set over which we are maximizing. To see the monotonicity with respect to t, notice that ∆Vk(t,x) ≥ ∆Vk(t − 1,x) so k is excluded from the set whenever ∆Vk(t − 1,x) ≤ pk < ∆Vk(t,x). To see the monotonicity with respect to x, notice that ∆Vk(t − 1,x + 1) ≤ ∆Vk(t,x) ≤ pk implies that k contributes positively at state (t − 1,x + 1) whenever it contributes at (t− 1,x).

    29

    11 Terminology

    Item Description

    c capacity

    p price

    s salvage value on excess capacity after the arrival of full-fare demand (e.g. last-
    minute travel specials).

    x remaining capacity, i.e. x ∈{0, 1, …,c}
    E expected value operator

    j fare class identifier where price decreases with increasing class index, i.e. p1 ≥
    p2 ≥ .. ≥ pj

    pj demand weighted average fare class price

    D fare class demand

    y protection level for a fare class

    ya protection level obtained using EMSRa heuristic

    yb protection level obtained using EMSRb heuristic

    W(y,c) revenue given protection level y and capacity c

    r ratio of discount to full-fare price

    F cumulative density function (CDF) of continuous demand

    F−1 inverse density function of continuous demand

    b booking limit for sales of discount fares

    Vj(x) optimal expected revenue for classes {1, 2, …,j} from capacity x
    ρ penalty cost for each unit of full-fare demand that is rejected

    sj observed sales for fare j in Monte Carlo simulation

    Sk Set of highest k fares {1, . . . ,k}
    a(t,x) highest opened fare class at state (t,x)

    Zj the stopping set for fare j (where it is optimal to close down fare j upon entering
    set Zj)

    λjt arrival rate of fare j demand at time-to-go t

    Λjt expected demand for fare j over [0, t].

    Table 11: Summary of Terminology and Notation Used

    References

    [1] Bathia, A. V. and S. C. Prakesh (1973) “Optimal Allocation of Seats by Fare,” Presentation by TWA
    Airlines to AGIFORS Reservation Study Group.

    [2] Belobaba, P. P. (1987) “Airline Yield Management An Overview of Seat Inventory Control,” Transporta-
    tion Science, 21, 63–73.

    [3] Belobaba, P. P. (1989) “Application of a Probabilistic Decision Model to Airline Seat Inventory Control,”
    Operations Research, 37, 183–197.

    [4] Brumelle, S. L., J. I. McGill, T. H. Oum, M. W. Tretheway and K. Sawaki (1990) “Allocation of Airline
    Seats Between Stochastically Dependent Demands,” Transporation Science, 24, 183-192.

    [5] Brumelle, S. L. and J. I. McGill (1993) “Airline Seat Allocation with Multiple Nested Fare Classes,”
    Operations Research, 41, 127-137.

    30

    [6] Curry, R. E. (1990) “Optimal Airline Seat Allocation with Fare Nested by Origins and Destinations,”
    Transportation Science, 24, 193–204.

    [7] Diwan, S. (2010) “Performance of Dynamic Programming Methods in Airline Revenue Management.”
    M.S. Dissertation MIT. Cambridge, MA.

    [8] Chandler, S. and Ja, S. (2007) Revenue Opportunity Modeling at American Airlines. AGIFORS Reser-
    vations and Yield Management Study Group Annual Meeting Proceedings; Jeju, Korea.

    [9] Feng, Y. and G. Gallego (1995) “Optimal Starting Times of End-of-Season Sales and Optimal Stopping
    Times for Promotional Fares,” 41, 1371-1391.

    [10] Feng, Y. and G. Gallego (2000) “Perishable asset revenue management with Markovian time-dependent
    demand intensities,” Management Science, 46(7): 941-956.

    [11] Feng, Y. and B. Xiao (2000) “Optimal policies of yield management with multiple predetermined prices,”
    Operations Research, 48(2): 332-343.

    [12] Gallego, G., S. Kou and Phillips, R. (2008) “Revenue Management of Callable Products,” Management
    Science, 54(3): 550564.

    [13] Lee. C. T. and M. Hersh. (1993) “A Model for Dynamic Airline Seat Inventory Control with Multiple
    Seat Bookings,” Transportation Science, 27, 252–265.

    [14] Littlewood, K. (1972) “Forecasting and Control of Passenger Bookings.” 12th AGIFORS Proceedings:
    Nathanya, Israel, reprinted in Journal of Revenue and Pricing Management, 4(2): 111-123.

    [15] Pfeifer, P. E. (1989) “The Airline Discount Fare Allocation Problem,” Decision Science, 20, 149–157.

    [16] Ratliff, R. (2005) “Revenue Management Demand Distributions”, Presentation at AGIFORS Reservations
    and Yield Management Study Group Meeting, Cape Town, South Africa, May 2005.

    [17] Richter, H. (1982) “The Differential Revenue Method to Determine Optimal Seat Allotments by Fare
    Type,” In Proceedings 22nd AGIFORS Symposium 339-362.

    [18] Robinson, L.W. (1995) “Optimal and Approximate Control Policies for Airline Booking With Sequential
    Nonmonotonic Fare Classes,” Operations Research, 43, 252-263.

    [19] Simpson, R. (1985) “Theoretical Concepts for Capacity/Yield Management,” In Proceedings 25th AGI-
    FORS Symposium 281-293.

    [20] Talluri, K and G. van Ryzin (2004) “The Theory and Practice of Revenue Management,” Springer Sci-
    ence+Business Media, New York, USA, pg. 42.

    [21] Tematha, C., S. Polt, and and L. Suhi. (2010) “On the robustness of the network-based revenue oppor-
    tunity model,” Journal of Revenue and Pricing Management , Vol. 9, 4, 341355.

    [22] Wollmer, R. D. (1992) “An Airline Seat Management Model for a Single Leg Route When Lower Fare
    Classes Book First,” Operations Research, 40, 26-37.

    [23] Zhao, W. and Y-S Zheng (2001) “A Dynamic Model for Airline Seat Allocation with Passenger Diversion
    and No-Shows,” Transportation Science,35: 80-98.

    31

    IEOR

    4

    6

    0

    1

    : Dynamic Pricing and Revenue Management
    Midterm

    2

    010

    Professor Guillermo Gallego

    INSTRUCTIONS:

    1. Write all your answers on the question sheets. Answers written on blue books will not be
    evaluated. Show and explain your work. Points will be deducted for solutions that are not
    clearly explained.

    2. Write your name, sign the honor pledge and indicate your degree program.

    HONOR PLEDGE: I pledge that I have neither given nor received unauthorized aid during this
    examination.

    Name: Signature: Degree Program :

    1

    1. Static Model Independent Demands For the multi-fare problem with low-to-high arrivals
    we have shown that the optimal protection levels for fares {j, . . . , 1} is given by

    yj = max{y ∈N : ∆Vj(y) > pj+1} j = 1, . . . ,n− 1.

    a) What is the definition of ∆Vj(y)?

    b) What is the interpretation of ∆Vj(y)?

    c) Is ∆Vj(y) monotone increasing in y?

    d) Is ∆Vj(y) monotone increasing in j?

    e) Write an explicit expression for ∆V1(y)?

    f) Is this formula true or false?: ∆V2(x) = max{∆V1(x),E min(p1P(D[1, 2] ≥ x),p2)}

    g) For general j what is the approximation for ∆Vj(y) implied by the EMSR-b heuristic?

    2

    2. Dynamic Allocation Model: Independent Demands Consider the dynamic capacity
    allocation model

    V (t,x) = V (t− 1,x) +
    n∑

    j=1

    λjt[pj − ∆V (t− 1,x)]+.

    a) What is λjt?

    b) What is the interpretation of ∆V (t− 1,x)?

    c) Which fares will you accept at state (t,x)?

    d) What happens to a(t,x) = max{j : pj ≥ ∆V (t− 1,x)} as t increases?

    e) What happens to a(t,x) as x increases?

    f) List three disadvantages of this model?

    3

    3. Dynamic Model: Independent Demands Monotonic Fares Consider the dynamic ca-
    pacity allocation model

    Vj(t,x) = max
    k≤j

    Wk(t,x)

    where Wk(t,x) =
    ∑k

    i=1 λit[pi + Vk(t− 1,x− 1)] + (1 −
    ∑k

    i=1 λit)Vk(t− 1,x).

    a) What is the interpretation of Vj(t,x)?

    b) What is the interpretation of Wk(t,x)?

    c) Show that Wk(t,x) = Vk(t− 1,x) +
    ∑k

    i=1 λit[pi − ∆Vk(t− 1,x)].

    d) What happens to fares {k + 1, . . . ,j} if Vj(t,x) = Wk(t,x) for some k < j?

    e) Suppose Vj(t,x) = Wk(t,x) for k < j. What can you say about Vj−1(t,x)?

    f) How would you modify V1(t,x) to impose a penalty for denying capacity to high fare
    customers?

    4

    4. Choice Models and Dynamic Model with Dependent Demands Consider a choice
    model where for each set S ⊂ Sn = {1, . . . ,n}, π(S) =


    i∈S πi(S) and r(S) =


    i∈S piπi(S).

    a) What is the interpretation of π(S)?

    b) What is the interpretation of r(S)?

    c) What is the interpretation of q(S) = r(S)/π(S)?

    d) Give formulas for πj,rj and qj and uj = (rj −rj−1)/(πj −πj−1) for S = Sj = {1, . . . ,j}
    for the MNL model.

    e) Consider the dynamic program V (t,x) = V (t−1,x) + λt max0≤k≤n[rk −πk∆V (t−1,x)]
    for the MNL model. For what states (t,x) are you better off offering Sj rather than Sj−1?

    5

    5. Static Model with Dependent Demands Consider a choice model as in Problem 4 and
    suppose that there are D potential customers, where D is a random variable taking positive
    integer values. Suppose you want to allocate capacity between sets Sj+1 and Sj by protecting
    y units of capacity for sales under set Sj.

    a) What is the total demand, say Dj+1, for fares {1, . . . ,j + 1} when set Sj+1 is offered?

    b) What are the total sales under action Sj+1 if c units of capacity are available and y units
    are protected for sales under set Sj?

    c) What is the expected revenue under action Sj+1?

    d) Write an expression for sales under Sj if Dj+1 < c−y, if Dj+1 > c−y.

    e) Write an expression for the expected revenue under action Sj when Dj+1 > c−y

    f) Write an expression for the expected revenue under both actions Sj and Sj+1.

    6

    IEOR

    4

    60

    1

    : Dynamic Pricing and Revenue Management
    Midterm

    2

    010

    Professor Guillermo Gallego

    INSTRUCTIONS:

    1. Write all your answers on the question sheets. Answers written on blue books will not be
    evaluated. Show and explain your work. Points will be deducted for solutions that are not
    clearly explained

    .

    2. Write your name, sign the honor pledge and indicate your degree program.

    HONOR PLEDGE: I pledge that I have neither given nor received unauthorized aid during this
    examination.

    Name: Signature: Degree Program :

    1

    1. Static Model Independent Demands For the multi-fare problem with low-to-high arrivals
    we have shown that the optimal protection levels for fares {j, . . . , 1} is given by

    yj = max{y ∈N : ∆Vj(y) > pj+1} j = 1, . . . ,n− 1.

    a) What is the definition of ∆Vj(y)? Definition: ∆Vj(y) = Vj(y) −Vj(y − 1) for y ≥ 1.
    b) What is the interpretation of ∆Vj(y)? Interpretation: Expected marginal seat value.

    c) Is ∆Vj(y) monotone increasing in y?

    No: It is decreasing in y.

    d) Is ∆Vj(y) monotone increasing in j?

    Yes.

    e) Write an explicit expression for ∆V1(y)?

    ∆V1(y) = p1P(D1 ≥ y).
    f) Is this formula true or false?: ∆V2(x) = max{∆V1(x),E min(p1P(D[1, 2] ≥ x),p2)}

    Yes

    g) For general j what is the approximation for ∆Vj(y) implied by the EMSR-b heuristic?

    ∆Vj(y) ‘ qjP(D[1,j] ≥ y) where qj =
    ∑j
    k=1 pkE[Dk]/ED[1,j].

    2. Dynamic Allocation Model: Independent Demands Consider the dynamic capacity
    allocation model

    V (t,x) = V (t− 1,x) +
    n∑
    j=1

    λjt[pj − ∆V (t− 1,x)]+.

    a) What is λjt? It is the arrival rate of fare j at time t.

    b) What is the interpretation of ∆V (t− 1,x)?
    It is the marginal value of the xth unit of capacity at time t− 1.

    c) Which fares will you accept at state (t,x)?

    Accept those fares in the set {j : pj ≥ ∆V (t− 1,x)}.
    d) What happens to a(t,x) = max{j : pj ≥ ∆V (t− 1,x)} as t increases?

    As the time-to-go increases a(t,x) decreases.

    e) What happens to a(t,x) as x increases?

    As capacity increases a(t,x) increases.

    f) List three disadvantages of this model?

    Allows fares to open and reopen. Assumes Poisson arrival rates. Assumes independent
    demands.

    2

    3

    . Dynamic Model: Independent Demands Monotonic Fares Consider the dynamic ca-
    pacity allocation model

    Vj(t,x) = max
    k≤j

    Wk(t,x)

    where Wk(t,x) =
    ∑k
    i=1 λit[pi + Vk(t− 1,x− 1)] + (1 −

    ∑k
    i=1 λit)Vk(t− 1,x).

    a) What is the interpretation of Vj(t,x)?

    It is the maximum expected revenue from state (t,x) where only fares {j, . . . , 1} are
    allowed and when closing a fare forces it to remain closed until the end of the horizon.

    b) What is the interpretation of Wk(t,x)?

    It is the maximum expected revenue of using action Sk at state (t,x) and then following
    an optimal policy thereafter.

    c) Show that Wk(t,x) = Vk(t− 1,x) +
    ∑k
    i=1 λit[pi − ∆Vk(t− 1,x)].

    This is simple algebra reorganizing the terms in the definition of Wk(t,x).

    d) What happens to fares {k + 1, . . . ,j} if Vj(t,x) = Wk(t,x) for some k < j? All such fares are closed and will remain closed.

    e) Suppose Vj(t,x) = Wk(t,x) for k < j. What can you say about Vj−1(t,x)?

    Then Vj−1(t,x) = Vk(t,x).

    f) How would you modify V1(t,x) to impose a penalty for denying capacity to high fare
    customers?

    I would write V1(t,x) = p1E min(D1(t),x) −ρE(D1(t) −x)+.

    3

    4. Choice Models and Dynamic Model with Dependent Demands Consider a choice
    model where for each set S ⊂ Sn = {1, . . . ,n}, π(S) =


    i∈S πi(S) and r(S) =


    i∈S piπi(S).

    a) What is the interpretation of π(S)?

    It is the probability that the customer selects an item in S rather than the outside
    alternative.

    b) What is the interpretation of r(S)?

    It is the expected revenue when S is offered.

    c) What is the interpretation of q(S) = r(S)/π(S)?

    It is the average fare assuming something is sold.

    d) Give formulas for πj,rj and qj and uj = (rj −rj−1)/(πj −πj−1) for S = Sj = {1, . . . ,j}
    for the MNL model.

    πj = π(Sj),rj = r(Sj). For the MNL model uj =
    pj−rj−1
    1−πj−1

    .

    e) Consider the dynamic program V (t,x) = V (t−1,x) + λt max0≤k≤n[rk −πk∆V (t−1,x)]
    for the MNL model. For what states (t,x) are you better off offering Sj rather than Sj−1?

    For states (t,x) such that ∆V (t,x) ≤ uj.

    5. Static Model with Dependent Demands Consider a choice model as in Problem 4 and
    suppose that there are D potential customers, where D is a random variable taking positive
    integer values. Suppose you want to allocate capacity between sets Sj+1 and Sj by protecting
    y units of capacity for sales under set Sj.

    a) What is the total demand, say Dj+1, for fares {1, . . . ,j + 1} when set Sj+1 is offered? It
    is binomial with parameters D and πj+1.

    b) What are the total sales under action Sj+1 if c units of capacity are available and y units
    are protected for sales under set Sj? min(c−y,Dj+1).

    c) What is the expected revenue under action Sj+1?

    It is qj+1E min(c−y,Dj+1).
    d) Write an expression for sales under Sj if Dj+1 < c−y, if Dj+1 > c−y.

    If Dj+1 < c−y then we run out of customers and sales under Sj will be zero. Otherwise sales under Dj will be min(y,Uj(y)) where Uj(y) is binomial with parameters (Dj+1 − c + y)+, θj = πj/πj+1.

    e) Write an expression for the expected revenue under action Sj when Dj+1 > c − y It is
    qjE min(y,Uj(y)).

    f) Write an expression for the expected revenue under both actions Sj and Sj+1.

    Just add: qj+1E min(c−y,Dj+1) + qjE min(y,Uj(y)).

    4

    IEOR

    4

    60

    1

    : Dynamic Pricing and Revenue Management
    Midterm

    2

    011

    Professor Guillermo Gallego

    INSTRUCTIONS:

    1. Write all your answers on the question sheets. Answers written on blue books will not be
    evaluated. Show and explain your work. Points will be deducted for solutions that are not
    clearly explained

    .

    2. Write your name, sign the honor pledge and indicate your degree program.

    HONOR PLEDGE: I pledge that I have neither given nor received unauthorized aid during this
    examination.

    Name: Signature: Degree Program :

    1

    1. Static Model Independent Demands Consider the two fare problem with capacity c, fares
    p2 < p1 and independent demand D2 and D1 with fare 2 demand arriving first.

    a) Suppose you have perfect foresight and can anticipate the value of D1. How many units
    would you protect for fare 1?

    b) Give an expression for the optimal revenue revenue for the two fare problem assuming
    perfect foresight.

    c) Give an expression for the optimal revenue for the n-fare perfect foresight model.

    d) How would you modify the formula for the case n = 2 if there is known demand D0 at
    salvage value s < p2?

    2. Dynamic Allocation Model: Independent Demands Consider the dynamic capacity
    allocation model

    V (t,x) = V (t− 1,x) +
    n∑

    j=1

    λjt[pj − ∆V (t− 1,x)]+.

    Let πtj =
    ∑j

    k=1 λkt and rtj =
    ∑j

    k=1 pkλkt.

    a) Argue that fare j should be closed at state (t,x) whenever

    ∆V (t− 1,x) > pj.

    Used this to show that the optimal set of fares that should be open at state (t,x) is
    Sa(t,x) = {1, . . . ,a(t,x)} where a(t,x) = max{j : pj ≥ ∆V (t− 1,x)}.

    b) What happens to the set of open fares Sa(t,x) if x increases? If t increases?

    c) Let Vn(c) be the value function for the independent demand model that suppresses time
    and assumes that the fares arrive from low-to-high. Consider now a dynamic model with
    arrival rates λtj = E[Dj]/T, 0 ≤ t ≤ T for all j = 1, . . . ,n. Argue intuitively why the
    value function V (T,c) for this model should be at least as large as Vn(c).

    d) Suppose you are an airline that leases planes on a day to day basis. For a certain route
    you are offered the choice of leasing a plane with capacity c = 100 or a plan where half of
    the time you operate an aircraft with capacity 90 and half of the time one with capacity
    110. If the two plans are equally costly to lease and operate, which plan would you prefer?

    Since V (T,c) is concave in c it is better to have a plane with capacity c = 100.

    3

    . Efficient Sets Finding efficient fares for a general choice model requires solving parametric
    linear programs with exponentially many variables, one for each of the 2n subsets of {1, . . . ,n}.
    A heuristic is given below. The heuristic assumes that for any subset S ⊂{1, . . . ,n} we know
    π(S) =


    k∈S πk(S) and r(S) =


    k∈S pkπk(S), with π(∅) = r(∅) = 0.

    Algorithm

    – Step 1. Set S0 = ∅ and find the set of size k = 1 that maximizes

    r(S) −r(∅)
    π(S) −π(∅)

    .

    Label this set S1 and set k = 2.

    – Step 2. While k ≤ n do: find the set of size k that maximizes

    r(S) −r(Sk−1)
    π(S) −π(Sk−1)

    ,

    label the set Sk and set k = k + 1.

    2

    S π(S) r(S)
    ∅ 0% $0
    {1} 10.0% $10.00
    {2} 15.0% $12.00
    {3} 25.0% $15.00
    {12} 20.0% $17.50
    {13} 30.0% $21.00
    {23} 35.00% $23.50
    {123} 42.50% $31.00

    Table 1: Data for Problem 3

    a) Apply the heuristic to the data set in Table 1 and find the sets S1,S2,S3.

    b) Suppose someone claims that set {1, 3} is efficient. Prove them wrong by finding a convex
    combination of sets S2 and S3 (obtained by the algorithm) that consumes capacity with
    probability 30% but produces revenue higher than $21.00.

    c) What convex combination of S1,S2,S3 would you use to maximize revenues if you can
    consume capacity with probability 15%? I would put weights .5, .5 and 0. I would then
    consume capacity with probability .15 and have 13.75 in revenues.

    4. Static Model Dependent Demands Suppose there are two fares p1 > p2 for a flight with
    capacity c = 100 and that demands are derived from a basic attraction model (BAM) where
    fare 1 has attractiveness v1 = 1, fare 2 has attractiveness v2 = 1 and the outside alternative
    has attractiveness v0 = 1.

    a) Suppose that the number of potential customers is Poisson with parameter λ = 200.
    What is the distribution of demand under action S1 = {1}? Under action S2 = {1, 2}?

    b) Suppose you offer action S2. What is the probability that an arriving customer will buy
    fare 1? fare 2?

    c) What is the average revenue per arriving customer under action S2? What is the average
    revenue per sale under action S2?

    d) Suppose we protect y units for action S1. Write an expression for the expected revenue
    under action S2 before it is closed?

    e) What is the distribution of demand under action S1 once action 2 is closed? Give this in
    terms of D2, c and y.

    f) What is the expected revenue under action S1?

    5. Dynamic Choice Models with Dependent Demands Consider a choice model where for
    each set S ⊂ Sn = {1, . . . ,n}, π(S) =


    i∈S πi(S) and r(S) =


    i∈S piπi(S).

    a) Write down the formula for the value function V (t,x) assuming you do not know which
    sets are efficient.

    b) At state (t,x), what problem do you need to solve to figure out which set to offer?

    c) Suppose the efficient fares are S0,S1, . . . ,Sn and that you are given a graph of (πj,rj),j =
    1, . . . ,n where πj = π(Sj) and rj = r(Sj). How would you visually obtain the optimal
    set to offer at state (t,x)?

    d) Continue with the logic of part d) to argue why you may need to open fares as t decreases
    for fixed x and close fares as x decreases for fixed t.

    3

    6. Deterministic Static Pricing with Two Market Segments

    Suppose there are two market segments (leisure and business) and that demand from the
    business segment is D1 = 60 at p1 = $1, 000. Suppose further that the demand from the
    leisure segment is deterministic and price sensitive and given by D2(p) = 600 −p for values of
    p ∈{0, 1, . . . , 600}. Assume capacity is c = 100.

    a) Suppose that demand from the leisure segment arrives before demand from the business
    segment. How many units will you protect for the business sector? How would you set
    the discounted fare? How much money would you make under this scheme?

    b) Reconsider the revenue calculations of part a) under the assumption that demand from
    both segments arrive at the same time with both segments competing for the capacity
    allocated at the discounted fare. Assume that each customer willing to buy the discounted
    fare is equally likely to get it. Business customers unable to obtain capacity at the
    discounted fare will then buy capacity at p1. Hint: Remember to apply the booking limit
    on sales at the discounted fare. Is there a better booking limit?

    c) Suppose now that we set the discounted fare at p = 450 under the assumptions of part
    b). How many leisure customers will be willing to buy at this fare? How many business
    customers would be willing to buy at this fare?

    to the business segment with probability 60/210 = 2/7.

    d) Suppose that each customer willing to buy at p = 450 is equally likely to get it and
    that capacity is non transferable. How much capacity will you make available for the
    discounted fare to maximize revenues assuming that business customer unable to secure
    capacity at $450 will buy at $1,000? How much money would you make?

    e) What happens to the solution of part d) if capacity is transferable and there is a secondary
    market where leisure customers who secured capacity at $450 can sell it to business
    customers for $800?

    4

    IEOR

    4

    60

    1

    : Dynamic Pricing and Revenue Management
    Midterm

    2

    011

    Professor Guillermo Gallego

    INSTRUCTIONS:

    1. Write all your answers on the question sheets. Answers written on blue books will not be
    evaluated. Show and explain your work. Points will be deducted for solutions that are not
    clearly explained

    .

    2. Write your name, sign the honor pledge and indicate your degree program.

    HONOR PLEDGE: I pledge that I have neither given nor received unauthorized aid during this
    examination.

    Name: Signature: Degree Program :

    1

    1. Static Model Independent Demands Consider the two fare problem with capacity c, fares
    p2 < p1 and independent demand D2 and D1 with fare 2 demand arriving first.

    a) Suppose you have perfect foresight and can anticipate the value of D1. How many units
    would you protect for fare 1?

    Answer: y = min(c,D1)

    b) Give an expression for the optimal revenue revenue for the two fare problem assuming
    perfect foresight.

    Answer: p1 min(D1,c) + p2 min(D2, (c−D1)+)
    c) Give an expression for the optimal revenue for the n-fare perfect foresight model.

    Answer:
    ∑n

    k=1 pk min(Dk, (c−D[1,k − 1])
    +)

    d) How would you modify the formula for the case n = 2 if there is known demand D0 at
    salvage value s < p2?

    Answer: p1 min(D1,c) + p2 min(D2, (c−D1)+) + s min(D0, (c−D1 −D2)+)

    2. Dynamic Allocation Model: Independent Demands Consider the dynamic capacity
    allocation model

    V (t,x) = V (t− 1,x) +
    n∑

    j=1

    λjt[pj − ∆V (t− 1,x)]+.

    a) Argue that fare j should be closed at state (t,x) whenever

    ∆V (t− 1,x) > pj.

    Used this to show that the optimal set of fares that should be open at state (t,x) is
    Sa(t,x) = {1, . . . ,a(t,x)} where a(t,x) = max{j : pj ≥ ∆V (t− 1,x)}.
    Answer: If a fare with ∆V (t−1,x) > pj is accepted it will contributes negatively towards
    the expected revenue. The only fares that contribute positievly are those in Sa(t,x).

    b) What happens to the set of open fares Sa(t,x) if x increases? If t increases?

    Answer: As x increases a(t,x) increases so more fare should be open. If t increases then
    a(t,x) decreases so fewer fares should be open.

    c) Let Vn(c) be the value function for the independent demand model that suppresses time
    and assumes that the fares arrive from low-to-high. Consider now a dynamic model with
    arrival rates λtj = E[Dj]/T, 0 ≤ t ≤ T for all j = 1, . . . ,n. Argue intuitively why the
    value function V (T,c) for this model should be at least as large as Vn(c).

    Answer: The arrival rates are now uniform so we have an opportunity to sell higher fares
    from the outset. This should intuitvely improve revenues.

    d) Suppose you are an airline that leases planes on a day to day basis. For a certain route
    you are offered the choice of leasing a plane with capacity c = 100 or a plan where half of
    the time you operate an aircraft with capacity 90 and half of the time one with capacity
    110. If the two plans are equally costly to lease and operate, which plan would you prefer?

    Since V (T,c) is concave in c it is better to have a plane with capacity c = 100.

    3

    . Efficient Sets Finding efficient fares for a general choice model requires solving parametric
    linear programs with exponentially many variables, one for each of the 2n subsets of {1, . . . ,n}.
    A heuristic is given below. The heuristic assumes that for any subset S ⊂{1, . . . ,n} we know
    π(S) =


    k∈S πk(S) and r(S) =


    k∈S pkπk(S), with π(∅) = r(∅) = 0.

    Algorithm

    2

    – Step 1. Set S0 = ∅ and find the set of size k = 1 that maximizes

    r(S) −r(∅)
    π(S) −π(∅)

    .

    Label this set S1 and set k = 2.

    – Step 2. While k ≤ n do: find the set of size k that maximizes

    r(S) −r(Sk−1)
    π(S) −π(Sk−1)

    ,

    label the set Sk and set k = k + 1.

    S π(S) r(S)
    ∅ 0% $0
    {1} 10.0% $10.00
    {2} 1

    5

    .0% $12.00
    {3} 25.0% $15.00
    {12} 20.0% $17.50
    {13} 30.0% $21.00
    {23} 35.00% $23.50
    {123} 42.50% $31.00

    Table 1: Data for Problem 3

    a) Apply the heuristic to the data set in Table 1 and find the sets S1,S2,S3.

    Answer: The procedure selects first S1 = {1}, then S2 = {1, 2} and finally S3 = {1, 2, 3}.
    b) Suppose someone claims that set {1, 3} is efficient. Prove them wrong by finding a convex

    combination of sets S2 and S3 (obtained by the algorithm) that consumes capacity with
    probability 30% but produces revenue higher than $21.00.

    Answer: Given weight 5/9 to S2 and weigth 4/9 to S3 results in revenue 23.5 and con-
    sumption 30%, so this combination is better than offering {1, 3}.

    c) What convex combination of S1,S2,S3 would you use to maximize revenues if you can
    consume capacity with probability 15%? I would put weights .5, .5 and 0. I would then
    consume capacity with probabiltiy .15 and have 13.75 in revenues.

    4. Static Model Dependent Demands Suppose there are two fares p1 > p2 for a flight with
    capacity c = 100 and that demands are derived from a basic attraction model (BAM) where
    fare 1 has attractiveness v1 = 1, fare 2 has attractiveness v2 = 1 and the outside alternative
    has attractiveness v0 = 1.

    a) Suppose that the number of potential customers is Poisson with parameter λ = 200.
    What is the distribution of demand under action S1 = {1}? Under action S2 = {1, 2}?
    Answer: Demand under action 1 is Poisson with rate λv1/(v0 +v1) = 100. Demand under
    action 2 is Poisson with rate λ(v1 + v2)/(v0 + v1 + v2) = 400/3.

    b) Suppose you offer action S2. What is the probability that an arriving customer will buy
    fare 1? fare 2?

    Answer: The probability that an arriving customer will buy fare 1 is v1/v[0, 2] = 1/3, the
    probability that he will buy fare 2 is v2/v[0, 2] = 1/3.

    c) What is the average revenue per arriving customer under action S2? What is the average
    revenue per sale under action S2?

    Answer: The average revenue per arriving customer is r2 = (p1 + p2)/3. The average
    revenue per sale is q2 = (p1 + p2)/2.

    3

    d) Suppose we protect y units for action S1. Write an expression for the expected revenue
    under action S2 before it is closed?

    Answer: Expected revenues are q2E min(c−y,S2).
    e) What is the distribution of demand under action S1 once action 2 is closed? Give this in

    terms of D2, c and y.

    Answer: Demand is conditionally binomial with parameters (D2+y−c)+ and θ = π1/π2 =
    3/4.

    f) What is the expected revenue under action S1? Answer:

    p1E min(Bin(D2 + y − c)+,θ), max(y,c−D2)).

    5. Dynamic Choice Models with Dependent Demands Consider a choice model where for
    each set S ⊂ Sn = {1, . . . ,n}, π(S) =


    i∈S πi(S) and r(S) =


    i∈S piπi(S).

    a) Write down the formula for the value function V (t,x) assuming you do not know which
    sets are efficient.

    Answer:
    V (t,x) = V (t− 1,x) + max

    S⊂N
    [r(S) −π(S)∆V (t− 1,x)].

    b) At state (t,x), what problem do you need to solve to figure out which set to offer?

    Answer: We need to find the set S ⊂ N that maximizes r(S) − ∆V (t− 1,x)π(S).
    c) Suppose the efficient fares are S0,S1, . . . ,Sn and that you are given a graph of (πj,rj),j =

    1, . . . ,n where πj = π(Sj) and rj = r(Sj). How would you visually obtain the optimal
    set to offer at state (t,x)?

    Answer: I would draw the line α∆V (t−1,x) and then look at the different points πj and
    look at which point the difference between rj and ∆V (t− 1,x)πj is the largest.

    d) Continue with the logic of part d) to argue why you may need to open fares as t decreases
    for fixed x and close fares as x decreases for fixed t.

    Answer: If t decreases without a sale then the marginal value goes down and that would
    shift the optimal j to the right resulting in more open fares. If x decreases through sales
    then the marginal value goes up and that shifts the optimal to the left resulting in fewer
    open fares.

    6. Deterministic Static Pricing with Two Market Segments

    Suppose there are two market segments (leisure and business) and that demand from the
    business segment is D1 = 60 at p1 = $1, 000. Suppose further that the demand from the
    leisure segment is deterministic and price sensitive and given by D2(p) = 600 −p for values of
    p ∈{0, 1, . . . , 600}. Assume capacity is c = 100.

    a) Suppose that demand from the leisure segment arrives before demand from the business
    segment. How many units will you protect for the business sector? How would you set
    the discounted fare? How much money would you make under this scheme?

    Answer: I would protect y = 60 units of capacity for the business fare and would price
    the leisure segment at p = 560. At that price I would sell the 40 units of capacity at
    the leisure segment making $22,400 from that segment plus $60,000 from the business
    segment for a total of $82,400.

    b) Reconsider the revenue calculations of part a) under the assumption that demand from
    both segments arrive at the same time with both segments competing for the capacity
    allocated at the discounted fare. Assume that each customer willing to buy the discounted
    fare is equally likely to get it. Business customers unable to obtain capacity at the

    4

    discounted fare will then buy capacity at p1. Hint: Remember to apply the booking limit
    on sales at the discounted fare. Is there a better booking limit?

    Answer: If both demands arrive at the same time we would see 60 customers from the
    business segment and 40 from the leisure segment willing to purchase capacity at the
    discounted fare. Since only 40 units are available at this fare, there will be 16 expected
    sales to leisure and 24 to business customers. That will leave us with 36 customers buying
    at 1000 so the total revenue is $58,400. If the booking limit is zero then 60 tickets are
    sold at $1,000 improving the revenues to $60,000.

    c) Suppose now that we set the discounted fare at p = 450 under the assumptions of part
    b). How many leisure customers will be willing to buy at this fare? How many business
    customers would be willing to buy at this fare?

    Answer: At p = 450, there will be 150 leisure customers and 60 business customers willing
    to buy at this fare. Thus a low fare ticket will go to the leisure segment with probability
    15/21 = 5/7 and to the business segment with probability 60/210 = 2/7.

    d) Suppose that each customer willing to buy at p = 450 is equally likely to get it and
    that capacity is non transferable. How much capacity will you make available for the
    discounted fare to maximize revenues assuming that business customer unable to secure
    capacity at $450 will buy at $1,000? How much money would you make?

    Answer: I would make 56 units of capacity available at $450. Then 40 units will go to
    the leisure segment and 16 to the business segment. This would leave me with 44 units
    of capacity and 44 business customers to which I can sell at fare p1 = $1000. The total
    results in revenue $69,200

    e) What happens to the solution of part d) if capacity is transferable and there is a secondary
    market where leisure customers who secured capacity at $450 can sell it to business
    customers for $800?

    Answer: In this case all 56 units sold at $450 go to the business segment, leaving us with
    only 4 customers willing to buy capacity at p1 = $1, 000. The revenues then drop to
    $29,200.

    5

    DynamicPricing and
    Revenue

    Management

    IEOR 4601 Spring 2013

    Professor Guillermo Gallego
    Class: Monday and Wednesday 11:40-12:55pm
    Office Hours: Wednesdays 3:30-4:30pm
    Office Location: 820 CEPSR
    E-mail: gmg2@columbia.edu

    Why Study Dynamic Pricing and Revenue
    Management?

    ¡  Revenue Management had its origins in the
    airline industry and is one of the most
    successful applications of Operations
    Research to decision making

    ¡  Pricing and capacity allocation decisions
    directly impact the bottom line

    ¡  Pricing transparency and

    competition

    make
    pricing and capacity allocation decisions
    more difficult and more important

    Applications of Dynamic Pricing and
    Revenue Management

    ¡  Capacity allocation of limited, perishable,
    resources to different fare

    classes

    l  Airlines, hotels, car rentals, cruises, travel

    packages, tickets for events
    ¡  Design and pricing of products

    l  Fare

    restrictions

    and pricing
    l  Consumption and fulfillment options
    l  Upgrades, downgrades and upsells

    ¡  Pricing under competition
    l  Electronic-commerce

    Objectives of this course
    ¡  Understand the critical tradeoffs and

    decisions in Revenue Management
    ¡  Learn how to

    l  Monitor and control product availability for single
    and multiple resources

    l  Overbook limited resources when customers
    shows are random

    l  Use upgrades, upsells and real options to improve

    revenues

    l  Price under competition
    l  Improve on the current practice of Revenue

    Management

    “Physics should be explained as simply as possible, but
    no simpler.”

    Albert Einstein

    Professor Gallego’s experience and
    background on subject

    ¡  Author of seminal papers on dynamic
    pricing and revenue management

    ¡  Winner of several prices from academia
    and industry related to work on Revenue
    Management

    ¡  Consultant for airlines and RM solution
    providers

    ¡  Consultant for other users of Revenue
    Management

    Readings
    ¡  Class Notes

    l  I will provide with notes of the different
    topic we cover in class

    ¡  Textbook
    l  R.L. Phillips, Pricing and Revenue

    Optimization, Stanford University Press,
    2005, ISBN 0-8047-4698-2.

    ¡  References
    l  K.T. Talluri and G.J. Van Ryzin, The Theory

    and Practice of Revenue Management,
    Springer, 2005, ISBN 0-387-24376-3.

    l  Assigned papers

    Prerequisites and Grading

    ¡  Prerequisites
    l  Probability and Statistics at the level of IEOR

    4150
    l  Deterministic Models at the level of IEOR 4003

    ¡  Corequisites: Stochastic Models IEOR 4106
    ¡  Grading

    l  Assignments 20%
    l  Midterm 35%
    l  Final 45%

    Introduction to Revenue Management

    ¡  Revenue Management refers to the
    strategy and tactics used by perishable
    capacity providers to allocate capacity to
    different fare classes or market segments
    to maximize expected revenues. (See
    Chapter 6 in Phillips.)

    ¡  RM is often practice when
    l  Sellers have fixed stock of perishable capacity
    l  Customers book capacity prior to usage
    l  Seller offers a sets of fare classes
    l  Seller can change the availability of fare

    classes

    History of Revenue Management

    ¡  Prior to 1978 the Airline Industry was
    heavily regulated

    ¡  In the early 80’s the industry was
    deregulated to encourage new entrants

    ¡  Low-cost carriers such as People Express
    started encroaching into key markets of
    large carriers

    ¡  American Airline dilemma:
    l  Match fares and lose money
    l  Keep fares and lose customers

    AA’s Response to People Express

    ¡  Ultimate Super Saver Discount Fare
    l  Same fare as People Express
    l  Passenger must buy at least two weeks

    prior to departure
    l  Stay at his destination over a Saturday

    night
    ¡  AA restricted the number of

    discount seats sold on each flight to
    save seats for full-fare passengers

    Rational and Impact of Strategy

    ¡  Product Design
    l  Imposing restrictions that appealed to the

    leisure segment without cannibalizing the
    business segment

    ¡  Capacity Allocation
    l  Carefully control capacity to maximize

    revenues

    ¡  Strategy started in January 85
    l  PE was struggling by March
    l  PE was at the verge of bankruptcy by August

    Post-mortem

    ¡  People Express was bought by
    Texas Air for 10% of the market
    value it had enjoyed a year before

    ¡ “We had great people, tremendous
    value, terrific growth. We did a lot
    of things right. But we didn’t get
    our hands around the yield
    management and automation
    issues.” Donald Burr CEO of PE

    RM: The System Context

    ¡  AA was based on a computerized
    reservation system (CRS) called Sabre
    developed in 1963. This system:
    l  Replaced index cards to manage reservations
    l  Sabre is also a GDS (global distribution

    system) that allowed AA to distribute its
    products and fares globally

    ¡  Other GDSs: Amadeus, Galileo, Worldspan.

    RM Constraints Imposed by Systems

    ¡  AA’s used Sabre’s Computerized
    Reservation System as the backbone to
    Revenue Management
    l  The reservation system served as a repository

    of all the bookings that have been accepted for
    future flights

    l  The CRS also contains the controls that specify
    how many bookings from different fare classes
    the airline will accept on future flights

    ¡  Remember: RM systems were developed
    in the context of existing CRSs.

    Levels of Revenue Management

    ¡  Strategic:
    l  Market segmentation (leisure vs business)
    l  Product design (restrictions, fares, options)
    l  Pricing (Static vs. Dynamic)

    ¡  Tactical:
    l  Calculate and updated booking limits

    ¡  Booking Control:
    l  Determine which booking to accept and which

    to reject based on booking limits

    Strategic Revenue Management

    ¡  Design low fares to increase sales without
    cannibalizing full fare demand
    l  Time of Purchase Restrictions

    ¡  Advance purchase requirements
    l  Traveling Restrictions

    ¡  Saturday night stays
    l  High cancellation and change penalties

    ¡  Other opportunities
    l  Contingent options on capacity
    l  Flexible and callable products

    Tactical Revenue Management

    ¡  Resources
    l  Units of capacity

    ¡  Seats on a flight
    ¡  Hotel capacity for a specific night

    ¡  Products
    l  What consumers seek to purchase

    ¡  May involve one or more resources

    ¡  Fares
    l  A combination of a price and a set of

    restrictions

    Tactical Definition of RM

    ¡  A supplier controls a set of resources with
    fixed and perishable capacity, a portfolio
    of products consisting of combinations of
    one or more of the resources, and a set of
    fare classes associated with each of the
    products. The tactical revenue
    management problem is to chose which
    fare classes should be open and which
    closed for sale at each moment to
    maximize total revenue.

    Components of Tactical RM

    ¡  Capacity Allocation
    l  How many customers from different

    fare classes should be allowed to book?
    ¡  Network Management

    l  How should bookings be managed
    across a network of resources?

    ¡  Overbooking
    l  How many total bookings should be

    accepted for a product when there are
    cancellations and show uncertainty?

    Booking Controls

    ¡  Limits on bookings for different fare
    classes:
    l  Example: An airline receives a B-class

    request for 3 seats departing in two
    weeks. The current B-class booking
    limit is two seats. As a result, the
    request is rejected

    Booking Limits

    ¡  Nesting Controls:
    l  Label the fare classes so that 1 is the highest

    fare class and n is the lowest fare class. For any
    i let bi denote the nested booking limit for class
    i.

    l  Protection Levels:

    l  Updates: If x units are sold in a transaction

    nbbb ≥≥≥ 21

    1,2,1,11 −=−= + nibby ii 

    1,2,1),0,max( −=−← nixbb ii 

    Nested Booking Limits (Example)

    Booking Limits Protection Levels Requests

    1 2 3 4 5 1 2 3 4 5 Seats Class Action

    1 100 73 12 4 0 27 88 96 100 100 2 5 Reject

    2 100 73 12 4 0 27 88 96 100 100 5 2 Accept

    3 95 68 7 0 0 27 88 95 95 95 1 2 Accept

    4 94 67 6 0 0 27 88 94 94 94 1 4 Reject

    5 94 67 6 0 0 27 88 94 94 94 3 3 Accept

    6 91 64 3 0 0 27 88 91 91 91 4 3 Reject

    7 91 64 3 0 0 27 88 91 91 91 2 3 Accept

    8 89 62 1 0 0 27 88 89 89 89

    Is RM successful?

    ¡  By most measures (revenues relative to
    resources) it has been a success at most
    major airline, hotel, rental car companies.
    l  Why have major airlines have been losing

    money?
    ¡  Costs are 25-30% higher per mile, so even though

    larger carriers bring in about 25% more revenue
    per mile the cost disadvantage is overwhelming

    l  What can be done?
    ¡  Cost costs
    ¡  Improve RM systems

    l  Big move from independent to dependent demand
    models

    RM and Price Discrimination

    ¡  Price discrimination exists when sales of identical goods or
    services are transacted at different prices from the same
    provider.

    ¡  A feature of monopolistic or oligopolistic markets where
    market power can be exercised.

    ¡  Requires market segmentation and means to discourage
    discount customers becoming resellers.
    l  This is achieved by fences to keep segments separate.

    ¡  Price discrimination is more common in services where
    resale is not possible.

    ¡  Price discrimination can also be seen when the
    requirement of identical goods is relaxed.
    l  Premium products have price differential not explained by production

    costs.

    Taxonomies of Price Discrimination

    ¡  First degree: requires selling at maximum willingness to
    pay

    ¡  Second degree: quantity discounts (sellers not able to
    differentiate consumer types)

    ¡  Third degree: Prices vary by attributes (e.g., senior
    discounts)

    ¡  Fourth degree: Prices are the same but costs are different
    (reverse discrimination)

    ¡  Alternative taxonomy:
    l  Complete discrimination (like first degree)
    l  Direct discrimination: seller conditions price on some attribute (like

    third degree)
    l  Indirect discrimination: the seller relies on some proxy such as

    quantity discounts (like second degree)

    RM and Price Discrimination

    ¡  Differentiating by time-of-purchase and imposing traveling
    restrictions like Saturday night stays is a form of second
    degree or indirect discrimination.

    ¡  Selling premium seats is another form of second degree or

    indirect discrimination.
    l  Eg., uncomfortable second class seats on trains to entice

    wealthier people to purchase first class seats.
    l  Advance seat selection, mileage accrual, use of lounge, and

    priority boarding may be forms of second and/or fourth
    degree discrimination.

    Other Examples of Price Discrimination

    ¡  Retail price discrimination is in violation of the Robinson-
    Patman Act (1936)

    ¡  Coupons
    ¡  Segmentation by age group and student status
    ¡  Discounts for members of certain occupations
    ¡  Employee discounts
    ¡  Retail incentives (rebates, seasonal discounts, quantity

    discounts)
    ¡  Gender based examples
    ¡  College financial aid
    ¡  User-controlled price discrimination
    ¡  See http://en.wikipedia.org/wiki/Price_discrimination

    Static and Dynamic Pricing

    ¡  Pricing is studied by people in Economics
    and Marketing

    ¡  Economist look at equilibrium prices
    ¡  Marketing focuses on demand estimation
    ¡  We focus on more tactical aspects of

    pricing
    l  Customer arrival rates
    l  Capacity constraints
    l  And increasingly on choice models and

    competition

    Static Pricing

    ¡  d(p) demand at p
    ¡  z unit cost or dual of capacity constraint
    ¡  r(p,z) = (p-z)d(p) profit function
    ¡  Find p to maximize r(p,z)
    ¡  Is there a finite maximizer p(z)?
    ¡  Is p(z) monotone?
    ¡  Is r(z) = r(p(z),z) monotone? Convex?
    ¡  Multiple market segments with limited

    price menus

    Dynamic Pricing
    ¡  Finite sales horizon
    ¡  Customers arrive stochastically over time
    ¡  State (t,x)

    l  t time-to-go
    l  x remaining inventory

    ¡  What price p(t,x) should be charged at
    state (t,x)?

    ¡  Are there simple and effective pricing
    heuristics?

    ¡  What about strategic customers?
    ¡  What about competition?

    Topics to be Covered

    ¡  Single Resource RM
    l  Independent Demands

    ¡  Dynamic Programming, Bounds and Heuristics
    l  Dependent Demands based on choice models

    ¡  Static and Dynamic Pricing
    ¡  Network RM

    l  Independent Demands, Choice Models
    ¡  Overbooking
    ¡  Service Engineering

    l  Design and pricing of service features

    Useful Techniques you will Learn

    ¡  Dynamic Programming (DP)
    l  Tool for sequential decision making
    l  Optimal Control (continuous time DP)

    ¡  Approximate Dynamic Programming
    l  Tool to approximate DPs

    ¡  Bounds and Heuristics Techniques
    ¡  Choice Modeling
    ¡  Game Theory

    Single Resource Revenue Management with Independent Demands

    Guillermo Gallego

    Updated Spring

    2

    0

    1

    3

    Abstrac

    t

    Providers of fixed perishable capacity, such as airline seats and hotel rooms use price discrimination
    to improve revenues; in practice, this discrimination is typically achieved by imposing booking and usage
    restrictions or including ancillary services such as mileage accrual and luggage handling, to sell the same
    capacity to different customers at different prices. We will assume that the set of fare classes (a menu
    of prices, restrictions and ancillary services) is given, and that the capacity provider’s goal is to allocate
    capacity among the different fare classes to maximize expected revenues. The problem of designing

    and

    pricing fare classes is treated in a separate chapter. We analyze the two fare class problem under the
    assumption that the lower fare class books first. We use marginal analysis to informally derive Littlewood’s
    rule and then show that Littlewood’s rule is in fact optimal. Spill rates, spill penalties and callable
    products are discussed next. A dynamic programming formulation for the multiple fare class problem is
    then introduced under the assumption that lower fare classes book first. Commonly used heuristics as well
    as bounds on the value function are presented. Dynamic models that explicitly take time into account,
    allow for more general fare arrival patterns and for randomness in the size of the requests. We compare
    the performance of static and dynamic policies and find that dynamic policies have a real advantage when
    the fare arrivals patterns are not low-to-high. We finalize the chapter with a model where fare classes are
    not allowed to reopen after they are closed for the first time.

    1 Introduction

    This chapter considers the simplest and best known revenue management problem, the single resource, inde-
    pendent demand problem. We assume that the capacity provider is trying to maximize the expected revenues
    from a sunk investment in c units of capacity. We assume that capacity is sold through a reservation system
    and that capacity cannot be modified or replenished during the booking horizon. We also assume that unsold
    capacity has no salvage value. Later we will see that the zero salvage value assumption is made without loss
    of generality as any problem with positive salvage value can be transformed into a problem with zero salvage
    value. We assume that the set of fare classes (a menu of prices and restrictions) is given, and that the demands
    for the different fare classes are statistically independent. In particular, we assume that if a customer finds his
    preferred fare class closed, he will leave the system without purchasing. This assumption holds approximately
    if the difference in fares is large so that demands are decoupled or if customers can find alternative sources
    of capacity for their preferred fare class. In some cases, however, part of the demand may be recaptured by
    other available fare classes. In such cases, the independent demand assumption is too strong and needs to be
    relaxed. We address this issue in a separate chapter where we discussed demand models based on discrete
    choice theory.

    In this chapter, we present a variety of models that have been developed in industry and in academia.
    There has been a preference in industry for models that suppress the time dimension and assume that the
    arrival pattern of the fare classes is low-to-high. We call these class of models static to distinguish them
    from the dynamic models, favored by academics, that model time explicitly. Both models have advantages
    and disadvantages as we will soon see. Static models are relatively easy to understand. Also, good heuristics

    1

    were developed before optimal solutions based on dynamic programming were discovered. Bringing in the
    time dimension helps deal with more general fare arrival patterns, but specifying the model requires a more
    detailed estimation of demand. This Chapter starts with a review of the two fare class problem in §2 where we
    present a heuristic derivation of Littlewood’s rule via marginal analysis. Littlewood’s rule is formally derived
    in §2.3 where a formal DP for the two fare class problem is presented. The dynamic program for multiple fare
    classes is presented in §3. Commonly used heuristics are presented in §

    4

    and bounds on the optimal expected
    revenue are presented in §

    5

    . The dynamic model is presented in §

    6

    , for the Poisson case and for the compound
    Poisson case in §

    7

    , where each request is for a random demand size. In §

    8

    , we restrict fares so that they cannot
    be opened once they are closed.

    2 Two Fare Classes: Marginal Analysis

    The product can be sold either at the full-fare p1 or at a discounted-fare p2 < p1. The discounted-fare typically has advance purchasing and usage restrictions. Let D1 and D2 denote respectively the random demand for the two fare classes for a specific instance of the problem, e.g., for a specific flight for an airline or a specific night for a hotel.

    We assume that all booked customers will actually travel. This avoids the need to overbook capacity and
    allow us to focus on the problem of allocating capacity between the two fares. We will discuss how to deal
    with pre-travel cancellations and day-of-travel no shows in a separate chapter on overbooking models.

    Fare class arrival order is an important part of the model. We assume what is commonly known as the
    low-to-high fare class arrival order, which implies that demand for the discounted fare book earlier than for
    full-fare. This arrival pattern holds approximately in practice, and it is encouraged by advance purchase
    restrictions imposed on lower fare classes. Notice that this is a worst case arrival pattern. Indeed, if full-fare
    class customers arrived first then we would accept them up to capacity and use residual capacity, if any, to
    satisfy demand from the discounted-fare class. We will relax the low-to-high fare order arrival assumption
    after we solve the multi-fare problem via dynamic programming.

    Under the low-to-high arrival pattern, discount-fare customers may exhaust capacity, say c, unless part
    of it is protected for later-booking by full-fare customers. Consequently, booking limits (known as discount
    authorizations) are placed on the discount sales. Suppose we protect y ∈ {0, 1, . . . ,c} units of capacity for
    the full-fare demand, D1, before observing the actual demand for the discount-fare, D2. This results in a
    booking limit c−y on the discounted-fare, so sales at the discounted-fare class are given by min(c−y,D2).
    The remaining capacity is equal to c − min(c − y,D2) = max(y,c − D2) and it is all made available to the
    full-fare class. Consequently, sales at the full fare equal min(max(y,c−D2),D1). The total expected revenue
    is

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)

    and the goal is to find a protection level y that maximizes W(y,c). The extreme strategies y = 0 and y = c
    correspond, respectively, to the case where no capacity is protected and all of the capacity is protected. We
    will later come back and discuss when these extreme strategies are optimal. In most cases, however, an
    intermediate strategy is optimal.

    The fare ratio r = p2/p1 plays an important role in determining optimal protection levels. If the ratio is
    very small then we would be inclined to protect more capacity for the full-fare demand. If the ratio is close
    to one, we would be inclined to accept nearly all discount-fare requests since we can get almost the same
    revenue, per unit of capacity, without risk. The distribution of full-fare demand is also important in deciding
    how many units to protect for that fare. If, P(D1 ≥ c) is very large, then it makes sense to protect the entire
    capacity for full-fare sales as it is likely that the provider can sell all of the capacity at the full-fare. However,
    if P(D1 ≥ c) is very low then it is unlikely that all the capacity can be sold at the full-fare, so fewer units
    should be protected. It turns out that the demand distribution of the discount-fare D2 has no influence on the
    optimal protection level under our assumption that D2 and D1 are independent. A formula for the optimal
    protection level, involving only P(D1 ≥ y) and r, was first proposed by Littlewood [

    14

    ] in 1

    9

    72. His arguments
    were not formal; however, they were later justified by Bhatia and Prakesh [1] in

    19

    73, and Richter [

    17

    ] in 1982.

    2

    One can obtain Littlewood’s formula intuitively by using marginal analysis. The advantage of marginal
    analysis is that it allows us to quickly derive the solution for the two fare class problem. The marginal analysis
    argument goes as follows: Suppose we have y > 0 units of capacity, and that we receive a request for the
    discounted-fare. Consider the marginal revenue associated with accepting and rejecting this request. If we
    accept, we obtain p2. If we close down the discount-fare then we will be able to sell the y

    th unit at p1 only
    if the full-fare demand D1 is at least as large as y, so it is intuitively optimal to reject the discount fare if
    p1P(D1 ≥ y) > p2. This suggests that an optimal protection level y1 should be given by:

    y1 = max{y ∈N : P(D1 ≥ y) > r}, (1)

    where N = {0, 1, . . . ,} is the set of non-negative integers. Equation (1) is known as Littlewood’s rule.

    Example 1. Suppose D1 is Poisson with parameter 80, the full fare is p1 = $

    10

    0 and the discounted fare is
    p2 = $60, so r = 60/100 = 0.6. We are interested in the cumulative tail distribution P(D1 ≥ y) = 1−P(D1 ≤
    y − 1). Since most statistical software packages return the value of P(D1 ≤ y), we see that y1 satisfies
    P(D1 ≤ y1 − 1) < 1 − r ≤ P(D1 ≤ y1). Since P(D1 ≤ 77) =< 0.4 ≤ P(D1 ≤ 78) we conclude that y1 = 78. Consequently, if c =

    20

    0 then the booking limit for the discount fare is

    12

    2. However, if c < y1, then all units should be protected for the full-fare resulting in a booking limit of zero.

    Remarks:

    • y(c) = min(y1,c) is also an optimal protection level. If y(c) = c, or equivalently if y1 ≥ c, then all the
    capacity should be reserved for sale at the full-fare.

    • The quantity b2 = max(c−y1, 0) is known as the optimal booking limit for the discount fare. It is the
    maximum number of discount-fare customers that we will book.

    • y1 is independent of the distribution of D2.

    • If P(D1 ≥ y1 + 1) = r, then y1 + 1 is also optimal protection level, so both y1 and y1 + 1 result in the
    same expected revenue. Protecting the y1 + 1 unit of capacity increases the variance of the revenue, but
    it reduces the probability of rejecting requests from full-fare customers.

    From Littlewood’s rule (1), we see that the extreme strategy y = 0 is optimal when P(D1 ≥ 1) ≤ r and
    the extreme strategy y = c is optimal when P(D1 ≥ c) > r.

    2.1 Continuous Demand Model

    Although revenue management demands are actually discrete, continuous distributions can be easier to work
    with and are often employed in practice. If we model D1 as a continuous random variable with cumulative
    distribution function F1(y) = P(D1 ≤ y), then

    y1 = F
    −1
    1 (1 −r)

    where F−

    11

    denotes the inverse of F. In particular, if D1 is Normal with mean µ1 and standard deviation σ1
    then

    y1 = µ1 + σ1Φ
    −1(1 −r) (2)

    where Φ denotes the cumulative distribution function of the standard Normal random variable.

    This formula allows for comparative statics as given in Table 1:

    Example 2. Suppose that D1 is Normal with mean 80 and standard deviation 9, the full-fare is p1 = $100
    and the discount-fare is p2 = $60. Then y1 = F

    −1
    1 (1 − 0.6) = 77.72 < 80 since r > 1/2. Notice that the

    solution is quite close to that of Example 1. This is because a Poisson random variable with mean 80 can be
    well approximated by a normal with mean 80 and standard deviation


    80 ‘ 9.

    3

    Fare Ratio Dependence of protection level

    r > 1
    2

    y1 < µ1 and y1 decreases with σ1

    r = 1
    2

    y1 = µ1 independent of σ1

    r < 1 2

    y1 > µ1 and y1 increases with σ1

    Table 1: Comparative Statics for Normal Full Fare Demand

    2.2 Connection with the Newsvendor Problem

    There is a close connection between the classical Newsvendor Problem and the two-fare Revenue Management
    Problem that we will briefly explore here. In the classical Newsvendor Problem a manager must decide how
    many units, say y, to stock for random sales D1 at p1 assuming a unit cost p2 < p1. The solution is to stock y1 units where y1 is the largest integer such that P(D1 ≥ y) > r = p2/p1. We can think of the two-fare Revenue
    Management Problem as a situation where capacity c is pre-decided, at a possible sub-optimal level, there is
    random demand D1 at ”salvage value” p1 > p2 that arrives after demand D2 at p2. The revenue management
    problem is to determine how many units to allow to be sold at p2. We know that the solution is to allow
    (c−y1)+ units to book at p2, reserving max(y1,c−D2) units for sale at p1.

    2.3 Two Fare Classes: Dynamic Programming

    In this section we formulate and analyze the two fare class problem using dynamic programming and present
    a formal proof of the optimality of Littlewood’s rule. We will from now on refer to the full-fare class as fare
    class 1 and to the discounted fare class as fare class 2. Dynamic programming starts by solving the problem
    at the last stage, just before demand for fare class 1. Let V1(y) be the optimal expected revenue that can be
    obtained from fare class 1 when capacity is y. Since it is optimal to allow fare class 1 customers to book all
    of the available capacity, sales are equal to min(D1,y) and the optimal expected revenue is

    V1(y) = p1E min(D1,y).

    Our next task is to find V2(c), the optimal expected revenue that can be obtained from c units of ca-
    pacity. Suppose that y ∈ {0, 1, . . . ,c} units are protected for fare class 1 demand. This results in revenues
    p2 min(D2,c − y) from sales to fare class 2 and remaining inventory max(c − D2,y) available for fare class
    1. Notice that we can obtain expected revenue EV1(max(c − D2,y)) from this inventory from fare class 1
    customers. Then

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)
    = E{p2 min(D2,c−y) + V1(max(c−D2,y))}

    is the expected revenue associated with protecting y ∈{0, 1, . . . ,c} units for the full-fare. V2(c) can be obtained
    by maximizing W(y,c) over y. More precisely,

    V2(c) = max
    y∈{0,1,…,c}

    E{p2 min(D2,c−y) + V1(max(c−D2,y))}. (3)

    The key to Dynamic Programming is that it involves a recursive equation (3) linking the expected revenues
    V2(c), at stage 2, to the expected revenue function V1 at stage 1. To solve for V2(c) we first need to solve
    for V1(y) for y ∈ {0, 1, . . . ,c}. Before moving on to the multi-fare formulation we will provide a formal
    proof of Littlewood’s rule (1), and discuss the quality of service implications of using Littlewood’s rule under
    competition.

    4

    2.4 Formal Proof of Littlewood’s Rule

    For any function f(y) over the integers, let ∆f(y) = f(y) − f(y − 1). The following result will help us to
    determine ∆V (y) and ∆W(y,c) = W(y,c) −W(y − 1,c).

    Lemma 1 Let g(y) = EG(min(X,y)) where X is an integer valued random variable with E[X] < ∞ and G is an arbitrary function defined over the integers. Then

    ∆g(y) = ∆G(y)P(X ≥ y).

    Let r(y) = ER(max(X,y)) where X is an integer valued random variable with E[X] < ∞ and R is an arbitrary function defined over the integers. Then

    ∆r(y) = ∆R(y)P(X < y).

    An application of the Lemma 1 yields the following proposition that provides the desired formulas for
    ∆V1(y) and ∆W(y,c).

    Proposition 1
    ∆V1(y) = p1P(D1 ≥ y) y ∈{1, . . . ,}

    ∆W(y,c) = [∆V1(y) −p2]P(D2 > c−y) y ∈{1, . . . ,c}.

    The proof of the Lemma 1 and Proposition 1 are relegated to the Appendix. With the help of Proposition 1
    we can now formally establish the main result for the Two-Fare Problem.

    Theorem 1 The function W(y,c) is unimodal in y and is maximized at y(c) = min(y1,c) where

    y1 = max{y ∈N : ∆V1(y) > p2}.

    Moreover, V2(c) = W(y(c),c).

    Proof: Consider the expression in brackets for ∆W(y,c) and notice that the sign of ∆W(y,c) is determined
    by ∆V1(y) −p2 as P(D2 > c−y) ≥ 0.Thus W(y,c) ≥ W(y − 1,c) as long as ∆V1(y) −p2 > 0 and W(y,c) ≤
    W(y−1,c) as long as ∆V1(y)−p2 ≤ 0. Since ∆V1(y) = p1P(D1 ≥ y) is decreasing1 in y, ∆V1(y)−p2 changes
    signs from + to − since ∆V1(0) − p2 = p1P(D1 ≥ 0) − p2 = p1 − p2 > 0 and limy→∞[∆V1(y) − p2] = −p2.
    This means that W(y,c) is unimodal in y. Then

    y1 = max{y ∈N : ∆V1(y) > p2}.

    coincides with Littlewood’s rule (1). When restricted to {0, 1, . . . ,c}, W (y,c) is maximized at y(c)

    =

    min(c,y1). Consequently, V2(c) = maxy∈{0,1,…,c}W(y,c) = W(y(c),c), completing the proof.

    2.5 Quality of Service, Spill Penalties, Callable Products and Salvage Values

    Since max(y1,c−D2) units of capacity are available for fare class 1, at least one fare class 1 customer will be
    denied capacity when D1 > max(y1,c−D2). The probability of this happening is a measure of the quality of
    service to fare class 1, known as the full-fare spill rate. Brumelle et al. [4] have observed that

    P(D1 > max(y1,c−D2)) ≤ P(D1 > y1) ≤ r < P(D1 ≥ y1). (4)

    They call P(D1 > y1) the maximal spill rate. Notice that if the inequality y1 ≥ c − D2 holds with high
    probability, as it typically does in practice when D2 is large relative to c, then the spill rate approaches the

    1We use the term increasing and decreasing in the weak sense.

    5

    maximal flight spill rate which is, by design, close to the ratio r. High spill rates may lead to the loss of
    full-fare customers to competition. To see this, imagine two airlines each offering a discount fare and a full-
    fare in the same market where the fare ratio r is high and demand from fare class 2 is high. Suppose Airline
    A practices tactically optimal Revenue Management by applying Littlewood’s rule with spill rates close to
    r. Airline B can protect more seats than recommended by Littlewood’s rule. By doing this Airline B will
    sacrifice revenues in the short run but will attract some of the full-fare customers spilled by Airline A. Over
    time, Airline A may see a decrease in full-fare demand as a secular change and protect even fewer seats for
    full-fare passengers. In the meantime, Airline B will see an increase in full-fare demand at which time it can
    set tactically optimal protection levels and derive higher revenues in the long-run. In essence, Airline B has
    (correctly) traded discount-fare customers for full-fare customers with Airline A.

    One way to cope with high spill rates and its adverse strategic consequences is to impose a penalty cost
    ρ for each unit of full-fare demand in excess of the protection level. This penalty is suppose to measure the
    ill-will incurred when capacity is denied to a full-fare customer. This results in a modified value function
    V1(y) = p1E min(D1,y) − ρE[(D1 − y)+] = (p1 + ρ)E min(D1,y) − ρED1. From this it is easy to see that
    ∆V1(y) = (p + ρ)P(D1 ≥ y), resulting in

    ∆W(y,c) = [(p1 + ρ)P(D1 ≥ y) −p2]P(D2 > c−y)

    and

    y1 = max

    {
    y ∈N : P(D1 ≥ y) >

    p2
    p1 + ρ

    }
    . (5)

    Notice that this is just Littlewood’s rule applied to fares p1 + ρ and p2, resulting in fare ratio p2/(p1 + ρ) and,
    consequently, lower maximal spill rates. Obviously this adjustment comes at the expense of having higher
    protection levels and therefore lower sales at the discount-fare and lower overall revenues. Consequently, an
    airline that wants to protect its full-fare market by imposing a penalty on rejected full-fare demand does it at
    the expense of making less available capacity for the discount-fare and less expected revenue. One way to avoid
    sacrificing sales at the discount-fare and improve the spill rate at the same time is to modify the discount-fare
    by adding a restriction that allows the provider to recall or buy back capacity when needed. This leads to
    revenue management with callable products; see Gallego, Kou and Phillips [12]. Callable products can be
    sold either by giving customers an upfront discount or by giving them a compensation if and when capacity
    is recalled. If managed correctly, callable products can lead to better capacity utilization, better service to
    full-fare customers and to demand induction from customers who are attracted to either the upfront discount
    or to the compensation if their capacity is recalled.

    The value function V1(y) may also be modified to account for salvage values (also known as the ‘distressed
    inventory problem’). Suppose there is a salvage value s < p2 on excess capacity after the arrival of the full-fare demand (think of standby tickets or last-minute travel deals). We can handle this case by modifying V1(y) to account for the salvaged units. Then V1(y) = p1E min(D1,y) + sE(y −D1)+ = (p1 −s)E min(D1,y) + sy, so ∆V1(y) = (p1 −s)P(D1 ≥ y) + s, resulting in

    ∆W(y,c) = [(p1 −s)P(D1 ≥ y) − (p2 −s)]P(D2 > c−y)

    and
    y1 = max
    {
    y ∈N : P(D1 ≥ y) >

    p2 −s
    p1 −s

    }
    . (6)

    Notice that this is just Littlewood’s rule applied to net fares p1 −s and p2 −s. This suggests that a problem
    with salvage values can be converted into a problem without salvage values by using net fares pi ← pi − s,
    i = 1, 2 and then adding cs to the resulting optimal expected revenue V2(c) in excess of salvage values.

    3 Multiple Fare Classes: Exact Solution

    In this section we present an exact solution to the muli-fare class problem using dynamic programming. We
    assume that the capacity provider has c units of perishable capacity to be allocated among n fares indexed

    6

    so pn < ... < p1. Lower fares typically have severe time of purchase and traveling restrictions and may have restricted advanced selection that denies access to the more desirable capacity. Given the time-of-purchase restriction, it is natural to assume that demands for fare classes arrive in n stages, with fare class n arriving first, followed by n − 1, with fare class 1 arriving last. Let Dj denote the random demand for fare class j ∈ N = {1, . . . ,n}. We assume that, conditional on the given fares, the demands D1, . . . ,Dn are independent random variables with finite means µj = E[Dj] j ∈ N. The independent assumption is approximately valid in situations where fares are well spread and there are alternative sources of capacity. Indeed, a customer who finds his preferred fare closed is more likely to buy the same fare for an alternative flight (perhaps with a competing carrier) rather than buying up to the next fare class if the difference in fare is high. The case of dependent demands, where fare closures may result in demand recapture, will be treated in a different chapter. The use of Dynamic Programming for the multi-fare problem with discrete demands is due to Wollmer [

    22

    ].
    Curry [6] derives optimality conditions when demands are assumed to follow a continuos distribution. Brumelle
    and McGill [5] allow for either discrete or continuous demand distributions and makes a connection with the
    theory of optimal stopping.

    Let Vj(x) denote the maximum expected revenue that can be obtained from x ∈ {0, 1, . . . ,c} units of
    capacity from fare classes {j, . . . , 1}. The sequence of events for stage j are as follows:

    1. Decide the protection level, say y ≤ x, for fares j − 1,j − 2, . . . , 1 thus allowing at most x−y units of
    fare j demand.

    2. The realization of the demand Dj occurs, and we observe min(Dj,x−y) sales at fare j.

    3. The revenue pj min(Dj,x−y) is collected, and we proceed to the beginning of stage j−1 with a remaining
    capacity of max(x−Dj,y).

    The revenue from this process is

    Wj(y,x) = pjE min(Dj,x−y) + EVj−1 (max(x−Dj,y)) . (7)

    We can think of Wj(y,x) as the expected revenue from x units of capacity prior to seeing the demand for fare
    class j when up to x−y units are allowed to book at fare j and an optimal policy is followed thereafter. This
    leads to the dynamic programming recursion

    Vj(x)

    = max
    y∈{0,1,…,x}

    Wj(y,x)

    = max
    y∈{0,1,…,x}

    {pjE min(Dj,x−y) + EVj−1(max(x−Dj,y))} . (8)

    The dynamic program simply states that the optimal value function is the sum of the expected revenues
    from fare class j plus the expected revenues from fare classes j−1, . . . , 1 evaluated at the protection level that
    maximizes this sum. Notice that once we are at the beginning of stage j−1 we face a similar problem over the
    remaining j−1 fare classes. Vj(x) is then the maximum expected revenue that can be obtained from x units of
    capacity for the j-fare problem. Consequently Vn(c) is the maximum expected revenue for the n-fare problem
    with capacity c. The recursion can be started with V0(x) = 0 if there are no salvage values or penalties for
    spill. Alternatively, the recursion can start with V1(x) = p1E min(D1,x) + sE[(x−D1)+]−ρE[(D1 −x)+] for
    x ≥ 0 if there is a salvage value s per unit of excess capacity and a penalty ρ per unit of fare class 1 demand
    that is denied.

    3.1 Structure of the Optimal Policy

    In order to analyze the structure of the optimal policy, we begin by describing a few properties of the value
    function. As a convention we set V0 ≡ 0. A function V (y) defined on y ∈ N is concave if ∆V (y) =
    V (y) −V (y − 1) is decreasing in y ∈N+.

    7

    Lemma 2 For any j ≥ 1,

    a) ∆Vj(y) = Vj(y) −Vj(y − 1) is decreasing in y ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(y) is increasing in j ∈ {1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    The proof of Lemma 2 is in the Appendix. Using the Lemma we can characterize an optimal policy as
    stated in the following theorem. For the purpose of simplifying notation we will extend the definition of ∆Vj(y)
    to y = 0 by setting ∆Vj(0) = ∆V1(0) = p1 just as we did for j = 1.

    Theorem 2 The function Wj(y,x) is unimodal in y and it is maximized at min(yj−1,c), where the nested
    protection levels 0 = y0 ≤ y1 ≤ y2 ≤ ···≤ yn−1 are given by

    yj = max{y ∈N : ∆Vj(y) > pj+1} j = 1, . . . ,n− 1. (9)

    The optimal value functions are given by

    Vj(x) = Wj(min(x,yj−1),x) j = 1, . . . ,n, x ∈N . (10)

    Moreover, Vj(x) is concave in x ∈N for each j = 1, . . . ,n.

    Proof: An algebraic argument similar to that used to justify Littlewood’s rule for n = 2, reveals that for
    y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Let yj−1 = max{y ∈N : ∆Vj−1(y) > pj}. By part a) of Lemma 2, ∆Vj−1(y) is decreasing in y so ∆Vj−1(y)−
    pj > 0 for all y ≤ yj−1 and ∆Vj−1(y)−pj ≤ 0 for all y > yj−1. Consequently, if x ≤ yj−1 then ∆Wj(y,x) ≥ 0
    for all y ∈ {1, . . . ,x} implying that Vj(x) = Wj(x,x). Alternatively, if x > yj−1 then ∆Wj(y,x) ≥ 0
    for y ∈ {1, . . . ,yj} and ∆Wj(y,x) ≤ 0 for y ∈ {yj−1 + 1, . . . ,x} implying Vj(x) = Wj(yj−1,x). Since
    ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1, it follows that ∆Vj(yj−1) = ∆Vj−1(yj−1) > pj > pj+1, so yj ≥ yj−1. The
    concavity of Vj(x) is is equivalent to ∆Vj(x) decreasing in x, and this follows directly from part a) of Lemma 2.

    Remarks:

    1. Notice that the unconstrained protection level yj−1 is independent of the demands Dk, k ≥ j as observed
    before in the two fare setting (Littlewood’s Rule).

    2. We can think of yj,j = 1, . . . ,n− 1 as the unconstrained protection levels. If we start stage j with xj
    units of capacity, the constrained protection level for fares {j−1, . . . , 1} is min(xj,yj−1). Thus capacity
    is made available to fare j only if xj > yj−1.

    3. The policy is implemented as follows. At stage n we start with xn = c units of inventory, and we protect
    yn−1(xn) = min(xn,yn−1) units of capacity for fares {n−1, . . . , 1} by allowing up to (xn −yn−1)+ units
    to be sold at fare pn. Since min(Dn, (xn−yn−1)+) units are sold during stage n, we start stage n−1 with
    xn−1 = xn − min(Dn, (xn − yn−1)+). We protect yn−2(xn−1) = min(xn−1,yn−2) units of capacity for
    fares {n−2, . . . , 1} and thus allow up to (xn−1−yn−2)+ units of capacity to be sold at pn−1. The process
    continues until we reach stage one with x1 units of capacity and allow (x1 − y0)+ = (x1 − 0)+ = x1
    to be sold at p1. Assuming discrete distributions, the computational requirement to solve the dynamic
    program for the n stages has been estimated by Talluri and van Ryzin [20] to be of order O(nc2).

    4. The concavity of Vn(c) is helpful if capacity can be procured at a linear or convex cost because in this
    case the problem of finding an optimal capacity level is a concave problem in c.

    8

    Example 3. Suppose there are five different fare classes. We assume the demand for each of the fares is
    Poisson. The fares and the expected demands are given in the first two columns of Table 2. The third column
    includes the optimal protection levels for fares 1, 2, 3 and 4.

    j pj E[Dj] yj
    1 $100

    15

    14
    2 $60 40 54
    3 $40 50 101
    4 $35 55

    16

    9
    5 $15 120

    Table 2: Five Fare Example with Poisson Demands: Data and Optimal Protection Levels

    Table 3 provides the expected revenues for different capacity levels as well as the corresponding demand
    factors (

    ∑5
    j=1 E[Dj])/c =

    28

    0/c. These results should be intuitive. Greater revenue potential is seen as

    capacity increases (since potentially more demand can be accepted). Further, the effect of restrictions on
    discounted fares is apparent in the pattern of revenue across classes; e.g. revenue V2(50) through V5(50) is
    $3,4

    26

    .8 because fare classes 3,4, and 5 are rationed since y2 = 54 > c = 50 units are protected for fare 1 and
    2. However, V1(350) through V5(350) vary from $1,500 to $9,6

    25

    because there is sufficient capacity to accept
    sales in all fare classes.

    c DF V1(c) V2(c) V3(c) V4(c) V5(c)
    50 560% 1,500.0 3,426.8 3,426.8 3,426.8 3,426.8

    100 280% 1,500.0 3,900.0 5,441.3 5,441.3 5,441.3
    150

    18

    7% 1,500.0 3,900.0 5,900.0 7,188.7 7,188.7
    200 140% 1,500.0 3,900.0 5,900.0 7,8

    24

    .6 8,159.1
    250 112% 1,500.0 3,900.0 5,900.0 7,825.0 8,909.1

    30

    0 93% 1,500.0 3,900.0 5,900.0 7,825.0 9,563.9
    350 80% 1,500.0 3,900.0 5,900.0 7,825.0 9,625.0

    Table 3: Expected Revenues Vj(c) and Demand Factors

    Figure 1 shows the marginal value as a function of the remaining resources for the data of Example 3.

     $-­‐
     
     
     
     

     $20.00
     
     

     $40.00
     
     

     $60.00
     
     

     $80.00
     
     

     $100.00
     
     

     $120.00
     
     

    0
      20
      40
      60
      80
      100
      120
      140
      16

    0
     

    DV_1(x)
     

    DV_2(x)
     

    DV_3(x)
     

    DV_4(x)
     

    DV_5(x)
     

    Figure 1: ∆Vj(x),x = 1, . . . , 350, j = 1, 2, 3, 4, 5 for Example 3

    9

    3.2 Speeding up the Computation of the Value Function

    While the value functions Vj(x), j ∈ {1, . . . ,n}, x ∈ {1, . . .c}, can be computed recursively there are some
    tricks to speed up the computations. Here we focus on how to efficiently update ∆Vj+1(x) from ∆Vj(x). The
    key idea is to express ∆Vj+1(x) for x > yj in terms of previously computed values of ∆Vj(x). The proof of
    Proposition 2 is in the Appendix.

    Proposition 2

    ∆Vj+1(x) =

    {
    ∆Vj(x) if x = 1, . . . ,yj
    E min(∆Vj(x−Dj+1),pj+1) if x = yj + 1, . . ..

    Since ∆Vj+1(x) = ∆Vj(x) for x ≤ yj, we only need to worry about ∆Vj+1(x) for x > yj. The following
    corollary to Proposition 2 makes the formula for ∆Vj+1(x),x > yj more explicit.

    Corollary 1

    ∆Vj+1(yj + k) = pj+1P(Dj+1 ≥ k)

    +

    k−1∑
    i=0

    ∆Vj(yj + k − i)P(Dj+1 = i) k ∈{1, . . . ,c−yj}.

    3.3 Linear and Convex Procurement Costs

    Suppose that capacity c can be procured at a linear cost kc before observing demands for the n fares: pn < pn−1 < ... < p1. How much capacity should be procured? The objective is to find c to maximize Πn(c,k) = Vn(c) −kc. Let c(k) be the smallest optimizer of Πn(c,k) as a function of the marginal cost k. The following Proposition characterizes c(k), shows that c(k) is decreasing in k and relates c(pj+1) to protection level yj for j < n.

    Proposition 3 The optimal procurement quantity at linear cost kc is given by

    c(k) = max{c ∈N : ∆Vn(c) > k}.

    Moreover, c(k) is decreasing in k, and yj = c(pj+1) for all j ∈{1, . . . ,n− 1}.

    Clearly c(0) = ∞ since ∆Vn(c) ≥ ∆V1(c) = p1P(D1 ≥ c) > 0 for all c ∈ N . At the other extreme,
    c(p1) = y0 = 0 since ∆Vn(1) = p1P(D1 ≥ 1) < p1 = ∆Vn(0), so no capacity would be purchased if k ≥ p1.

    If the cost of capacity k(c) is increasing convex then Π(c,k(c)) is concave in c and

    c(k) = max{c ∈N : ∆Vn(c) − ∆k(c) > 0}.

    Consider the convex cost function k(c) = K if c ≤ c̄ and k(c) = ∞ for k > c̄. This may reflect the situation
    where there is a fixed cost to leasing a resource with capacity c̄. The optimal choice is then to lease the
    resource if Vn(c̄) > K and not lease it otherwise.

    3.4 Relaxing the Monotonicity of Fares

    We continue to assume that demands arrive in the order Dn,Dn−1, . . . ,D1 but will relax the assumption that
    the fares are monotone p1 > p2 > … > pn. All of the results work as stated, except the monotonicity of the
    protection levels, if we redefine ∆Vj(0) = max{p1, . . . ,pj}. It is also possible to skip some of the optimization

    10

    0
     

    50
     

    100
     

    150
     

    200
     

    250
     

    300
     

    350
     

    400
     

    450
     

    0
      10
      20
      30
      40
      50
      60
      70
      80
      90
      100
     
    C

    ap
    ac

    it
    y

    cost

    optimal capacity

    Figure 2: Optimal Capacity as a Function of Cost for the Data of Example 3

    steps as it is clear that yj−1 = 0 whenever pj > max(p1, . . . ,pj−1) since it is optimal to allow all bookings at
    fare pj. The reader is referred to Robinson [18] for more details. As an example, suppose that p3 < p2 > p1.
    Then V1(x) = p1E min(D1,x) and at stage 2 the decision is y1 = 0, so

    V2(x) = p2E min(D2,x) + p1E min(D1, (x−D2)+).

    Notice that
    ∆V2(x) = p2P(D2 ≥ x) + p1P(D2 < x ≤ D[1, 2])

    so
    y2 = max{y ∈N : ∆V2(y) > p3}.

    Notice that the capacity protected for fare 2 is higher than it would be if there was no demand at fare 1.

    4 Multiple Fare Classes: Commonly Used Heuristics

    Several heuristics, essentially extensions of Littlewood’s rule, were developed in the 1980’s. The most important
    heuristics are known as EMSR-a and EMSR-b, where EMSR stands for expected marginal seat revenue. Credit
    for these heuristics is sometimes given to the American Airlines team working on revenue management problems
    shortly after deregulation. The first published account of these heuristics appear in Simpson [19] and Belobaba
    [2], [3]. For a while, some of these heuristics were even thought to be optimal by their proponents until optimal
    policies based on dynamic programming were discovered in the 1990’s. By then heuristics were already part of
    implemented systems, and industry practitioners were reluctant to replace them with the solutions provided
    by dynamic programming algorithms. There are several reasons for this. First, people feel more comfortable
    with something they understand. Also, the performance gap between the heuristics and the optimal dynamic
    program tends to be small. Finally, there is a feeling among some users that the heuristics may be more robust
    to estimates of the mean and variance of demand.

    Version a of the heuristic, EMSR-a, is based on the idea of adding protection levels produced by applying
    Littlewood’s rule to successive pairs of classes. At state j, we need to decide how much capacity to protect
    for fares j − 1, . . . , 1. We can use Littlewood’s rule to decide how much capacity to protect for fare k demand
    against fare j for k = j − 1, . . . , 1 and then add the protection levels. More precisely, let rk,j = pj/pk and set

    yk,j = max{y ∈N : P(Dk ≥ y) > rk,j}.

    11

    Then the EMSR-a heuristic will protect

    yaj−1 =

    j−1∑
    k=1

    yk,j

    units of capacity for fares j − 1, . . . , 1 against fare j.

    In particular, if Dk is Normal with mean µk and standard deviation σk, then

    yaj−1 = µ[1,j − 1] +
    j−1∑
    k=1

    σkΦ
    −1(1 −rk,j),

    where for any j, µ[1,j − 1] =
    ∑j−1

    k=1 µk and sums over empty sets are zero.

    Notice that the EMSR-a heuristic involves j − 1 calls to Littlewood’s rule to find the protection level for
    fares j − 1, . . . , 1. In contrast, the EMSR-b heuristic is based on a single call to Littlewood’s rule for each
    protection level. However, using the EMSR-b heuristic requires the distribution of D[1,j − 1] =

    ∑j−1
    k=1 Dk.

    This typically requires computing a convolution but in some cases, such as the Normal or the Poisson, the
    distribution of D[1,j − 1] can be easily obtained (because sums of independent Normal or Poisson random
    variables are, respectively, Normal or Poisson). The distribution of D[1,j − 1] is used together with the
    weighted average fare

    p̄j−1 =

    j−1∑
    k=1

    pk
    µk

    µ[1,j − 1]

    and calls on Littlewood’s rule to obtain protection level

    ybj−1 = max{y ∈N : P(D[1,j − 1] ≥ y) > r
    b
    j−1,j}

    where rbj−1,j = pj/p̄j−1. Notice that the weighted average fare assumes that a proportion µk/µ[1,j−1] of the
    protected capacity will be sold at fare pk,k = 1, . . . ,j − 1. In the special case when demands are Normal we
    obtain

    ybj−1 = µ[1,j − 1] + σ[1,j − 1]Φ
    −1(1 −rbj−1,j).

    Recall that for the Normal, variances are additive, so the standard deviation σ[1,j − 1] =
    √∑j−1

    k=1 σ
    2
    k.

    4.1 Evaluating the Performance of Heuristics

    While heuristic protection levels are easy to compute, evaluating them is as hard as solving for the optimal
    policy. The expected return of a heuristic policy based on protection levels 0 = yh0 ≤ yh1 ≤ . . . ≤ yhn−1 can be
    computed exactly or via simulation. To compute the expected revenues exactly, let V hj (x) be the expected profit

    from x units of capacity from fares {j, . . . , 1} under the heuristic policy h. Then V hj (x) = W
    h
    j (min(x,y

    h
    j−1),x)

    where for all y ≤ x we define Whj (y,x) = pjE min(x−y,Dj) + EV
    h
    j−1(max(y,x−Dj)). The following result

    is a direct consequence of Proposition 2 and its corollary.

    Proposition 4

    ∆V hj+1(x) =

    {
    ∆V hj (x) if x = 1, . . . ,y

    h
    j

    = pj+1P(Dj+1 ≥ x−yhj ) +
    ∑x−yhj −1

    i=0 ∆V
    h
    j (x− i)P(Dj+1 = i) if x > y

    h
    j

    Thus, if V hj (x) has already been computed then V
    h
    j+1(x) = V

    h
    j (x) for x = 1, . . . ,y

    h
    j . For x > y

    h
    j we can

    use the recursion V hj+1(x) = V
    h
    j+1(x− 1) + ∆V

    h
    j+1(x) starting with x = y

    h
    j + 1 in conjunction with the second

    part of Proposition 4.

    12

    To estimate the expected revenue and other measures of performance, such as the variance, we can also
    use Monte Carlo simulation. Suppose we generate many random copies of simulated demands (D1, . . . ,Dn).
    For each copy we compute sales (sh1, . . . ,s

    h
    n) and revenues R

    h =
    ∑n

    i=1 pis
    h
    i under heuristic h. Averaging

    over all the values of Rh gives an estimate of V hn (c). Simulated sales can be generated sequentially via s
    h
    j =

    min(Dj, (xj−yhn−1)+) starting with j = n and xn = c and using the capacity update formula xj = xj+1−shj+1.

    Example 3 (continued) We have applied the EMSR-a and EMSR-b heuristics to the data of Example 3. Table
    4 repeats the data and reports the heuristic protection levels ya, yb as well as the optimal protection levels.
    Table 5 reports V a5 (c) and V

    b
    5 (c) as well as V5(c) for values of c ∈{50, 100, 150, 200, 250, 300, 350}.

    j pj E[Dj] y
    a
    j y

    b
    j yj

    1 $100 15 14 14 14
    2 $60 40 53 54 54
    3 $40 50 97 102 101
    4 $35 55 171 166 169
    5 $15 120

    Table 4: Optimal and Heuristic Protection Levels for Example 3

    c DF V a5 (c) V
    b
    5 (c) V5(c)

    50 560% 3,426.8 3,426.8 3,426.8
    100 280% 5,4

    31

    .9 5,441.3 5,441.3
    150 187% 7,184.4 7,188.6 7,188.7
    200 140% 8,157.3 8,154.4 8,159.1
    250 112% 8,907.3 8,901.4 8,909.1
    300 93% 9,536.5 9,536.0 9,563.9
    350 80% 9,625.0 9,625.0 9,625.0

    Table 5: Performance of Heuristics for Example 3

    As seen in Table 5, both the EMSR-a and the EMSR-b heuristic perform very well against Poisson demands
    under a low-to-high arrival pattern. The heuristics continue to perform well if demands are compound Poisson
    and aggregate demands are approximated by the use of a Gamma distribution. However, EMSR based
    heuristics can significantly underperform relative to models that allow more general fare arrival rates. We will
    have an opportunity to revisit this issue in Section 7.

    5 Bounds, Revenue Opportunity Model, and New Heuristics

    In this section we develop bounds on Vn(c) which may be useful in evaluating the potential of applying revenue
    management solutions. To obtain an upper bound, consider the perfect foresight problem where the demand
    vector D = (D1, . . . ,Dn) is known in advance. This demand knowledge allows us to optimally allocate capacity
    by solving the following knapsack type problem

    V Un (c,D) = max

    n∑
    k=1

    pkxk (11)

    s.t. xk ≤ Dk ∀ k = 1, . . . ,n

    n∑
    k=1

    xk ≤ c

    xk ≥ 0 ∀ k = 1, . . . ,n.

    13

    Clearly, for each realization of D, advance knowledge results in revenues that are at least as high as the optimal
    dynamic policy that does not have perfect foresight. As a result, Vn(c) ≤ EV Un (c,D). For convenience, we
    will denote this upper bound as V Un (c) = EV

    U
    n (c,D).

    The solution to (11) can be written explicitly as xk = min(Dk, (c − D[1,k − 1])+),k = 1, . . . ,n where
    for convenience we define D[1, 0] = 0. The intuition here is that we give priority to higher fares so fare
    k ∈ {1, . . . ,n} gets the residual capacity (c − D[1,k − 1])+. The expected revenue can be written more
    succinctly after a few algebraic calculations:

    V Un (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[1,k − 1])+) (12)

    =
    n∑
    k=1

    pk (E min(D[1,k],c) −E min(D[1,k − 1],c))

    =
    n∑
    k=1

    (pk −pk+1)E min(D[1,k],c) (13)

    where for convenience we define pn+1 = 0. Moreover, since V
    U
    n (c,D) is concave in D, it follows from Jensen’s

    inequality that V Un (c) = EV
    U
    n (c,D) ≤ V Un (c,µ) where V Un (c,µ) is the solution to formulation (11) with

    µ = E[D] instead of D. More precisely,

    V Un (c,µ) = max

    n∑
    k=1

    pkxk (14)

    s.t. xk ≤ µk ∀ k = 1, . . . ,n

    n∑
    k=1
    xk ≤ c
    xk ≥ 0 ∀ k = 1, . . . ,n.

    The linear program (14) is known as the fluid model or the deterministic capacity allocation problem. It is
    essentially a knapsack problem whose solution can be given in closed form xk = min(µk, (c−µ[1,k−1])+) for
    all k = 1, . . . ,n. Consequently, V Un (c) ≤ V Un (c,µ) =

    ∑n
    k=1(pk −pk+1) min(µ[1,k],c).

    A lower bound can be obtained by assuming a low to high arrival pattern with zero protection levels.
    This gives rise to sales min(Dk, (c−D[k + 1,n])+) at fare k = 1, . . . ,n and revenue lower bound V L(c,D) =∑n

    k=1 pkE min(Dk, (c−D[k + 1,n])
    +).

    Taking expectations we obtain

    V Ln (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[k + 1,n])+) (15)

    =
    n∑
    k=1

    pk (E min(D[k,n],c) −E min(D[k + 1,n],c))

    =
    n∑
    k=1

    (pk −pk−1)E min(D[k,n],c) (16)

    where p0 = 0. Notice that all of the terms in the sum are negative except for k = 1. Clearly V
    L
    n (c) ≤ Vn(c)

    since the expected revenue is computed under sub-optimal protection levels. The above arguments justify the
    main result of this section.

    14

    Proposition 5
    V Ln (c) ≤ Vn(c) ≤ V

    U
    n (c) ≤ V

    U
    n (c,µ) (17)

    Of course, the bounds require the computation of E min(D[1,k],c), k = 1, . . . ,n. However, this is often
    an easy computation. Indeed, if D[1,k] is any non-negative integer random variable then E min(D[1,k],c) =∑c

    j=1 P(D[1,k] ≥ j). If D[1,k] is Normal we can take advantage of the fact that E min(Z,z) = z(1−Φ(z))−
    φ(z) when Z is a standard Normal random variable and φ is the standard Normal density function. If follows
    that if D[1,k] is Normal with mean µ and variance σ2, then

    E min(D[1,k],c) = µ + σE min(Z,z) = µ + σ [z(1 − Φ(z)) −φ(z)]

    where z = (c−µ)/σ.

    Tables 6 and 7 report V Ln (c),Vn(c),V
    U
    n (c) and Vn(c,µ) for the data of Examples 4 and 5, respectively.

    Notice that V Un (c) represents a significant improvement over the better known bound Vn(c,µ), particularly
    for intermediate values of capacity. The spread V Un (c) − V Ln (c) between the lower and upper bound is a
    gauge of the potential improvements in revenues from using an optimal or heuristic admission control policy.
    When capacity is scarce relative to the potential demand, then the relative gap is large, and the potential
    for applying revenue management solutions is also relatively large. This is because significant improvements
    in revenues can be obtained from rationing capacity to lower fares. As capacity increases, the relative gap
    decreases indicating that less can be gained by rationing capacity. At very high levels of capacity it is optimal
    to accept all requests, and at this point there is nothing to be gained from the use of an optimal admission
    control policy.

    c V Ln (c) Vn(c) V
    U
    n (c) V

    U
    n (c,µ)

    80 $42,728 $49,642 $53,039 $53,315
    90 $48,493 $54,855 $58,

    29

    3 $58,475

    100 $54,415 $60,015 $63,366 $63,815
    110 $60,393 $65,076 $68,126 $69,043
    120 $66,180 $69,801 $72,380 $74,243
    130 $71,398 $73,926 $75,9

    23

    $79,443
    140 $75,662 $77,252 $78,618 $82,563
    150 $78,751 $79,617 $80,456 $82,563
    160 $80,704 $81,100 $81,564 $82,563

    Table 6: Optimal Revenue and Bounds for Example 4.

    c V Ln (c) Vn(c) V
    U
    n (c) V

    Un(c,µ)
    80 $52,462 $67,505 $72,717 $73,312
    90 $61,

    21

    5 $74,003 $79,458 $80,302

    100 $70,136 $79,615 $85,621 $87,292
    110 $78,803 $84,817 $91,122 $92,850
    120 $86,728 $89,963 $95,819 $98,050
    130 $93,446 $94,869 $99,588 $103,250
    140 $98,630 $99,164 $102,379 $106,370
    150 $102,209 $102,418 $104,251 $106,370
    160 $104,385 $104,390 $105,368 $106,370

    Table 7: Optimal Revenue and Bounds for Example 5.

    5.1 Revenue Opportunity Model

    The bounds presented here can help with the so called Revenue Opportunity Model (ROM). The revenue
    opportunity is the spread between the optimal revenue, obtained by hindsight using the estimated uncensored

    15

    demand, and the revenue that results from not applying booking controls. Demand uncensoring refers to a sta-
    tistical technique that attempts to estimate actual demand from the observed sales which may be constrained
    by booking limits. The ex-post optimal revenue is a hindsight optimization and is equivalent to our perfect
    foresight model, resulting in revenue V Un (c,D), where D is the uncensored demand. On the other hand, the
    revenue based on not applying booking controls is just V Ln (c,D), so a measure of the revenue opportunity is
    V Un (c,D) − V Ln (c,D). The achieved revenue opportunity is the difference between the actual revenue from
    applying optimal or heuristic controls and the lower bound. The ratio of the achieved revenue opportunity to
    the revenue opportunity is often called the percentage achieved revenue opportunity. The revenue opportunity
    V Un (c,D)−V Ln (c,D) is sometimes approximated by V Un (c)−V Ln (c) to get an idea of the revenue opportunity.
    Table 6 and 7 shows there is significant revenue opportunity, particularly for c ≤ 140. Thus, one use for the
    ROM is to identify situations where RM has the most potential so that more effort can be put where is most
    needed. The ROM has also been used to show the benefits of using leg-based control versus network-based
    controls. The reader is refer to Chandler and Ja ([8]) and to Temath et al. ([21]) for further information on
    the uses of the ROM.

    5.2 Bounds Based Heuristic

    It is common to use an approximation to the value function as a heuristic. To do this, suppose that Ṽj(x) is
    an approximation to Vj(x). Then a heuristic admission control rule can be obtained as follows:

    ỹj = max{y ∈N : ∆Ṽj(y) > pj+1} j = 1, . . . ,n− 1. (18)

    Suppose we approximate the value function Vj(x) by Ṽj(x) = θV
    L
    j (x) + (1 − θ)V

    U
    j (x) for some θ ∈ [0, 1]

    and V Lj (x) and V
    U
    j (x) are the bounds obtained in this section applied to n = j and c = x. Notice that

    ∆V Lj (x) = p1P(D[1,j] ≥ x) +
    ∑j

    k=2(pk −pk−1)P(D[k,j] ≥ x), while ∆V
    U
    j (x) =

    ∑j−1
    k=1(pk −pk+1)P(D[1,k] ≥

    x) + pjP(D[1,j] ≥ x).

    6 Multiple Fare Classes with Arbitrary Fare Arrival Patterns

    So far we have suppressed the time dimension; the order of the arrivals has provided us with stages that are
    a proxy for time, with the advance purchase restriction for fare j serving as a mechanism to end stage j. In
    this section we consider models where time is considered explicitly. There are advantages of including time as
    part of the model as this allows for a more precise formulation of the customer arrival process. For example,
    we can relax the low-to-high arrival assumption and allow for overlapping or concurrent arrival rates. On the
    other hand, the flexibility advantage comes at the cost of estimating arrival rates for each of the fare classes
    over the sales horizon. If arrival rates are not estimated accurately, then adding the time dimension may hurt
    rather than help performance. In addition, the formulations presented in this section assumes that demand
    for each fare class follows a Poisson process, whereas our earlier models based on sequential fare arrivals do
    not have this restriction. We will extend the formulation in this section to the case of compound Poisson in
    §7.

    We assume that customers arrive to the system according to a time heterogeneous Poisson process with
    intensity λjt, 0 ≤ t ≤ T where T is the length of the horizon, t represents the time-to-go and j ∈ {1, . . . ,n}.
    Then the number of customers that arrive during the last t units of time and request product j, say Njt, is

    Poisson with mean Λjt =
    ∫ t
    0
    λjsds. For simplicity we will write Λj, instead of ΛjT , to denote the expected

    number of requests for fare j over the entire horizon [0,T]. The low-to-high arrival pattern can be embedded
    into the time varying model by dividing the selling horizon into n sub-intervals [tj−1, tj],j = 1, . . . ,n with
    tj = jT/n, and setting λjt = nΛj/T over t ∈ [tj−1, tj] and λjt = 0 otherwise.

    Let V (t,x) denote the maximum expected revenue that can be attained over the last t units of the sale
    horizon with x units of capacity. We will develop both discrete and continuous time dynamic programs to
    compute V (t,x). To construct a dynamic program we will need the notion of functions that go to zero faster

    16

    than their argument. More precisely, we say that a function g(x) is o(x) if limx↓0 g(x)/x = 0. We will show
    that the probability that over the interval [t−δt,t] there is exactly one request and the request is for product
    j is of the form λjtδt + o(δt). To see this notice that the probability that a customer arrives and requests one
    unit of product j over the interval [t− δt,t]is

    λjtδ exp(−λjtδt) + o(δt) = λjtδt[1 −λjtδt] + o(δt) = λjtδt + o(δt),

    while the probability that there are no requests for the other products over the same interval is

    exp(−

    k 6=j

    λktδt) + o(δt) = 1 −

    k 6=j

    λktδt + o(δt).

    Multiplying the two terms and collecting terms we obtain λjtδt + o(δt) as claimed.

    Recall that some fares have embedded time-of-purchase restrictions. Let Nt ⊂ N = {1, . . . ,n} to be the
    set of allowable fares at time-to-go t. Usually Nt = N for large t, but low fares are dropped from Nt as the
    time-of-purchase restrictions become binding.

    We can now write

    V (t,x) =

    j∈Nt

    λjtδt max(pj + V (t−δt,x− 1),V (t−δt,x)) + (1 −

    j∈Nt

    λjtδt)V (t− δt,x) + o(δt)

    = V (t−δt,x) + δt

    j∈Nt

    λjt[pj − ∆V (t− δt,x)]+ + o(δt) (19)

    with boundary conditions V (t, 0) = 0 and V (0,x) = 0 for all x ≥ 0, where ∆V (t,x) = V (t,x)−V (t,x−1) for
    x ≥ 1 and t ≥ 0.

    Subtracting V (t−δt,x) from both sides of equation (19), dividing by δt and taking the limit as δt ↓ 0, we
    obtain the following equation, known as the Hamilton Jacobi Bellman (HJB) equation:

    ∂V (t,x)

    ∂t
    =


    j∈Nt

    λjt[pj − ∆V (t,x)]+ (20)

    with the same boundary conditions. The equation tells us that the rate at which V (t,x) grows with t is the
    weighted sum of the positive part of the fares net of the marginal value of capacity ∆V (t,x) at state (t,x).

    While the value function can be computed by solving and pasting the differential equation (20), in practice
    it is easier to understand and compute V (t,x) using a discrete time dynamic programming formulation. A
    discrete time dynamic programming formulation emerges from (19) by rescaling time, setting δt = 1, and
    dropping the o(δt) term. This can be done by selecting a > 1, so that T ← aT is an integer, and setting
    λjt ← 1aλj,t/a, for t ∈ [0,aT]. The scale factor a should be selected so that, after scaling,


    j∈Nt λjt << 1,

    e.g.,

    j∈Nt λjt ≤ .01 for all t. The resulting dynamic program, after rescaling time, is given by

    V (t,x)

    = V (t− 1,x) +

    j∈Nt

    λjt[pj − ∆V (t− 1,x)]+. (21)

    with the same boundary conditions. Computing V (t,x) via (21) is quite easy and fairly accurate if time is
    scaled appropriately. For each t, the complexity is order O(n) for each x ∈ {1 . . . ,c} so the complexity per
    period is O(nc), and the overall computational complexity is O(ncT).

    A formulation equivalent to (21) was first proposed by Lee and Hersh [13], who also show that ∆V (t,x) is
    increasing in t and decreasing in x. The intuition is that the marginal value of capacity goes up if we have more
    time to sell and goes down when we have more units available for sale. From the dynamic program (21), it is
    optimal to accept a request for product j when pj ≥ ∆V (t−1,x) or equivalently, when pj + V (t−1,x−1) ≥
    V (t−1,x), i.e., when the expecte revenue from accepting the request exceeds the expected revenue of denying
    the request. Notice that if it is optimal to accept a request for fare j, then it is also optimal to accept a request

    17

    for any higher fare. Indeed, if pk ≥ pj and pj ≥ ∆V (t−1,x), then pk ≥ ∆V (t−1,x). Assuming that the fares
    are ordered: p1 ≥ p2 ≥ . . . ≥ pn, then it is optimal to accept all fares in the active set A(t,x) = {1, . . . ,a(t,x)},
    where

    a(t,x) = max{j ∈ Nt : pj ≥ ∆V (t− 1,x)} t ≥ 1,x ≥ 1},

    and to reject all fares in the complement R(t,x) = {j ∈ {1, . . . ,n} : j > a(t,x)}. For convenience we define
    a(t, 0) = a(0,x) = 0 and A(t, 0) = A(0,x) = ∅. For each time-to-go t let the protection level for fares in
    {1, . . . ,j} be

    yj(t) = max{x : a(t,x) = j},

    so if x ≤ yj(t) then fares j + 1 and higher should be closed.

    Proposition 6 The active set A(t,x) is decreasing in t and increasing in x. Moreover, yj(t) is increasing in
    j and increasing in t.

    Proof: Both results follow directly from the fact that ∆V (t,x) is increasing in t and decreasing in x.

    That intuition is that A(t,x) is decreasing in t because it is optimal to open fewer fares when we have more
    time to sell capacity at higher fares. The intuition that A(t,x) is increasing in x is that it we may need open
    more fares when we have more inventory. The intuition for yj(t) to be monotone in j is that we should protect
    at least as many units for sales of fares in {1, . . . ,j + 1} than for sales of fares in {1, . . . ,j}, so yj+1(t) ≥ yj(t).
    The intuition for yj(t) to be monotone in t is that with more time to sell, say t

    ′ > t, we have the potential to
    sell more from set {1, . . . ,j} so at least as many units should be protected: yj(t′) ≥ yj(t).

    6.1 A Pricing Formulation with Broader Interpretation

    At any time t, let λt =
    ∑n

    j=1 λjt be the overall arrival rate at time t. Define πjt =
    ∑j

    k=1 λkt/λt and

    rjt =
    ∑j

    k=1 pkλkt/λt. We can think of πjt and rjt as the probability of sale and the average revenue rate,
    per arriving customer, when we offer all the fares in the consecutive set Sj = {1, . . . ,j}. For convenience,
    let π0t = r0t = 0 denote, respectively, the sales rate and the revenue rate associated with S0 = ∅. Now let
    qjt = rjt/πjt be the average fare per unit sold when the offer set is Sj. If πjt = 0, we define qjt = 0. This
    implies that πjt[qjt − ∆V (t− 1,x)] is zero whenever πjt = 0, e.g., when j = 0.

    Let N+t = Nt ∪{0}. With this notation, we can write formulation (21) as

    V (t,x)

    = V (t− 1,x) + λt max
    j∈N+

    t

    [rjt −πjt∆V (t− 1,x)]

    = V (t− 1,x) + λt max
    j∈N+
    t

    πjt[qjt − ∆V (t− 1,x)]. (22)

    The reason to include 0 as a choice is that for j = 0, the term vanishes and this allow us to drop the positive
    part that was present in formulation (21). The equivalent formulation for the continuous time model (20) is

    ∂V (t,x)

    ∂t
    = λt max

    j∈N+
    t

    πjt[qjt − ∆V (t,x)]. (23)

    These formulation suggest that we are selecting among the actions S0,S1, . . . ,Sn to maximize the sales rate
    πjt times the average fare qjt net of the marginal value of capacity (∆V (t−1,x) for model (22) and ∆V (t,x)
    for model (23)). In essence, the problem has been reduced to a pricing problem with a finite price menu.
    Formulations (22) and (23) can be interpreted broadly as the problem of optimizing the expected revenue
    from state (t,x) where there are a finite number of actions. These actions can be, as above, associated with
    offering products in the sets S0,S1, . . . ,Sn, but other interpretations are possible. For example, the different
    actions can be associated with offering a product at different prices qjt, each price associated with a sales rate

    18

    πjt for all j ∈ N+. This turns the capacity allocation problem into a pricing problem with a finite price menu.
    We will come back to this pricing formulation when we discuss the dynamic capacity allocation problem with
    dependent demands. We will see there that essentially the same pricing formulation works for dependent
    demands. For the case of dependent demands, the set N+ will be the index corresponding to a collection of
    sets that is efficient in a sense that will be made precise later.

    7 Compound Poisson Demands

    The formulations of the dynamic programs (20) and (21), implicitly assume that each request is for a single
    unit. Suppose instead, that each arrival is for a random number of units. More specifically, suppose that
    request for fare j are of random size Zj, and that the probability mass function Pj(z) = P(Zj = z),z ≥ 1 is
    known for each j. As before, we assume independent demands for the different fare classes j ∈ N. We seek
    to generalize the dynamic programs (20) and (21) so that at each state (t,x) we can decide whether or not to
    accept a fare pj request of size Zj = z. The expected revenue from accepting the request is zpj +V (t−1,x−z)
    and the expected revenue from rejecting the request is V (t− 1,x). Let ∆zV (t,x) = V (t,x) −V (t,x− z) for
    all z ≤ x and ∆zV (t,x) = ∞ if z > x. We can think of ∆zV (t,x) as a the sum of the the z marginal values
    ∆V (t,x) + ∆V (t,x− 1) + . . . + ∆V (t,x−z + 1).

    The dynamic program (20) with compound Poisson demands is given by

    ∂V (t,x)
    ∂t
    =

    j∈Nt

    λjt

    ∞∑

    z=1

    Pj(z)[zpj − ∆zV (t,x)]+, (24)

    while the dynamic program (21) with compound Poisson demands is given by

    V (t,x) = V (t− 1,x) +

    j∈Nt
    λjt

    ∞∑
    z=1

    Pj(z)[zpj − ∆zV (t− 1,x)]+, (25)

    with boundary conditions V (t, 0) = V (0,x) = 0. Notice that the sums in (24) and (25) can be changed to
    ∑x

    z=1

    instead of
    ∑∞

    z=1 as the terms z > x do not contribute to the sum given our convention that ∆zV (t,x) = ∞ for
    x > z. The optimal policies for the two programs are, respectively, to accept a size z request fare pj, j ∈ Nt,
    if zpj ≥ ∆zV (t,x), and to accept a z request fare pj, j ∈ Nt, if zpj ≥ ∆zV (t− 1,x). The two policies should
    largely coincide time is scaled correctly so that


    j∈Nt λjt << 1 for all t ∈ [0,T].

    For compound Poisson demands, we can no longer claim that the marginal value of capacity ∆V (t,x) is
    decreasing in x, although it is still true that ∆V (t,x) is increasing in t. To see why ∆V (t,x) is not monotone in
    x, consider a problem where the majority of the requests are for two units and request are seldom for one unit.
    Then the marginal value of capacity for even values of x may be larger than the marginal value of capacity for
    odd values of x. Consequently, some of the structure may be lost. For example, it may be optimal to accept a
    request of a single unit of capacity when x is odd, but not if x is even, violating the monotonicity of ∆V (t,x).
    However, even if some of the structure is lost, the computations involved to solve (25) are straightforward as
    long as the distribution of Zj is known. Airlines, for example, have a very good idea of the distribution of Zj
    for different fare classes that may depend on the market served.

    Example 4. Consider again the data of Examples 3 with fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and
    p5 = $15 with independent compound Poisson demands, with uniform arrival rates λ1 = 15,λ2 = 40,λ3 =
    50,λ4 = 55,λ5 = 120 over the horizon [0, 1]. We will assume that Nt = N for all t ∈ [0, 1]. The aggregate
    arrival rates are given by Λj = λjT = λj for all j. We will assume that the distribution of the demand sizes is
    given by P(Z = 1) = 0.65,P(Z = 2) = 0.25,P(Z = 3) = 0.05 and P(Z = 4) = .05 for all fare classes. Notice
    that E[Z] = 1.5 and E[Z2] = 2.90, so the variance to mean ratio is 1.933. We used the dynamic program
    (25) with a rescaled time horizon T ← aT = 2, 800, and rescaled arrival rates λj ← λj/a for all j. Table 8
    provides the values V (T,c) for c ∈{50, 100, 150, 200, 250, 300, 350}. Table 8 also provides the values ∆V (t,x)

    19

    for t = 207 in the rescaled horizon for x ∈ {1, . . . , 6} to illustrate the behavior of the policy. The reader can
    verify that at state (t,x) = (208, 3) it is optimal to accept a request for one unit at fare p2, and to reject the
    request if it is for two units. Conversely, if the state is (t,x) = (208, 4) then it is optimal to reject a request
    for one unit at fare p2, and to accept the request if it is for two units. The reason for this is that the value of
    ∆V (t,x) is not monotone decreasing at x = 4.

    c 50 100 150 200 250 300
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    x 1 2 3 4 5 6
    ∆V (t,x) 70.05 66.48 59.66 60.14 54.62 50.41

    Table 8: Value function V (T,c) and marginal revenues ∆V (t,c) for Example 4: Compound Poisson

    7.1 Static vs Dynamic Policies

    Let Nj be the random number of request arrivals for fare j over the horizon [0,T], Then Nj is Poisson with

    parameter Λj =
    ∫ T
    0
    λjtdt. Suppose each arrival is of random size Zj. Then the aggregate demand, say Dj, for

    fare j is equal to

    Dj =

    Nj∑
    k=1

    Zjk, (26)

    where Zjk is the size of the kth request. It is well known that E[Dj] = E[Nj]E[Zj] = ΛjE[Zj] and that
    Var[Dj] = E[Nj]E[Z

    2
    j ] = ΛjE[Z

    2
    j ], where E[Z

    2
    j ] is the second moment of Zj. Notice that Jensen’s inequality

    implies that the the variance to mean ratio E[Z2j ]/E[Zj] ≥ E[Zj] ≥ 1.

    In practice, demands D1, . . . ,Dn are fed, under the low-to-high arrival assumption, into static policies to
    compute Vj(c),j = 1, . . . ,n and protection levels yj,j = 1, . . . ,n − 1 using the dynamic program (8), or to
    the EMSR-b heuristic to compute protection levels yb1, . . . ,y

    b
    n−1. Since the compound Poisson demands are

    difficult to deal with numerically, practitioners often approximate the aggregate demands Dj by a Gamma
    distribution with parameters αj and βj, such that αjβj = E[Nj]E[Zj] and αjβ

    2
    j = E[Nj]E[Z

    2
    j ], yielding

    αj = ΛjE[Zj]
    2/E[Z2j ], and βj = E[Z

    2
    j ]/E[Zj].

    We are interested in comparing the expected revenues obtained from static policies to those of dynamic
    policies. More precisely, suppose that that demands are compound poisson and Dj is given by (26) for every
    j = 1, . . . ,n. Suppose that protection levels y1,y2, . . . ,yn−1 are computed using the low-to-high static dynamic
    program (8) and let yb1,y

    b
    2, . . . ,y

    b
    n−1 be the protection levels computed using the EMSR-b heuristic. Protection

    levels like these are often used in practice in situations where the arrival rates λjt, t ∈ [0,T],j = 1, . . . ,n, are
    not necessarily low-to-high. Two possible implementations are common. Under theft nesting a size z request
    for fare class j as state (t,x) is accepted if x − z ≥ yj−1. This method is called theft nesting because the
    remaining inventory x at time-to-go t is x = c − b[1,n] includes all bookings up to time-to-go t, including
    bookings b[1,j − 1]. Standard nesting counts only bookings for lower fare classes and is implemented by
    accepting a size z request for fare j at state (t,x) if x − z ≥ (yj−1 − b[1,j − 1])+, where b[1,j − 1] are the
    observed bookings of fares [1,j − 1] up to state (t,x). When c > yj−1 > b[1,j − 1], this is equivalent to
    accepting a request for z units for fare j if c− b[j,n] − z ≥ yj−1, or equivalently if b[j,n] + z ≤ c−yj−1, so
    only bookings of low fares count. In practice, standard nesting works much better than theft nesting when
    the arrival pattern is not

    low-to-high.

    Notice that the expected revenue, say V s(T,c), resulting from applying the static protection levels y1, . . . ,yn−1
    with theft nesting is not, in general, equal to Vn(c), the optimal expected revenue when the arrivals are low-
    to-high. Similarly, the expected revenue, say V b(T,c), resulting from applying the EMSR-b protection levels
    yb1, . . . ,y

    b
    n−1 with theft nesting is not, in general, equal to V

    b
    n (c), the expected revenue when the arrivals are

    low-to-high.

    The next proposition shows that V s(T,x) ≤ V (T,x), where V (T,x) is the optimal expected revenue for the
    compound Poisson Dynamic Program. The same simple proof can be used to show that V b(T,x) ≤ V (T,x).

    20

    In fact, a proof is hardly needed as we are comparing heuristics to optimal dynamic policies.

    Proposition 7
    V s(T,x) ≤ V (T,x) ∀x ∈{0, 1, . . . ,c}.

    Proof: Clearly for V s(0,x) = V (0,x) = 0 so the result holds for t = 0, for all x ∈ {0, 1, . . . ,c}. Suppose
    the result holds for time-to-go t− 1, so V s(t− 1,x) ≤ V (t− 1,x) for all x ∈ {0, 1, . . . ,c}. We will show that
    it also holds for time-to-go t. If a request of size z arrives for fare class j, at state (t,x), the policy based on
    protection levels y1, . . . ,yn−1 will accept the request if x−z ≥ (yj−1−b[1,j−1])+ and will rejected otherwise.
    In the following equations, we will use Qj(z) to denote P(Zj > z). We have

    V s(t,x) =

    j∈Nt

    λjt[

    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V
    s(t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V s(t− 1,x)] + (1 −

    j∈Nt

    λjt)V
    s(t− 1,x)



    j∈Nt

    λjt[
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V (t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V (t− 1,x)] + (1 −

    j∈Nt

    λjt)V (t− 1,x)

    = V (t− 1,x) +

    j∈Nt
    λjt
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))

    ≤ V (t− 1,x) +

    j∈Nt

    λjt
    ∞∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))+

    = V (t,x),

    where the first equation follows from the application of the protection level policy, the first inequality follows
    from the inductive hypothesis V s(t − 1,x) ≤ V (t − 1,x). The second equality collects terms, the second
    inequality follows because we are taking positive parts, and the last equality from the definition of V (t,x).

    While we have shown that V s(T,c) ≤ V (T,c), one may wonder whether there are conditions where equality
    holds. The following results answers this question.

    Corollary 2 If the Dj’s are independent Poisson random variables and the arrivals are low-to-high then
    Vn(c) = V

    s(T,c) = V (T,c).

    Proof: Notice that if the Djs are Poisson and the arrivals are low-to-high, then we can stage the arrivals
    so that λjt = nE[Dj]/T over t ∈ (tj−1, tj] where tj = jT/n for j = 1, . . . ,n. We will show by induction in
    j that Vj(x) = V (tj,x). Clearly y0 = 0 and V1(x) = p1E min(D1,x) = V (t1,x) assuming a sufficiently large
    rescale factor. Suppose, by induction, that Vj−1(x) = V (tj−1,x). Consider now an arrival at state (t,x) with
    t ∈ (tj−1, tj]. This means that an arrival, if any, will be for one unit of fare j. The static policy will accept this
    request if x−1 ≥ yj−1, or equivalently if x > yj−1. However, if x > yj−1, then ∆(t−1,x) ≥ ∆V (tj−1,x) ≥ pj,
    because ∆V (t,x) is increasing in t and because yj−1 = max{y : ∆Vj−1(y) > pj} = max{y : ∆V (tj−1,x) > pj},
    by the inductive hypothesis. Conversely, if the dynamic program accepts a request, then pj ≥ ∆V (t,x) and
    therefore x > yj−1 on account of ∆V (t,x) ≥ ∆V (tj−1,x).

    We have come a long way in this chapter and have surveyed most of the models for the independent
    demand case. Practitioners and proponents of static models, have numerically compared the performance of
    static vs dynamic policies. Diwan [7], for example, compares the performance of the EMSR-b heuristic against
    the performance of the dynamic formulation for Poisson demands (21) even for cases where the aggregate

    21

    demands Dj,j = 1, . . . ,n are not Poisson. Not surprisingly, this heuristic use of (21) can underperform relative
    to the EMSR-b heuristic. However, as seen in Proposition 7, the expected revenue under the optimal dynamic
    program (25) is always at least as large as the expected revenue generated by any heuristic, including the
    EMSR-b. In addition, the dynamic program does not require assumptions about the arrival being low-to-high
    as the EMSR-b does. Even so, the EMSR-b heuristic performs very well when the low-to-high assumptions
    hold. However, when the low-to-high assumptions are relaxed, then the performance of the EMSR-b heuristic
    suffers relative to that of the dynamic program as illustrated by the following example.

    Example 5. Consider again the data of Example 4 with uniform arrival rates. Table 9 compares the perfor-
    mance V (T,c) of the compound poisson formulation (25) to the performance of the EMSR-b under standard
    nesting. Part of the gap between V b(T,c) and V (T,c) can be reduced by frequently recomputing the booking
    limits applying the EMSR-b heuristic during the sales horizon.

    c 50 100 150 200 250 300
    V b(T,c) $3,653 $6,177 $8,187 $9,942 $11,511 $12,266
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    Gap 4.8% 4.4% 3.1% 2.9% 1.8% 2.3%

    Table 9: Sub-Optimality of EMSR-b with Standard Nesting

    7.2 Bounds on V (T, c)

    We will now briefly show that the upper bound V Un (c) for Vn(c), developed in Section 5 for the static multi-fare
    model is still valid for V (T,c). The random revenue associated with the perfect foresight model is Vn(c,D)
    and can be obtained by solving the linear program (11). Notice that for all sample paths, this revenue is
    at least as large as the revenue for the dynamic policy. Taking expectations we obtain V (T,c) ≤ V Un (c) =
    EVn(c,D) =

    ∑n
    k=1(pk − pk+1)E min(D[1,k],c), where for convenience pn+1 = 0. Moreover, since dynamic

    policies do at least as well as static policies, the lower bounds obtained in Section 5 also apply to dynamic
    policies.

    8 Monotonic Fare Offerings

    The dynamic programs (20) and (21) and their counterparts (22) and (23), all implicitly assume that fares
    can be opened and closed at any time. To see how a closed fare may reopen, suppose that a(t,x) = j so set
    A(t,x) = {1, . . . ,j} is offered at state (t,x), but an absence of sales may trigger fare/action j + 1 to open as
    a(s,x) increases as the time-to-go s decreases. . This can lead to the emergence of third parties that specialize
    on inter-temporal fare arbitrage. To avoid this capacity provider may commit to a policy of never opening fares
    once they are closed. To handle monotonic fares requires modifying the dynamic programming into something
    akin to the dynamic program (8) where time was handled implicitly. Let Vj(t,x) be the maximum expected
    revenue from state (t,x) when we can offer any consecutive subset of open fares Sk = {1, . . . ,k},k ≤ j and are
    not allowed to reopen fares once they are closed. Let Wk(t,x) be the expected revenue from accepting fares
    Sk at state (t,x) and then following an optimal policy. More precisely,

    Wk(t,x) =

    k∑

    i=1

    λit[pi + Vk(t− 1,x− 1)] + (1 −
    k∑

    i=1

    λit)Vk(t− 1,x)

    = Vk(t− 1,x) + rkt −πkt∆Vk(t− 1,x)
    = Vk(t− 1,x) + πkt[pkt − ∆Vk(t− 1,x)],

    where ∆Vk(t,x) = Vk(t,x) −Vk(t,x− 1), where πkt =
    ∑k

    i=1 λit and rkt =
    ∑j

    i=1 piλit and pkt = rkt/πkt when
    πkt > 0 and pkt = 0 otherwise.

    22

    Then Vj(t,x) satisfies the dynamic program

    Vj(t,x) = max
    k≤j

    Wk(t,x) = max{Wj(t,x),Vj−1(t,x)} (

    27

    )

    with the boundary conditions Vj(t, 0) = Vj(0,x) = 0 for all t ≥ 0 and all x ∈ N for all j = 1, . . . ,n. Notice
    that the optimization is over consecutive subsets Sk = {1, . . . ,k}, k ≤ j. It follows immediately that Vj(t,x)
    is monotone increasing in j. An equivalent version of (27) for the case n = 2 can be found in Weng and
    Zheng [23]. The complexity to compute Vj(t,x),x = 1, . . . ,c for each j is O(c) so the complexity to compute
    Vj(t,x),j = 1, . . . ,n,x = 1, . . . ,c is O(nc). Since there are T time periods the overall complexity is O(ncT).
    While computing Vj(t,x) numerically is fairly simple, it is satisfying to know more about the structure of
    optimal policies as this gives both managerial insights and can simplify computations. The proof of the
    structural results are intricate and subtle, but they parallel the results for the dynamic program (8) and (21).
    The following Lemma is the counterpart to Lemma 2 and uses sample path arguments based on ideas in [23]
    to extend their results from n = 2 to general n. The proof can be found in the Appendix.

    Lemma 3 For any j ≥ 1,

    a) ∆Vj(t,x) is decreasing in x ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(t,x) is increasing in j ∈{1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    c) ∆Vj(t,x) is increasing in t, so the marginal value of capacity increases as the time-to-go increases.

    Let
    aj(t,x) = max{k ≤ j : Wk(t,x) = Vj(t,x)}.

    In words, aj(t,x) is the index of the lowest open fare that is optimal to post at state (t,x) if we are allowed
    to use any fares in Sj. Let

    Aj(t,x) = {1, . . . ,aj(t,x)}.

    Then Aj(t,x) is the optimal set of fares to open at state (j,t,x). Clearly Vi(t,x) = Vj(t,x) for all i ∈
    {aj(t,x), . . . ,j}. The following Lemma asserts that aj(t,x) is monotone decreasing in t (it is optimal to have
    fewer open fares with more time-to-go and the same inventory), monotone increasing in x (it is optimal to
    have more open fares with more inventory and the same time-to-go) and monotonically increasing in j.

    Lemma 4 aj(t,x) is decreasing in t and increasing in x and j. Moreover, aj(t,x) = k < j implies ai(t,x) = k for all i ≥ k.

    It is possible to think of the policy in terms of protection levels and in terms of stopping sets. Indeed, let
    Zj = {(t,x) : Vj(t,x) = Vj−1(t,x)}. We can think of Zj as the stopping set for fare j as it is optimal to close
    down fare j upon entering set Zj. For each t let yj(t) = max{x ∈N : (t,x) ∈ Zj+1}. We can think of yj(t) as
    the protection level for fares in Sj against higher fares. The following result is the counterpart to Theorem 2.

    Theorem 3 • Aj(t,x) is decreasing in t and increasing in x and j.

    • Z1 ⊂ Z2 ⊂ . . . ⊂ Zn.

    • yj(t) is increasing in t and in j.

    • If x ≤ yj(t) then Vi(t,x) = Vj(t,x) for all i > j.

    Proof: The properties of Aj(t,x) follow from the properties of aj(t,x) established in Lemma 4. Zj = {(t,x) :
    aj(t,x) < j}. From Lemma 4, aj(t,x) < j implies that ai(t,x) < i for all i > j, so Zj ⊂ Zi for all i > j. This

    23

    implies that yj(t) is increasing in j for any t ≥ 0. If t′ > t, then aj+1(t′,yj(t)) ≤ aj+1(t,yj(t)) < j + 1, so yj(t

    ′) ≥ yj(t). Since yj(t) ≤ yi(t) for all i > j, then x ≤ yj(t) implies Vi+1(t,x) = Vi(t,x) for all i ≥ j and
    therefore Vi(t,x) = Vj(t,x) for all i > j.

    The policy is implemented as follows: The starting state is (n,T,c) as we can use any of the fares {1, . . . ,n},
    we have T units of time to go and c is the initial inventory. At any state (j,t,x) we post fares Aj(t,x) =
    {1, . . . ,aj(t,x)}. If a unit is sold during period t the state is updated to (aj(t,x), t−1,x−1) since all fares in
    the set Aj(t,x) are allowed, the time-to-go is t− 1 and the inventory is x− 1. If no sales occur during period
    t the state is updated to (aj(t,x), t− 1,x). The process continues until either t = 0 or x = 0.

    Example 6. Consider Example 1 again with 5 fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and p5 = $15
    with independent Poisson demands with means Λ1 = 15, Λ2 = 40, Λ3 = 50, Λ4 = 55 and Λ5 = 120 and
    T = 1. The scaling factor was selected so that

    ∑5
    i=1 Λi/a < .01 resulting in T ← aT = 2, 800. We also

    assume that the arrival rates are uniform over the horizon [0,T], i.e., λj = Λj/T. In Table 10 we present
    the expected revenues Vj(T,c),j = 1, . . . , 5 and V (T,c) for c ∈ {50, 100, 150, 200, 250}. The first row is V5(c)
    from Example 1. Notice that V5(c) ≤ V5(T,c). This is because we here we are assuming uniform, rather than
    low-to-high arrivals. V (T,c) is even higher because we have the flexibility of opening and closing fares at
    will. While the increase in expected revenues [V (T,c) −V5(T,c)] due to the flexibility of opening and closing
    fares may be significant for some small values of c (it is 1.7% for c = 50), attempting to go for this extra
    revenue may invite strategic customers or third parties to arbitrage the system. As such, it is not generally
    recommended in practice.

    c 50 100 150 200 250 300 350
    V5(c) 3,426.8 5,441.3 7,188.7 8,159.1 8,909.1 9,563.9 9,625.0

    V (T,c) 3,553.6 5,654.9 7,410.1 8,390.6 9,139.3 9,609.6 9,625.0
    V5(T,c) 3,494.5 5,572.9 7,364.6 8,262.8 9,072.3 9,607.2 9,625.0
    V4(T,c) 3,494.5 5,572.9 7,364.6 7,824.9 7,825.0 7,825.0 7,825.0
    V3(T,c) 3,494.5 5,572.9 5,900.0 5,900.0 5,900.0 5,900.0 5,900.0
    V2(T,c) 3,494.5 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0
    V1(T,c) 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0

    Table 10: Expected Revenues V (T,c) with uniform arrival rates

    To obtain a continuous time formulation, we can use the same logic that lead to (20) to obtain

    ∂Vj(t,x)

    ∂t
    =

    {
    rjt −πjt∆Vj(t,x) if (t,x) /∈ Zj−1
    ∂Vj−1(t,x)

    ∂t
    if (t,x) ∈ Zj−1

    (28)

    with the same boundary conditions.

    8.1 Mark-up and Mark-down Policies

    We now go back to the broader pricing interpretation coupled with the monotonic fare formulation (27). In
    many applications the price menu pjt,j = 1, . . . ,n is time invariant, but the associated sales rates πjt,j =
    1, . . . ,n are time varying. In addition, we will assume that there is a price p0t such that π0t = 0 for all t.
    This technicality helps with the formulation as a means of turning off demand when the system runs out of
    inventory. The case p1t ≥ p2t ≥ . . . ≥ pnt and π1t ≤ π2t ≤ . . . ≤ πnt is known as the mark-up problem, while
    the case p1t ≤ p2t ≤ . . . ≤ pnt and π1t ≥ π2t ≥ . . . ≥ πnt is known as the mark-down problem. The former
    model is relevant in Revenue Management while the second is relevant in Retailing.

    For the RM formulation, the problem can be viewed as determining when to mark-up (switch from action
    j to j − 1). The optimal mark-up times are random as they depend on the evolution of sales under the
    optimal policy. Suppose that the current state is (j,t,x), so the last action was j, the time-to-go is t and the
    inventory is x. We want to determine whether we should continue using action j or switch to action j − 1.
    We know that if x > yj−1(t), then we should keep action j and if x ≤ yj−1(t) then we should close action

    24

    j. Let Zj = {(t,x) : x ≤ yj−1(t)}, then it is optimal to stop action j upon first entering set Zj. Notice
    that a mark-up occurs when the current inventory falls below a curve, so low inventories trigger mark-ups,
    and mark-ups are triggered by sales. The retailing formulation also has a threshold structure, but this time a
    mark-down is triggered by inventories that are high relative to a curve, so the optimal timing of a mark-down
    is triggered by the absence of sales. Both the mark-up and the mark-down problems can be studied from the
    point of view of stopping times. We refer the reader to Feng and Gallego [9], [10], and Feng and Xiao [11] and
    reference therein for more on the markup and markdown problems.

    9 Acknowledgments

    I acknowledge the feedback from my students and collaborators. In particular, I would like to recognize the
    contributions and feedback from Anran Li, Lin Li, and Richard Ratliff.

    25

    10 Appendix

    Proof of Lemma 1. Notice that g(y) = G(y)P(X ≥ y) +

    j≤y−1 G(j)P(X = j), while g(y − 1) = G(y −
    1)P(X ≥ y) +


    j≤y−1 G(j)P(X = j). Taking the difference yields ∆g(y) = G(y)P(X ≥ y). Notice that

    r(y) = R(y)P(X < y) + ∑

    j≥y R(j)P(X = j) while r(y − 1) = R(y − 1)P(X < y) + ∑

    j≥y R(j)P(X = j).
    Taking the difference we see that ∆r(y) = ∆R(y)P(X < y).

    Proof of Proposition 1. Let G(y) = p1y, then V1(y) = g(y) = EG(min(D1,y)), so ∆V1(y) = ∆g(y) =
    p1P(D1 ≥ y). This establishes the first part of the Proposition. To establish the second part of the Proposition
    we use the first part of Lemma 1 to show that p2E min(D2,c−y)−p2E min(D2,c−y + 1) = −p2P(D2 > c−y)
    and the second part of the Lemma 1 to show that EV1(max(x − D2,y)) − EV1(max(x − D2,y − 1)) =
    ∆V1(y)P(D2 > c−y). The second part of the Proposition then follows from putting the two parts together. To
    see the first part, let r(y) = p2c−p2E max(c−D2,y), then ∆r(y) = p2E min(D2,c−y)−p2E min(D2,c−y+1) =
    ∆R(y)P(c − D2 < y) where R(y) = −p2y, so ∆r(y) = −p2P(c − D2 < y) = −p2P(D2 > c − y). Now let
    R(y) = V1(y), then ∆r(y) = ∆V1(y)P(c−D2 < y) = ∆V1(y)P(D2 > c−y) completing the proof.

    Proof of Lemma 2: We will prove the above result by induction on j. The result is true for j = 1 since
    ∆V1(y) = p1P(D1 ≥ y) is decreasing in y and clearly ∆V1(y) = p1P(D1 ≥ y) ≥ ∆V0(y) = 0. Assume that the
    result is true for Vj−1. It follows from the dynamic programming equation (8) that

    Vj(x) = max
    y≤x

    {Wj (y,x))} ,

    where for any y ≤ x,

    Wj(y,x) = E [pj min{Dj,x−y}] + E [Vj−1 (max{x−Dj,y})]

    A little work reveals that for y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Since ∆Vj−1(y) is decreasing in y (this is the inductive hypothesis), we see that Wj(y,x) ≥ Wj(y − 1,x)
    if ∆Vj−1(y) > pj and Wj(y,x) ≤ Wj(y − 1,x) if ∆Vj−1(y) ≤ pj.

    Consider the expression

    yj−1 = max{y ∈N : ∆Vj−1(y) > pj} (29)

    where the definition of ∆Vj(y) is extend to y = 0 for all j by setting ∆Vj(0) = p1. If yj−1 ≤ x then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(yj−1,x)

    On the other hand, if x < yj−1 then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(x,x).

    In summary,

    Vj(x) = Wj(min(x,yj−1),x)

    =

    {
    Vj−1(x), if x ≤ yj−1
    E [pj min{Dj,x−yj−1}] + E [Vj−1 (max{x−Dj,yj−1})] if x > yj−1

    26

    Computing ∆Vj(x) = Vj(x) −Vj(x− 1) for x ∈N results in:

    ∆Vj(x) =

    {
    ∆Vj−1(x), if x ≤ yj−1
    E min(pj, ∆Vj−1(x−Dj)) if x > yj−1

    (30)

    We will now use this result to show that ∆Vj(x) is itself decreasing in x. Since ∆Vj(x) = ∆Vj−1(x) for
    x ≤ yj−1 and ∆Vj−1(x) is decreasing in x we only need to worry about the case x > yj−1.

    However, in this case
    ∆Vj(x) = E min(pj, ∆Vj−1(x−Dj))

    is decreasing in x since ∆Vj−1(x) is itself decreasing in x.

    We now show that ∆Vj(x) ≥ ∆Vj−1(x). For x > yj−1 we have min(pj, ∆Vj−1(x−Dj)) ≥ min(pj, ∆Vj−1(x)) =
    ∆Vj−1(x) where the inequality follows since ∆Vj−1(x) is decreasing in x and the equality since x > yj−1. Tak-
    ing expectations we see that ∆Vj(x) ≥ ∆Vj−1(x) on x > yj−1 while ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1.

    Proof of Proposition 2. We first show that ∆Vj+1(x) = ∆Vj(x) for x = 1, . . . ,yj. This follows since
    Vj+1(x) = Wj+1(x,x) = Vj(x) in this range as no capacity is made available for fare pj+1 when x ≤ yj. For
    x > yj

    Vj+1(x) = pj+1E min(x−yj,Dj+1) + EVj(max(x−Dj+1,yj)

    = pj+1

    x−yj∑
    k=1

    Pr(Dj+1 ≥ k) + Vj(yj)Pr(Dj+1 > x−yj)

    +

    x−yj∑

    k=0

    Vj(x−k)Pr(Dj+1 = k).

    Consequently, for x > yj

    ∆Vj+1(x) = pj+1Pr(Dj+1 ≥ x−yj) +
    x−yj−1∑

    k=0

    ∆Vj(x−k)Pr(Dj+1 = k) (31)

    follows from Vj(x − 1) = Vj(yk) for x = yj + 1. Since pj+1 < ∆Vj(y) for y ≤ yj, we can write ∆Vj+1(x) =∑∞ k=0 min(pj+1, ∆Vj(x−k))P(Dj+1 = k) = E min(pj+1, ∆Vj(x−Dj+1)).

    Proof of Proposition 3. Since Πn(c,k) is the difference of a concave and a linear function, Πn(c,k) it is
    itself concave. The marginal value of adding the cth unit of capacity is ∆Vn(c) − k so the cth unit increase
    profits as long as ∆Vn(c) > k. Therefore, the smallest optimal capacity is given by c(k). (Notice that c(k) + 1
    may be also optimal if ∆Vn(c(k) + 1) = k.) c(k) is decreasing in k since ∆Vn(c) is decreasing in c. Suppose
    that k = pj+1. To establish c(pj+1) = yj it is enough to show that that ∆Vn(yj) > pj+1 ≥ ∆Vn(yj + 1). By
    definition yj = max{y ∈N : ∆Vj(y) > pj+1} so ∆Vj(yj) > pj+1 ≥ ∆Vj(yj + 1). Since it is optimal to protect
    up to yj units of capacity for sale at fares j,j − 1, . . . , 1, it follows that Vn(c) = Vj(c) for all c ≤ yj, and
    consequently ∆Vn(yj) = ∆Vj(yj) > pj+1. Now ∆Vn(yj + 1) can be written as a convex combination of pj+1
    and ∆Vj(yj + 1) ≤ pj+1 which implies that ∆Vn(yj + 1) ≤ pj+1, completing the proof.

    Proof of Lemma 3: We will first show part that ∆Vj(t,x) is decreasing in x which is equivalent to showing
    that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1)] for all x ≥ 1. Let A be an optimal admission control rule starting
    from state (t,x + 1) and let B be an optimal admission control rule starting from (t,x− 1). These admission
    control rules are mappings from the state space to subsets Sk = {1, . . . ,k},k = 0, 1, . . . ,j where S0 = ∅ is
    the optimal control whenever a system runs out of inventory. Consider four systems: two starting from state
    (t,x), using control rules A′ and B′, respectively, and one each starting from (t,x + 1) and (t,x − 1), using
    control rule A and B, respectively. Our goal is to specify heuristic control rules A′ and B′ that together make
    the expected revenues of the two systems starting with (t,x) at least as large as the expected revenues from
    the systems starting at (t,x + 1) and (t,x− 1). This will imply that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1).

    27

    We will use the control rules A′ = A ∩ B and B′ = A ∪ B until the first time, if ever, the remaining
    inventory of the system (t,x) controlled by A′ is equal to the remaining inventory of the system (t,x + 1)
    controlled by A. This will happen the first time, if ever, there is a sale under A and not under A′, i.e., a sale
    under A but not under B. Let t′ be the first time this happens, if it happens before the end of the horizon,
    and set t′ = 0 otherwise. If t′ > 0 then we apply policy A′ = A and B′ = B over s ∈ [0, t′). We claim that the
    expected revenue from the two systems starting with (t,x) is the same as the expected revenue from the other
    two systems. This is because the sales and revenues up to, but before t′, are the same in the two systems.
    At t′ sales occur only for the system (t,x) controlled by B′ and the system (t,x + 1) controlled by A and the
    revenues from the two sales are identical. After the sales at t′, the inventory of the system (t,x) controlled by
    A′ becomes identical to the inventory of the system (t,x+ 1) controlled by A while the inventory of the system
    (t,x) controlled by B′ becomes identical to the inventory of the system (t,x− 1) controlled by B. Since the
    policy switches to A′ = A and B′ = B then sales and revenues are the same over [0, t′). If t′ = 0 then the
    sales of the two systems are the same during the entire horizon.

    It remains to verify that inventories don’t become negative. Prior to time t′ the systems remain balance
    in the sense that system (t,x) governed by A′ always has one unit of inventory less than system (t,x + 1)
    governed by A and system (t,x) governed by B′ has one more unit of inventory than system (t,x−1) governed
    by B. Thus the only two systems that could potential run out of inventory before t′ are A′ and B.

    Since sales under A′ = A∩B are more restricted than sales under B, the inventory of system (t,x) governed
    by A′ will always be at least one unit since at most x − 1 units of sale are allowed under B. Therefore the
    only way the system can run out of inventory is if system (t,x− 1) runs out of inventory under B before t′.
    However, in this case sales would stop under systems A′ and B, while sales will continue under B′ = A and A
    so revenues will continue to be the same until the first sale under A at which point we reached t′. This shows
    that even if the system (t,x − 1) runs out of inventory under B the two systems continue to have the same
    revenues over the entire horizon. Consequently 2∆Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1) for all x ≥ 1.

    To show that ∆Vj(t,x) is increasing in j it is enough to show that

    Vj(t,x) + Vj−1(t,x− 1) ≥ Vj(t,x− 1) + Vj−1(t,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (j,t,x−1) and B be an admission control rule for the system (j−1, t,x) Let A′ and B′ be heuristic admission
    rules applied, respectively, to the systems (j,t,x) and (j−1, t,x−1). Our goal is to exhibit heuristics A′ and B′
    such that when applied to the systems (j,t,x) and (j−1, t,x−1) they generate as much revenue as the applying
    A to (j,t,x−1) and B to (j−1, t,x). This will imply that Vj(t,x) + Vj−1(t,x−1) ≥ Vj(t,x−1) + Vj−1(t,x).

    Let A′ = A ∪ B and B′ = A ∩ B and let t′ be the first time there is a sale under A ∪ B without a
    corresponding sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets
    of two systems are equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and
    revenues under both sets of two systems are equal up to t′. At t′ there are sales for the system (j,t,x) and
    (j−1, t,x−1) that generate the same revenues. Moreover, the inventories of the two sets of two systems have
    the same inventories immediately after the sale at t′. Since the policy then switches to A′ = A and B′ = B
    then sales and revenues are the same for the two set of systems over s ∈ [0, t′). The only system in danger to
    run out of inventory is system (j,t,x) under A′ = A∪B, but that system has the same number of sales as the
    system (j,t,x− 1) under A up to t′. Therefore the system (j,t,x) has at least one unit of inventory up to t′.

    To show that ∆Vj(t,x) is increasing in t it is enough to show that

    Vj(t,x) + Vj(t− 1,x− 1) ≥ Vj(t,x− 1) + Vj(t− 1,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (t,x − 1) and B be an optimal admission control rule for the system (t − 1,x) Let A′ and B′ be heuristic
    admission rules applied, respectively, to the systems (t,x) and (t− 1,x− 1). Our goal is to exhibit heuristics
    A′ and B′ such that when applied to the systems (t,x) and (t−1,x−1) they generate as much revenue as the
    applying A to (t,x−1) and B to (t−1,x). This will imply that Vj(t,x)+Vj(t−1,x−1) ≥ Vj(t,x−1)+Vj(t−1,x).
    Let A′ = A∪B and B′ = A∩B and let t′ be the first time there is a sale under A′ without a corresponding

    28

    sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets of two systems are
    equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and revenues under both
    sets of two systems are equal up to t′. At t′ there are sales for the system (t,x) and (t−1,x) that generate the
    same revenues. Moreover, the inventories of the two sets of two systems have the same inventories immediately
    after the sale at t′. Since the policy then switches to A′ = A and B′ = B then sales and revenues are the
    same for the two set of systems over s ∈ [0, t′). The only system in danger to run out of inventory is system
    (t− 1,x− 1) under B′ = A∪B, but that system has the same number of sales as the system (t− 1,x) under
    B up to t′. Therefore the system (t− 1,x− 1) has at least one unit of inventory up to t′.

    Proof of Lemma 4. We will first show that aj(t,x) can also be characterized as aj(t,x) = max{k ≤
    j : pk ≥ ∆Vk(t − 1,x)}. The result will then follow from Lemma 3. First notice that if aj(t,x) = k < j then Vi(t,x) = Vk(t,x) for all i ∈ {k,. . . ,j}. Moreover, aj(t,x) = k < j implies that Wk(t,x) > Wk+1(t,x).
    Consequently 0 > Wk+1(t,x)−Wk(t,x) = (pk+1−∆Vk+1(t−1,x))λk+1, so pk+1 < ∆Vk+1(t−1,x). Conversely, if pk ≥ ∆Vk(t−1,x) then Wk(t,x)−Wk−1(t,x) ≥ (pk −∆Vk(t−1,x))λk ≥ 0 so Wk(t,x) ≥ Wk−1(t,x). With the new characterization we now turn to the monotonicity of aj(t,x) = max{k ≤ j : pk ≥ ∆Vk(t − 1,x)}. The monotonicity with respect to j is obvious because it expands the set over which we are maximizing. To see the monotonicity with respect to t, notice that ∆Vk(t,x) ≥ ∆Vk(t − 1,x) so k is excluded from the set whenever ∆Vk(t − 1,x) ≤ pk < ∆Vk(t,x). To see the monotonicity with respect to x, notice that ∆Vk(t − 1,x + 1) ≤ ∆Vk(t,x) ≤ pk implies that k contributes positively at state (t − 1,x + 1) whenever it contributes at (t− 1,x).

    29

    11 Terminology

    Item Description

    c capacity

    p price

    s salvage value on excess capacity after the arrival of full-fare demand (e.g. last-
    minute travel specials).

    x remaining capacity, i.e. x ∈{0, 1, …,c}
    E expected value operator

    j fare class identifier where price decreases with increasing class index, i.e. p1 ≥
    p2 ≥ .. ≥ pj

    pj demand weighted average fare class price

    D fare class demand

    y protection level for a fare class

    ya protection level obtained using EMSRa heuristic

    yb protection level obtained using EMSRb heuristic

    W(y,c) revenue given protection level y and capacity c

    r ratio of discount to full-fare price

    F cumulative density function (CDF) of continuous demand

    F−1 inverse density function of continuous demand

    b booking limit for sales of discount fares

    Vj(x) optimal expected revenue for classes {1, 2, …,j} from capacity x
    ρ penalty cost for each unit of full-fare demand that is rejected

    sj observed sales for fare j in Monte Carlo simulation

    Sk Set of highest k fares {1, . . . ,k}
    a(t,x) highest opened fare class at state (t,x)

    Zj the stopping set for fare j (where it is optimal to close down fare j upon entering
    set Zj)

    λjt arrival rate of fare j demand at time-to-go t

    Λjt expected demand for fare j over [0, t].

    Table 11: Summary of Terminology and Notation Used

    References

    [1] Bathia, A. V. and S. C. Prakesh (1973) “Optimal Allocation of Seats by Fare,” Presentation by TWA
    Airlines to AGIFORS Reservation Study Group.

    [2] Belobaba, P. P. (1987) “Airline Yield Management An Overview of Seat Inventory Control,” Transporta-
    tion Science, 21, 63–73.

    [3] Belobaba, P. P. (1989) “Application of a Probabilistic Decision Model to Airline Seat Inventory Control,”
    Operations Research, 37, 183–197.

    [4] Brumelle, S. L., J. I. McGill, T. H. Oum, M. W. Tretheway and K. Sawaki (1990) “Allocation of Airline
    Seats Between Stochastically Dependent Demands,” Transporation Science, 24, 183-192.

    [5] Brumelle, S. L. and J. I. McGill (1993) “Airline Seat Allocation with Multiple Nested Fare Classes,”
    Operations Research, 41, 127-137.

    30

    [6] Curry, R. E. (1990) “Optimal Airline Seat Allocation with Fare Nested by Origins and Destinations,”
    Transportation Science, 24, 193–204.

    [7] Diwan, S. (2010) “Performance of Dynamic Programming Methods in Airline Revenue Management.”
    M.S. Dissertation MIT. Cambridge, MA.

    [8] Chandler, S. and Ja, S. (2007) Revenue Opportunity Modeling at American Airlines. AGIFORS Reser-
    vations and Yield Management Study Group Annual Meeting Proceedings; Jeju, Korea.

    [9] Feng, Y. and G. Gallego (1995) “Optimal Starting Times of End-of-Season Sales and Optimal Stopping
    Times for Promotional Fares,” 41, 1371-1391.

    [10] Feng, Y. and G. Gallego (2000) “Perishable asset revenue management with Markovian time-dependent
    demand intensities,” Management Science, 46(7): 941-956.

    [11] Feng, Y. and B. Xiao (2000) “Optimal policies of yield management with multiple predetermined prices,”
    Operations Research, 48(2): 332-343.

    [12] Gallego, G., S. Kou and Phillips, R. (2008) “Revenue Management of Callable Products,” Management
    Science, 54(3): 550564.

    [13] Lee. C. T. and M. Hersh. (1993) “A Model for Dynamic Airline Seat Inventory Control with Multiple
    Seat Bookings,” Transportation Science, 27, 252–265.

    [14] Littlewood, K. (1972) “Forecasting and Control of Passenger Bookings.” 12th AGIFORS Proceedings:
    Nathanya, Israel, reprinted in Journal of Revenue and Pricing Management, 4(2): 111-123.

    [15] Pfeifer, P. E. (1989) “The Airline Discount Fare Allocation Problem,” Decision Science, 20, 149–157.

    [16] Ratliff, R. (2005) “Revenue Management Demand Distributions”, Presentation at AGIFORS Reservations
    and Yield Management Study Group Meeting, Cape Town, South Africa, May 2005.

    [17] Richter, H. (1982) “The Differential Revenue Method to Determine Optimal Seat Allotments by Fare
    Type,” In Proceedings 22nd AGIFORS Symposium 339-362.

    [18] Robinson, L.W. (1995) “Optimal and Approximate Control Policies for Airline Booking With Sequential
    Nonmonotonic Fare Classes,” Operations Research, 43, 252-263.

    [19] Simpson, R. (1985) “Theoretical Concepts for Capacity/Yield Management,” In Proceedings 25th AGI-
    FORS Symposium 281-293.

    [20] Talluri, K and G. van Ryzin (2004) “The Theory and Practice of Revenue Management,” Springer Sci-
    ence+Business Media, New York, USA, pg. 42.

    [21] Tematha, C., S. Polt, and and L. Suhi. (2010) “On the robustness of the network-based revenue oppor-
    tunity model,” Journal of Revenue and Pricing Management , Vol. 9, 4, 341355.

    [22] Wollmer, R. D. (1992) “An Airline Seat Management Model for a Single Leg Route When Lower Fare
    Classes Book First,” Operations Research, 40, 26-37.

    [23] Zhao, W. and Y-S Zheng (2001) “A Dynamic Model for Airline Seat Allocation with Passenger Diversion
    and No-Shows,” Transportation Science,35: 80-98.

    31

    RM session 2.notebook

    1

    February 12, 2013

    • Page 1

    Probability
    and Dynamic Programming

    Review
    for

    Dynamic Pricing and Revenue
    Management

  • Probability Review
  • • Poisson: http://en.wikipedia.org/wiki/Poisson_random_variable

    – Read Sections: 1, 2, 3,

    4

    • Compound Poisson:
    http://en.wikipedia.org/wiki/Compound_Poisson_distribution

    • Poisson Process: http://en.wikipedia.org/wiki/Poisson_process
    • Compound Poisson Process:

    http://en.wikipedia.org/wiki/Compound_Poisson_process

    • Normal: http://en.wikipedia.org/wiki/Normal_random_variable
    – Read Sections 1,2.1,2.2,3,1,3.2,3.

    3

    • Brownian Motion: http://en.wikipedia.org/wiki/Wiener_process
    – Read sections 1, 2.

    DP AS AN OPTIMIZATION METHODOLOGY

    • Basic optimization problem

    min
    u∈U

    g(u)

    where u is the optimization/decision variable, g(u)
    is the cost function, and U is the constraint set

    • Categories of problems:
    − Discrete (U is finite) or continuous
    − Linear (g is linear and U is polyhedral) or

    nonlinear
    − Stochastic or deterministic: In stochastic prob-

    lems the cost involves a stochastic parameter
    w, which is averaged, i.e., it has the form

    g(u) = Ew
    {
    G(u, w)

    }

    where w is a random parameter.

    • DP can deal with complex stochastic problems
    where information about w becomes available in
    stages, and the decisions are also made in stages
    and make use of this information.

    { } ∑
    { } ∑ ( )

    INVENTORY CONTROL EXAMPL

    E

    Inventory
    S y s t e m

    Stock Ordered at
    Period k

    Stock at Period k Stock at Period k + 1

    Demand at Period k

    xk

    wk

    xk + 1 = xk + uk – wk

    u k
    Co s t o f P e rio d k

    c uk + r (xk + uk – wk)

    • Discrete-time system

    xk+1 = fk(xk, uk, wk) = xk + uk − wk
    • Cost function that is additive over time

    N−1
    E gN (xN ) +

    gk(xk, uk, wk)

    k=0

    N−1
    = E cuk + r(xk + uk − wk)

    k=0

    • Optimization over policies: Rules/functions uk =
    µk(xk) that map states to controls

    BASIC STRUCTURE OF STOCHASTIC DP

    • Discrete-time system

    xk+1 = fk(xk, uk, wk), k = 0, 1, . . . , N −

    1

    − k: Discrete time
    − xk: State; summarizes past information that

    is relevant for future optimization
    − uk: Control; decision to be selected at time

    k from a given set
    − wk: Random parameter (also called distur-

    bance or noise depending on the context)
    − N : Horizon or number of times control is

    applied

    • Cost function that is additive over time

    E

    {
    gN (xN ) +

    N−1∑
    k=0

    gk(xk, uk, wk)

    }

    Guillermo
    Pencil

    BASIC PROBLEM

    • System xk+1 = fk(xk, uk, wk), k = 0, . . . , N −1
    • Control constraints uk ∈ U (xk)
    • Probability distribution Pk(· | xk, uk) of wk
    • Policies π = {µ0, . . . , µN−1}, where µk maps
    states xk into controls uk = µk(xk) and is such
    that µk(xk) ∈ Uk(xk) for all xk
    • Expected cost of π starting at x0 is

    Jπ(x0) = E

    {
    gN (xN ) +
    N−1∑
    k=0

    gk(xk, µk(xk), wk)

    }

    • Optimal cost function

    J∗(x0) = min
    π

    Jπ(x0)

    • Optimal policy π∗ is one that satisfies

    Jπ∗ (x0) = J∗(x0)

    PRINCIPLE OF OPTIMALITY

    • Let π∗ = {µ∗0, µ∗1, . . . , µ∗N−1} be an optimal pol-
    icy

    • Consider the “tail subproblem” whereby we are
    at xi at time i and wish to minimize the “cost-to-
    go” from time i to time N

    E
    {
    gN (xN ) +

    N−1∑
    k=i

    gk
    (
    xk, µk(xk), wk

    )}

    and the “tail policy” {µ∗i , µ∗i+1, . . . , µ∗N−1}

    0 Ni

    xi Tail Subproblem

    • Principle of optimality: The tail policy is opti-
    mal for the tail subproblem

    • DP first solves ALL tail subroblems of final
    stage

    • At the generic step, it solves ALL tail subprob-
    lems of a given time length, using the solution of
    the tail subproblems of shorter time length

    DP ALGORITHM

    • Start with

    JN (xN ) = gN (xN ),

    and go backwards using

    Jk(xk) = min
    uk∈Uk(xk)

    E
    wk

    {
    gk(xk, uk, wk)

    + Jk+1
    (
    fk(xk, uk, wk)

    )}
    , k = 0, 1, . . . , N − 1.

    • Then J0(x0), generated at the last step, is equal
    to the optimal cost J∗(x0). Also, the policy

    π∗ = {µ∗0, . . . , µ∗N−1}
    where µ∗k(xk) minimizes in the right side above for
    each xk and k, is optimal.

    • Justification: Proof by induction that Jk(xk)
    is equal to J∗k (xk), defined as the optimal cost of
    the tail subproblem that starts at time k at state
    xk.

    • Note that ALL the tail subproblems are solved
    in addition to the original problem, and the inten-
    sive computational requirements.

    DETERMINISTIC FINITE-STATE PROBLEM

    Terminal Arcs

    . . .

    . . .
    . . .

    Initial State
    s

    t
    Artificial Terminal
    N o d e

    with Cost Equal
    to Terminal Cost

    S t a g e 0 S t a g e 1 S t a g e 2 . . . S t a g e N – 1 S t a g e N

    • States <==> Nodes
    • Controls <==> Arcs
    • Control sequences (open-loop) <==> paths
    from initial state to terminal states

    • ak : Cost of transition from state i ∈ Sk to state ij
    j ∈ Sk+1 at time k (view it as “length” of the arc)
    • aN : Terminal cost of state i ∈ SNit
    • Cost of control sequence <==> Cost of the cor­

    responding path (view it as “length” of the path)

    BACKWARD AND FORWARD DP ALGORITHMS

    • DP algorithm:
    JN (i) = aNit , i ∈ SN ,

    Jk(i) = min
    j∈Sk+1

    [
    akij +Jk+1(j)

    ]
    , i ∈ Sk, k = 0, . . . , N−1.

    The optimal cost is J0(s) and is equal to the
    length of the shortest path from s to t.

    • Observation: An optimal path s → t is also an
    optimal path t → s in a “reverse” shortest path
    problem where the direction of each arc is reversed
    and its length is left unchanged.

    • Forward DP algorithm (= backward DP algo-
    rithm for the reverse problem):

    J̃N (j) = a0sj , j ∈ S1,
    J̃k(j) = min

    i∈SN−k

    [
    aN−kij + J̃k+1(i)

    ]
    , j ∈ SN−k+1

    The optimal cost is J̃0(t) = mini∈SN
    [
    aNit + J̃1(i)

    ]
    .

    • View J̃k(j) as optimal cost-to-arrive to state j
    from initial state s.

    A NOTE ON FORWARD DP ALGORITHMS

    • There is no forward DP algorithm for stochastic
    problems.

    • Mathematically, for stochastic problems, we
    cannot restrict ourselves to open-loop sequences,
    so the shortest path viewpoint fails.

    • Conceptually, in the presence of uncertainty,
    the concept of “optimal-cost-to-arrive” at a state
    xk does not make sense. The reason is that it may
    be impossible to guarantee (with prob. 1) that any
    given state can be reached.

    • By contrast, even in stochastic problems, the
    concept of “optimal cost-to-go” from any state xk
    makes clear sense.

    GENERIC SHORTEST PATH PROBLEMS

    • {1, 2, . . . , N, t}: nodes of a graph (t: the desti-
    nation)

    • aij : cost of moving from node i to node j
    • Find a shortest (minimum cost) path from each
    node i to node t

    • Assumption: All cycles have nonnegative length.
    Then an optimal path need not take more than N
    moves

    • We formulate the problem as one where we re-
    quire exactly N moves but allow degenerate moves
    from a node i to itself with cost aii = 0.

    Jk(i) = optimal cost of getting from i to t in N−k moves.

    J0(i): Cost of the optimal path from i to t.

    • DP algorithm:
    Jk(i) = min

    j=1,…,N

    [
    aij +Jk+1(j)

    ]
    , k = 0, 1, . . . , N−2,

    with JN−1(i) = ait, i = 1, 2, . . . , N.

    EXAMPLE

    2

    7

    5

    2
    5 5

    6 1

    3

    0 . 5
    3

    1
    2
    4

    0 1 2 3 4

    1
    2
    3
    4
    5

    State i

    S t a g e k

    3 3 3 3

    4 4 4 5

    4 . 5 4 . 5 5 . 5 7

    2 2 2 2

    Destination
    5

    (a) (b)

    JN−1(i) = ait, i = 1, 2, . . . , N,

    Jk(i) = min
    j=1,…,N

    [
    aij +Jk+1(j)

    ]
    , k = 0, 1, . . . , N−2.

    • Probability and Dynamic ProgrammingReview
    • Probability Review

    RM session 3.notebook

    1

    February 12, 2013

    • Page 1

    dynamic pricing session 4.notebook

    1

    February 12, 2013

    • Page 1

    4601 session 5.notebook

    1

    February 12, 2013

    • Page 1

    Single Resource Revenue Management with Independent Demands

    Guillermo Gallego

    Updated Spring

    2

    0

    1

    3

    Abstrac

    t

    Providers of fixed perishable capacity, such as airline seats and hotel rooms use price discrimination
    to improve revenues; in practice, this discrimination is typically achieved by imposing booking and usage
    restrictions or including ancillary services such as mileage accrual and luggage handling, to sell the same
    capacity to different customers at different prices. We will assume that the set of fare classes (a menu
    of prices, restrictions and ancillary services) is given, and that the capacity provider’s goal is to allocate
    capacity among the different fare classes to maximize expected revenues. The problem of designing

    and

    pricing fare classes is treated in a separate chapter. We analyze the two fare class problem under the
    assumption that the lower fare class books first. We use marginal analysis to informally derive Littlewood’s
    rule and then show that Littlewood’s rule is in fact optimal. Spill rates, spill penalties and callable
    products are discussed next. A dynamic programming formulation for the multiple fare class problem is
    then introduced under the assumption that lower fare classes book first. Commonly used heuristics as well
    as bounds on the value function are presented. Dynamic models that explicitly take time into account,
    allow for more general fare arrival patterns and for randomness in the size of the requests. We compare
    the performance of static and dynamic policies and find that dynamic policies have a real advantage when
    the fare arrivals patterns are not low-to-high. We finalize the chapter with a model where fare classes are
    not allowed to reopen after they are closed for the first time.

    1 Introduction

    This chapter considers the simplest and best known revenue management problem, the single resource, inde-
    pendent demand problem. We assume that the capacity provider is trying to maximize the expected revenues
    from a sunk investment in c units of capacity. We assume that capacity is sold through a reservation system
    and that capacity cannot be modified or replenished during the booking horizon. We also assume that unsold
    capacity has no salvage value. Later we will see that the zero salvage value assumption is made without loss
    of generality as any problem with positive salvage value can be transformed into a problem with zero salvage
    value. We assume that the set of fare classes (a menu of prices and restrictions) is given, and that the demands
    for the different fare classes are statistically independent. In particular, we assume that if a customer finds his
    preferred fare class closed, he will leave the system without purchasing. This assumption holds approximately
    if the difference in fares is large so that demands are decoupled or if customers can find alternative sources
    of capacity for their preferred fare class. In some cases, however, part of the demand may be recaptured by
    other available fare classes. In such cases, the independent demand assumption is too strong and needs to be
    relaxed. We address this issue in a separate chapter where we discussed demand models based on discrete
    choice theory.

    In this chapter we present a variety of models that have been developed in industry and in academia.
    There has been a preference in industry for models that suppress the time dimension and assume that the
    arrival pattern of the fare classes is low-to-high. We call these class of models static to distinguish them
    from the dynamic models, favored by academics, that model time explicitly. Both models have advantages
    and disadvantages as we will soon see. Static models are relatively easy to understand. Also, good heuristics

    1

    were developed before optimal solutions based on dynamic programming were discovered. Bringing in the
    time dimension helps deal with more general fare arrival patterns, but specifying the model requires a more
    detailed estimation of demand. This chapter starts with a review of the two fare class problem in §2 where we
    present a heuristic derivation of Littlewood’s rule via marginal analysis. Littlewood’s rule is formally derived
    in §2.3 where a formal DP for the two fare class problem is presented. The dynamic program for multiple
    fare classes is presented in §3. Commonly used heuristics are presented in §

    4

    and bounds on the optimal
    expected revenue are presented in §

    5

    . The dynamic model for the Poisson case is presented in §

    6

    , and for the
    compound Poisson case in §

    7

    , where each request is for a random demand size. In this section we also provide
    a numerical example comparing static to dynamic policies. We remark that static policies are near optimal
    under fixed arrival patterns, such as low-to-high fare arrivals, but can significantly underperform dynamic
    policies for more general demand arrival patterns. In §

    9

    , we restrict fares so that they cannot be opened once
    they are closed. This last model helps to discourage strategic customers from waiting for a better fare.

    2 Two Fare Classes: Marginal Analysis

    The product can be sold either at the full-fare p1 or at a discounted-fare p2 < p1. The discounted-fare typically has advance purchasing and usage restrictions such as Saturday night stays. Let D1 and D2 denote respectively the random demand for the two fare classes for a specific instance of the problem, e.g., for a specific flight for an airline or a specific night for a hotel.

    We assume that all booked customers will actually travel. This avoids the need to overbook capacity and
    allow us to focus on the problem of allocating capacity between the two fares. We will discuss how to deal
    with pre-travel cancellations and day-of-travel no shows in a separate chapter on overbooking models.

    Fare class arrival order is an important part of the model. We assume what is commonly known as the
    low-to-high fare class arrival order, which implies that demand for the discounted-fare class book before the
    demand for the full-fare class. This arrival pattern holds approximately in practice, and it is encouraged by
    advance purchase restrictions imposed on lower fare classes. Notice that this is a worst case arrival pattern.
    Indeed, if full-fare class customers arrived first then we would accept them up to capacity and use the residual
    capacity, if any, to satisfy demand from the discounted-fare class. We will relax the low-to-high fare order
    arrival assumption in Section 3.4, after we solve the multi-fare problem via dynamic programming.

    Under the low-to-high arrival pattern, discount-fare customers may exhaust capacity, say c, unless part
    of it is protected for later-booking by full-fare customers. Consequently, booking limits (known as discount
    authorizations) are placed on the discount sales. Suppose we protect y ∈ {0, 1, . . . ,c} units of capacity for
    the full-fare demand, D1, before observing the actual demand for the discount-fare, D2. This results in a
    booking limit c−y on the discounted-fare, so sales at the discounted-fare class are given by min(c−y,D2).
    The remaining capacity is equal to c − min(c − y,D2) = max(y,c − D2), and it is all made available to the
    full-fare class. Consequently, sales at the full fare equal min(max(y,c−D2),D1). The total expected revenue
    is

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)

    and the goal is to find a protection level y that maximizes W(y,c). The extreme strategies y = 0 and y = c
    correspond, respectively, to the case where no capacity is protected and all of the capacity is protected. We
    will later come back and discuss when these extreme strategies are optimal. In most cases, however, an
    intermediate strategy is optimal.

    The fare ratio r = p2/p1 plays an important role in determining optimal protection levels. If the ratio is
    very small then we would be inclined to protect more capacity for the full-fare demand. If the ratio is close
    to one, we would be inclined to accept nearly all discount-fare requests since we can get almost the same
    revenue, per unit of capacity, without risk. The distribution of full-fare demand is also important in deciding
    how many units to protect for that fare. If, P(D1 ≥ c) is very large, then it makes sense to protect the entire
    capacity for full-fare sales as it is likely that the provider can sell all of the capacity at the full-fare. However,
    if P(D1 ≥ c) is very low then it is unlikely that all the capacity can be sold at the full-fare, so fewer units
    should be protected. It turns out that the demand distribution of the discounted-fare class has no influence

    2

    on the optimal protection level under our assumption that D2 and D1 are independent. A formula for the
    optimal protection level, involving only P(D1 ≥ y) and r, was first proposed by Littlewood [

    14

    ] in

    19

    72. His
    arguments were not formal; however, they were later justified by Bhatia and Prakesh [1] in 1973, and Richter
    [

    17

    ] in 19

    8

    2.

    One can obtain Littlewood’s formula intuitively by using marginal analysis: Suppose we have y > 0 units
    of capacity, and a request for a unit of capacity at the discounted-fare arrives. If we accept, we obtain p2.
    If we close down the discount-fare then we will be able to sell the yth unit at p1 only if the full-fare demand
    D1 is at least as large as y, so it is intuitively optimal to reject the discount fare if p1P(D1 ≥ y) > p2. This
    suggests that an optimal protection level y1 should be given by:

    y1 = max{y ∈N : P(D1 ≥ y) > r}, (1)

    where N = {0, 1, . . . ,} is the set of non-negative integers. Equation (1) is known as Littlewood’s rule.

    Example 1. Suppose D1 is Poisson with parameter 80, the full fare is p1 = $

    10

    0 and the discounted fare is
    p2 = $60, so r = 60/100 = 0.6. We are interested in the cumulative tail distribution P(D1 ≥ y) = 1−P(D1 ≤
    y − 1). Since most statistical software packages return the value of P(D1 ≤ y), we see that y1 satisfies
    P(D1 ≤ y1 − 1) < 1 − r ≤ P(D1 ≤ y1). Since P(D1 ≤ 77) =< 0.4 ≤ P(D1 ≤ 78) we conclude that y1 = 78. Consequently, if c =

    20

    0 then the booking limit for the discount fare is

    12

    2. However, if c < y1, then all units should be protected for the full-fare resulting in a booking limit of zero.

    Remarks:

    • y(c) = min(y1,c) is also an optimal protection level. If y(c) = c, or equivalently if y1 ≥ c, then all the
    capacity should be reserved for sale at the full-fare.

    • The quantity b2 = max(c−y1, 0) is known as the optimal booking limit for the discount fare. It is the
    maximum number of discount-fare customers that we will book.

    • y1 is independent of the distribution of D2.

    • If P(D1 ≥ y1 + 1) = r, then y1 + 1 is also optimal protection level, so both y1 and y1 + 1 result in the
    same expected revenue. Protecting the y1 + 1 unit of capacity increases the variance of the revenue, but
    it reduces the probability of rejecting requests from full-fare customers.

    From Littlewood’s rule (1), we see that the extreme strategy y = 0 is optimal when P(D1 ≥ 1) ≤ r and
    the extreme strategy y = c is optimal when P(D1 ≥ c) > r.

    2.1 Continuous Demand Model

    Although revenue management demands are actually discrete, continuous distributions can be easier to work
    with and are often employed in practice. If we model D1 as a continuous random variable with cumulative
    distribution function F1(y) = P(D1 ≤ y), then

    y1 = F
    −1
    1 (1 −r)

    where F−

    11

    denotes the inverse of F. In particular, if D1 is Normal with mean µ1 and standard deviation σ1
    then

    y1 = µ1 + σ1Φ
    −1(1 −r) (2)

    where Φ denotes the cumulative distribution function of the standard Normal random variable.

    This formula allows for comparative statics as given in Table 1:

    Example 2. Suppose that D1 is Normal with mean 80 and standard deviation 9, the full-fare is p1 = $100
    and the discount-fare is p2 = $60. Then y1 = F

    −1
    1 (1 − 0.6) = 77.72 < 80 since r > 1/2. Notice that the

    3

    Fare Ratio Dependence of protection level

    r > 1
    2

    y1 < µ1 and y1 decreases with σ1

    r = 1
    2

    y1 = µ1 independent of σ1

    r < 1 2

    y1 > µ1 and y1 increases with σ1

    Table 1: Comparative Statics for Normal Full Fare Demand

    solution is quite close to that of Example 1. This is because a Poisson random variable with mean 80 can be
    well approximated by a normal with mean 80 and standard deviation


    80 ‘ 9.

    2.2 Connection with the Newsvendor Problem

    There is a close connection between the classical Newsvendor Problem and the two-fare Revenue Management
    Problem that we will briefly explore here. In the classical Newsvendor Problem a manager must decide how
    many units, say y, to stock for random sales D1 at p1 assuming a unit cost p2 < p1. The solution is to stock y1 units where y1 is the largest integer such that P(D1 ≥ y) > r = p2/p1. We can think of the two-fare Revenue
    Management Problem as a situation where capacity c is pre-decided, at a possible sub-optimal level, there is
    random demand D1 at ”salvage value” p1 > p2 that arrives after demand D2 at p2. The revenue management
    problem is to determine how many units to allow to be sold at p2. We know that the solution is to allow
    (c−y1)+ units to book at p2, reserving max(y1,c−D2) units for sale at p1.

    2.3 Two Fare Classes: Dynamic Programming

    In this section we formulate and analyze the two fare class problem using dynamic programming and present a
    formal proof of the optimality of Littlewood’s rule. We will from now on refer to the full-fare class as fare class
    1 and to the discounted fare class as fare class 2. This will be helpful in formulating the dynamic program
    and to extend the analysis to multiple fares. The idea is to start solving the problem at the last stage, just
    before demand for fare class 1 arrives. Let V1(y) be the optimal expected revenue that can be obtained from
    fare class 1 when capacity is y. Since it is optimal to allow fare class 1 customers to book all of the available
    capacity, sales are equal to min(D1,y) and the optimal expected revenue is

    V1(y) = p1E min(D1,y).

    Our next task is to find V2(c), the optimal expected revenue that can be obtained from c units of ca-
    pacity. Suppose that y ∈ {0, 1, . . . ,c} units are protected for fare class 1 demand. This results in revenues
    p2 min(D2,c − y) from sales to fare class 2 and remaining inventory max(c − D2,y) available for fare class
    1. Notice that we can obtain expected revenue EV1(max(c − D2,y)) from this inventory from fare class 1
    customers. Then

    W(y,c) = p2E min(c−y,D2) + p1E min(max(y,c−D2),D1)
    = E{p2 min(D2,c−y) + V1(max(c−D2,y))}

    is the expected revenue associated with protecting y ∈{0, 1, . . . ,c} units for the full-fare. V2(c) can be obtained
    by maximizing W(y,c) over y. More precisely,

    V2(c) = max
    y∈{0,1,…,c}

    E{p2 min(D2,c−y) + V1(max(c−D2,y))}. (3)

    The key to Dynamic Programming is that it involves a recursive equation (3) linking the expected revenues

    4

    V2(c), at stage 2, to the expected revenue function V1 at stage 1. To solve for V2(c) we first need to solve
    for V1(y) for y ∈ {0, 1, . . . ,c}. Before moving on to the multi-fare formulation we will provide a formal
    proof of Littlewood’s rule (1), and discuss the quality of service implications of using Littlewood’s rule under
    competition.

    2.4 Formal Proof of Littlewood’s Rule

    For any function f(y) over the integers, let ∆f(y) = f(y) − f(y − 1). The following result will help us to
    determine ∆V (y) and ∆W(y,c) = W(y,c) −W(y − 1,c).

    Lemma 1 Let g(y) = EG(min(X,y)) where X is an integer valued random variable with E[X] < ∞ and G is an arbitrary function defined over the integers. Then

    ∆g(y) = ∆G(y)P(X ≥ y).

    Let r(y) = ER(max(X,y)) where X is an integer valued random variable with E[X] < ∞ and R is an arbitrary function defined over the integers. Then

    ∆r(y) = ∆R(y)P(X < y).

    An application of the Lemma 1 yields the following proposition that provides the desired formulas for
    ∆V1(y) and ∆W(y,c).

    Proposition 1
    ∆V1(y) = p1P(D1 ≥ y) y ∈{1, . . . ,}

    ∆W(y,c) = [∆V1(y) −p2]P(D2 > c−y) y ∈{1, . . . ,c}.

    The proof of the Lemma 1 and Proposition 1 are relegated to the Appendix. With the help of Proposition 1
    we can now formally establish the main result for the Two-Fare Problem.

    Theorem 1 The function W(y,c) is unimodal in y and is maximized at y(c) = min(y1,c) where

    y1 = max{y ∈N : ∆V1(y) > p2}.

    Moreover, V2(c) = W(y(c),c).

    Proof: Consider the expression in brackets for ∆W(y,c) and notice that the sign of ∆W(y,c) is determined
    by ∆V1(y) −p2 as P(D2 > c−y) ≥ 0.Thus W(y,c) ≥ W(y − 1,c) as long as ∆V1(y) −p2 > 0 and W(y,c) ≤
    W(y−1,c) as long as ∆V1(y)−p2 ≤ 0. Since ∆V1(y) = p1P(D1 ≥ y) is decreasing1 in y, ∆V1(y)−p2 changes
    signs from + to − since ∆V1(0) − p2 = p1P(D1 ≥ 0) − p2 = p1 − p2 > 0 and limy→∞[∆V1(y) − p2] = −p2.
    This means that W(y,c) is unimodal in y. Then

    y1 = max{y ∈N : ∆V1(y) > p2}.

    coincides with Littlewood’s rule (1). When restricted to {0, 1, . . . ,c}, W (y,c) is maximized at y(c)

    =

    min(c,y1). Consequently, V2(c) = maxy∈{0,1,…,c}W(y,c) = W(y(c),c), completing the proof.

    2.5 Quality of Service, Spill Penalties, Callable Products and Salvage Values

    Since max(y1,c−D2) units of capacity are available for fare class 1, at least one fare class 1 customer will be
    denied capacity when D1 > max(y1,c−D2). The probability of this happening is a measure of the quality of

    1We use the term increasing and decreasing in the weak sense.

    5

    service to fare class 1, known as the full-fare spill rate. Brumelle et al. [4] have observed that

    P(D1 > max(y1,c−D2)) ≤ P(D1 > y1) ≤ r < P(D1 ≥ y1). (4)

    They call P(D1 > y1) the maximal spill rate. Notice that if the inequality y1 ≥ c − D2 holds with high
    probability, as it typically does in practice when D2 is large relative to c, then the spill rate approaches the
    maximal flight spill rate which is, by design, close to the ratio r. High spill rates may lead to the loss of
    full-fare customers to competition. To see this, imagine two airlines each offering a discount fare and a full-
    fare in the same market where the fare ratio r is high and demand from fare class 2 is high. Suppose Airline
    A practices tactically optimal Revenue Management by applying Littlewood’s rule with spill rates close to
    r. Airline B can protect more seats than recommended by Littlewood’s rule. By doing this Airline B will
    sacrifice revenues in the short run but will attract some of the full-fare customers spilled by Airline A. Over
    time, Airline A may see a decrease in full-fare demand as a secular change and protect even fewer seats for
    full-fare passengers. In the meantime, Airline B will see an increase in full-fare demand at which time it can
    set tactically optimal protection levels and derive higher revenues in the long-run. In essence, Airline B has
    (correctly) traded discount-fare customers for full-fare customers with Airline A.

    One way to cope with high spill rates and its adverse strategic consequences is to impose a penalty cost
    ρ for each unit of full-fare demand in excess of the protection level. This penalty is suppose to measure the
    ill-will incurred when capacity is denied to a full-fare customer. This results in a modified value function
    V1(y) = p1E min(D1,y) − ρE[(D1 − y)+] = (p1 + ρ)E min(D1,y) − ρED1. From this it is easy to see that
    ∆V1(y) = (p + ρ)P(D1 ≥ y), resulting in

    ∆W(y,c) = [(p1 + ρ)P(D1 ≥ y) −p2]P(D2 > c−y)

    and

    y1 = max

    {
    y ∈N : P(D1 ≥ y) >

    p2
    p1 + ρ

    }
    . (5)

    Notice that this is just Littlewood’s rule applied to fares p1 + ρ and p2, resulting in fare ratio p2/(p1 + ρ) and,
    consequently, lower maximal spill rates. Obviously this adjustment comes at the expense of having higher
    protection levels and therefore lower sales at the discount-fare and lower overall revenues. Consequently, an
    airline that wants to protect its full-fare market by imposing a penalty on rejected full-fare demand does it at
    the expense of making less available capacity for the discount-fare and less expected revenue. One way to avoid
    sacrificing sales at the discount-fare and improve the spill rate at the same time is to modify the discount-fare
    by adding a restriction that allows the provider to recall or buy back capacity when needed. This leads to
    revenue management with callable products; see Gallego, Kou and Phillips [12]. Callable products can be
    sold either by giving customers an upfront discount or by giving them a compensation if and when capacity
    is recalled. If managed correctly, callable products can lead to better capacity utilization, better service to
    full-fare customers and to demand induction from customers who are attracted to either the upfront discount
    or to the compensation if their capacity is recalled.

    The value function V1(y) may also be modified to account for salvage values (also known as the ‘distressed
    inventory problem’). Suppose there is a salvage value s < p2 on excess capacity after the arrival of the full-fare demand (think of standby tickets or last-minute travel deals). We can handle this case by modifying V1(y) to account for the salvaged units. Then V1(y) = p1E min(D1,y) + sE(y −D1)+ = (p1 −s)E min(D1,y) + sy, so ∆V1(y) = (p1 −s)P(D1 ≥ y) + s, resulting in

    ∆W(y,c) = [(p1 −s)P(D1 ≥ y) − (p2 −s)]P(D2 > c−y)

    and
    y1 = max
    {
    y ∈N : P(D1 ≥ y) >

    p2 −s
    p1 −s

    }
    . (6)

    Notice that this is just Littlewood’s rule applied to net fares p1 −s and p2 −s. This suggests that a problem
    with salvage values can be converted into a problem without salvage values by using net fares pi ← pi − s,
    i = 1, 2 and then adding cs to the resulting optimal expected revenue V2(c) in excess of salvage values.

    6

    3 Multiple Fare Classes: Exact Solution

    In this section we present an exact solution to the muli-fare class problem using dynamic programming. We
    assume that the capacity provider has c units of perishable capacity to be allocated among n fares indexed
    so pn < ... < p1. Lower fares typically have severe time of purchase and traveling restrictions and may have restricted advanced selection that denies access to the more desirable capacity. Given the time-of-purchase restriction, it is natural to assume that demands for fare classes arrive in n stages, with fare class n arriving first, followed by n − 1, with fare class 1 arriving last. Let Dj denote the random demand for fare class j ∈ N = {1, . . . ,n}. We assume that, conditional on the given fares, the demands D1, . . . ,Dn are independent random variables with finite means µj = E[Dj] j ∈ N. The independent assumption is approximately valid in situations where fares are well spread and there are alternative sources of capacity. Indeed, a customer who finds his preferred fare closed is more likely to buy the same fare for an alternative flight (perhaps with a competing carrier) rather than buying up to the next fare class if the difference in fare is high. The case of dependent demands, where fare closures may result in demand recapture, will be treated in a different chapter. The use of Dynamic Programming for the multi-fare problem with discrete demands is due to Wollmer [

    22

    ].
    Curry [6] derives optimality conditions when demands are assumed to follow a continuos distribution. Brumelle
    and McGill [5] allow for either discrete or continuous demand distributions and makes a connection with the
    theory of optimal stopping.

    Let Vj(x) denote the maximum expected revenue that can be obtained from x ∈ {0, 1, . . . ,c} units of
    capacity from fare classes {j, . . . , 1}. The sequence of events for stage j are as follows:

    1. Decide the protection level, say y ≤ x, for fares j − 1,j − 2, . . . , 1 thus allowing at most x−y units of
    fare j demand.

    2. The realization of the demand Dj occurs, and we observe min(Dj,x−y) sales at fare j.

    3. The revenue pj min(Dj,x−y) is collected, and we proceed to the beginning of stage j−1 with a remaining
    capacity of max(x−Dj,y).

    The revenue from this process is

    Wj(y,x) = pjE min(Dj,x−y) + EVj−1 (max(x−Dj,y)) . (7)

    We can think of Wj(y,x) as the expected revenue from x units of capacity prior to seeing the demand for fare
    class j when up to x−y units are allowed to book at fare j and an optimal policy is followed thereafter. This
    leads to the dynamic programming recursion

    Vj(x)

    = max
    y∈{0,1,…,x}

    Wj(y,x)

    = max
    y∈{0,1,…,x}

    {pjE min(Dj,x−y) + EVj−1(max(x−Dj,y))} . (8)

    The dynamic program simply states that the optimal value function is the sum of the expected revenues
    from fare class j plus the expected revenues from fare classes j−1, . . . , 1 evaluated at the protection level that
    maximizes this sum. Notice that once we are at the beginning of stage j−1 we face a similar problem over the
    remaining j−1 fare classes. Vj(x) is then the maximum expected revenue that can be obtained from x units of
    capacity for the j-fare problem. Consequently Vn(c) is the maximum expected revenue for the n-fare problem
    with capacity c. The recursion can be started with V0(x) = 0 if there are no salvage values or penalties for
    spill. Alternatively, the recursion can start with V1(x) = p1E min(D1,x) + sE[(x−D1)+]−ρE[(D1 −x)+] for
    x ≥ 0 if there is a salvage value s per unit of excess capacity and a penalty ρ per unit of fare class 1 demand
    that is denied.

    7

    3.1 Structure of the Optimal Policy

    In order to analyze the structure of the optimal policy, we begin by describing a few properties of the value
    function. As a convention we set V0 ≡ 0. A function V (y) defined on y ∈ N is concave if ∆V (y) =
    V (y) −V (y − 1) is decreasing in y ∈N+.

    Lemma 2 For any j ≥ 1,

    a) ∆Vj(y) = Vj(y) −Vj(y − 1) is decreasing in y ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(y) is increasing in j ∈ {1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    The proof of Lemma 2 is in the Appendix. Using the Lemma we can characterize an optimal policy as
    stated in the following theorem. For the purpose of simplifying notation we will extend the definition of ∆Vj(y)
    to y = 0 by setting ∆Vj(0) = ∆V1(0) = p1 just as we did for j = 1.

    Theorem 2 The function Wj(y,x) is unimodal in y and it is maximized at min(yj−1,c), where the nested
    protection levels 0 = y0 ≤ y1 ≤ y2 ≤ ···≤ yn−1 are given by

    yj = max{y ∈N : ∆Vj(y) > pj+1} j = 1, . . . ,n− 1. (9)

    The optimal value functions are given by

    Vj(x) = Wj(min(x,yj−1),x) j = 1, . . . ,n, x ∈N . (10)

    Moreover, Vj(x) is concave in x ∈N for each j = 1, . . . ,n.

    Proof: An algebraic argument similar to that used to justify Littlewood’s rule for n = 2, reveals that for
    y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Let yj−1 = max{y ∈N : ∆Vj−1(y) > pj}. By part a) of Lemma 2, ∆Vj−1(y) is decreasing in y so ∆Vj−1(y)−
    pj > 0 for all y ≤ yj−1 and ∆Vj−1(y)−pj ≤ 0 for all y > yj−1. Consequently, if x ≤ yj−1 then ∆Wj(y,x) ≥ 0
    for all y ∈ {1, . . . ,x} implying that Vj(x) = Wj(x,x). Alternatively, if x > yj−1 then ∆Wj(y,x) ≥ 0
    for y ∈ {1, . . . ,yj} and ∆Wj(y,x) ≤ 0 for y ∈ {yj−1 + 1, . . . ,x} implying Vj(x) = Wj(yj−1,x). Since
    ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1, it follows that ∆Vj(yj−1) = ∆Vj−1(yj−1) > pj > pj+1, so yj ≥ yj−1. The
    concavity of Vj(x) is is equivalent to ∆Vj(x) decreasing in x, and this follows directly from part a) of Lemma 2.

    Remarks:

    1. Notice that the unconstrained protection level yj−1 is independent of the demands Dk, k ≥ j as observed
    before in the two fare setting (Littlewood’s Rule).

    2. We can think of yj,j = 1, . . . ,n− 1 as the unconstrained protection levels. If we start stage j with xj
    units of capacity, the constrained protection level for fares {j−1, . . . , 1} is min(xj,yj−1). Thus capacity
    is made available to fare j only if xj > yj−1.

    3. The policy is implemented as follows. At stage n we start with xn = c units of inventory, and we protect
    yn−1(xn) = min(xn,yn−1) units of capacity for fares {n−1, . . . , 1} by allowing up to (xn−yn−1)+ units
    to be sold at fare pn. Since min(Dn, (xn−yn−1)+) units are sold during stage n, we start stage n−1 with
    xn−1 = xn − min(Dn, (xn − yn−1)+). We protect yn−2(xn−1) = min(xn−1,yn−2) units of capacity for
    fares {n−2, . . . , 1} and thus allow up to (xn−1−yn−2)+ units of capacity to be sold at pn−1. The process

    8

    continues until we reach stage one with x1 units of capacity and allow (x1 − y0)+ = (x1 − 0)+ = x1
    to be sold at p1. Assuming discrete distributions, the computational requirement to solve the dynamic
    program for the n stages has been estimated by Talluri and van Ryzin [20] to be of order O(nc2).

    4. The concavity of Vn(c) is helpful if capacity can be procured at a linear or convex cost because in this
    case the problem of finding an optimal capacity level is a concave problem in c.

    Example 3. Suppose there are five different fare classes. We assume the demand for each of the fares is
    Poisson. The fares and the expected demands are given in the first two columns of Table 2. The third column
    includes the optimal protection levels for fares 1, 2, 3 and 4.

    j pj E[Dj] yj
    1 $100

    15

    14
    2 $60 40 54
    3 $40 50 101
    4 $35 55

    16

    9
    5 $15 120

    Table 2: Five Fare Example with Poisson Demands: Data and Optimal Protection Levels

    Table 3 provides the expected revenues for different capacity levels as well as the corresponding demand
    factors (

    ∑5
    j=1 E[Dj])/c =

    28

    0/c. These results should be intuitive. Greater revenue potential is seen as

    capacity increases (since potentially more demand can be accepted). Further, the effect of restrictions on
    discounted fares is apparent in the pattern of revenue across classes; e.g. revenue V2(50) through V5(50) is
    $3,4

    26

    .8 because fare classes 3,4, and 5 are rationed since y2 = 54 > c = 50 units are protected for fare 1 and
    2. However, V1(350) through V5(350) vary from $1,500 to $9,6

    25

    because there is sufficient capacity to accept
    sales in all fare classes.

    c DF V1(c) V2(c) V3(c) V4(c) V5(c)
    50 560% 1,500.0 3,426.8 3,426.8 3,426.8 3,426.8

    100 280% 1,500.0 3,900.0 5,441.3 5,441.3 5,441.3
    150

    18

    7% 1,500.0 3,900.0 5,900.0 7,188.7 7,188.7
    200 140% 1,500.0 3,900.0 5,900.0 7,8

    24

    .6 8,159.1
    250 112% 1,500.0 3,900.0 5,900.0 7,825.0 8,909.1

    30

    0 93% 1,500.0 3,900.0 5,900.0 7,825.0 9,563.9
    350 80% 1,500.0 3,900.0 5,900.0 7,825.0 9,625.0

    Table 3: Expected Revenues Vj(c) and Demand Factors

    Figure 1 shows the marginal value as a function of the remaining resources for the data of Example 3.

    3.2 Speeding up the Computation of the Value Function

    While the value functions Vj(x), j ∈ {1, . . . ,n}, x ∈ {1, . . .c}, can be computed recursively there are some
    tricks to speed up the computations. Here we focus on how to efficiently update ∆Vj+1(x) from ∆Vj(x). The
    key idea is to express ∆Vj+1(x) for x > yj in terms of previously computed values of ∆Vj(x). The proof of
    Proposition 2 is in the Appendix.

    Proposition 2

    ∆Vj+1(x) =

    {
    ∆Vj(x) if x = 1, . . . ,yj
    E min(∆Vj(x−Dj+1),pj+1) if x = yj + 1, . . ..

    9

     $-­‐
     
     
     
     

     $20.00
     
     

     $40.00
     
     

     $60.00
     
     

     $80.00
     
     

     $100.00
     
     

     $120.00
     
     

    0
      20
      40
      60
      80
      100
      120
      140
      16

    0
     

    DV_1(x)
     

    DV_2(x)
     

    DV_3(x)
     

    DV_4(x)
     

    DV_5(x)
     

    Figure 1: ∆Vj(x),x = 1, . . . , 350, j = 1, 2, 3, 4, 5 for Example 3

    Since ∆Vj+1(x) = ∆Vj(x) for x ≤ yj, we only need to worry about ∆Vj+1(x) for x > yj. The following
    corollary to Proposition 2 makes the formula for ∆Vj+1(x),x > yj more explicit.

    Corollary 1

    ∆Vj+1(yj + k) = pj+1P(Dj+1 ≥ k)

    +

    k−1∑
    i=0

    ∆Vj(yj + k − i)P(Dj+1 = i) k ∈{1, . . . ,c−yj}.

    3.3 Linear and Convex Procurement Costs

    Suppose that capacity c can be procured at a linear cost kc before observing demands for the n fares: pn < pn−1 < ... < p1. How much capacity should be procured? The objective is to find c to maximize Πn(c,k) = Vn(c) −kc. Let c(k) be the smallest optimizer of Πn(c,k) as a function of the marginal cost k. The following Proposition characterizes c(k), shows that c(k) is decreasing in k and relates c(pj+1) to protection level yj for j < n.

    Proposition 3 The optimal procurement quantity at linear cost kc is given by

    c(k) = max{c ∈N : ∆Vn(c) > k}.

    Moreover, c(k) is decreasing in k, and yj = c(pj+1) for all j ∈{1, . . . ,n− 1}.

    Clearly c(0) = ∞ since ∆Vn(c) ≥ ∆V1(c) = p1P(D1 ≥ c) > 0 for all c ∈ N . At the other extreme,
    c(p1) = y0 = 0 since ∆Vn(1) = p1P(D1 ≥ 1) < p1 = ∆Vn(0), so no capacity would be purchased if k ≥ p1.

    If the cost of capacity k(c) is increasing convex then Π(c,k(c)) is concave in c and

    c(k) = max{c ∈N : ∆Vn(c) − ∆k(c) > 0}.

    Consider the convex cost function k(c) = K if c ≤ c̄ and k(c) = ∞ for k > c̄. This may reflect the situation
    where there is a fixed cost to leasing a resource with capacity c̄. The optimal choice is then to lease the
    resource if Vn(c̄) > K and not lease it otherwise.

    10

    0
     

    50
     

    100
     

    150
     

    200
     

    250
     

    300
     

    350
     

    400
     

    450
     

    0
      10
      20
      30
      40
      50
      60
      70
      80
      90
      100
     
    C

    ap
    ac

    it
    y

    cost

    optimal capacity

    Figure 2: Optimal Capacity as a Function of Cost for the Data of Example 3

    3.4 Relaxing the Monotonicity of Fares

    We continue to assume that demands arrive in the order Dn,Dn−1, . . . ,D1 but will relax the assumption that
    the fares are monotone p1 > p2 > … > pn. All of the results work as stated, except the monotonicity of the
    protection levels, if we redefine ∆Vj(0) = max{p1, . . . ,pj}. It is also possible to skip some of the optimization
    steps as it is clear that yj−1 = 0 whenever pj > max(p1, . . . ,pj−1) since it is optimal to allow all bookings at
    fare pj. The reader is referred to Robinson [18] for more details. As an example, suppose that p3 < p2 > p1.
    Then V1(x) = p1E min(D1,x) and at stage 2 the decision is y1 = 0, so

    V2(x) = p2E min(D2,x) + p1E min(D1, (x−D2)

    +).

    Notice that
    ∆V2(x) = p2P(D2 ≥ x) + p1P(D2 < x ≤ D[1, 2])

    so
    y2 = max{y ∈N : ∆V2(y) > p3}.

    Notice that the capacity protected for fare 2 is higher than it would be if there was no demand at fare 1.

    4 Multiple Fare Classes: Commonly Used Heuristics

    Several heuristics, essentially extensions of Littlewood’s rule, were developed in the 1980’s. The most important
    heuristics are known as EMSR-a and EMSR-b, where EMSR stands for expected marginal seat revenue. Credit
    for these heuristics is sometimes given to the American Airlines team working on revenue management problems
    shortly after deregulation. The first published account of these heuristics appear in Simpson [19] and Belobaba
    [2], [3]. For a while, some of these heuristics were even thought to be optimal by their proponents until optimal
    policies based on dynamic programming were discovered in the 1990’s. By then heuristics were already part of
    implemented systems, and industry practitioners were reluctant to replace them with the solutions provided
    by dynamic programming algorithms. There are several reasons for this. First, people feel more comfortable
    with something they understand. Also, the performance gap between the heuristics and the optimal dynamic
    program tends to be small. Finally, there is a feeling among some users that the heuristics may be more robust
    to estimates of the mean and variance of demand.

    Version a of the heuristic, EMSR-a, is based on the idea of adding protection levels produced by applying
    Littlewood’s rule to successive pairs of classes. At state j, we need to decide how much capacity to protect
    for fares j − 1, . . . , 1. We can use Littlewood’s rule to decide how much capacity to protect for fare k demand
    against fare j for k = j − 1, . . . , 1 and then add the protection levels. More precisely, let rk,j = pj/pk and set

    11

    yk,j = max{y ∈N : P(Dk ≥ y) > rk,j}.

    Then the EMSR-a heuristic will protect

    yaj−1 =

    j−1∑
    k=1

    yk,j

    units of capacity for fares j − 1, . . . , 1 against fare j.

    In particular, if Dk is Normal with mean µk and standard deviation σk, then

    yaj−1 = µ[1,j − 1] +
    j−1∑
    k=1

    σkΦ
    −1(1 −rk,j),

    where for any j, µ[1,j − 1] =
    ∑j−1
    k=1 µk and sums over empty sets are zero.

    Notice that the EMSR-a heuristic involves j − 1 calls to Littlewood’s rule to find the protection level for
    fares j − 1, . . . , 1. In contrast, the EMSR-b heuristic is based on a single call to Littlewood’s rule for each
    protection level. However, using the EMSR-b heuristic requires the distribution of D[1,j − 1] =

    ∑j−1
    k=1 Dk.

    This typically requires computing a convolution but in some cases, such as the Normal or the Poisson, the
    distribution of D[1,j − 1] can be easily obtained (because sums of independent Normal or Poisson random
    variables are, respectively, Normal or Poisson). The distribution of D[1,j − 1] is used together with the
    weighted average fare

    p̄j−1 =

    j−1∑
    k=1

    pk
    µk

    µ[1,j − 1]

    and calls on Littlewood’s rule to obtain protection level

    ybj−1 = max{y ∈N : P(D[1,j − 1] ≥ y) > r
    b
    j−1,j}

    where rbj−1,j = pj/p̄j−1. Notice that the weighted average fare assumes that a proportion µk/µ[1,j−1] of the
    protected capacity will be sold at fare pk,k = 1, . . . ,j − 1. In the special case when demands are Normal we
    obtain

    ybj−1 = µ[1,j − 1] + σ[1,j − 1]Φ
    −1(1 −rbj−1,j).

    Recall that for the Normal, variances are additive, so the standard deviation σ[1,j − 1] =
    √∑j−1

    k=1 σ
    2
    k.

    4.1 Evaluating the Performance of Heuristics

    While heuristic protection levels are easy to compute, evaluating them is as hard as solving for the optimal
    policy. The expected return of a heuristic policy based on protection levels 0 = yh0 ≤ yh1 ≤ . . . ≤ yhn−1 can be
    computed exactly or via simulation. Let V hj (x) be the expected revenue of using the heuristic with x units

    of inventory before observing the demand for fare class j. We will show how to compute V hj+1(x) assuming

    that we have already computed V hj (x). We will do this by determining a relationship between ∆V
    h
    j+1(x) and

    ∆V hj (x), using the following result.

    Proposition 4

    ∆V hj+1(x) =

    {
    ∆V hj (x) if x = 1, . . . ,y

    h
    j

    = pj+1P(Dj+1 ≥ x−yhj ) +
    ∑x−yhj −1
    i=0 ∆V

    h
    j (x− i)P(Dj+1 = i) if x > y

    h
    j
    12

    Thus, if V hj (x) has already been computed then V
    h
    j+1(x) = V

    h
    j (x) for x = 1, . . . ,y

    h
    j . For x > y

    h
    j we can

    use the recursion V hj+1(x) = V
    h
    j+1(x− 1) + ∆V

    h
    j+1(x) starting with x = y

    h
    j + 1 in conjunction with the second

    part of Proposition 4.

    To estimate the expected revenue and other measures of performance, such as the variance, we can also
    use Monte Carlo simulation. Suppose we generate many random copies of simulated demands (D1, . . . ,Dn).
    For each copy we compute sales (sh1, . . . ,s

    h
    n) and revenues R

    h =
    ∑n
    i=1 pis

    h
    i under heuristic h. Averaging

    over all the values of Rh gives an estimate of V hn (c). Simulated sales can be generated sequentially via s
    h
    j =

    min(Dj, (xj−yhn−1)+) starting with j = n and xn = c and using the capacity update formula xj = xj+1−shj+1.

    Example 3 (continued) We have applied the EMSR-a and EMSR-b heuristics to the data of Example 3. Table
    4 repeats the data and reports the heuristic protection levels ya, yb as well as the optimal protection levels.
    Table 5 reports V a5 (c) and V

    b
    5 (c) as well as V5(c) for values of c ∈{50, 100, 150, 200, 250, 300, 350}.

    j pj E[Dj] y
    a
    j y

    b
    j yj

    1 $100 15 14 14 14
    2 $60 40 53 54 54
    3 $40 50 97 102 101
    4 $35 55 171 166 169
    5 $15 120

    Table 4: Optimal and Heuristic Protection Levels for Example 3

    c DF V a5 (c) V
    b
    5 (c) V5(c)

    50 560% 3,426.8 3,426.8 3,426.8
    100 280% 5,4

    31

    .9 5,441.3 5,441.3
    150 187% 7,184.4 7,188.6 7,188.7
    200 140% 8,157.3 8,154.4 8,159.1
    250 112% 8,907.3 8,901.4 8,909.1
    300 93% 9,536.5 9,536.0 9,563.9
    350 80% 9,625.0 9,625.0 9,625.0

    Table 5: Performance of Heuristics for Example 3

    As seen in Table 5, both the EMSR-a and the EMSR-b heuristic perform very well against Poisson demands
    under a low-to-high arrival pattern. The heuristics continue to perform well if demands are compound Poisson
    and aggregate demands are approximated by the use of a Gamma distribution. However, EMSR based
    heuristics can significantly underperform relative to models that allow more general fare arrival rates. We will
    have an opportunity to revisit this issue in Section 7.

    Two more examples are presented below.

    Example 4. From Wollmer [22]. There are 4 classes, and the demand is assumed to be Normally distributed.
    Table 6 shows the demand data and the protection levels under optimal, EMSR-a, and EMSR-b policies.
    There are considerable discrepancies between the protection levels, and as expected, these discrepancies are
    more severe in the earlier stages.

    The expected revenues of the optimal policy and the two heuristics, estimated through a simulation study
    with 500,000 replications, are shown in Table 7. Capacity is varied from 80 to 160 to create the demand factor
    (ratio of total mean demand to capacity) in the range of 1.7 to 0.85. Note that the optimal protection levels
    remain the same even when we change the capacity! The percentage sub-optimality is also reported. For this
    example, EMSR-a is slightly better than EMSR-b, but both perform quite well.

    Example 5. From Wollmer [22]. The demand parameters and the lowest and highest fare are as in Example 4,
    but the other fares are more evenly spaced. Such spacing is more typical of what is found in practice. The
    corresponding protection levels are shown in Table 8. Table 9 shows the expected revenues for the heuristics in
    Example 5. In this case, both heuristics perform very well, especially EMSR-b. Ratliff reports that EMSR-b

    13

    Demand Parameters Protection Levels (yj)
    j pj µj σj OPT EMSR-a EMSR-b
    1 1,050 17.3 5.8 16.7 16.7 16.7
    2 567 45.1 15.0 42.5 38.7 50.9
    3 534 39.6 13.2 72.3 55.7 83.2
    4 520 34.0 11.3

    Table 6: Normal demand parameters and protection levels for Example 4 under the optimal, EMSR-a, and
    EMSR-b policies.

    Dmd Std EMSR-a EMSR-b
    c Factor Vn(c) Err. % Sub % Sub

    80 1.70 49,642 5.57 0.33% 0.43%
    90 1.51 54,855 5.59 0.24% 0.52%

    100 1.36 60,015 5.77 0.13% 0.44%
    110 1.24 65,076 6.36 0.06% 0.34%
    120 1.13 69,801 7.66 0.02% 0.

    21

    %
    130 1.05 73,926 9.73 0.01% 0.10%
    140 0.97 77,252 12.17 0.00% 0.04%
    150 0.91 79,617 14.64 0.00% 0.01%
    160 0.85 81,100 16.69 0.00% 0.00%

    Table 7: Revenue performance for Example 4

    usually provides improved performance on real world problems, especially ones involving nested inventory
    controls [16].

    Demand Statistics Protection Levels (yj)
    j pj µj σj OPT EMSR-a EMSR-b
    1 1,050 17.3 5.8 9.7 9.8 9.8
    2 950 45.1 15.0 54.0 50.4 53.2
    3 699 39.6 13.2 98.2 91.6 96.8
    4 520 34.0 11.3

    Table 8: Model parameters and protection levels for Example 5 under optimal, EMSR-a, and EMSR-b policies.

    5 Bounds, Revenue Opportunity Model, and New Heuristics

    In this section we develop bounds on Vn(c) which may be useful in evaluating the potential of applying revenue
    management solutions. To obtain an upper bound, consider the perfect foresight problem where the demand
    vector D = (D1, . . . ,Dn) is known in advance. This demand knowledge allows us to optimally allocate capacity
    by solving the following knapsack type problem

    V Un (c,D) = max

    n∑
    k=1

    pkxk (11)

    s.t. xk ≤ Dk ∀ k = 1, . . . ,n

    n∑
    k=1

    xk ≤ c

    xk ≥ 0 ∀ k = 1, . . . ,n.

    14

    Dmd Std EMSR-a EMSR-b
    c Factor Vn(c) Error % Sub % Sub

    80 1.70 67,505 9.

    29

    0.10% 0.00%
    90 1.51 74,003 10.89 0.06% 0.00%

    100 1.36 79,615 13.

    27

    0.40% 0.02%
    110 1.24 84,817 13.30 0.35% 0.02%
    120 1.13 89,963 13.58 0.27% 0.01%
    130 1.05 94,860 14.73 0.15% 0.01%
    140 0.97 99,164 17.06 0.06% 0.01%
    150 0.91 102,418 20.08 0.01% 0.00%
    160 0.85 104,390 22.85 0.00% 0.00%

    Table 9: Revenue performance for Example 5

    Clearly, for each realization of D, advance knowledge results in revenues that are at least as high as the optimal
    dynamic policy that does not have perfect foresight. As a result, Vn(c) ≤ EV Un (c,D). For convenience, we
    will denote this upper bound as V Un (c) = EV

    U
    n (c,D).

    The solution to (11) can be written explicitly as xk = min(Dk, (c − D[1,k − 1])+),k = 1, . . . ,n where
    for convenience we define D[1, 0] = 0. The intuition here is that we give priority to higher fares so fare
    k ∈ {1, . . . ,n} gets the residual capacity (c − D[1,k − 1])+. The expected revenue can be written more
    succinctly after a few algebraic calculations:

    V Un (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[1,k − 1])+) (12)

    =
    n∑
    k=1

    pk (E min(D[1,k],c) −E min(D[1,k − 1],c))

    =
    n∑
    k=1

    (pk −pk+1)E min(D[1,k],c) (13)

    where for convenience we define pn+1 = 0. Moreover, since V
    U
    n (c,D) is concave in D, it follows from Jensen’s

    inequality that V Un (c) = EV
    U
    n (c,D) ≤ V Un (c,µ) where V Un (c,µ) is the solution to formulation (11) with

    µ = E[D] instead of D. More precisely,

    V Un (c,µ) = max

    n∑
    k=1

    pkxk (14)

    s.t. xk ≤ µk ∀ k = 1, . . . ,n

    n∑
    k=1
    xk ≤ c
    xk ≥ 0 ∀ k = 1, . . . ,n.

    The linear program (14) is known as the fluid model or the deterministic capacity allocation problem. It is
    essentially a knapsack problem whose solution can be given in closed form xk = min(µk, (c−µ[1,k−1])+) for
    all k = 1, . . . ,n. Consequently, V Un (c) ≤ V Un (c,µ) =

    ∑n
    k=1(pk −pk+1) min(µ[1,k],c).

    A lower bound can be obtained by assuming a low to high arrival pattern with zero protection levels.
    This gives rise to sales min(Dk, (c−D[k + 1,n])+) at fare k = 1, . . . ,n and revenue lower bound V L(c,D) =∑n
    k=1 pkE min(Dk, (c−D[k + 1,n])

    +).

    Taking expectations we obtain

    15

    V Ln (c) =

    n∑
    k=1

    pkE min(Dk, (c−D[k + 1,n])+) (15)

    =
    n∑
    k=1

    pk (E min(D[k,n],c) −E min(D[k + 1,n],c))

    =
    n∑
    k=1

    (pk −pk−1)E min(D[k,n],c) (16)

    where p0 = 0. Notice that all of the terms in the sum are negative except for k = 1. Clearly V
    L
    n (c) ≤ Vn(c)

    since the expected revenue is computed under sub-optimal protection levels. The above arguments justify the
    main result of this section.

    Proposition 5
    V Ln (c) ≤ Vn(c) ≤ V

    U
    n (c) ≤ V

    U
    n (c,µ) (17)

    Of course, the bounds require the computation of E min(D[1,k],c), k = 1, . . . ,n. However, this is often
    an easy computation. Indeed, if D[1,k] is any non-negative integer random variable then E min(D[1,k],c) =∑c
    j=1 P(D[1,k] ≥ j). If D[1,k] is Normal we can take advantage of the fact that E min(Z,z) = z(1−Φ(z))−

    φ(z) when Z is a standard Normal random variable and φ is the standard Normal density function. If follows
    that if D[1,k] is Normal with mean µ and variance σ2, then

    E min(D[1,k],c) = µ + σE min(Z,z) = µ + σ [z(1 − Φ(z)) −φ(z)]

    where z = (c−µ)/σ.

    Tables 10 and 11 report V Ln (c),Vn(c),V
    U
    n (c) and Vn(c,µ) for the data of Examples 4 and 5, respectively.

    Notice that V Un (c) represents a significant improvement over the better known bound Vn(c,µ), particularly
    for intermediate values of capacity. The spread V Un (c) − V Ln (c) between the lower and upper bound is a
    gauge of the potential improvements in revenues from using an optimal or heuristic admission control policy.
    When capacity is scarce relative to the potential demand, then the relative gap is large, and the potential
    for applying revenue management solutions is also relatively large. This is because significant improvements
    in revenues can be obtained from rationing capacity to lower fares. As capacity increases, the relative gap
    decreases indicating that less can be gained by rationing capacity. At very high levels of capacity it is optimal
    to accept all requests, and at this point there is nothing to be gained from the use of an optimal admission
    control policy.

    c V Ln (c) Vn(c) V
    U
    n (c) V

    U
    n (c,µ)

    80 $42,728 $49,642 $53,039 $53,315
    90 $48,493 $54,855 $58,293 $58,475

    100 $54,415 $60,015 $63,366 $63,815
    110 $60,393 $65,076 $68,126 $69,043
    120 $66,180 $69,801 $72,380 $74,243
    130 $71,398 $73,926 $75,9

    23

    $79,443
    140 $75,662 $77,252 $78,618 $82,563
    150 $78,751 $79,617 $80,456 $82,563
    160 $80,704 $81,100 $81,564 $82,563

    Table 10: Optimal Revenue and Bounds for Example 4.

    16

    c V Ln (c) Vn(c) V
    U
    n (c) V

    Un(c,µ)
    80 $52,462 $67,505 $72,717 $73,312
    90 $61,215 $74,003 $79,458 $80,302

    100 $70,136 $79,615 $85,621 $87,292
    110 $78,803 $84,817 $91,122 $92,850
    120 $86,728 $89,963 $95,819 $98,050
    130 $93,446 $94,869 $99,588 $103,250
    140 $98,630 $99,164 $102,379 $106,370
    150 $102,209 $102,418 $104,251 $106,370
    160 $104,385 $104,390 $105,368 $106,370

    Table 11: Optimal Revenue and Bounds for Example 5.

    5.1 Revenue Opportunity Model

    The bounds presented here can help with the so called Revenue Opportunity Model (ROM). The revenue
    opportunity is the spread between the optimal revenue, obtained by hindsight using the estimated uncensored
    demand, and the revenue that results from not applying booking controls. Demand uncensoring refers to a sta-
    tistical technique that attempts to estimate actual demand from the observed sales which may be constrained
    by booking limits. The ex-post optimal revenue is a hindsight optimization and is equivalent to our perfect
    foresight model, resulting in revenue V Un (c,D), where D is the uncensored demand. On the other hand, the
    revenue based on not applying booking controls is just V Ln (c,D), so a measure of the revenue opportunity is
    V Un (c,D) − V Ln (c,D). The achieved revenue opportunity is the difference between the actual revenue from
    applying optimal or heuristic controls and the lower bound. The ratio of the achieved revenue opportunity to
    the revenue opportunity is often called the percentage achieved revenue opportunity. The revenue opportunity
    V Un (c,D)−V Ln (c,D) is sometimes approximated by V Un (c)−V Ln (c) to get an idea of the revenue opportunity.
    Table 10 and 11 shows there is significant revenue opportunity, particularly for c ≤ 140. Thus, one use for the
    ROM is to identify situations where RM has the most potential so that more effort can be put where is most
    needed. The ROM has also been used to show the benefits of using leg-based control versus network-based
    controls. The reader is refer to Chandler and Ja ([8]) and to Temath et al. ([21]) for further information on
    the uses of the ROM.

    5.2 Bounds Based Heuristic

    It is common to use an approximation to the value function as a heuristic. To do this, suppose that Ṽj(x) is
    an approximation to Vj(x). Then a heuristic admission control rule can be obtained as follows:

    ỹj = max{y ∈N : ∆Ṽj(y) > pj+1} j = 1, . . . ,n− 1. (18)

    Suppose we approximate the value function Vj(x) by Ṽj(x) = θV
    L
    j (x) + (1 − θ)V

    U
    j (x) for some θ ∈ [0, 1]

    and V Lj (x) and V
    U
    j (x) are the bounds obtained in this section applied to n = j and c = x. Notice that

    ∆V Lj (x) = p1P(D[1,j] ≥ x) +
    ∑j
    k=2(pk−pk−1)P(D[k,j] ≥ x), while ∆V

    U
    j (x) =

    ∑j−1
    k=1(pk−pk+1)P(D[1,k] ≥

    x) + pjP(D[1,j] ≥ x).

    6 Multiple Fare Classes with Arbitrary Fare Arrival Patterns

    So far we have suppressed the time dimension; the order of the arrivals has provided us with stages that are a
    proxy for time. In this section we consider models where time is considered explicitly. There are advantages
    of including time as part of the model as this allows for a more precise formulation of the customer arrival
    process. For example, we can relax the low-to-high arrival assumption and allow for overlapping or concurrent

    17

    arrival rates. On the other hand, the flexibility advantage comes at the cost of estimating arrival rates for
    each of the fare classes over the sales horizon. If arrival rates are not estimated accurately, then adding
    the time dimension may hurt rather than help performance. In addition, the formulations presented in this
    section assumes that demand for each fare class follows a Poisson process, whereas our earlier models based
    on sequential fare arrivals do not have this restriction. We will extend the formulation in this section to the
    case of compound Poisson in §7.

    We assume that customers arrive to the system according to a time heterogeneous Poisson process with
    intensity λjt, 0 ≤ t ≤ T where T is the length of the horizon, t represents the time-to-go and j ∈ {1, . . . ,n}.
    This means that the number of customers that arrive during the last t units of time and request product j,
    say Njt, is Poisson with parameter Λjt =

    ∫ t
    0
    λjsds. We will use the shorthand notation Λj = ΛjT to denote

    the total expected demand for fare j ∈{1, . . . ,n}.

    Let V (t,x) denote the maximum expected revenue that can be attained over the last t units of time from x
    units of capacity. We will develop both discrete and continuous time dynamic programs to compute V (t,x). To
    construct a dynamic program we will need the notion of functions that go to zero faster than their argument.
    More precisely, we say that a function g(x) is o(x) if limx↓0 g(x)/x = 0. We now argue that the probability
    that over the interval [t − δt,t] there is exactly one request and the request is for product j is of the form
    λjtδt + o(δt). Let Nj(t− δt,t] denote the number of requests for product j over the interval (t− δt,t]. Then
    Nj(t− δt,t] is Poisson with parameter

    ∫ t
    t−δt λjsds = λjtδt + o(δt). Then

    P(Nj(t− δt,t] = 1) = λjtδ exp(−λjtδt) + o(δt) = λjtδt[1 −λjtδt] + o(δt) = λjtδt + o(δt),

    while the probability that there are no requests for the other products over the same interval is

    P(Nk(t−δt,t] = 0,∀k 6= j) = exp(−

    k 6=j

    λktδt) + o(δt) = 1 −

    k 6=j

    λktδt + o(δt).

    Multiplying the two terms and collecting terms we obtain λjtδt + o(δt) as claimed.

    We can now write

    V (t,x) =

    j∈Mt

    λjtδt max(pj + V (t− δt,x− 1),V (t− δt,x)) + (1 −

    j∈Mt

    λjtδt)V (t− δt,x) + o(δt)

    = V (t− δt,x) + δt

    j∈Mt

    λjt[pj − ∆V (t−δt,x)]+ + o(δt) (19)

    with boundary conditions V (t, 0) = 0 and V (0,x) = 0 for all x ≥ 0, where ∆V (t,x) = V (t,x)−V (t,x−1) for
    x ≥ 1 and t ≥ 0. Here Mt ⊂{0, 1, . . . ,n} is the set of allowable fares at time-to-go t. Usually Mt = {1, . . . ,n}
    for large t, but low fares are dropped from Mt as the time-of-purchase restrictions become binding.

    The first term of (19) corresponds to the arrival of one request for product j and the decision is made
    between accepting the request obtaining pj + V (t − δt,x − 1) and rejecting it obtaining V (t − δt,x). The
    second term corresponds to not obtaining a request resulting in revenue V (t−δt,x). Subtracting V (t−δt,x)
    from both sides of equation (19), dividing by δt and taking the limit as δt ↓ 0, we obtain the Hamilton Jacobi
    Bellman (HJB) equation:

    ∂V (t,x)

    ∂t
    =


    j∈Mt

    λjt[pj − ∆V (t,x)]+ (20)

    with the same boundary conditions. The equation tells us that the rate at which V (t,x) grows with t is the
    weighted sum of the positive part of the fares net of the marginal value of capacity ∆V (t,x) at state (t,x).
    We can think of the right hand side as the profit rate in excess of the marginal cost ∆V (t,x).

    The value function (20) can be accurately computed by solving and pasting the HJB equation. In practice,
    V (t,x) is computed approximately by using a discrete time dynamic programming formulation. A discrete
    time dynamic programming formulation emerges from (19) by rescaling time, setting δt = 1, and dropping
    the o(δt) term. This can be done by selecting a > 1, so that aT is an integer, and setting λjt ← 1aλj,t/a,

    18

    for t ∈ [0,aT]. The scale factor a should be sufficiently large so that after scaling,

    j∈Mt λjt << 1, e.g.,∑

    j∈Mt λjt ≤ .01 for all t ∈ [0,T], with T ← aT. The resulting discrete time dynamic program is given by

    V (t,x) = V (t− 1,x) +

    j∈Mt

    λjt[pj − ∆V (t− 1,x)]+ ∀ t ∈{1, . . . ,T} and x ∈{1, . . . ,c}, (21)

    with the same boundary conditions. Computing V (t,x) via (21) is quite easy and fairly accurate if time is
    scaled appropriately. For each t, the complexity is order O(n) for each x ∈ {1 . . . ,c} so the complexity per
    period is O(nc), and the overall computational complexity is O(ncT).

    A formulation equivalent to (21) was first proposed by Lee and Hersh [13], who also show that ∆V (t,x) is
    increasing in t and decreasing in x. The intuition is that the marginal value of capacity goes up if we have more
    time to sell and goes down when we have more units available for sale. From the dynamic program (21), it is
    optimal to accept a request for product j when pj ≥ ∆V (t−1,x) or equivalently, when pj + V (t−1,x−1) ≥
    V (t−1,x), i.e., when the expecte revenue from accepting the request exceeds the expected revenue of denying
    the request. Notice that if it is optimal to accept a request for fare j, then it is also optimal to accept a request
    for any higher fare. Indeed, if pk ≥ pj and pj ≥ ∆V (t − 1,x), then pk ≥ ∆V (t − 1,x). Assuming that the
    fares are ordered: p1 ≥ p2 ≥ . . . ≥ pn, then it is optimal to accept all fares in the active set

    A(t,x) = {j ∈ Mt : j ≤ a(t,x)}, where

    a(t,x) = max{j : pj ≥ ∆V (t− 1,x)} t ≥ 1,x ≥ 1,

    and to reject all fares in the complement R(t,x) = {j ∈{1, . . . ,n} : j /∈ A(t,x)}.

    We can also express the policy in terms of dynamic protection levels yj(t),j = 1, . . . ,n− 1, given by

    yj(t) = max{x : a(t,x) = j},

    so if x ≤ yj(t) then fares j + 1 and higher should be closed.

    Proposition 6 The active set A(t,x) is decreasing in t and increasing in x. Moreover, yj(t) is increasing in
    j and increasing in t.

    Proof: Both results follow directly from the fact that ∆V (t,x) is increasing in t and decreasing in x.

    Notice that it may be optimal to reopen a fare after it is closed. Indeed, suppose that a(t,x) = j and there
    is an absence of sales over the interval (s,t], then at state (s,x), a(s,x) ≥ a(t,x), and more fares may open
    if a(s,x) > a(t,x). In §9 will discuss a modification of this formulation that keeps fares closed once they are
    closed for the first time, as such formulations are more robust in the presence of strategic customers that may
    prefer to wait for a lower fare.

    6.1 A Pricing Formulation with Broader Interpretation

    In this section we recast the dynamic programs (20) and (21) as dynamic pricing problems with finite price
    menus. The idea is that the active sets A(t,x) are of the form Sjt = {k ∈ Mt : k ≤ j}. Associated
    with each of these active sets is a probability of sale, say πjt and an average fare, say qjt. To see this, let
    λt =


    j∈Mt λjt denote the overall arrival rate for request at time t for fares in Mt. Define πjt =


    k∈Sjt λkt/λt

    and rjt =

    k∈Sjt pkλkt/λt. We can think of πjt and rjt as the probability of sale and the average revenue

    rate, per arriving customer, when we offer all the fares in Sjt for all j ∈ Nt. . Now let qjt = rjt/πjt be the
    average fare per unit sold when the offer set is Sjt,j ∈ Mt. For convenience we let q0t = π0t = r0t = 0 for

    19

    j = 0 and M+t = Mt ∪{0}. With this notation, we can write formulation (21) as

    V (t,x) = V (t− 1,x) + λt max
    j∈M+

    t

    [rjt −πjt∆V (t− 1,x)]

    = V (t− 1,x) + max
    j∈M+

    t

    λtπjt[qjt − ∆V (t− 1,x)]. (22)

    The equivalent formulation for the continuous time model (20) is

    ∂V (t,x)

    ∂t
    = max
    j∈M+

    t

    λtπjt[qjt − ∆V (t,x)]. (23)

    Formulations (22) and (23) can be interpreted broadly as the problem of optimizing the expected revenue
    from state (t,x) over a finite price menu qjt,j ∈ M+t with associated demand rate λtπjt,j ∈ Mt. We will come
    back to this pricing formulation when we discuss the dynamic capacity allocation problem with dependent
    demands. We will see there that essentially the same pricing formulation works for dependent demands. For
    the case of dependent demands, the set M+t will be the index corresponding to a collection of efficient sets or
    assortments.

    7 Compound Poisson Demands

    The formulations of the dynamic programs (20) and (21), implicitly assume that each request is for a single
    unit. Suppose instead, that each arrival is for a random number of units. More specifically, suppose that
    request for fare j are of random size Zj, and that the probability mass function Pj(z) = P(Zj = z),z ≥ 1 is
    known for each j. As before, we assume independent demands for the different fare classes j ∈ N. We seek
    to generalize the dynamic programs (20) and (21) so that at each state (t,x) we can decide whether or not to
    accept a fare pj request of size Zj = z. The expected revenue from accepting the request is zpj +V (t−1,x−z)
    and the expected revenue from rejecting the request is V (t− 1,x). Let ∆zV (t,x) = V (t,x) −V (t,x− z) for
    all z ≤ x and ∆zV (t,x) = ∞ if z > x. The purpose is to assure ourselves that a request that exceeds the
    current capacity will always be rejected. We can think of ∆zV (t,x) as a the sum of the the z marginal values
    ∆V (t,x) + ∆V (t,x− 1) + . . . + ∆V (t,x−z + 1).

    The dynamic program (20) with compound Poisson demands is given by

    ∂V (t,x)
    ∂t
    =

    j∈Mt

    λjt

    x∑
    z=1

    Pj(z)[zpj − ∆zV (t,x)]+, (24)

    while the discrete time dynamic program (21) with compound Poisson demands is given by

    V (t,x) = V (t− 1,x) +

    j∈Mt
    λjt
    x∑
    z=1

    Pj(z)[zpj − ∆zV (t− 1,x)]+, (25)

    with boundary conditions V (t, 0) = V (0,x) = 0. Notice that the sums in (24) and (25) can be changed to
    ∑∞
    z=1

    instead of
    ∑x
    z=1 as the terms z > x do not contribute to the sum given our convention that ∆zV (t,x) = ∞ for

    z > x. The optimal policies for the two programs are, respectively, to accept a size z request fare pj, j ∈ Mt,
    if zpj ≥ ∆zV (t,x), and to accept a z request fare pj, j ∈ Mt, if zpj ≥ ∆zV (t− 1,x). The two policies should
    largely coincide if time is scaled correctly so that


    j∈Mt λjt << 1 for all t ∈ [0,T].

    For compound Poisson demands, we can no longer claim that the marginal value of capacity ∆V (t,x) is
    decreasing in x, although it is still true that ∆V (t,x) is increasing in t. To see why ∆V (t,x) is not monotone in
    x, consider a problem where the majority of the requests are for two units and request are seldom for one unit.
    Then the marginal value of capacity for even values of x may be larger than the marginal value of capacity for

    20

    odd values of x. Consequently, some of the structure may be lost. For example, it may be optimal to accept a
    request of a single unit of capacity when x is odd, but not if x is even, violating the monotonicity of ∆V (t,x).
    However, even if some of the structure is lost, the computations involved to solve (25) are straightforward as
    long as the distribution of Zj is known. Airlines, for example, have a very good idea of the distribution of Zj
    for different fare classes.

    Example 6. Consider again the data of Examples 3 with fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and
    p5 = $15 with independent compound Poisson demands, with uniform arrival rates λ1 = 15,λ2 = 40,λ3 =
    50,λ4 = 55,λ5 = 120 over the horizon [0, 1]. We will assume that Mt = {1, . . . ,n} for all t ∈ [0,T], with
    T = 1. The aggregate arrival rates are given by Λj = λjT = λj for all j. We will assume that the distribution
    of the demand sizes is given by P(Z = 1) = 0.65,P(Z = 2) = 0.25,P(Z = 3) = 0.05 and P(Z = 4) = .05 for
    all fare classes. Notice that E[Z] = 1.5 and E[Z2] = 2.90, so the variance to mean ratio is 1.933. We used the
    dynamic program (25) with a rescaled time horizon T ← aT = 2, 800, and rescaled arrival rates λj ← λj/a for
    all j. Table 12 provides the values V (T,c) for c ∈{50, 100, 150, 200, 250, 300, 350}. Table 12 also provides the
    values ∆V (t,x) for t = 207 in the rescaled horizon for x ∈ {1, . . . , 6} to illustrate the behavior of the policy.
    The reader can verify that at state (t,x) = (208, 3) it is optimal to accept a request for one unit at fare p2,
    and to reject the request if it is for two units. Conversely, if the state is (t,x) = (208, 4) then it is optimal to
    reject a request for one unit at fare p2, and to accept the request if it is for two units. The reason for this is
    that the value of ∆V (t,x) is not monotone decreasing at x = 4.

    c 50 100 150 200 250 300
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    x 1 2 3 4 5 6
    ∆V (t,x) 70.05 66.48 59.66 60.14 54.62 50.41

    Table 12: Value function V (T,c) and marginal revenues ∆V (t,c) for t = 208, Example 6: Compound Poisson

    8 Static vs Dynamic Policies

    In this section we compare the performance of static policies obtained using the dynamic program (8) to the
    performance of dynamic policies for compound Poisson demands based on (25). To our knowledge, this is the
    first time these two policies are compared. Diwan [7], for example, compares the performance of the EMSR-b
    heuristic for static policies against the performance of the dynamic formulation for Poisson demands (21). Not
    surprisingly, he finds that this heuristic use of (21) can underperform static policies when demands are not
    Poisson. A more compelling exercise is to compare static policies against dynamic policies for the compound
    Poisson case as we do here. It is possible to formally proof that dynamic policies do at least as well, so
    computational studies should concentrate on measuring the gap between static and dynamic policies. It turns
    out that the gap is fairly small when the arrival rates are low-to-high, or the arrival rates follow a prescribed
    order that is consistent with the computations of the protection levels. This is particularly true if the static
    policy is implemented by frequently resolving the problem during the sales horizon.

    Comparing static and dynamic policies when the fare arrival rates do not follow a specific is more difficult
    because revenues depend heavily on how the static protection levels are implemented. Two possible implemen-
    tations are possible. Under theft nesting a request of size z for fare j is accepted if x−z ≥ yj−1, where x os the
    current inventory and yj−1 is the protection level for fares {1, . . . ,j − 1}. This method is called theft nesting
    because the remaining inventory x at time-to-go t deducts all previous bookings regardless of fare class. In
    contrast, standard nesting is implemented by accepting a size z request for fare j if x−z ≥ (yj−1−b[1,j−1])+,
    where b[1,j−1] are the observed bookings of fares [1,j−1] at state (t,x). In practice, standard nesting works
    much better than theft nesting when the fare arrival pattern is not low-to-high. This makes sense because
    under standard nesting we do not insist on protecting yj−1 units for fares {1, . . . ,j} even though we have
    already booked b[1,j − 1] units of these fares. Thus, we use standard nesting in comparing static policies
    versus dynamic policies. The performance of static policies suffer relative to that of the dynamic program (25)
    as illustrated in Example 7 based on the data of Example 6.

    21

    Example 7 Consider again the data of Example 6 with uniform arrival rates. Table 13 compares the perfor-
    mance V (T,c) of the compound poisson formulation (25) to the performance of the EMSR-b under standard
    nesting. Part of the gap between V b(T,c) and V (T,c) can be reduced by frequently recomputing the booking
    limits applying the EMSR-b heuristic during the sales horizon. However, this is not enough to overcome the
    disadvantage of the EMSR-b heuristic when arrivals are not low-to-high.

    c 50 100 150 200 250 300
    V b(T,c) $3,653 $6,177 $8,187 $9,942 $11,511 $12,266
    V (T,c) $3,837 $6,463 $8,451 $10,241 $11,724 $12,559

    Gap 4.8% 4.4% 3.1% 2.9% 1.8% 2.3%

    Table 13: Sub-Optimality of EMSR-b with Standard Nesting

    The next proposition shows that V s(T,x) ≤ V (T,x), where V s(T,x) is the expected revenue resulting from
    applying a static booking policy with standard nesting, and V (T,x) is the optimal expected revenue for the
    compound Poisson Dynamic Program. The same simple proof can be used to show that V b(T,x) ≤ V (T,x).
    In fact, a proof is hardly needed as we are comparing heuristics to optimal dynamic policies.

    Proposition 7
    V s(T,x) ≤ V (T,x) ∀x ∈{0, 1, . . . ,c}.

    Proof: Clearly for V s(0,x) = V (0,x) = 0 so the result holds for t = 0, for all x ∈ {0, 1, . . . ,c}. Suppose
    the result holds for time-to-go t− 1, so V s(t− 1,x) ≤ V (t− 1,x) for all x ∈ {0, 1, . . . ,c}. We will show that
    it also holds for time-to-go t. If a request of size z arrives for fare class j, at state (t,x), the policy based on
    protection levels y1, . . . ,yn−1 will accept the request if x−z ≥ (yj−1−b[1,j−1])+ and will rejected otherwise.
    In the following equations, we will use Qj(z) to denote P(Zj > z). We have

    V s(t,x) =

    j∈Nt

    λjt[

    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V
    s(t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V s(t− 1,x)] + (1 −

    j∈Nt

    λjt)V
    s(t− 1,x)



    j∈Nt

    λjt[
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj + V (t− 1,x−z))

    + Qj(x− (yj−1 − b[1,j − 1])+)V (t− 1,x)] + (1 −

    j∈Nt

    λjt)V (t− 1,x)

    = V (t− 1,x) +

    j∈Nt

    λjt
    x−(yj−1−b[1,j−1])+∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))

    ≤ V (t− 1,x) +

    j∈Nt

    λjt

    ∞∑
    z=1

    Pj(z)(zpj − ∆zV (t− 1,x))+

    = V (t,x),

    where the first equation follows from the application of the protection level policy, the first inequality follows
    from the inductive hypothesis V s(t − 1,x) ≤ V (t − 1,x). The second equality collects terms, the second
    inequality follows because we are taking positive parts, and the last equality from the definition of V (t,x).

    While we have shown that V s(T,c) ≤ V (T,c), one may wonder whether there are conditions where equality
    holds. The following results answers this question.

    Corollary 2 If the Dj’s are independent Poisson random variables and the arrivals are low-to-high then
    Vn(c) = V

    s(T,c) = V (T,c).

    22

    Proof: Notice that if the Djs are Poisson and the arrivals are low-to-high, then we can stage the arrivals
    so that λjt = nE[Dj]/T over t ∈ (tj−1, tj] where tj = jT/n for j = 1, . . . ,n. We will show by induction in
    j that Vj(x) = V (tj,x). Clearly y0 = 0 and V1(x) = p1E min(D1,x) = V (t1,x) assuming a sufficiently large
    rescale factor. Suppose, by induction, that Vj−1(x) = V (tj−1,x). Consider now an arrival at state (t,x) with
    t ∈ (tj−1, tj]. This means that an arrival, if any, will be for one unit of fare j. The static policy will accept this
    request if x−1 ≥ yj−1, or equivalently if x > yj−1. However, if x > yj−1, then ∆(t−1,x) ≥ ∆V (tj−1,x) ≥ pj,
    because ∆V (t,x) is increasing in t and because yj−1 = max{y : ∆Vj−1(y) > pj} = max{y : ∆V (tj−1,x) > pj},
    by the inductive hypothesis. Conversely, if the dynamic program accepts a request, then pj ≥ ∆V (t,x) and
    therefore x > yj−1 on account of ∆V (t,x) ≥ ∆V (tj−1,x).

    8.1 Bounds on V (T, c)

    We will now briefly show that the upper bound V Un (c) for Vn(c), developed in Section 5 for the static multi-fare
    model is still valid for V (T,c). The random revenue associated with the perfect foresight model is Vn(c,D)
    and can be obtained by solving the linear program (11). Notice that for all sample paths, this revenue is
    at least as large as the revenue for the dynamic policy. Taking expectations we obtain V (T,c) ≤ V Un (c) =
    EVn(c,D) =

    ∑n
    k=1(pk − pk+1)E min(D[1,k],c), where for convenience pn+1 = 0. Moreover, since dynamic

    policies do at least as well as static policies, the lower bounds obtained in Section 5 also apply to dynamic
    policies.

    9 Monotonic Fare Offerings

    The dynamic programs (20) and (21) and their compound Poisson counterparts (22) and (23), all implicitly
    assume that fares can be opened and closed at any time. To see how a closed fare may reopen, suppose that
    a(t,x) = j so set A(t,x) = {k ∈ Mt : k ≤ j} is offered at state (t,x), but an absence of sales may trigger
    fare/action j + 1 to open as a(s,x) increases as the time-to-go s decreases. This can lead to the emergence
    of customers or third parties that specialize on inter-temporal fare arbitrage. To avoid this, the capacity
    provider may commit to a policy of never opening fares once they are closed. To handle monotonic fares
    requires modifying the dynamic programming into something akin to the dynamic program (8) where time
    was handled implicitly. Let Vj(t,x) be the maximum expected revenue from state (t,x) that can be obtained
    by offering any set Sit = {k ∈ Mt,k ≤ i}, i ≤ j, so that closed fares are not allowed to reopen. Let Wk(t,x)
    be the expected revenue from accepting fares Skt at state (t,x) and then following an optimal policy. More
    precisely,

    Wk(t,x) =

    i∈Skt

    λit[pi + Vk(t− 1,x− 1)] + (1 −

    i∈Skt

    λit)Vk(t− 1,x)

    = Vk(t− 1,x) + λt[rkt −πkt∆Vk(t− 1,x)]
    = Vk(t− 1,x) + λtπkt[qkt − ∆Vk(t− 1,x)],

    where ∆Vk(t,x) = Vk(t,x) −Vk(t,x− 1), and the quantities λt,πkt and qkt are as defined in §6.1.

    Then Vj(t,x) satisfies the dynamic program

    Vj(t,x) = max
    k≤j

    Wk(t,x) = max{Wj(t,x),Vj−1(t,x)} (26)

    with the boundary conditions Vj(t, 0) = Vj(0,x) = 0 for all t ≥ 0 and all x ∈ N for all j = 1, . . . ,n. It
    follows immediately that Vj(t,x) is monotone increasing in j. An equivalent version of (26) for the case n = 2
    can be found in Weng and Zheng [23]. The complexity to compute Vj(t,x),x = 1, . . . ,c for each j is O(c)
    so the complexity to compute Vj(t,x),j = 1, . . . ,n,x = 1, . . . ,c is O(nc). Since there are T time periods
    the overall complexity is O(ncT). While computing Vj(t,x) numerically is fairly simple, it is satisfying to
    know more about the structure of optimal policies as this gives both managerial insights and can simplify
    computations. The proof of the structural results are intricate and subtle, but they parallel the results for the

    23

    dynamic program (8) and (21). The following Lemma is the counterpart to Lemma 2 and uses sample path
    arguments based on ideas in [23] to extend their results from n = 2 to general n. The proof can be found in
    the Appendix.

    Lemma 3 For any j ≥ 1,

    a) ∆Vj(t,x) is decreasing in x ∈N+, so the marginal value of capacity is diminishing.

    b) ∆Vj(t,x) is increasing in j ∈{1, . . . ,n} so the marginal value of capacity increases when we have more
    stages to go.

    c) ∆Vj(t,x) is increasing in t, so the marginal value of capacity increases as the time-to-go increases.

    Let
    aj(t,x) = max{k ≤ j : Wk(t,x) = Vj(t,x)}.

    In words, aj(t,x) is the index of the lowest open fare that is optimal to post at state (t,x) if we are allowed
    to use any fares in Sjt. Let

    Aj(t,x) = {k ∈ Mt : k ≤ aj(t,x)}.

    Then Aj(t,x) is the optimal set of fares to open at state (j,t,x). Clearly Vi(t,x) = Vj(t,x) for all i ∈
    {aj(t,x), . . . ,j}. The following Lemma asserts that aj(t,x) is monotone decreasing in t (it is optimal to have
    fewer open fares with more time-to-go and the same inventory), monotone increasing in x (it is optimal to
    have more open fares with more inventory and the same time-to-go) and monotonically increasing in j.

    Lemma 4 aj(t,x) is decreasing in t and increasing in x and j. Moreover, aj(t,x) = k < j implies ai(t,x) = k for all i ≥ k.

    It is possible to think of the policy in terms of protection levels and in terms of stopping sets. Indeed, let
    Tj = {(t,x) : Vj(t,x) = Vj−1(t,x)}. We can think of Tj as the stopping set for fare j as it is optimal to close
    down fare j upon entering set Tj. For each t, let yj(t) = max{x ∈N : (t,x) ∈ Tj+1}. We can think of yj(t) as
    the protection level for fares in Sj against higher fares. The following result is the counterpart to Theorem 2.

    Theorem 3 • Aj(t,x) is decreasing in t and increasing in x and j.

    • T1 ⊂ T2 ⊂ . . . ⊂ Tn.

    • yj(t) is increasing in t and in j.

    • If x ≤ yj(t) then Vi(t,x) = Vj(t,x) for all i > j.

    Proof: The properties of Aj(t,x) follow from the properties of aj(t,x) established in Lemma 4. Tj = {(t,x) :
    aj(t,x) < j}. From Lemma 4, aj(t,x) < j implies that ai(t,x) < i for all i > j, so Tj ⊂ Ti for all i > j. This
    implies that yj(t) is increasing in j for any t ≥ 0. If t′ > t, then aj+1(t′,yj(t)) ≤ aj+1(t,yj(t)) < j + 1, so yj(t

    ′) ≥ yj(t). Since yj(t) ≤ yi(t) for all i > j, then x ≤ yj(t) implies Vi+1(t,x) = Vi(t,x) for all i ≥ j and
    therefore Vi(t,x) = Vj(t,x) for all i > j.

    The policy is implemented as follows: The starting state is (n,T,c) as we can use any of the fares {1, . . . ,n},
    we have T units of time to go and c is the initial inventory. At any state (j,t,x) we post fares Aj(t,x) =
    {1, . . . ,aj(t,x)}. If a unit is sold during period t the state is updated to (aj(t,x), t−1,x−1) since all fares in
    the set Aj(t,x) are allowed, the time-to-go is t− 1 and the inventory is x− 1. If no sales occur during period
    t the state is updated to (aj(t,x), t− 1,x). The process continues until either t = 0 or x = 0.

    24

    Example 8. Consider Example 1 again with 5 fares p1 = $100,p2 = $60,p3 = $40,p4 = $35 and p5 = $15
    with independent Poisson demands with means Λ1 = 15, Λ2 = 40, Λ3 = 50, Λ4 = 55 and Λ5 = 120 and
    T = 1. The scaling factor was selected so that

    ∑5
    i=1 Λi/a < .01 resulting in T ← aT = 2, 800. We also

    assume that the arrival rates are uniform over the horizon [0,T], i.e., λj = Λj/T. In Table 14 we present
    the expected revenues Vj(T,c),j = 1, . . . , 5 and V (T,c) for c ∈ {50, 100, 150, 200, 250}. The first row is V5(c)
    from Example 1. Notice that V5(c) ≤ V5(T,c). This is because we here we are assuming uniform, rather than
    low-to-high arrivals. V (T,c) is even higher because we have the flexibility of opening and closing fares at will.
    While the increase in expected revenues [V (T,c) −V5(T,c)] due to the flexibility of opening and closing fares
    may be significant for some small values of c (it is 1.7% for c = 50), attempting to go for this extra revenue
    may invite strategic customers or third parties to arbitrage the system.

    c 50 100 150 200 250 300 350
    V5(c) 3,426.8 5,441.3 7,188.7 8,159.1 8,909.1 9,563.9 9,625.0

    V (T,c) 3,553.6 5,654.9 7,410.1 8,390.6 9,139.3 9,609.6 9,625.0
    V5(T,c) 3,494.5 5,572.9 7,364.6 8,262.8 9,072.3 9,607.2 9,625.0
    V4(T,c) 3,494.5 5,572.9 7,364.6 7,824.9 7,825.0 7,825.0 7,825.0
    V3(T,c) 3,494.5 5,572.9 5,900.0 5,900.0 5,900.0 5,900.0 5,900.0
    V2(T,c) 3,494.5 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0 3,900.0
    V1(T,c) 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0 1,500.0

    Table 14: Expected Revenues V (T,c) with uniform arrival rates

    To obtain a continuous time formulation, we can use the same logic that lead to (20) to obtain

    ∂Vj(t,x)

    ∂t
    =

    {
    rjt −πjt∆Vj(t,x) if (t,x) /∈ Zj−1
    ∂Vj−1(t,x)

    ∂t
    if (t,x) ∈ Zj−1

    (27)

    with the same boundary conditions.

    9.1 Mark-up and Mark-down Policies

    We now go back to the broader pricing interpretation coupled with the monotonic fare formulation (26). In
    many applications the price menu pjt,j = 1, . . . ,n is time invariant, but the associated sales rates πjt,j =
    1, . . . ,n are time varying. In addition, we will assume that there is a price p0t such that π0t = 0 for all t.
    This technicality helps with the formulation as a means of turning off demand when the system runs out of
    inventory. The case p1t ≥ p2t ≥ . . . ≥ pnt and π1t ≤ π2t ≤ . . . ≤ πnt is known as the mark-up problem, while
    the case p1t ≤ p2t ≤ . . . ≤ pnt and π1t ≥ π2t ≥ . . . ≥ πnt is known as the mark-down problem. The former
    model is relevant in Revenue Management while the second is relevant in Retailing.

    For the RM formulation, the problem can be viewed as determining when to mark-up (switch from action
    j to j − 1). The optimal mark-up times are random as they depend on the evolution of sales under the
    optimal policy. Suppose that the current state is (j,t,x), so the last action was j, the time-to-go is t and the
    inventory is x. We want to determine whether we should continue using action j or switch to action j − 1.
    We know that if x > yj−1(t), then we should keep action j and if x ≤ yj−1(t) then we should close action
    j. Let Tj = {(t,x) : x ≤ yj−1(t)}, then it is optimal to stop action j upon first entering set Tj. Notice that
    a mark-up occurs when the current inventory falls below a curve, so low inventories trigger mark-ups, and
    mark-ups are triggered by sales. The retailing formulation also has a threshold structure, but this time a
    mark-down is triggered by inventories that are high relative to a curve, so the optimal timing of a mark-down
    is triggered by the absence of sales. Both the mark-up and the mark-down problems can be studied from the
    point of view of stopping times. We refer the reader to Feng and Gallego [9], [10], and Feng and Xiao [11] and
    reference therein for more on the markup and markdown problems.

    25

    10 Acknowledgments

    I acknowledge the feedback from my students and collaborators. In particular, I would like to recognize the
    contributions and feedback from Anran Li, Lin Li, and Richard Ratliff.

    26

    11 Appendix

    Proof of Lemma 1: Taking expectations yields g(y) = G(y)P(X ≥ y) +

    j≤y−1 G(j)P(X = j) and

    g(y−1) = G(y−1)P(X ≥ y) +

    j≤y−1 G(j)P(X = j). Taking the difference yields ∆g(y) = ∆G(y)P(X ≥ y).

    Taking expectations yields r(y) = R(y)P(X < y) + ∑ j≥y R(j)P(X = j) and r(y − 1) = R(y − 1)P(X <

    y) +

    j≥y R(j)P(X = j). Taking the difference we see that ∆r(y) = ∆R(y)P(X < y).

    Proof of Proposition 1: Let G(y) = p1y, then V1(y) = g(y) = EG(min(D1,y)), so ∆V1(y) = ∆g(y) =
    p1P(D1 ≥ y). This establishes the first part of the Proposition. To establish the second part of the Proposition
    we use the first part of Lemma 1 to show that p2E min(D2,c−y)−p2E min(D2,c−y + 1) = −p2P(D2 > c−y)
    and the second part of the Lemma 1 to show that EV1(max(x − D2,y)) − EV1(max(x − D2,y − 1)) =
    ∆V1(y)P(D2 > c−y). The second part of the Proposition then follows from putting the two parts together. To
    see the first part, let r(y) = p2c−p2E max(c−D2,y), then ∆r(y) = p2E min(D2,c−y)−p2E min(D2,c−y+1) =
    ∆R(y)P(c − D2 < y) where R(y) = −p2y, so ∆r(y) = −p2P(c − D2 < y) = −p2P(D2 > c − y). Now let
    R(y) = V1(y), then ∆r(y) = ∆V1(y)P(c−D2 < y) = ∆V1(y)P(D2 > c−y) completing the proof.

    Proof of Lemma 2: We will prove the result by induction on j. The result holds for j = 1 since ∆V1(y) =
    p1P(D1 ≥ y) is decreasing in y and clearly ∆V1(y) = p1P(D1 ≥ y) ≥ ∆V0(y) = 0. Assume that the result is
    true for Vj−1. It follows from the dynamic programming equation (8) that

    Vj(x) = max
    y≤x

    {Wj (y,x))} ,

    where for any y ≤ x, Wj(y,x) = E [pj min{Dj,x−y}] + E [Vj−1 (max{x−Dj,y})].

    An application of 1 shows that for y ∈{1, . . . ,x}

    ∆Wj(y,x) = Wj(y,x) −Wj(y − 1,x) = [∆Vj−1(y) −pj] P(Dj > x−y).

    Since ∆Vj−1(y) is decreasing in y (this is the inductive hypothesis), we see that Wj(y,x) ≥ Wj(y − 1,x)
    if ∆Vj−1(y) > pj and Wj(y,x) ≤ Wj(y − 1,x) if ∆Vj−1(y) ≤ pj.

    Consider the expression

    yj−1 = max{y ∈N : ∆Vj−1(y) > pj} (28)

    where the definition of ∆Vj(y) is extend to y = 0 for all j by setting ∆Vj(0) = p1. If yj−1 ≤ x then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(yj−1,x)

    On the other hand, if x < yj−1 then

    Vj(x) = max
    y≤x

    Wj(y,x) = Wj(x,x).

    In summary,

    Vj(x) = Wj(min(x,yj−1),x)

    =

    {
    Vj−1(x), if x ≤ yj−1
    E [pj min{Dj,x−yj−1}] + E [Vj−1 (max{x−Dj,yj−1})] if x > yj−1

    27

    Computing ∆Vj(x) = Vj(x) −Vj(x− 1) for x ∈N results in:

    ∆Vj(x) =

    {
    ∆Vj−1(x), if x ≤ yj−1
    E min(pj, ∆Vj−1(x−Dj)) if x > yj−1

    (29)

    We will now use this result to show that ∆Vj(x) is itself decreasing in x. Since ∆Vj(x) = ∆Vj−1(x) for
    x ≤ yj−1 and ∆Vj−1(x) is decreasing in x we only need to worry about the case x > yj−1.

    However, in this case
    ∆Vj(x) = E min(pj, ∆Vj−1(x−Dj))

    is decreasing in x since ∆Vj−1(x) is itself decreasing in x.

    We now show that ∆Vj(x) ≥ ∆Vj−1(x). For x > yj−1 we have min(pj, ∆Vj−1(x−Dj)) ≥ min(pj, ∆Vj−1(x)) =
    ∆Vj−1(x) where the inequality follows since ∆Vj−1(x) is decreasing in x and the equality since x > yj−1. Tak-
    ing expectations we see that ∆Vj(x) ≥ ∆Vj−1(x) on x > yj−1 while ∆Vj(x) = ∆Vj−1(x) on x ≤ yj−1.

    Proof of Proposition 2: We first show that ∆Vj+1(x) = ∆Vj(x) for x = 1, . . . ,yj. This follows since
    Vj+1(x) = Wj+1(x,x) = Vj(x) in this range as no capacity is made available for fare pj+1 when x ≤ yj. For
    x > yj

    Vj+1(x) = pj+1E min(x−yj,Dj+1) + EVj(max(x−Dj+1,yj)

    = pj+1

    x−yj∑
    k=1

    Pr(Dj+1 ≥ k) + Vj(yj)Pr(Dj+1 > x−yj)

    +

    x−yj∑
    k=0

    Vj(x−k)Pr(Dj+1 = k).

    Consequently, for x > yj

    ∆Vj+1(x) = pj+1Pr(Dj+1 ≥ x−yj) +
    x−yj−1∑
    k=0

    ∆Vj(x−k)Pr(Dj+1 = k) (30)

    follows from Vj(x − 1) = Vj(yk) for x = yj + 1. Since pj+1 < ∆Vj(y) for y ≤ yj, we can write ∆Vj+1(x) =∑∞ k=0 min(pj+1, ∆Vj(x−k))P(Dj+1 = k) = E min(pj+1, ∆Vj(x−Dj+1)).

    Proof of Proposition 3: Since Πn(c,k) is the difference of a concave and a linear function, Πn(c,k) it is
    itself concave. The marginal value of adding the cth unit of capacity is ∆Vn(c) − k so the cth unit increase
    profits as long as ∆Vn(c) > k. Therefore, the smallest optimal capacity is given by c(k). (Notice that c(k) + 1
    may be also optimal if ∆Vn(c(k) + 1) = k.) c(k) is decreasing in k since ∆Vn(c) is decreasing in c. Suppose
    that k = pj+1. To establish c(pj+1) = yj it is enough to show that that ∆Vn(yj) > pj+1 ≥ ∆Vn(yj + 1). By
    definition yj = max{y ∈N : ∆Vj(y) > pj+1} so ∆Vj(yj) > pj+1 ≥ ∆Vj(yj + 1). Since it is optimal to protect
    up to yj units of capacity for sale at fares j,j − 1, . . . , 1, it follows that Vn(c) = Vj(c) for all c ≤ yj, and
    consequently ∆Vn(yj) = ∆Vj(yj) > pj+1. Now ∆Vn(yj + 1) can be written as a convex combination of pj+1
    and ∆Vj(yj + 1) ≤ pj+1 which implies that ∆Vn(yj + 1) ≤ pj+1, completing the proof.

    Proof of Lemma 3: We will first show part that ∆Vj(t,x) is decreasing in x which is equivalent to showing
    that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1)] for all x ≥ 1. Let A be an optimal admission control rule starting
    from state (t,x + 1) and let B be an optimal admission control rule starting from (t,x− 1). These admission
    control rules are mappings from the state space to subsets Sk = {1, . . . ,k},k = 0, 1, . . . ,j where S0 = ∅ is
    the optimal control whenever a system runs out of inventory. Consider four systems: two starting from state
    (t,x), using control rules A′ and B′, respectively, and one each starting from (t,x + 1) and (t,x − 1), using
    control rule A and B, respectively. Our goal is to specify heuristic control rules A′ and B′ that together make
    the expected revenues of the two systems starting with (t,x) at least as large as the expected revenues from
    the systems starting at (t,x + 1) and (t,x− 1). This will imply that 2Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1).

    28

    We will use the control rules A′ = A ∩ B and B′ = A ∪ B until the first time, if ever, the remaining
    inventory of the system (t,x) controlled by A′ is equal to the remaining inventory of the system (t,x + 1)
    controlled by A. This will happen the first time, if ever, there is a sale under A and not under A′, i.e., a sale
    under A but not under B. Let t′ be the first time this happens, if it happens before the end of the horizon,
    and set t′ = 0 otherwise. If t′ > 0 then we apply policy A′ = A and B′ = B over s ∈ [0, t′). We claim that the
    expected revenue from the two systems starting with (t,x) is the same as the expected revenue from the other
    two systems. This is because the sales and revenues up to, but before t′, are the same in the two systems.
    At t′ sales occur only for the system (t,x) controlled by B′ and the system (t,x + 1) controlled by A and the
    revenues from the two sales are identical. After the sales at t′, the inventory of the system (t,x) controlled by
    A′ becomes identical to the inventory of the system (t,x+ 1) controlled by A while the inventory of the system
    (t,x) controlled by B′ becomes identical to the inventory of the system (t,x− 1) controlled by B. Since the
    policy switches to A′ = A and B′ = B then sales and revenues are the same over [0, t′). If t′ = 0 then the
    sales of the two systems are the same during the entire horizon.

    It remains to verify that inventories don’t become negative. Prior to time t′ the systems remain balance
    in the sense that system (t,x) governed by A′ always has one unit of inventory less than system (t,x + 1)
    governed by A and system (t,x) governed by B′ has one more unit of inventory than system (t,x−1) governed
    by B. Thus the only two systems that could potential run out of inventory before t′ are A′ and B.

    Since sales under A′ = A∩B are more restricted than sales under B, the inventory of system (t,x) governed
    by A′ will always be at least one unit since at most x − 1 units of sale are allowed under B. Therefore the
    only way the system can run out of inventory is if system (t,x− 1) runs out of inventory under B before t′.
    However, in this case sales would stop under systems A′ and B, while sales will continue under B′ = A and A
    so revenues will continue to be the same until the first sale under A at which point we reached t′. This shows
    that even if the system (t,x − 1) runs out of inventory under B the two systems continue to have the same
    revenues over the entire horizon. Consequently 2∆Vj(t,x) ≥ Vj(t,x + 1) + Vj(t,x− 1) for all x ≥ 1.

    To show that ∆Vj(t,x) is increasing in j it is enough to show that

    Vj(t,x) + Vj−1(t,x− 1) ≥ Vj(t,x− 1) + Vj−1(t,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (j,t,x−1) and B be an admission control rule for the system (j−1, t,x) Let A′ and B′ be heuristic admission
    rules applied, respectively, to the systems (j,t,x) and (j−1, t,x−1). Our goal is to exhibit heuristics A′ and B′
    such that when applied to the systems (j,t,x) and (j−1, t,x−1) they generate as much revenue as the applying
    A to (j,t,x−1) and B to (j−1, t,x). This will imply that Vj(t,x) + Vj−1(t,x−1) ≥ Vj(t,x−1) + Vj−1(t,x).

    Let A′ = A ∪ B and B′ = A ∩ B and let t′ be the first time there is a sale under A ∪ B without a
    corresponding sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets
    of two systems are equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and
    revenues under both sets of two systems are equal up to t′. At t′ there are sales for the system (j,t,x) and
    (j−1, t,x−1) that generate the same revenues. Moreover, the inventories of the two sets of two systems have
    the same inventories immediately after the sale at t′. Since the policy then switches to A′ = A and B′ = B
    then sales and revenues are the same for the two set of systems over s ∈ [0, t′). The only system in danger to
    run out of inventory is system (j,t,x) under A′ = A∪B, but that system has the same number of sales as the
    system (j,t,x− 1) under A up to t′. Therefore the system (j,t,x) has at least one unit of inventory up to t′.

    To show that ∆Vj(t,x) is increasing in t it is enough to show that

    Vj(t,x) + Vj(t− 1,x− 1) ≥ Vj(t,x− 1) + Vj(t− 1,x).

    To do this we again use a sample path argument. Let A be an optimal admission control rule for the system
    (t,x − 1) and B be an optimal admission control rule for the system (t − 1,x) Let A′ and B′ be heuristic
    admission rules applied, respectively, to the systems (t,x) and (t− 1,x− 1). Our goal is to exhibit heuristics
    A′ and B′ such that when applied to the systems (t,x) and (t−1,x−1) they generate as much revenue as the
    applying A to (t,x−1) and B to (t−1,x). This will imply that Vj(t,x)+Vj(t−1,x−1) ≥ Vj(t,x−1)+Vj(t−1,x).
    Let A′ = A∪B and B′ = A∩B and let t′ be the first time there is a sale under A′ without a corresponding

    29

    sale in A, so there is a sale under B but not under A. If t′ = 0 then the revenues of the sets of two systems are
    equal. If t′ > 0 switch at that point to the policy A′ = A and B′ = B. Then sales and revenues under both
    sets of two systems are equal up to t′. At t′ there are sales for the system (t,x) and (t−1,x) that generate the
    same revenues. Moreover, the inventories of the two sets of two systems have the same inventories immediately
    after the sale at t′. Since the policy then switches to A′ = A and B′ = B then sales and revenues are the
    same for the two set of systems over s ∈ [0, t′). The only system in danger to run out of inventory is system
    (t− 1,x− 1) under B′ = A∪B, but that system has the same number of sales as the system (t− 1,x) under
    B up to t′. Therefore the system (t− 1,x− 1) has at least one unit of inventory up to t′.

    Proof of Lemma 4: We will first show that aj(t,x) can also be characterized as aj(t,x) = max{k ≤ j :
    pk ≥ ∆Vk(t − 1,x)}. The result will then follow from Lemma 3. First notice that if aj(t,x) = k < j then Vi(t,x) = Vk(t,x) for all i ∈ {k,. . . ,j}. Moreover, aj(t,x) = k < j implies that Wk(t,x) > Wk+1(t,x).
    Consequently 0 > Wk+1(t,x)−Wk(t,x) = (pk+1−∆Vk+1(t−1,x))λk+1, so pk+1 < ∆Vk+1(t−1,x). Conversely, if pk ≥ ∆Vk(t−1,x) then Wk(t,x)−Wk−1(t,x) ≥ (pk −∆Vk(t−1,x))λk ≥ 0 so Wk(t,x) ≥ Wk−1(t,x). With the new characterization we now turn to the monotonicity of aj(t,x) = max{k ≤ j : pk ≥ ∆Vk(t − 1,x)}. The monotonicity with respect to j is obvious because it expands the set over which we are maximizing. To see the monotonicity with respect to t, notice that ∆Vk(t,x) ≥ ∆Vk(t − 1,x) so k is excluded from the set whenever ∆Vk(t − 1,x) ≤ pk < ∆Vk(t,x). To see the monotonicity with respect to x, notice that ∆Vk(t − 1,x + 1) ≤ ∆Vk(t,x) ≤ pk implies that k contributes positively at state (t − 1,x + 1) whenever it contributes at (t− 1,x).

    30

    12 Terminology

    Item Description

    c capacity

    p price

    s salvage value on excess capacity after the arrival of full-fare demand (e.g. last-
    minute travel specials).

    x remaining capacity, i.e. x ∈{0, 1, …,c}
    E expected value operator

    j fare class identifier where price decreases with increasing class index, i.e. p1 ≥
    p2 ≥ .. ≥ pj

    pj demand weighted average fare class price

    D fare class demand

    D[1,j] =
    ∑j
    k=1 Dk aggregate demand for fare classes 1, . . . ,j

    y protection level for a fare class

    ya protection level obtained using EMSRa heuristic

    yb protection level obtained using EMSRb heuristic

    W(y,c) revenue given protection level y and capacity c

    r ratio of discount to full-fare price

    F cumulative density function (CDF) of continuous demand

    F−1 inverse density function of continuous demand

    b booking limit for sales of discount fares

    Vj(x) optimal expected revenue for classes {1, 2, …,j} from capacity x
    ρ penalty cost for each unit of full-fare demand that is rejected

    sj observed sales for fare j in Monte Carlo simulation

    Sk Set of highest k fares {1, . . . ,k}
    a(t,x) highest opened fare class at state (t,x)

    Zj random demand size per request of fare j.

    Tj the stopping set for fare j

    λjt arrival rate of fare j demand at time-to-go t

    Λjt expected demand for fare j over [0, t].

    Table 15: Summary of Terminology and Notation Used

    References

    [1] Bathia, A. V. and S. C. Prakesh (1973) “Optimal Allocation of Seats by Fare,” Presentation by TWA
    Airlines to AGIFORS Reservation Study Group.

    [2] Belobaba, P. P. (1987) “Airline Yield Management An Overview of Seat Inventory Control,” Transporta-
    tion Science, 21, 63–73.

    [3] Belobaba, P. P. (1989) “Application of a Probabilistic Decision Model to Airline Seat Inventory Control,”
    Operations Research, 37, 183–197.

    [4] Brumelle, S. L., J. I. McGill, T. H. Oum, M. W. Tretheway and K. Sawaki (1990) “Allocation of Airline
    Seats Between Stochastically Dependent Demands,” Transporation Science, 24, 183-192.

    31

    [5] Brumelle, S. L. and J. I. McGill (1993) “Airline Seat Allocation with Multiple Nested Fare Classes,”
    Operations Research, 41, 127-137.

    [6] Curry, R. E. (1990) “Optimal Airline Seat Allocation with Fare Nested by Origins and Destinations,”
    Transportation Science, 24, 193–204.

    [7] Diwan, S. (2010) “Performance of Dynamic Programming Methods in Airline Revenue Management.”
    M.S. Dissertation MIT. Cambridge, MA.

    [8] Chandler, S. and Ja, S. (2007) Revenue Opportunity Modeling at American Airlines. AGIFORS Reser-
    vations and Yield Management Study Group Annual Meeting Proceedings; Jeju, Korea.

    [9] Feng, Y. and G. Gallego (1995) “Optimal Starting Times of End-of-Season Sales and Optimal Stopping
    Times for Promotional Fares,” 41, 1371-1391.

    [10] Feng, Y. and G. Gallego (2000) “Perishable asset revenue management with Markovian time-dependent
    demand intensities,” Management Science, 46(7): 941-956.

    [11] Feng, Y. and B. Xiao (2000) “Optimal policies of yield management with multiple predetermined prices,”
    Operations Research, 48(2): 3

    32

    -343.

    [12] Gallego, G., S. Kou and Phillips, R. (2008) “Revenue Management of Callable Products,” Management
    Science, 54(3): 550564.

    [13] Lee. C. T. and M. Hersh. (1993) “A Model for Dynamic Airline Seat Inventory Control with Multiple
    Seat Bookings,” Transportation Science, 27, 252–265.

    [14] Littlewood, K. (1972) “Forecasting and Control of Passenger Bookings.” 12th AGIFORS Proceedings:
    Nathanya, Israel, reprinted in Journal of Revenue and Pricing Management, 4(2): 111-123.

    [15] Pfeifer, P. E. (1989) “The Airline Discount Fare Allocation Problem,” Decision Science, 20, 149–157.

    [16] Ratliff, R. (2005) “Revenue Management Demand Distributions”, Presentation at AGIFORS Reservations
    and Yield Management Study Group Meeting, Cape Town, South Africa, May 2005.

    [17] Richter, H. (1982) “The Differential Revenue Method to Determine Optimal Seat Allotments by Fare
    Type,” In Proceedings 22nd AGIFORS Symposium 339-362.

    [18] Robinson, L.W. (1995) “Optimal and Approximate Control Policies for Airline Booking With Sequential
    Nonmonotonic Fare Classes,” Operations Research, 43, 252-263.

    [19] Simpson, R. (1985) “Theoretical Concepts for Capacity/Yield Management,” In Proceedings 25th AGI-
    FORS Symposium 281-293.

    [20] Talluri, K and G. van Ryzin (2004) “The Theory and Practice of Revenue Management,” Springer Sci-
    ence+Business Media, New York, USA, pg. 42.

    [21] Tematha, C., S. Polt, and and L. Suhi. (2010) “On the robustness of the network-based revenue oppor-
    tunity model,” Journal of Revenue and Pricing Management , Vol. 9, 4, 341355.

    [22] Wollmer, R. D. (1992) “An Airline Seat Management Model for a Single Leg Route When Lower Fare
    Classes Book First,” Operations Research, 40, 26-37.

    [23] Zhao, W. and Y-S Zheng (2001) “A Dynamic Model for Airline Seat Allocation with Passenger Diversion
    and No-Shows,” Transportation Science,35: 80-98.

    32

    dynamic pricing session 6.notebook

    1

    February 12, 2013

    dynamic pricing session 6.notebook

    2

    February 12, 2013

    • Page 1
    • Page 2

    Overview

    Introduction

    Neoclassical Choice Model

    Luce Model

    Random Utility Models

    Applications to Revenue Management

    Discrete Choice Models

    Guillermo Gallego
    Department of Industrial Engineering and Operations Research

    Columbia University

    Spring 2013

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction

    Neoclassical Choice Model
    Luce Model

    Random Utility Models
    Applications to Revenue Management

    Outline

    I Introduction

    I Neoclassical Theory

    I Luce Model

    I Random Utility Models

    I Applications to Revenue Management

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Outline
    I Introduction
    I Neoclassical Theory
    I Luce Model
    I Random Utility Models
    I Applications to Revenue Management
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Outline
    I Introduction
    I Neoclassical Theory
    I Luce Model
    I Random Utility Models
    I Applications to Revenue Management
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Outline
    I Introduction
    I Neoclassical Theory
    I Luce Model
    I Random Utility Models
    I Applications to Revenue Management
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Outline
    I Introduction
    I Neoclassical Theory
    I Luce Model
    I Random Utility Models
    I Applications to Revenue Management
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Outline
    I Introduction
    I Neoclassical Theory
    I Luce Model
    I Random Utility Models
    I Applications to Revenue Management
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Introduction

    Choice Modeling is a general purpose tool for making probabilistic
    predictions about human decision making behavior. It is regarded
    as the most suitable method for estimating consumers willingness
    to pay in multiple dimensions. The Nobel Prize for economics was
    awarded to Daniel McFadden in 2000 for his work in the area

    .

    We will consider three theories about about how a rational decision
    maker decides among a discrete number of alternatives:

    I Neoclassical choice model

    I Luce choice model

    I Random utility choice models

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Introduction
    Choice Modeling is a general purpose tool for making probabilistic
    predictions about human decision making behavior. It is regarded
    as the most suitable method for estimating consumers willingness
    to pay in multiple dimensions. The Nobel Prize for economics was
    awarded to Daniel McFadden in 2000 for his work in the area.
    We will consider three theories about about how a rational decision
    maker decides among a discrete number of alternatives:
    I Neoclassical choice model
    I Luce choice model
    I Random utility choice models
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Introduction
    Choice Modeling is a general purpose tool for making probabilistic
    predictions about human decision making behavior. It is regarded
    as the most suitable method for estimating consumers willingness
    to pay in multiple dimensions. The Nobel Prize for economics was
    awarded to Daniel McFadden in 2000 for his work in the area.
    We will consider three theories about about how a rational decision
    maker decides among a discrete number of alternatives:
    I Neoclassical choice model
    I Luce choice model
    I Random utility choice models
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Neoclassical Choice Model

    This theory assumes there is a preference operator, say � to
    compare alternatives in a choice set S. The operator is assumed to
    satisfy the following three properties:

    I i � i ∀i ∈ N
    I i � j and j � k implies i � k
    I i � j or j � i ∀i, j ∈ N

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Neoclassical Choice Model
    This theory assumes there is a preference operator, say � to
    compare alternatives in a choice set S. The operator is assumed to
    satisfy the following three properties:
    I i � i ∀i ∈ N
    I i � j and j � k implies i � k
    I i � j or j � i ∀i, j ∈ N
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Neoclassical Choice Model
    This theory assumes there is a preference operator, say � to
    compare alternatives in a choice set S. The operator is assumed to
    satisfy the following three properties:
    I i � i ∀i ∈ N
    I i � j and j � k implies i � k
    I i � j or j � i ∀i, j ∈ N
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Neoclassical Choice Model

    Theorem: There exists a function U : N →< such that i � i if and only if U(i) ≥ U(j). Moreover, U is unique up to positive affine transformations.

    Decision makers act to maximize expected utility.

    If U is concave then EU(W ) ≤ U(EW ). Justifies insurance.

    Difficult to specify utility functions

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    The Luce Model (1959)

    Let πi (S) be the probability of choosing i ∈ S ⊂ N and let

    πT (S) =

    i∈T

    πi (S) for all T ⊂ S.

    Luce proposed the following axioms:

    I If there is an j ∈ S such that
    πi ({i, j}) = 0 then πT (S) = πT−i (S − i).

    I If πi ({i, j}) ∈ (0, 1) for all i, j, then πi (S) = πi (T )πT (S) for
    all i ∈ T .

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    The Luce Model (1959)
    Let πi (S) be the probability of choosing i ∈ S ⊂ N and let
    πT (S) =

    i∈T
    πi (S) for all T ⊂ S.
    Luce proposed the following axioms:
    I If there is an j ∈ S such that
    πi ({i, j}) = 0 then πT (S) = πT−i (S − i).
    I If πi ({i, j}) ∈ (0, 1) for all i, j, then πi (S) = πi (T )πT (S) for
    all i ∈ T .
    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    The Luce Model (1959)

    Theorem: There is a function v : N →<+ such that for all i ∈ S ⊂ N

    πi (S) =
    vi

    V (S)

    where V (S) =


    j∈S

    vj

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Random Utility Models

    Random utility models assume that the the decision maker can
    perfectly discriminate among alternatives but the decision maker
    may have incomplete information. The utility for alternative i is
    modeled as Ui = µi + �i where �i is a mean zero random variable.
    Then

    πi (S) = P(Ui ≥ Uj ∀j ∈ S)

    To put the model to good use we need to make assumptions about
    the deterministic term µi and the distribution of the random term
    �i for each i ∈ S.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    Modeling the Deterministic Term

    If each alternative can be characterized by a vector, say x, of
    attributes then we can model the deterministic part of the utility
    as a linear function of a vector of attributes, e.g.,

    µi = β
    ′xi

    Common attributes used in Airline Revenue Management include
    the fare, fare restrictions, travel time, number of stops, carrier,
    type of plane, etcetera. Some of the attributes may be in log
    space, e.g., log of fares.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    Modeling the Random Term

    I Uniform random term: Linear model

    I Normal random term: Probit model

    I Gumbel random term: Multinomial Logit model (our focus).
    A Gumbel random variable X has cdf

    F (x|φ) = e−e
    −(γ+φx)

    −∞ < x < ∞

    with mean zero and variance σ2 = π
    2

    6φ2
    , where γ = 0.57721 is

    the Euler constant.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Modeling the Random Term
    I Uniform random term: Linear model
    I Normal random term: Probit model
    I Gumbel random term: Multinomial Logit model (our focus).
    A Gumbel random variable X has cdf
    F (x|φ) = e−e
    −(γ+φx)
    −∞ < x < ∞ with mean zero and variance σ2 = π 2 6φ2 , where γ = 0.57721 is the Euler constant. Guillermo Gallego Discrete Choice Models Overview Introduction Neoclassical Choice Model Luce Model Random Utility Models Applications to Revenue Management Modeling the Random Term I Uniform random term: Linear model I Normal random term: Probit model I Gumbel random term: Multinomial Logit model (our focus). A Gumbel random variable X has cdf F (x|φ) = e−e −(γ+φx) −∞ < x < ∞ with mean zero and variance σ2 = π 2 6φ2 , where γ = 0.57721 is the Euler constant. Guillermo Gallego Discrete Choice Models Overview Introduction Neoclassical Choice Model Luce Model Random Utility Models Applications to Revenue Management

    Multinomial Logit Model

    Theorem: If the error terms are independent Gumbel-φ then

    πi (S) = Pr(Ui ≥ Uj ∀j ∈ S) =
    vi

    V (S)

    where vi = e
    φµi , ∀i ∈ S.

    Consistent with Luce’s model; with neoclassical when φ is large

    Winbugs: http://www.mrc-bsu.cam.ac.uk/bugs/winbugs/contents.shtml
    NLOGIT: http://www.limdep.com/

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    Independence of Irrelevant Alternatives (IIA)

    The MNL suffers from the IIA property:

    πi (S)

    πj (S)
    =
    πi (T )

    πj (T )
    ∀ i, j ∈ S ⊂ T

    Example: S = {c,b1} and T = C = {c,b1,b2}, with
    v(c) = v(b1) = v(b2) = 1. Then

    πc (S) = 1/2 πc (T ) = 1/3.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    Nested Multinomial Logit Model

    Under this model, the choice set is partitioned into non-overlapping
    subsets S = S1 ∪ . . .∪Sk and for i ∈ Sj , the choice is modeled as

    πi (S) = πi (Sj )πSj (S)

    where each component on the right is modeled by a MNL model.

    Example: S1 = {c},S2 = {b1,b2}, πS1 (S) = πS2 (S) = 1/2, then

    πc (S) = 1/2 and πb1 (S) = πb2 (S) = 1/4.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management

    Mixture of MNLs

    I All random utility models can be approximated to any degree
    of accuracy by a mixture of MNLs.

    I The mixture is specified by (θk,vk ) where θk is the probability
    that an arriving customer belongs to market segment
    k = 1, . . . ,K , and vk is the vector of weights vk (a) a ∈ C is
    the vector of attraction values that governs the MNL for
    market segment k.

    I The problem with the mixture model is that it is difficult to
    estimate the parameters and it is difficult to do optimization,
    e.g., to find the assortment that maximizes revenues.

    Guillermo Gallego Discrete Choice Models

    Overview
    Introduction
    Neoclassical Choice Model
    Luce Model
    Random Utility Models
    Applications to Revenue Management
    Applications to Revenue Management

    I There set of products is N = {1, . . . ,n}.
    I The no purchase alternative i = 0 is always available.

    I For each S ⊂ N

    πi (S) =
    vi

    v0 + V (S)
    π0(S) =

    v0
    v0 + V (S)

    .

    I There is a fare pj associated with each product j ∈ N.
    I r(S) =


    i∈S piπi (S) is the expected revenue associated with

    S ⊂ N.
    I Often interested in finding S ⊂ N to maximize r(S) − zπ(S),

    where π(S) =

    j∈S π(S).

    Guillermo Gallego Discrete Choice Models

    Untitled.notebook

    1

    February 25, 2013

    Untitled.notebook

    2

    February 25, 201

    3

    Untitled.notebook
    3
    February 25, 2013

    Untitled.notebook

    4

    February 25, 2013

    • Page 1
    • Page 2
    • Page 3
    • Page 4

    Single Resource Revenue Management Problems with
    Dependent Demands c©

    Guillermo Gallego

    Spring

    2

    0

    1

    3

    Abstract

    Providers of perishable capacity, such as airline seats and hotel rooms, use market
    segmentation tools to sell the same capacity to different customers at difference prices

    .

    They impose time-of-purchase and usage restrictions such as Saturday Night stays on
    low fares to increase demand while limiting bookings to prevent demand cannibalization
    from customers who book late and travel for business. Capacity providers may also
    bundle or unbundle ancillary services such as advance seat selection, meals, mileage
    accrual, and luggage handling to justify price differences for the same basic service. We
    will assume that the fare class structure (a menu of prices, restrictions and ancillary
    services) is given and that the capacity provider’s goal is to allocate capacity among
    fare classes to maximize expected revenues net of the cost of the ancillary services.
    We assume that customer demand is governed by a discrete choice model and depends
    on the products available for sale. Thus, if a customer does not find his preferred
    product, he may decide not to purchase or to purchase an alternative product in the
    offer set. The problem is to decide, at each state, which set of products to make available
    for sale. Since there are an exponential number of sets that can be offered, we study
    the structure of the optimization problem to define and characterize efficient sets with
    the purpose of reducing the dimensionality of the optimization problem and to obtain
    insights into the type of products, e.g., nested-by-fares, that may be optimal to offer. We
    provide a dynamic programming formulation for the revenue management problem

    and

    use fare and demand transformations to relate it to the formulation of the independent
    demand model. We present an upper bound on the value function throughout the use
    of approximate dynamic programming with affine functions. A formulation that does
    not allow fares to be opened once they are closed is also presented. We then turn
    our attention to static models, where the time element is suppressed. We present an
    optimal solution to the two fare problem and an efficient heuristic for the multi-fare
    case. Numerical examples show that the proposed heuristic works almost as well as the
    optimal solution for the restricted dynamic programming model where fares cannot be
    reopened once they are closed.

    1

    1 Introduction

    Suppliers of perishable capacity often offer a menu of products that vary in terms of price and
    quality. If the products differ only on price we would expect most, if not all, customers to
    buy the lowest priced product that gives him a positive surplus and to walk away otherwise.
    When differences in quality are also present, customers do not always buy the lowest priced
    product. As an example, a customer may be willing to pay an extra $

    5

    0 for a room with an
    ocean view or $2

    9

    for advance seat selection and priority boarding.

    When the difference between products in menu is small, there is a real likelihood that a
    customer will buy a different product if his preferred product is not available. This is known
    as demand recapture. Demand that is lost because a product is not offered is called spilled
    demand. Under the independent demand model, all demand for an unavailable product is
    spilled. In contrast, under a discrete choice model, part of this demand may be recaptured
    by other available products. In the context of revenue management, the independent demand
    model results in low protection levels for higher fare classes as it ignores demand recapture.
    This causes higher spill rates among the higher fare classes and leads to a downward spiral in
    revenues as estimates of demands for high fare classes become lower over time as explained in
    Cooper, Homem de Mello and Kleywegt [

    4

    ].

    Revenue mangers have been struggling for decades with the problem of finding optimal
    control mechanisms for fare class structures with dependent demands. Many attempts have
    been made by research groups in industry to cope with this problem. At the same time aca-
    demic research has moved vigorously to tackle the problem of capacity allocation under choice
    models. A key difference between is how the notion of time is handled. Practitioners tend to
    prefer to model time implicitly, e.g., through static models that are extensions of Littlewood’s
    rule and EMSR type heuristics. However, finding the right way to extend Littlewood’s rule
    proved to be more difficult than anticipated. The key complication is that the marginal value
    of capacity is more difficult to compute due to the fact that protecting an additional unit of
    capacity for later sale also alters the number of potential customers (as some of their demand
    may be recaptured). Nevertheless, it is possible to overcome this difficulty and find static
    heuristic policies that are easy to implement and perform almost as well as dynamic policies.

    Academic researchers tend to prefer models where time is handled explicitly. In contrast to
    the independent demand formulations, where static models are relatively easier to understand
    and implement, the opposite seems to be true for dependent demand models. Indeed, dynamic
    formulations of the dependent demand model are only marginally more complicated to set
    up. The problem is a bit more difficult because it requires specifying a choice model and
    identifying the collection of “efficient” sets of products that may be offered at different states
    of the system. Once the efficient sets are identified, either exactly or approximately, the
    problem can be reformulated to be essentially equivalent to that of the independent demand
    model.

    In this chapter we will explore both formulations. We start by introducing discrete choice
    models as a tool to model demand dependencies. After introducing choice models and provid-
    ing a variety of examples, we discuss the sales and revenue rates associated with each set and
    give a formal definition of efficient sets. Essentially efficient sets maximize the revenue rate

    2

    among all convex combinations of sets whose sales rate is bounded by the sales rate of the
    efficient set. The notion of efficient sets helps simplify the the dynamic programming formu-
    lations so only efficient sets need to be considered. Structural results are presented that are
    useful both in terms of computations and in understanding dynamic policies. In particular

    ,

    we relate the formulation to that of the independent demand model and to dynamic pricing
    with finite price menus. We then present an upper bound on revenues, and a variant of the
    dynamic model where fares cannot be opened once they are closed. We end the chapter with
    a discussion of static models that handle time implicitly. As the reader will see, these models
    are complicated by the fact that changing the protection level also changes the number of
    potential customers for higher fare classes.

    2 Discrete Choice Models

    We will assume that the set of potential products to be offered is N = {1, . . . ,n}. For any
    subset S ⊂ N, denote by πj(S) the probability that a customer will select j ∈ S with πj(S) = 0
    if j ∈ S′ = {j ∈ N : j /∈ S}. Let π(S) =


    j∈S πj(S) denote the probability of sale when subset

    S is offered. The complement π0(S) = 1−π(S) denotes the probability that a customer selects
    an outside alternative. An outside alternative may mean either that the customer does not
    purchase or that he purchases from another vendor. Let S+ = S∪{0} denote the set of offered
    products together with the outside alternative. Then πS+ (S) = π(S) + π0(S) = 1. Notice
    that this notation implies that the no-purchase alternative j = 0 is always available. For this
    reason, it would be more appropriate to write πj(S+) for j ∈ S+. However, we follow here the
    convention of writing πj(S) instead of the more cumbersome πj(S+) with the understanding
    that the no-purchase alternative j = 0 is always available. This choice of notation makes it
    easier to refer to the set S ⊂ N of offered products, but the reader needs to remember that
    implicitly the no-purchase alternative is always available to the customer. We will describe a
    few commonly used choice models, define efficient sets, and then move on to the problem of
    dynamic capacity allocation.

    One reason to look at discrete choice models is to better understand how customers make
    choices. Another important reason for our purposes is to find a subset of products that
    maximizes the expected profit or expected revenues among all S ⊂ N.

    2.1 The Independent Demand Model (IDM)

    Under this model πj(S) is independent of the offer set S (containing j). Under the IDM all
    the demand for fare j is lost (to the no-purchase alternative) if j is removed from S. This
    implies that there are non-negative constants, say v0,vj,j ∈ N, such that

    πj(S) =
    vj

    v0 + V (N)
    j ∈ S

    where V (N)

    =

    j∈N vj ( the constants can be normalized so that v0 + V (N) = 1). In most

    practical situations, it is reasonable to expect that some of the demand for fare j may be

    3

    recaptured by other products in S. The IDM is pessimistic in the sense that it ignores recap-
    ture. This may lead to incorrect decisions in the context it is used. In Revenue Management
    applications it usually leads to offering too much capacity at discounted fares. In assortment
    planning, it may lead to offering excessive product variety.

    2.2 The Basic Attraction Model and the Multinomial Logit Model

    The Basic Attraction Model (BAM) is a discrete choice model where each fare j ∈ N has an
    attraction value vj > 0 and v0 > 0 represents the attractiveness of the no-purchase alternative.
    The choice model is given by

    πj(S) =
    vj

    v0 + V (S)
    ∀j ∈ S, (1)

    where V (S) =

    j∈S vj. Consequently, products with higher attraction values are more likely

    to be selected.

    The BAM was first proposed by Luce [

    12

    ] who postulated two choice axioms and demon-
    strated that a discrete choice model satisfies the axioms if and only if it is of the BAM form.
    To adequately describe the Luce Axioms we need additional notation. For any S ⊂ T we let
    πS(T) =


    j∈S πj(T) denote the probability that a customer selects a product in S when the

    set T is offered. Also, πS+ (T) = πS(T) + π0(T) = 1 −πT−S(T), where set differences T −S
    mean T ∩S′. The Luce Axioms can be written as:

    • Axiom 1: If πi({i}) ∈ (0, 1) for all i ∈ T, then for any R ⊂ S+, S ⊂ T

    πR(T) = πR(S)πS+ (T).

    • Axiom 2: If πi({i}) = 0 for some i ∈ T, then for any S ⊂ T such that i ∈ S

    πS(T) = πS−{i}(T −{i}).

    Axiom 1 implies that the probability of selecting any set R ⊂ S+, when set T is offered, is
    equal to the probability of selecting R when S is offered times the probability of selecting S+
    when T is offered assuming that S ⊂ T. Axiom 2 implies that if alternative i has no probability
    of being chosen, then it can be deleted from S without affecting the choice probabilities (Luce
    [

    13

    ]).

    The celebrated multinomial logit (MNL) model, see McFadden [1

    6

    ], is a special case of
    the BAM that arises from a random utility model. Under a random utility model, each
    product has random utility Ui, i ∈ N+ and the probability that j ∈ S is selected is given
    by πj(S) = P(Uj ≥ Ui, i ∈ S+). In words, product j ∈ S is selected if it gives as much
    utility as any other product in S+. More specifically, McFadden models the random utility of
    product i, as Ui = µi + �i, where µi is the mean utility of product i and depends on the price
    and quality of product i. The term �i is modeled as an extreme value distribution known as
    a Gumbel random variable with parameter φ. The �is are assumed to be independent and

    4

    identically distributed. We can think of �i as an idiosyncratic variation on the mean utility
    or as errors in measuring the utility. Under these assumptions, πj(S) is of the BAM form
    with vi = e

    φµi, i ∈ N. The parameter φ is inversely related to the variance of the �js. As
    φ becomes large, the variance of the �js, becomes small, and customers will gravitate to the
    product in S with the largest mean utility µi (what is known as the maximum utility model).
    On the other hand, when φ becomes small the probability of selecting any i ∈ S converges
    to a uniform distribution where each product is equally likely to be selected. This is because
    when the variance is much larger than the mean, the customer loses the ability to reliability
    select products with higher mean utility.

    2.3 The Generalized Attraction Model

    There is considerable empirical evidence that the basic attraction model (BAM) may be too
    optimistic in estimating demand recapture probabilities when the customer’s first choice is
    not part of the offer set S. The BAM assumes that even if a customer prefers j ∈ S′, he must
    select among k ∈ S+. This ignores the possibility that the customer may look for products
    j ∈ S′ elsewhere or at a later time. As an example, suppose that a customer prefers a certain
    wine, and the store does not have it. The customer may then either buy one of the wines
    in the store, go home without purchasing, or drive to another store and look for the specific
    wine he wants. The BAM precludes the last possibility; it implicitly assumes that the search
    cost for an alternative source of product j ∈ S′ is infinity, or equivalently that there is no
    competition.

    As an illustration, suppose that the consideration set is N = {1, 2} and that v0 = v1 =
    v2 = 1, so πk({1, 2}) =

    33

    .3̄% for k = 0, 1, 2. Under the BAM, eliminating choice 2

    results in

    πk({1}) = 50% for k = 0, 1. Suppose, however, that product 2 is available across town and
    that the customer’s attraction for product 2 from the alternative source is w2 = 0.5 ∈ [0,v2].
    Then his choice set, when product 2 is not offered, is in reality S = {1, 2′} with 2′ representing
    product 2 in the alternative location with shadow attraction w2. A customer who arrives to
    the store has attractiveness v0 = v1 = 1 and w2 = 0.5, resulting in

    π0({1}) =
    1.5

    2.5
    = 60%, π1({1}) =

    1

    2.5
    = 40%.

    This formulation may also help mitigate the optimism of the BAM in inter-temporal models
    where a choice j ∈ S′ may become available at a later time. In this case w2 is the shadow
    attraction of choice 2 discounted by time and the risk that it may not be available in the
    future.

    To formally define the general attraction model (GAM), introduced by Gallego, Ratliff
    and Shebalov [9], we assume that in addition to the attraction values vk,k ∈ N = {1, . . . ,n},
    there are shadow attraction values wk ∈ [0,vk],k ∈ N such that for any subset S ⊂ N

    πj(S) =
    vj

    v0 + W(S′) + V (S)

    j ∈ S, (2)

    5

    where W(R) =

    j∈R wj for all R ⊂ N. For the GAM,

    π0(S) =
    v0 + W(S

    ′)

    v0 + W(S′) + V (S)

    is the probability of the no-purchase alternative. The case wk = 0,k ∈ N recovers the BAM,
    while the case wk = vk,k ∈ N recovers the independent demand model (IDM). As with the
    BAM it is possible to normalize the parameters so that v0 = 1 when v0 > 0. The parsimonious
    GAM (p-GAM) is given by wj = θvj ∀j ∈ N for some θ ∈ [0, 1]. The p-GAM can serve to test
    the competitiveness of the market, by testing the hypothesis H0 : θ = 0 or H0 : θ = 1 against
    obvious alternatives to determine whether one is better off deviating, respectively, from either
    the BAM or the IDM.

    There is an alternative, perhaps simpler, way of presenting the GAM by using the following
    transformation: ṽ0 = v0 + w(N) and ṽk = vk −wk,k ∈ N. For S ⊂ N, let Ṽ (S) =


    j∈S ṽj.

    With this notation the GAM becomes:

    πj(S) =
    vj

    ṽ0 + Ṽ (S)
    ∀j ∈ S and π0(S) = 1 −π(S). (3)

    For S ⊂ T we will use the notation πS+ (T) =

    j∈S+ πj(T).

    Gallego, Ratliff and Shebalov [9] proposed the following generalization to the Luce Axioms:

    • Axiom 1’: If πi({i}) ∈ (0, 1) for all i ∈ T, then for any non-negative R ⊂ S ⊂ T

    πR(T)

    πR(S)
    = 1 −


    j∈T−S

    (1 −θj)πj(T)

    for some set of values θj ∈ [0, 1],j ∈ N.

    • Axiom 2: If πi({i}) = 0 for some i ∈ T, then for any S ⊂ T such that i ∈ S
    πS(T) = πS−{i}(T −{i}).

    They call the set of Axioms 1’ and 2 the Generalized Luce Axioms (GLA). The special
    case θj = 0 for all j recovers the original Luce Axiom 1, resulting in the BAM, while the
    case θj = 1 for all j reduces to the IDM. Gallego et al [9] establish the following connection
    between the GLA and the GAM. The proof of Theorem 1 can be found in the Appendix.

    Theorem 1 A Discrete Choice Model satisfies the GLA if and only if is of the GAM form.

    We will now show that the GAM also arises as the limit of the nested logit (NL) model.
    The NL model was originally proposed in Domencich and McFadden (

    19

    7

    5) [5], and later
    refined in McFadden(197

    8

    ) [

    15

    ], where it is shown that it belongs to the class of Generalized
    Extreme Value (GEV) family of models. Under the nested choice model, customers first select
    a nest and then an offering within the nest. The nests may correspond to product categories

    6

    and the offerings within a nest may correspond to different variants of the product category.
    As an example, the product categories may be the different modes of transportation (car vs.
    bus) and the variants may be the different alternatives for each mode of transportation (e.g.,
    the blue and the red buses). As an alternative, a product category may consist of a single
    product, and the variants may be different offerings of the same product by different vendors.
    We are interested in the case where the random utility of the different variants of a product
    category are highly correlated. The NL model, allows for correlations for variants in nest i
    through the dissimilarity parameter γi. Indeed, if ρi is the correlation between the random
    utilities of nest i offerings, then γi =


    1 −ρi is the dissimilarity parameter for the nest. The

    case γi = 1 corresponds to uncorrelated products, and to a BAM. The MNL is the special
    case where the idiosyncratic part of the utilities are independent and identically distributed
    Gumbel random variables.

    Consider now a NL model where the nests corresponds to individual products offered in
    the market. Customers first select a product, and then one of the vendors offering the selected
    product. Let Ok be the set of vendors offering product k, Sl be the set of products offered
    by vendor l, and vkl be the attraction value of product k offered by vendor l. Under the NL
    model, the probability that a customer selects product i ∈ Sj is given by

    πi(Sj) =

    (∑
    l∈Oi v

    1/γi
    il

    )γi
    v0 +


    k

    (


    l∈Ok v

    1/γk
    kl

    )γk v

    1/γi
    ij∑

    l∈Oi v
    1/γi
    il

    , (4)

    where the first term is the probability that product i is selected and the second term the
    probability that vendor j is selected. Many authors, e.g., [Greene(1984)], use what is know
    as the non-normalized nested models where vijs are not raised to the power 1/γi. This is

    sometimes done for convenience by simply redefining vkl ← v
    1/γk
    kl . There is no danger in using

    this transformation as long as the γs are fixed. However, the normalized model presented here
    is consistent with random utility models, see [Train(

    20

    02)], and we use the explicit formulation
    because we will be taking limits as the γs go to zero.

    It is easy to see that πi(Sj) is a BAM for each j, when γi = 1 for all i. This case can be
    viewed as a random utility model, where an independent Gumbel random variable is associated
    with each product and each vendor. Consider now the case where γi ↓ 0 for all i. At γi = 0, the
    random utilities of the different offerings of product i are perfectly and positively correlated.
    This makes sense when the products are identical and price and location are the only things
    differentiating vendors. When these differences are captured by the deterministic part of the
    utility, then a single Gumbel random variable is associated with each product. In the limit,
    customers select among available products and then buy from the most attractive vendor. If
    several vendors offer the same attraction value, then customers select randomly among such
    vendors. The next result shows that a GAM arises for each vendor, as γi ↓ 0 for all i.

    Theorem 2 The limit of (4) as γl ↓ 0 for all l is a GAM. More precisely, there are attraction
    values akj, ãkj ∈ [0,akj], and ã0j ≥ 0, such that

    πi(Sj) =
    aij

    ã0j +

    k∈Sj ãkj

    ∀i ∈ Sj ∀j.

    7

    This shows that if customers first select the product and then the vendor, then the NL
    choice model becomes a GAM for each vendor as the dissimilarity parameters are driven down
    to zero. The proof of this result is in the Appendix. Theorem 2 justifies using a GAM when
    some or all of the products offered by a vendor are also offered by other vendors, and customers
    have a good idea of the price and convenience of buying from different vendors. The model
    may also be a reasonable approximation when products in a nest are close substitutes, e.g.,
    when the correlations are high but not equal to one. Although we have cast the justification
    as a model that arises from external competition, the GAM also arises as the limit of a NL
    model where a firm has multiple versions of products in a nest. At the limit, customers go
    for the product with the highest attraction within each nest. Removing the product with the
    highest attraction from a nest shifts part of the demand to the product with the second highest
    attraction , and part to the no-purchase alternative. Consequently a GAM of this form can
    be used in Revenue Management to model buy up behavior when there are no fences, and
    customers either buy the lowest available fare for each product or do not purchase.

    2.4 Mixtures of BAMs

    It can be shown that any discrete choice model that arrises from a random utility model can
    be approximated to any degree of accuracy by a mixture of BAMs, see McFadden and Train
    (2000) [

    17

    ]. Unfortunately, as we will later see, the mixture of logits model leads to difficulties
    in optimization when used in RM or assortment planning.

    2.5 Markov Driven Discrete Choice Models

    Blanchet, Gallego and Goyal (2013), see [2], consider a Markov Driven Discrete Choice Model
    (MDDCM) that is characterized by the probability distribution qi = πi(N), i ∈ N+ and by a
    product substitution matrix Q = (qij), i,j ∈ N+. The vector q of probabilities (known as first
    choice probabilities) corresponding to the choice distribution that arises when all the products
    are available. The substitution probability qij is the probability that a customer whose first
    choice demand is i will substitute to product j when i is unavailable, with qii = 0 for i 6= 0.
    For i 6= 0, qi0 representing the probability that the customer substitutes i for the no-purchase
    alternative. We define q0i = 0 for all i 6= 0 and q00 = 1 as there is no substitution from the
    no-purchase alternative. Mathematically, we can define the substitution matrix for i,j ∈ N,
    i 6= j, via the equation qij = (πj(N − i) − qj)/qi, where N − i = {j ∈ N : j 6= i}. Notice that
    qij is the rate at which customers substitute to j when the find i unavailable. A discrete choice
    model arises under the Markovian assumption that if j is also unavailable, then the customer
    (who originally preferred i) will now substitute according to qjk for k 6= j. As we will explain
    later, it is relatively easy to compute the sales rate π(S) and the revenue rate r(S) associated
    with any subset S ⊂ N. Moreover, it is also easy to find the assortment that maximizes r(S).
    One advantage of the MDDCM is that it is very easy to do assortment planning and RM
    optimization with it. Also, the MDDCM can be used to accurately approximate the behavior
    of a mixture of BAMs. This approximation, together with the ease of optimization, allows for
    efficient heuristics for RM and assortment planning for the mixture of BAMs.

    8

    2.6 Revenues and Efficient Assortments

    We assume without loss of generality that the products are labeled so that their associated
    fares are decreasing1 in j. More precisely, the fares are given by p1 ≥ p2 ≥ . . . ≥ pn. For any
    subset S ⊂ N, let r(S) =


    k∈S pkπk(S) denote the expected revenue when set S is offered.

    We will now present a number of examples, and for each example, we will look into the
    collection (π(S),r(S)),S ⊂ N, representing the sales probability and the expected revenue
    from offering set S ⊂ N. Certain of these sets will be special and play an important role in
    revenue management.

    Example 1. (BAM) Assume that customers have linear sensitivities to price and quality:
    βp = −1 and βq =

    10

    00. Then a product with price p and quality q has mean utility
    µ = βpp + βqq = −p + 1000q. If φ = .01 then the attractiveness of the product is v =
    exp(.01(−p + 1000q)). Table 1 shows the price and quality of three different products as well
    as µ and v. Table 2 shows the sale probability π(S) and the expected revenue r(S) of all
    the eight subsets, in increasing order of π(S) assuming that v0 = 0. Some subsets in Table 2
    are in bold and correspond to the efficient sets: E0 = ∅, E1 = {1} and E2 = {1, 2}. We
    will later give a precise definition of efficiency but roughly speaking the efficient sets can be
    graphically represented as those that lie in the least, increasing concave majorant of the graph
    (π(S),r(S)),S ⊂ N as can be seen in Figure 1, where a graph of the (π(S),r(S)) in increasing
    order of π(S) as well as the upper concave majorant that goes through the efficient sets.

    (p1,q1) (p2,q2) (p3,q3)
    (1000, 1) (850, 0.9) (650, 0.5)
    (µ1,v1) (µ2,v2) (µ3,v3)
    (0, 1.0) (50, 1.65) (−150, 0.

    22

    )

    Table 1: Parameters of MNL model with βp = −1, βq = 1000 and v0 = 1

    S π(S) r(S)
    ∅ 0% $0.00

    {3}

    18

    % $

    11

    8.58
    {1} 50% $500.00
    {1,3} 55% $515.06
    {2} 62% $5

    29

    .09
    {2,3} 65% $5

    38

    .48
    {1,2} 73% $658.15
    {1,2,3} 74% $657.68

    Table 2: Sets, Sale Rates and Revenue Rates (Efficient Sets are in Bold)

    Example 2. (GAM) We reconsider Example 1 with w1 = 0, w2 = 0.5 and w3 = 0.2. This
    means that there are negative externalities associated with not offering products 2 and 3. The
    sales rates and revenue rates are given by Table 3 and also in Figure 2. The efficient sets are
    now E0 = ∅ and Ei = Si = {1, . . . , i} for i = 1, 2, 3. It is interesting to contrast Tables 2

    1We will use increasing and decreasing in the weak sense unless noted otherwise.

    9

    $0.00
     

    $100.00
     

    $200.00
     

    $

    30

    0.00
     

    $400.00
     

    $500.00
     

    $600.00
     

    $700.00
     

    0%
      10%
      20%
      30%
      40%
      50%
      60%
      70%
      80%
      90%
      100%
     

    Re
    ve
    nu

    e
     
    Ra

    te

     

    Demand
     Rate
     

    Revenue
      Efficient
     Fron

    Figure 1: Example 1: The inefficient sets are the diamonds below the curve

    and 3. For the BAM of Table 2 offering set S2 = {1, 2} results in revenue r(S2) = $658.15.
    However offering S2 = {1, 2} in Example 2 results in a significant reduction of revenue since
    more of the demand from Product 3 is lost under the GAM than under the BAM. Notice that
    offering set S3 = {1, 2, 3} hurts revenues, relative to offering set S2, under the BAM but helps
    under the GAM. This is because under the BAM the incremental revenue from adding fare 3
    to set S2 is smaller than the loss from demand cannibalization. In contrast, under the GAM,
    the incremental revenue from adding fare 3 to set S2 is larger than the loss from demand
    cannibalization.

    S π(S) r(S)
    ∅ 0% $0.00
    {3} 13% $84.17
    {1}

    37

    % $370.37
    {1,3} 45% $420.48
    {2} 58% $491.94
    {2,3} 65% $538.48
    {1,2} 69% $6

    23

    .95
    {1,2,3} 74% $657.68

    Table 3: Sets, Sale Rates and Revenue Rates (Efficient Sets are in Bold)

    Figure 1 shows a graph of the (π(S),r(S)) in increasing order of π(S) as well as the efficient
    frontier (upper concave majorant that goes through the efficient sets).

    Example 3. (Mixtures of BAMs) Consider the following mixture of BAMs with three products
    and two customer classes taken from Rusmevichientong, Shmoys and Topaloglu [18]. The fares
    are p1 = 80,p2 = 40 and p3 = 30. An arriving customer may follow one of two BAMs, each
    with probability 0.5. BAM-1 has attractiveness (1, 5, 20, 1), respectively, for the no-purchase
    alternative and for the three products. BAM-2 has attractiveness (5, 1, 50, 50), respectively,
    for the no-purchase alternative and for the three products. Let πi(S) and ri(S) denote,
    respectively, the sales probability and the expected revenue associated with BAM-i, for i =
    1, 2. Given any offer set S, let π(S) = 0.5π1(S) + 0.5π2(S) be the probability of sale for the

    10

     $-­‐
     
     
     
     

     $100.00
     
     

     $200.00
     
     

     $300.00
     
     

     $400.00
     
     

     $500.00
     
     

     $600.00
     
     

     $700.00
     
     

    0%
      10%
      20%
      30%
      40%
      50%
      60%
      70%
      80%
      90%
      100%
     
    Re
    ve
    nu
    e
     
    Ra
    te

     
    Demand
     Rate
     

    Revenue
      Efficient
     Fron=er
     

    Figure 2: Example 2: The inefficient sets are the diamonds below the solid curve

    mixture of the two BAMs and r(S) = 0.5r1(S) + 0.5r2(S) be the expected revenue for the
    mixture of the two BAMs. Table 4 shows (S,π(S),r(S)) for all S ⊂{1, 2, 3}. Notice that the
    efficient sets are E0 = ∅, E1 = {1} and E2 = {1, 3}. Figure 3 shows a graph of the (π(S),r(S))
    in increasing order of π(S) as well as the efficient frontier.

    S π(S) r(S)
    ∅ 0% $0.00

    {1} 50% $40.00
    {3} 70% $

    21

    .

    14

    {1,3} 88% $44.82
    {2} 93% $37.23
    {1,2} 94% $41.65
    {2,3} 95% $

    35

    .53
    {1,2,3} 96% $39.66

    Table 4: Sets, Sale Rates and Revenue Rates for Example 3

    Here is another example of a mixture of BAMs where the efficient sets are not nested.

    Example 4. (Mixtures of BAMs) Consider the following mixture with four products and
    three customer classes. The fares are p1 = 11.50, p2 = 11.00, p3 = 10.80 and p4 = 10.75. The
    attractiveness of the BAMs are, respectively, (1, 5, 2, 300, 1), (1, 6, 4, 300, 1) and (1, 0, 1, 300, 7),
    with the first component representing the attractiveness of the no-purchase alternative. An
    arriving customer has 1/6 probability of belonging to market segment 1, 1/3 probability to
    market segment 2 and 1/2 probability of belonging to market segment 3. Table 5 lists the
    efficient sets and the corresponding sales and revenue rates. The efficient sets are E0 = ∅,
    E1 = {1}, E2 = {1, 2}, E3 = {1, 4}, E4 = {1, 2, 4} and E5 = {1, 2, 3}. Notice that E3 does
    not contain E2 and E5 does not contain E4. Moreover, this is an instance where the number
    of efficient sets m = 5 > n = 4.

    11

     $-­‐
     
     
     
     

     $5.00
     
     

     $10.00
     
     

     $15.00
     
     

     $20.00
     
     

     $

    25

    .00
     
     

     $30.00
     
     

     $35.00
     
     

     $40.00
     
     

     $45.00
     
     

     $50.00
     
     

    0%
      10%
      20%
      30%
      40%
      50%
      60%
      70%
      80%
      90%
      100%
     
    Re
    ve
    nu
    e
     
    Ra
    te

     
    Demand
     Rate
     

    Revenue
     
      Efficient
     Fron=er
     

    Figure 3: Example 3: The inefficient sets are the diamonds below the solid curve

    S π(S) r(S)
    ∅ 0% $0.00

    {1} 42.5% $4.88
    {1,2} 69.9% $7.83
    {1,4} 87.2% $9.65
    {1,2,4} 89.8% $9.90
    {1,2,3} 99.7% $10.77

    Table 5: Sets, Sale Rates and Revenue Rates for Example 4

    3 Efficient Sets and Assortment Optimization

    In this section we formally define efficient sets and show that for certain choice models the
    efficient sets have desirable properties such as being nested or nested by fares. We also look
    at assortment optimization, which is essentially the problem of finding the assortment S ⊂ N
    with highest revenue r(S). The reader not interested in the technical details may skip this
    section on first reading.

    For any ρ ∈ [0, 1] consider the linear program

    R(ρ) = max

    S⊂N

    r(S)t(S) (5)

    subject to

    S⊂N

    π(S)t(S) ≤ ρ

    S⊂N

    t(S) = 1

    t(S) ≥ 0 ∀S ⊂ N.

    The linear program selects a convex combination of all possible actions (subsets of N) to
    maximize the expected revenue that can be obtained subject to the bound ρ on the probability
    of sale. Later we will see that ΛR(c/Λ) is an upper bound on the expected revenue when we

    12

    expect Λ customers to arrive and the capacity is c. Thus the ratio of capacity to potential
    demand c/Λ will play the role of ρ.

    The decision variables in the linear program (5) are the proportion of time t(S) ≥ 0 that
    each subset S ⊂ N is offered for sale. The following results follow from the standard theory
    of parametric linear programming.

    Proposition 1 R(ρ) is increasing, concave, and piece-wise linear.

    We can trace the efficient frontier (ρ,R(ρ)), 0 ≤ ρ ≤ 1, by solving the linear program (5)
    parametrically (perhaps using the dual formulation and column generation), for all 0 ≤ ρ ≤ 1.
    In some cases the column generation step may be NP-hard, but for now we will assume that
    it is possible to solve the problem for all ρ ∈ [0, 1]. Sets S ⊂ N such that r(S) < R(π(S)) are said to be inefficient as the lie below the efficient frontier (ρ,R(ρ)) at ρ = π(S). Sets S such that R(π(S)) = r(S) are said to be efficient as the pair (π(S),r(S)) lies in the efficient frontier at ρ = π(S). Equivalently, a set S is efficient if t(S) = 1 is an optimal solution to the linear program for ρ = π(S), as then R(ρ) = r(S). For any choice model, let C = {E0,E1, . . . ,Em} be the collection of efficient sets. Let πj = π(Ej) and rj = r(Ej) for all j ∈ M = {0, 1, . . . ,m}. We will assume from now on that the efficient sets are sorted in increasing order of πj,j ∈ M. Let uj = (rj − rj−1)/(πj −πj−1) be the slope joining (πj−1,rj−1) and (πj,rj). Because R(ρ) is increasing concave and linear between the points (πj,rj), it follows that u1 > u2 > … >
    um ≥ 0, and that

    R(ρ) = rj−1 + uj(ρ−πj−1) ∀ ρ ∈ [πj−1,πj] ∀j = 1, 2, . . . ,m.

    Notice also that R(ρ) = R(πm) = rm for all ρ > πm, so the definition of R(ρ) can be extended
    to all ρ ≥ 0.The upper concave envelopes of Figures 1, 2 and 3 are all of these form.

    When Ej−1 ⊂ Ej, then uj is the marginal contribution to revenue of the fare or fares added
    to Ej−1 to form Ej. It is possible to show, through dual feasibility, that Ej+1 is a maximizer
    of the ratio (r(S) − rj)/(π(S) −πj) over all sets S such that π(S) > πj if the resulting ratio
    is non-negative (otherwise Ej = Em is the last efficient set).

    Let us reconsider the choice models of the previous section to look more closely into the
    efficient sets. For Example 1, the efficient sets are E0 = ∅, E1 = {1} and E2 = {1, 2}. For
    Example 2, the efficient sets are E0 = ∅, E1 = {1}, E2 = {1, 2} and E3 = {1, 2, 3}, while for
    Example 3, the efficient sets are E0 = ∅, E1 = {1} and E2 = {1, 3}. Notice that in these
    examples the efficient sets are nested, and in Examples 1 and 2 the efficient sets are also
    nested-by-fare. In Example 3, the efficient sets are not nested-by fare since the efficient set
    E2 = {1, 3} skips product 2 with p2 > p3. Notice that the number of efficient sets is at most
    n in Examples 1,2 and 3. In contrast, the efficient sets of Example 4 are E0 = ∅, E1 = {1},
    E2 = {1, 2}, E3 = {1, 4}, E4 = {1, 2, 4} and E5 = {1, 2, 3}, so the efficient sets are not nested
    and the number of efficient sets is greater than n.

    Talluri and van Ryzin [19], who first identified efficient sets for discrete choice models, used
    a slightly different definition. Under their definition, a set S is inefficient, if it is possible to
    form a convex combination of other sets that result in a strictly higher revenue with the same
    sale probability or if it is possible to form a convex combination of other sets that results in

    13

    a strictly lower sale probability but the same revenue. They define efficient sets as those that
    are not inefficient. The two definitions are essentially equivalent, although it is possible for
    our definition to include sets that would be deemed inefficient by the definition in [19]. As an
    example, suppose that rm = rm−1 with πm > πm−1. Then (πm,rm) is in the efficient frontier,
    but it is deemed inefficient by [19], because the same revenue rm−1 = rm can be obtained
    with a lower sale probability. This is an innocuous subtlety, because in this case the efficient
    set Em will not be selected by an optimization algorithm unless we specify that we want to
    provide better customer service without sacrificing revenue.

    The following result is key in simplifying the optimization problem resulting from the
    dynamic programs in the next section. In essence it reduces the optimization from 2n subsets
    S ⊂ N to just m, the number of efficient sets.

    Theorem 3 For any z ≥ 0,

    max
    S⊂N

    [r(S) −zπ(S)] = max
    S∈C

    [r(S) −zπ(S)] = max
    j∈M

    [rj −zπj].

    Proof: It is enough to show that any maximizer of [r(S)−zπ(S)] must be efficient. Suppose
    for a contradiction that r(T) − zπ(T) > r(S) − zπ(S) for all S 6= T ⊂ N and that T is
    not an efficient set. Then there exist a set of non-negative weights t(S) : S ⊂ N such
    that R(π(T)) =


    S⊂N t(S)r(S) > r(T) with


    S⊂N t(S) = 1 and


    S⊂N t(S)π(S) ≤ π(T).

    Consequently,

    r(T) −zπ(T) < R(π(T)) −zπ(T) ≤ ∑ S⊂N

    [r(S) −zπ(S)]t(S) < r(T) −zπ(T),

    where the first inequality follows from the inefficiency of T, the second from

    S⊂N t(S)π(S) ≤

    π(T) and the third from the claimed optimality of T and the fact that t(T) < 1 as T is not efficient. Since the displayed equation is a contradiction, it must be that T is efficient, and consequently we can restrict the maximization to C resulting in maxS∈C[r(S) − zπ(S)] = maxj∈M [rj −zπj].

    Theorem 3 tell us that to find the best set to offer when the marginal cost is z, we should
    search for an efficient set with the largest value of rj − zπj. Now rj − zπj > rj−1 − zπj−1 if
    and only if z < uj, where uj is the slope joining (πj−1,rj−1) and (πj,rj). From Proposition 1 the uj’s are non-negative and decreasing in j = 1, . . . ,m. To visualize this graphically, draw the efficient points (πj,rj),j ∈ M and a line with slope z ≥ 0 from the origin. An optimal solution is to select the efficient set with index

    j(z) = max{j ∈ M : uj > z}.

    From this it is clear that j(z) < m for all z ≥ 0 whenever rm = rm−1, because um = 0 ≤ z. This shows that it is indeed innocuous to use our more liberal definition of efficient sets, which is more consistent with the definition of efficiency used in portfolio theory in Finance. However, if z = 0, we may want to offer Em instead of Em−1 when the slope um = 0. This is because more customers are served by offering Em resulting in the same revenue as Em−1. To do this, we just modify the definition of j(z) to j(z) = max{j ∈ M : uj ≥ z}.

    14

    Consider the linear program

    RC(ρ) = max

    j∈M

    rjtj

    subject to

    j∈M

    πjtj ≤ ρ

    j∈M

    tj = 1

    tj ≥ 0 ∀j ∈ M.

    Clearly RC(ρ) ≤ R(ρ) for all ρ ∈ [0, 1] as the linear program RC(ρ) is more restricted. The
    next result shows that in fact RC(ρ) = R(ρ) so the optimization problem can be reduces to
    the collection C of efficient sets.

    Theorem 4 RC(ρ) = R(ρ) for all ρ ∈ [0, 1].

    Proof: Consider the dual of the linear program defining R(ρ) in terms of variables z and β.
    The problem is to minimize ρz +β subject to π(S)z +β ≥ r(S), ∀S ⊂ N, z ≥ 0. The solution
    in terms of β is to set β = maxS⊂N [r(S) − zπ(S)]. By Theorem 3, β = maxj∈M [rj − zπj], so
    the dual problem is reduced to minimizing ρz + β subject to πjz + β ≥ rj,j ∈ M. The result
    follows by recognizing that this is the dual of the liner program defining RC(ρ).

    3.1 Nested-by-Fare Efficient Sets

    A choice model is said to have the nested-by-fare property if p1 > p2 > .. . > pn and the
    collection of efficient sets C is contained in the collection {S0,S1, . . . ,Sn} where S0 = ∅ and
    Sj = {1, . . . ,j} for j = 1, . . . ,n. The next theorem, due to Talluri and van Ryzin [19],
    provides necessary and sufficient conditions for the nested-by-fare property to hold. This
    result is important because it justifies in some important cases the optimality of the nested-
    by-fare structure and because it reduces the number of efficient fares to at most n. The
    theorem requires the following simple idea that compares the revenue performance of two
    n-dimensional vectors x and y with the same sums x[1,n] = y[1,n] = ρ, where we use the
    notation x[1, i] =

    ∑i
    j=1 xj. It turns out that if the partial sums of x dominate the partial

    sums of y, then p′x ≥ p′y for all vectors p with decreasing components. More precisely, if
    x[1, i] ≥ y[1, i] for all i = 1, . . . ,n − 1, and p1 ≥ p2 ≥ . . . ≥ pn, then

    ∑n
    i=1 pixi ≥

    ∑n
    i=1 piyi.

    This idea is related to the powerful concept of majorization popularized by Marshal and Olkin
    [14]. Here we will use it to compare the revenues associated with the sale probability vector
    yi = πi(T), i = 1, . . . ,n induced by a set T ⊂ N to the sales induced by a convex combination of
    the nested sets S0,S1, . . . ,Sn. More precisely, consider a convex combination α0,α1, . . . ,αn of
    non-negative values adding to one such that

    ∑n
    k=0 αkπ(Sk) = π(T) and let xi =

    ∑n
    k=0 αkπi(Sk)

    be the sale of product i induced by this combination. Then x[1, i] ≥ y[1, i] i = 1, . . . ,n − 1
    and x[1,n] = y[1,n] imply that the revenue from the convex combination will dominate the
    revenue under set T.

    15

    Theorem 5 (Taluri and van Ryzin [19])A choice model has the nested-by-fare order property
    if and only if π(S) is increasing in S, and for every subset T there is a convex combination
    of π(S0),π(S1), . . . ,π(Sn) with partial sums of sales that dominate the partial sums of sales
    under T with total sales equal to total sales under T .

    When such a convex combination exists, it favors sales at higher fares and thus results in
    higher expected revenues. Talluri and van Ryzin [19] show that the conditions of Theorem 5
    are satisfied by the MNL and the independent demand model. Here we show that the nested-
    by-fare property holds more generally by showing that it holds for the parsimonious GAM
    model (P-GAM) with wi = θvi for all i ∈ N for some θ ∈ [0, 1]. This model reduces to the
    BAM when θ = 0 and to the IDM when θ = 1. The proof of this result is in the Appendix.

    Proposition 2 The efficient sets are nested-by-fares for the P-GAM.

    While Theorem 5 assures us that C ⊂ {S0,S1, . . . ,Sn}, the converse does not necessarily
    hold as there may be some sets in the collection C that are not efficient.

    Proposition 3 Consider the P-GAM for a system with strictly decreasing fares p1 > p2 >
    … > pn. Then a necessary and sufficient condition for all nested sets to be efficient is
    pn ≥ (1 −θ)r(Sn−1).

    Proof: Consider the plot (π(Sj),r(Sj)),j = 0, . . . ,n. For the P-GAM model we can write
    r(Sj) as a convex combination of r(Sj−1) and pj/(1−θ) of the form r(Sj) = αjr(Sj−1) + (1−
    αj)pj/(1 −θ), where αj = (ṽ0 + Ṽ (Sj−1))/(ṽ0 + Ṽ (Sj)). Consequently r(Sj) ≥ r(Sj−1) if and
    only if pj ≥ (1 − θ)r(Sj−1). Suppose now that pn ≥ (1 − θ)r(Sn−1). We will first show that
    the plot is increasing, or equivalently that pj ≥ (1 − θ)r(Sj−1) for all j. Suppose that there
    is a j such that pj < (1 − θ)r(Sj−1). Then pj/(1 − θ) < r(Sj) < r(Sj−1) and consequently pj+1 < pj < (1 −θ)r(Sj). We can then repeat the argument to show that pk < (1 −θ)r(Sk−1) for all k ≥ j, but for k = n, this contradicts pn ≥ (1 −θ)r(Sn−1).

    Now, π(Sj) = αjπ(Sj−1) + (1−αj)/(1−θ). This allow us to write the marginal revenue as

    uj =
    r(Sj) − r(Sj−1)
    π(Sj) −π(Sj−1)

    =
    pj − (1 −θ)r(Sj−1)
    1 − (1 −θ)π(Sj−1)

    (6)

    To establish concavity, it is enough to show that uj is decreasing in j. By using the known
    convex combinations of r(Sj) and of π(Sj) we see that

    uj+1 = uj −
    pj −pj+1

    αj(1 −πj−1)
    < uj

    where the inequality follows from pj > pj+1.

    16

    For the BAM, Proposition 3 implies that all nested sets are efficient as long as pn ≥ r(Sn−1).
    At the other extreme, for the IDM all nested sets are efficient as long as pn ≥ 0. Another
    consequence is that for the P-GAM, the efficient sets are S0,S1, . . . ,Sj∗

    where

    j∗ = max{j ∈ N : pj ≥ (1 −θ)r(Sj−1)}.

    All fares pj,j > j
    ∗ are inefficient and need not be considered.

    3.2 Assortment Optimization under the MDDCM

    Suppose we want to an offer set S that maximizes r(S) − zπ(S) over all S ⊂ N, where the
    choice model is the MDDCM characterized by (q,Q). This Markovian assumption greatly
    simplifies the optimization problem and allows the use of successive approximations to find
    the optimal revenues and the optimal offer set under the Markovian assumption. Indeed, let
    g0i = pi − z for i = 1, . . . ,n, where for convenience we define g00 = p0 = 0. Now consider
    the successive approximation scheme gk+1 = max(Qgk,p), where now p is the vector of fares
    with p0 = 0. Blanchet, Gallego and Goyal [2] show that g

    k is monotonically increasing and
    converges to a vector g. The vector g represents the maximum revenue that can be obtained
    from each customer request under the Markov Chain discrete choice model. Blanchet, Gallego
    and Goyal [2] show that under the Markovian assumption an optimal offer set is is given by
    S = {i : gi = g0i}, and that q′g = r(S) −zπ(S). This method can be used to identify efficient
    sets by solving the problem for all z ≥ 0, resulting in Ej,j ∈ M. The method can be used as
    a heuristic to approximately compute the collection of efficient sets for discrete choice models,
    such as the mixture of BAMs, for which the optimization is NP-hard.

    4 Dynamic Capacity Allocation Models

    In this section we consider models where time is considered explicitly. Modeling time explicitly
    allows for time-varying arrival rates and time-varying discrete choice models. We assume that
    customers arrive to the system according to a time heterogenous Poisson process with intensity
    λt, 0 ≤ t ≤ T where T is the length of the horizon, and t represents the time-to-go. Then the
    number of customers that arrive during the last t units of time, say Nt, is a Poisson random
    variable with mean Λt =

    ∫ t
    0 λsds.

    We assume that customers arriving at time t select product k from the offered set, say
    S with probability πkt(S) given by the discrete choice model prevalent at time-to-go t.

    Let

    V (t,x) denote the maximum expected revenue that can be attained over the last t units of the
    sale horizon with x units of capacity. Assume that at time t we offer set S ⊂ N = {1, . . . ,n}
    and keep this set of fares open for δt units of time. If λtδt << 1, the probability that a customer arrives and requests product k ∈ S is approximately λtπkt(S)δt so

    V (t,x) = max
    S⊂N


    k∈S

    {λtδtπkt(S)[pk + V (t− δt,x− 1)] + (1 −λtδt


    k∈S

    πkt(S))V (t− δt,x)} + o(δt)

    17

    = V (t− δt,x) + λtδt max
    S⊂N


    k∈S

    πkt(S)[pk − ∆V (t− δt,x)] + o(δt)

    = V (t− δt,x) + λtδt max
    S⊂N

    [rt(S) − ∆V (t− δt,x)πt(S)] + o(δt) (7)

    for x ≥ 1 with boundary conditions V (t, 0) = V (0,x) = 0, t ≥ 0, x ∈ N where rt(S) =∑
    k∈S pkπkt(S), πt(S) =


    k∈S πkt(S) and ∆V (t− δt,x) = V (t− δt,x) −V (t− δt,x− 1).

    The value function V (t,x) is often computed approximately by solving a discrete time
    dynamic program based on (7) that involves rescaling time and the arrival rates, using δt = 1,
    and dropping the o(δt) term. Time can be rescaled by a positive real number, say a, such
    that T ← aT is an integer by setting λt ← 1aλt/a, πjt(S) ← πj,t/a(S). The resulting dynamic
    program is given by

    V (t,x) = V (t− 1,x) + λt max
    S⊂N

    [rt(S) − ∆V (t− 1,x)πt(S)], (8)

    with the same boundary conditions. Formulation (8) is due to Talluri and van Ryzin [19].
    It reduces to the Lee and Hersh [11] model when demands are independent. Alternatively,
    instead of rescaling (7) we can subtract V (t−δt,x) from both sides of equation (7), divide by
    δt and take limits as δt ↓ 0 to obtain the Hamilton-Jacobi-Bellman equation:

    ∂V (t,x)

    ∂t
    = λt max

    S⊂N
    [rt(S) − ∆V (t,x)πt(S)] (9)

    with the same boundary conditions.

    The generic optimization problem in formulations (8) and (9) is of the form

    max
    S⊂N

    [rt(S) −zπt(S)]

    where z ≥ 0 is the marginal value of capacity. Since there are 2n subsets S ⊂ N = {1, . . . ,n}
    the optimization requires the evaluation of a large number of subsets, and the problem has
    to be solved for different values of z as the marginal value of capacity changes with the state
    (t,x) of the system. One may wonder if there is a way to simplify the problem by reducing the
    number of subsets that we need to look at. From Theorem 3, we know that the optimization
    problem can be reduces to maxj∈Mt [rjt − zπjt], where Mt is the index of the collection of
    efficient sets at time t, rjt = rt(Ejt) and πjt = πt(Ejt) and Ejt is the jth efficient for the
    discrete choice model prevalent at time-to-go t. This greatly simplifies the optimization step
    in the dynamic programs (8) and (9). For convenience we will refer to action j when offering
    efficient set Ejt,j ∈ Mt. If the problem of finding the efficient sets is NP-hard, then the
    Markov Chain approximation suggested in [2] can be used for positive values of z ≥ 0, to
    heuristically identify a collection of sets that are nearly efficient and then use this collection
    in the calculation.

    Using the notion of efficient sets, formulation (8) reduces to

    V (t,x) = V (t− 1,x) + λt max
    j∈Mt

    [rjt − ∆V (t− 1,x)πjt], (10)

    18

    while formulation (9) reduces to

    ∂V (t,x)
    ∂t
    = λt max

    j∈Mt
    [rjt − ∆V (t,x)πjt]. (11)

    Just as in the case of the independent demand model, the marginal value ∆V (t,x) is
    increasing in t and decreasing in x. For formulation (10), let

    a(t,x) = arg max
    j∈Mt

    [rjt − ∆V (t− 1,x)πjt]. (12)

    For formulation (11) the definition of a(t,x) is the same except that we use ∆V (t,x) instead
    of ∆V (t− 1,x) in the right hand side.

    Notice that rjt − ∆V (t − 1,x) > rj−1,t − ∆V (t − 1,x), so offering action j (set Ejt) is
    better than offering action j−1 if and only if ujt = (rjt−rj−1,t)/(πj,t−πj−1,t) > ∆V (t−1,x).
    Moreover, since the ujts are non-negative and decreasing in j, it follows that it is optimal to
    offer action

    a(t,x) = max{j : ujt > ∆V (t− 1,x)},

    for formulation (8). The formula for a(t,x) for formulation (9) requires ∆V (t,x) instead of
    ∆V (t− 1,x). The following result is valid for both formulations (10) and (11).

    Theorem 6 (Taluri and van Ryzin ([19])) It is optimal to offer action j = a(t,x) (efficient
    set Ea(t,x),t) at state (t,x). Moreover, a(t,x) is decreasing in t and increasing in x over every
    time interval where the choice model is time invariant.

    As t increases ∆V (t− 1,x) increases and the optimal solution shifts to efficient sets with
    a smaller sale probability. In contrast, as x increases, ∆V (t−1,x) decreases, and the optimal
    solutions shifts to efficient sets with larger sale probability. In general, we cannot say that
    we close lower fares when t is large (or open lower fares when x is large) because the efficient
    sets need not be nested-by-fare. There is a large class of choice models, however, for which
    the efficient sets are nested-by-fare. We have shown in Section 3 that for the parsimonious
    GAM (p-GAM) with wj = θvj,j ∈ N, θ ∈ [0, 1], the efficient sets are of the form Ej = Sj =
    {1, . . . ,j} for j = 0, . . . ,m ≤ n, so the efficient sets are nested-by-fares. Since the IDM and
    the BAM correspond to the cases θ = 0 and θ = 1, this implies that the collection of efficient
    sets are nested-by-fares for both the IDM and the BAM. If the efficient sets are nested-by-
    fare, then we can talk of opening and closing fares as the state dynamics change with the
    understanding that if a fare is open, then all higher fares will be open at the same time.

    4.1 Dynamic Pricing Formulation with a Finite Price Menu

    While πjt and rjt are respectively, the sales rate and the revenue rate under action j at time t,
    the average fare per unit sold under action j is qjt = rjt/qjt, where for convenience we define
    q0t = 0 for E0 = ∅. From the increasing concavity of R(ρ), it follows that qjt is decreasing in
    j ∈ Mt. This suggest that if t is large relative to x we should offer action 1 as this maximizes

    19

    the revenue per unit of capacity. However, offering action 1 may result in very slow sales and
    may lead to capacity spoilage. At the other extreme, offering action m, maximizes the revenue
    rate and this is optimal when capacity is abundant as this maximizes the revenue over the
    sales horizon. For other cases, a tradeoff is needed between the average sales price qjt and
    the demand rate λtπjt associated with action j that takes into account the marginal value of
    capacity at state (t,x). This leads to the following equivalent pricing formulation:

    Then
    V (t,x) = V (t− 1,x) + max

    j∈Mt
    λtπjt[qjt − ∆V (t− 1,x)]. (13)

    The equivalent formulation for the continuous time model (11) is

    ∂V (t,x)

    ∂t
    = max

    j∈Mt
    λtπjt[qjt − ∆V (t,x)] (14)

    These formulation suggest that we are selecting among actions j ∈ Mt to maximize the
    sales rate λtπjt times the average fare qjt net of the marginal value of capacity. We can think
    of λtπjt as the demand rate associated with average fare qjt, which reduces dynamic capacity
    allocation models to dynamic pricing models with finite price menus.

    5 Formulation as an Independent Demand Model

    Recall from Chapter 1, that the discrete-time, independent demand, formulation with n fares
    pt1 > pt2 > .. . > ptn and demand rates λ1t, . . . ,λtn, is of the form:

    V (t,x) = V (t− 1,x) +
    n∑
    j=1

    λjt[ptj − ∆V (t− 1,x)]+, (15)

    with boundary conditions V (t, 0) = V (0,x) = 0. One may wonder, whether it is possible to
    transform formulation (10) for dependent demands into formulation (15) for demand formula-
    tion, by transforming data λt and (πjt,rjt), j = 0, 1, . . . ,m for the dependent demand model

    into data (p̂jt, λ̂tj), j = 1, . . . ,m for the independent demand model.

    One reason to wish for this is that such a transformation would allow computer codes
    available to solve (15) to solve (10). Another may be to try to use the transformed data as
    input to static models and then use static solutions or heuristics such as the EMSR-b.

    While it is indeed possible to do the transformation from (10) into (15), there are really
    no computational benefits as the running time of both (10) and (15) are O(nct). Moreover,
    as we shall see later, using the transformed data as input for the static model is fraught with
    problems.

    The data transformation is to set λ̂jt = λt[πjt −πj−1,t] and p̂jt = ujt = (rjt −rj−1,t)/(πjt −
    πj−1,t) for j ∈ Mt. The reader can verify that

    ∑j
    k=1 λ̂jt = λtπjt and that

    ∑j
    k=1 λ̂jtp̂jt = λtrjt.

    This transformation is in effect creating artificial products with independent demands λ̂jt and

    20

    prices p̂jt for j ∈ Mt.

    Theorem 7 Formulation (10) is equivalent to

    V (t,x) = V (t− 1,x) +


    j∈Mt

    λ̂jt[p̂jt − ∆V (t− 1,x)]+ (16)

    with boundary conditions V (t, 0) = V (0,x) = 0.

    Proof of Theorem 7: Let k(t,x) = max{j : p̂jt > ∆V (t − 1,x)}. It is therefore optimal
    to accept all of the artificial products such that j ≤ k(t,x). Notice that a(t,x) = k(t,x) on
    account of p̂jt = ujt. Aggregating artificial products 1, . . . ,a(t,x), results in action k(t,x) =
    a(t,x), corresponding to efficient set Ea(t,x),t. More precisely,


    j∈Mt

    λ̂jt[p̂jt − ∆V (t− 1,x)]+ =

    j≤k(t,x)
    λ̂jt[p̂jt − ∆V (t− 1,x)]

    =

    j≤a(t,x)
    λ̂jt[p̂jt − ∆V (t− 1,x)]

    = ra(t,x),t −πa(t,x),t)∆V (t− 1,x)
    = max

    j∈Mt
    [rjt −πjt∆V (t− 1,x)].

    Consequently,

    V (t,x) = V (t− 1,x) +

    j∈Mt

    λ̂jt[p̂jt − ∆V (t− 1,x)]+ = V (t− 1,x) + λt max
    j∈Mt

    [rjt −πjt∆V (t,x)].

    The fare and demand transformations that map λt and (πjt,rjt),j ∈ Mt into (p̂jt, λ̂jt),j ∈
    M have appeared in many papers but the original ideas go back to Kincaid and Darlin [10] as
    documented in Walczack et al. [20]. The fact that the transformation works for the dynamic
    program has lead some practitioners to conclude that the transformed data can be used as an
    input to static models where demands are treated as independent. In particular, Fiig et al. [6],
    and Walczack et al. [20], proposed feeding the transformed data and applying the EMSR-b
    heuristic, treating demands as independent under the low-to-high arrival pattern assumption.
    While this is a tempting heuristic, it would be wrong to expect that controls obtained this way
    will be close to optimal if demand dependencies are ignored. In particular, the low-to-high
    demand arrival pattern, is tantamount to assuming that Poisson demands with parameters
    λ̂jt will arrive low-to-high, but this are artificial demands from customers willing to buy under
    action j but not under action j−1. When capacity is allocated to this marginal customers, we
    cannot prevent some degree of demand cannibalization from customers willing to buy under
    action j − 1 into some of the fares in action j. We will return to this issue in Section 8.

    21

    6 Upper Bound on the Value Function

    We will present an an upper bound on the value functions (7) an (8) for the case where the
    choice models are time invariant. The idea is based on approximate dynamic programming
    (ADP) using affine functions and it can be easily extended to the case where the choice models
    vary over time. It is well known that a dynamic program can be solved as a mathematical pro-
    gram by making the value function at each state a decision variable. This leads to the formula-
    tion V (T,c) = min F(T,c) subject to the constraints ∂F (t,x)/∂t ≥ λt[rj−∆F(t,x)πj] ∀(t,x)
    for all j ∈ M, where the decision variables are the class of non-negative functions F(t,x) that
    are differential in x with boundary conditions F(t, 0) = F(0,x) = 0 for all t ∈ [0,T] and all
    x ∈{0, 1, . . . ,c}.

    While this formulation is daunting, it becomes easier once we restrict the functions to
    be of the affine form F̃(t,x) =

    ∫ t
    0 βs(x)ds + xzt, zt ≥ 0. We will restrict ourselves to the

    case βs(x) = βs for x > 0, βs(0) = 0, zt = z for t > 0 and z0 = 0. With this restriction,
    the partial derivative and marginal value of capacity have simple forms and the boundary
    conditions are satisfied. More precisely, ∂F̃(t,x)/∂t = βt for x > 0, ∆F̃(t,x) = z, for t > 0,
    F̃(t, 0) = F̃(0, t) = 0. This reduces the program to Ṽ (T,c) = min F̃(T,c) = min

    ∫T
    0 βtdt + cz,

    subject to βt ≥ λt[rj − zπj] ∀j ∈ M. Since we have restricted the set of functions F(t,x)
    to be affine, it follows that V (T,c) ≤ Ṽ (T,c). Since this is a minimization problem, the
    optimal choice for βt is βt = λt maxj∈M [rj − zπij] = λtg(z) where g(z) = maxj∈M [rj − zπj]
    is a decreasing convex, non-negative, piecewise linear function of z. Consequently the overall
    problem reduces to

    Ṽ (T,c) = min
    z≥0

    [
    ∫ T

    0
    λtg(z)dt + cz] = min

    z≥0
    [ΛTg(z) + cz], (17)

    where ΛT =
    ∫T

    0 λtdt is the aggregate arrival rate over the sales horizon [0,T]. Notice that
    ΛTg(z) + cz is convex in z. If the discrete choice model is time varying, then gt(z) =
    maxj∈Mt [rjt −zπjt], result in

    V̄ (T,c) = min
    z≥0

    [∫ T
    0
    λtgt(z)dt + cz

    ]
    ,

    where the objective function is also convex in z.

    We can linearize (17) by introducing a new variable, say y, such that y ≥ rj − zπj for all
    j ∈ M and z ≥ 0, which results in the linear program:

    Ṽ (T,c) = min
    z≥0

    [ΛTy + cz],

    subject to ΛTy + ΛTπjzj ≥ ΛTrj j ∈ M
    z ≥ 0,

    where for convenience we have multiplied the constraints y + πjz ≥ rj,j ∈ M by ΛT > 0.

    22

    The dual of this problem is given by

    Ṽ (T,c) = ΛT max

    j∈M

    rjtj

    subject to ΛT

    j∈M

    πjtj ≤ c

    j∈M

    tj = 1
    tj ≥ 0 ∀j ∈ M.

    This linear program decides the proportion of time , tj ∈ [0, 1], that each efficient set Ej is
    offered to maximize the revenue subject to the capacity constraint. The reader can verify that
    Ṽ (T,c) is closely related to the functions RC(ρ) and R(ρ) used to define efficient sets. The
    following result establishes this relationship.

    Proposition 4
    Ṽ (T,c) = ΛTRC(c/ΛT ) = ΛTR(c/ΛT ).

    Example 5 Suppose that p1 = 1000,p2 = 600 and a BAM with v0 = v1 = v2 = e
    1. We will

    assume that the aggregate arrival rate over the sales horizon [0,T] = [0, 1] is ΛT = 40. We
    know that for this problem the efficient sets are E0 = ∅,E1 = {1} and E2 = {1, 2}. For c =

    24

    ,
    the optimal solution is t1 = 6/15 and t2 = 9/15 with 8 units of sales under action S1 and 16
    units of sales under action S2 and revenue $20,800. Table 6 provides the upper bound Ṽ (T,c)
    for different values of c. Notice that sales under action S1, first increase and then decrease as
    c increases. Table 6 also reports sales under fare 1 and fare 2, and the reader can see that
    sales under fare 1 first increase and then decrease.

    c Ṽ (T,c) t1 t2 sales S1 sales S2 fare 1 sales fare 2 sales
    12 12,000 0.6 0.0 12 0 12 0
    16 16,000 0.8 0.0 16 0 16 0
    20 20,000 1.0 0.0 20 0 20 0
    22 20,400 0.7 0.3 14 8 18 4
    24 20,800 0.4 0.6 8 16 16 8

    26

    21,200 0.1 0.9 2 24 14 12

    28

    21,333 0.0 1.0 0 26.6 13.3 13.3

    32

    21,333 0.0 1.0 0 26.6 13.3 13.3

    Table 6: Upper Bound and Optimal Actions for Fluid Model

    7 Uni-directional Dynamic Programming Models

    Like the Lee and Hersh model, formulations (8) and (9), implicitly assume that the capacity
    provider can offer any subset of fares at any state (t,x). This flexibility works well if customers
    are not strategic. Otherwise, customers may anticipate the possibility of lower fares and

    23

    postpone their purchases in the hope of being offered lower fares at a later time. If customers
    act strategically, the capacity provider may counter by imposing restrictions that do not allow
    lower fares to reopen once they are closed. Actions to limit strategic customer behavior are
    commonly employed by revenue management practitioners.

    Let VS(t,x) be the optimal expected revenue when the state is (t,x), we are allowed
    to use any subset U ⊂ S of fares and fares cannot be offered once they are closed. The
    system starts at state (T,c) and S = N. If a strict subset U of S is used then all fares in
    U ′ = {j ∈ N : j /∈ U} are permanently closed and cannot be offered at a later state regardless
    of the evolution of sales. To obtain a discrete time counterpart to (8), let

    WU (t,x) = VU (t− 1,x) + λt[rt(U) −πt(U)∆VU (t− 1,x)].

    Then the dynamic program is given by

    VS(t,x) = max
    U⊂S

    WU (t,x) (18)

    with boundary conditions VS(t, 0) = VS(0,x) = 0 for all t ≥ 0, x ∈ N and S ⊂ N. The goal
    of this formulation is to find VN (T,c) and the corresponding optimal control policy.

    Notice that formally the state of the system has been expanded to (S,t,x) where S is
    the last offered set and (t,x) are, as usual, the time-to-go and the remaining inventory. For-
    mulation (8) requires optimizing over all subsets S ⊂ N, while formulation (18) requires an
    optimization over all subsets U ⊂ S for any given S ⊂ N. Obviously the complexity of these
    formulations is large if the number of fares is more than a handful. Airlines typically have over
    twenty different fares so the number of possible subsets gets large very quickly. Fortunately,
    in many cases we do not need to do the optimization over all possible subsets. As we have
    seen, the optimization can be reduced to the set of efficient fares Ct at time t. For the p-GAM,
    we know that Ct ⊂ {S0,S1, . . . ,Sn} where Sj = {1, . . . ,j} are the nested-by-fares sets. For
    the p-GAM, and any other model for which the nested-by-fare property holds, the state of
    the system reduces to (j,t,x) where Sj is the last offered set at (t,x). For such models the
    formulation (18) reduces to

    Vj(t,x) = max
    k≤j

    Wk(t,x) (19)

    where Vj(t,x) = VSj (t,x) and

    Wk(t,x) = Vk(t− 1,x) + λt[rkt −πkt∆Vk(t− 1,x)],

    rkt =

    l∈Sk plπlt(Sk) and πkt =


    l∈Sk πlt(Sk).

    The structural results obtained for the Independent Demand Model carry on to the p-
    GAM model and for other models where the efficient sets have the nested-by-fare property.
    Let

    aj(t,x) = max{k ≤ j : Wk(t,x) = Vj(t,x)}. (20)

    Theorem 8 At state (j,t,x) it is optimal to offer set Saj (t,x) = {1, . . . ,aj(t,x)}, where
    aj(t,x), given by (20), is decreasing in t and increasing in x over time intervals where the
    choice model is time invariant.

    24

    The proof of this results follows the sample path arguments of the corresponding proof in
    the independent demand chapter. Clearly V1(t,x) ≤ V2(t,x) ≤ Vn(t,x) ≤ V (t,x) ≤ Ṽ (t,x) as
    V (t,x) is not restricted, as Vj(t,x) is, to monotone offerings.

    c Load Factor V3(T,c) V (T,c) Ṽ (T,c)
    4 4.59 3,769 3,871 4,000
    6 3.06 5,356 5,5

    34

    6,000
    8 2.30 6,897 7,013 7,477

    10 1.84 8,259 8,335 8,950
    12 1.53 9,304 9,382 10,423
    14 1.

    31

    9,976 10,111 10,846
    16 1.15 10,418 10,583 11,146
    18 1.02 10,803 10,908 11,447
    20 0.92 11,099 11,154 11,504
    22 0.84 11,296 11,322 11,504
    24 0.77 11,409 11,420 11,504
    26 0.71 11,466 11,470 11,504
    28 0.66 11,490 11,492 11,504

    Table 7: Value Functions for Dynamic Allocation Policies

    Example 6 Table 7 presents the value functions V3(T,c), V (T,c) and the upper bound Ṽ (T,c)
    that result from solving the dynamic programs (10) and (19) for the MNL model with fares
    p1 = $1, 000,p2 = $800,p3 = $500 with price sensitivity βp = −0.0035, schedule quality
    si = 200 for i = 1, 2, 3 with quality sensitivity βs = 0.005, and an outside alternative with
    p0 = $1, 100 and schedule quality s0 = 500, Gumbel parameter φ = 1, arrival rate λ = 25
    and T = 1. Recall that for the MNL model, the attractiveness vi = e

    φµi where µi is the
    mean utility. In this case µi = βppi + βssi. The computations were done with time rescaled
    by a factor a = 25, 000. Not surprisingly V3(T,c) ≤ V (T,c) as V3(T,c) constraints fares to
    remain closed once they are closed for the first time. However, the difference in revenues is
    relatively small except for load factors around 1.15 where the difference can be as large as
    1.5% in revenues.

    8 Static Capacity Allocation Models

    We will assume that we are working with a choice model with efficient sets that are nested:
    E0 ⊂ E1 . . . ⊂ Em, even if they are not nested by fare. We continue using the notation πj =∑
    k∈Ej πk(Ej) and rj =


    k∈Ej pkπk(Ej), so the slopes uj = (rj−rj−1)/(πj−πj−1),j = 1, . . . ,m

    are positive and decreasing. We will denote by qj = rj/πj the average fare, conditioned on a
    sale, under efficient set Ej (action j) for j > 1 and define q0 = 0.

    Suppose that the total number of potential customers over the selling horizon is a random
    variable D. For example, D can be Poisson with parameter Λ. Let Dj be the total demand if
    only set Ej is offered. Then Dj is conditionally binomial with parameters D and πj, so if D
    is Poisson with parameter Λ, then Dj is Poisson with parameter Λπj.

    25

    We will present an exact solution for the two fare class capacity allocation problem and
    a heuristic for the multi-fare case. The solution to the two fare class problem is, in effect,
    an extension of Littlewood’s rule for discrete choice models. The heuristic for the multi-fare
    problem applies the two fare result to each pair of consecutive actions, say j and j + 1 just as
    in the case of independent demands.

    8.1 Two Fare Classes

    While capacity is available, the capacity provider will offer either action 2 associated with
    efficient set E2 = {1, 2}, or action 1, associated with efficient set E1 = {1}. If the provider
    runs out of inventory he offers action 0, corresponding to E0 = {0}, which is equivalent to
    stop selling. We will assume action 2 will be offered first and that y ∈ {0, . . . ,c} units of
    capacity will be protected for sale under action 1.

    Under action 2, sales are min(D2,c−y) and expected revenues are q2E min(D2,c−y) as
    q2 is the average fare per unit sold under action 2. Of the (D2 − c + y)+ customers denied
    bookings, a fraction β = π1/π2 will be willing to purchase under action 1. Thus, the demand
    under action 1 will be a conditionally binomial random variable, say U(y), with a random
    number (D2 − c + y)+ of trials and success probability β. The expected revenue that results
    from allowing up to c−y bookings under action 2 is given by

    W2(y,c) = q1E min(U(y), max(y,c−D2)) + q2E min(D2,c−y),

    where the first term corresponds to the revenue under action 1. Notice that if D2 ≤ c − y
    then U(y) = 0 since U(y) is a binomial random variable with zero trials. Conditioning the
    first term on the event D2 > c−y, allow us to write

    W2(y,c) = q1E[min(U(y),y)|D2 ≥ c−y)]P(D2 > c−y) + q2E min(D2,c−y).

    The reader may be tempted to follow the marginal analysis idea presented in Chapter 1 for the
    independent demand case. In the independent demand case, the marginal value of protecting
    one more unit of capacity is realized only if the marginal unit is sold. The counterpart here
    would be P(U(y) ≥ y|D2 > c−y) and a naive application of marginal analysis would protect
    the yth unit whenever q1P(U(y) ≥ y|D2 > c−y) > q2.

    However, with dependent demands, protecting one more unit of capacity also increases
    the potential demand under action 1 by one unit. This is because an additional customer
    is denied capacity under action 2 (when D2 > c − y) and this customer may end up buying
    a unit of capacity under action 1 even when not all the y units are sold. Ignoring this
    can lead to very different results in terms of protection levels. The correct analysis is to
    acknowledge that an extra unit of capacity is sold to the marginal customer with probability
    βP (U(y − 1) < y − 1|D2 > c−y). This suggest protecting the yth unit whenever

    q1[P(U(y) ≥ y|D2 > c−y) + βP (U(y − 1) < y − 1|D2 > c−y)] > q2.

    To simplify the left hand side, notice that conditioning on the decision of the marginal customer

    26

    results in

    P(U(y) ≥ y|D2 > c−y) = βP (U(y−1) ≥ y−1|D2 > c−y)+(1−β)P(U(y−1) ≥ y|D2 > c−y).

    Combining terms leads to protecting the yth unit whenever

    q1[β + (1 −β)P(U(y − 1) ≥ y|D2 > c−y)] > q2.

    Let

    r = u2/q1 =
    q2 −βq1
    (1 −β)q1

    , (21)

    denote the critical fare ratio. In industry, the ratio r given by (21) is know as fare adjusted
    ratio, in contrast to the unadjusted ratio q2/q1 that results when β = 0.

    The arguments above suggests that the optimal protection level can be obtained by se-
    lecting the largest y ∈ {1, . . . ,c} such that P(U(y − 1) ≥ y|D2 > c − y) > r provided that
    P(U(0) ≥ 1|D2 ≥ c) > r and to set y = 0 otherwise.

    To summarize, an optimal protection can be obtain by setting y(c) = 0 if P(U(0) ≥ 1|D2 >
    c) ≤ r and setting

    y(c) = max{y ∈{1, . . . ,c} : P(U(y − 1) ≥ y|D2 > c−y) > r} otherwise. (22)

    Formula (22) is due to Gallego, Lin and Ratliff [7]. This is essentially a reinterpretation
    of the main result in Brumelle et al. originally developed for fares instead of actions.

    One important observation is that for dependent demands the optimal protection level
    y(c) depends in c in a more complicated way than in the independent demand model. For the
    dependent demand model y(c) is first increasing and then decreasing in c. The reason is that
    for low capacity it is optimal to protect all the inventory for sale under action 1. However, for
    high capacity it is optimal to allocate all the capacity to action 2. The intuition is that action
    2 has a higher revenue rate, so with high capacity we give up trying to sell under action 1.
    This is clearly seen in Table 6 of Example 5. Heuristic solutions that propose protection levels
    of the form min(yh,c), which are based on independent demand logic, are bound to do poorly
    when c is close to Λπ2. In particular, the heuristics developed by Belobaba and Weatherford
    [1], and more recently by Fiig et al. [6] and by Walczak et al. [20] are of this form and are
    therefore not recommended.

    One can derive Littlewood’s rule for discrete choice models (22) formally by analyzing
    ∆W2(y,c) = W2(y,c)−W2(y−1,c), the marginal value of protecting the yth unit of capacity
    for sale under action 1.

    Proposition 5

    ∆W2(y,c) = [q1(β + (1 −β)P(U(y − 1) ≥ y|D2 > c−y) − q2]P(D2 > c−y). (23)

    Moreover, the expression in brackets is decreasing in y ∈{1, . . . ,c}.

    27

    The proof of Proposition 5 is due to Gallego, Lin and Ratliff [7] and can be found in the
    Appendix. As a consequence, ∆W2(y,c) has at most one sign change. If it does, then it must
    be from positive to negative. W2(y,c) is then maximized by the largest integer y ∈{1, . . . ,c},
    say y(c), such that ∆W2(y,c) is positive, and by y(c) = 0 if ∆W2(1,c) < 0. This confirms Littlewood’s rule for discrete choice models (22).

    8.2 Heuristic Protection Levels

    In terms of computations, notice that

    P(U(y − 1) ≥ y|D2 > c−y) = lim
    L→∞

    ∑L
    k=0 P(Bin(y + k,β) ≥ y)P(D2 = c + k + 1)

    P(D2 > c−y)
    ,

    where we have been careful to only include terms that can be potentially positive in the
    numerator. It is often enough to truncate the sum at a value, say L, such that P(D2 >
    L) ≤ �P(D2 > c − y) for some small �, as those terms do not materially contribute to the
    sum. While the computation of y(c) and V2(c) = W2(y(c),c) is not numerically difficult, the
    conditional probabilities involved may be difficult to understand conceptually. Moreover, the
    formulas do not provide intuition and do not generalize easily to multiple fares. In this section
    we develop a simple heuristic to find near-optimal protection levels that provides some of the
    intuition that is lacking in the computation of optimal protection levels y(c). In addition, the
    heuristic can easily be extended to multiple-fares.

    The heuristic consists of approximating the conditional binomial random variable U(y−1)
    with parameters (D2−c+y−1)+ and β by its conditional expectation, namely by (Bin(D2,β)−
    β(c+ 1−y))+. Since Bin(D2,β) is just D1, the approximation yields (D1−β(c+ 1−y))+. We
    expect this approximation to be reasonable if ED1 ≥ β(c + 1−y). In this case P(U(y−1) ≥
    y|D2 > c−y) can be approximated by P(D1 ≥ (1 −β)y + β(c + 1)). Let

    yp = max{y ∈N : P(D1 ≥ y) > r)}.

    We think of yp = (1 − β)y + β(c + 1) as a pseudo-protection level that will be modified
    to obtain a heuristic protection level yh(c) when the approximation is reasonable. Let y =
    (yp −β(c + 1))/(1 −β). Then ED1 ≥ β(c + 1 −y)) is equivalent to the condition

    c < yp + d2

    where d2 = E[D2] − E[D1] = Λ(π2 − π1) = Λπ2(1 − β), where for convenience we write
    β = β1 = π1/π2. Consequently, if c < y

    p + d2 we set

    yh(c) = max

    {
    y ∈N : y ≤

    yp −β(c + 1)
    (1 −β)

    }
    ∧ c.

    When the condition c < yp +d2 fails, we set y h(c) = 0. Thus, the heuristic will stop protecting

    capacity for action 1 when c ≥ yp + d2. In a deterministic setting yp = E[D1], so it stops
    protecting when c ≥ E[D1] + d2 = E[D2], i.e., when there is enough capacity to satisfy the

    28

    expected demand under action 2.

    Notice that the heuristic involves three modifications to Littlewood’s rule for independent
    demands. First, instead of using the first choice demand D1,2 for fare 1, when both fares
    are open, we use the stochastically larger demand D1 for fare 1, when it is the only open
    fare. Second, instead of using the ratio of the fares p2/p1 we use the modified fare ratio
    r = u2/q1 based on sell-up adjusted fare values. From this we obtain a pseudo-protection level
    yp that is then modified to obtain yh(c). Finally, we keep yh(c) if c < yp +d2 and set y

    h(c) = 0
    otherwise. In summary, the heuristic involves a different distribution, a fare adjustment, and a
    modification to the pseudo-protection level. The following example illustrates the performance
    of the heuristic.

    Example 7 Suppose that p1 = 1000,p2 = 600 and a BAM with v0 = v1 = v2 = e
    1 and that

    Λ = 40 as in Example 5. We report the optimal protection level y(c), the heuristic protection
    level yh(c), the upper bound V̄ (c), the optimal expected revenue V (c) of the uni-directional
    formulation (18), the performance V2(c) of y(c) and the performance V

    h
    2 (c) = W2(y

    h(c),c)
    of yh(c), and the percentage gap between (V2(c) − V h2 (c))/V2(c) in Table 8. Notice that the
    performance of the statiheuristic, V h2 (c), is almost as good as the performance V2(c) of the
    optimal policy under the uni-directional formulation (18) where fares classes cannot be opened
    once they are closed.

    c y(c) yh(c) V̄ (c) V (c) V2(c) V
    h

    2 (c) Gap(%)
    12 12 12 12,000 11,961 11,960 11,960 0.00
    16 16 16 16,000 15,610 15,593 15,593 0.00
    20 20 20 20,000 18,324 18,223 18,223 0.00
    24 21 24 20,800 19,848 19,526 19,512 0.07
    28 9 12 21,333 20,668 20,414 20,391 0.11
    32 4 0 21,333 21,116 21,0

    36

    20,982 0.26
    36 3 0 21,333 21,283 21,267 21,258 0.05
    40 2 0 21,333 21,325 21,333 21,322 0.01

    Table 8: Performance of Heuristic for Two Fare Example

    8.3 Theft versus Standard Nesting and Arrival Patterns

    The types of inventory controls used in the airline’s reservation system along with the demand
    order of arrival are additional factors that must be considered in revenue management opti-
    mization. If y(c) < c, we allow up to c−y(c) bookings under action 2 with all sales counting against the booking limit c−y(c). In essence, the booking limit is imposed on action 2 (rather than on fare 2). This is known as theft nesting. Implementing theft nesting controls may be tricky if a capacity provider needs to exert controls through the use of standard nesting, i.e., when booking limits are only imposed on the lowest open fare. This modification may be required either because the system is built on the philosophy of standard nesting or because users are accustomed to thinking of imposing booking limits on the lowest open fare. Here we explore how one can adapt protection levels and booking limits for the dependent demand model to situations where controls must be exerted through standard nesting.

    29

    A fraction of sales under action 2 correspond to sales under fare p2. This fraction is given
    by ω = π2(E2)/π2. So if booking controls need to be exerted directly on the sales at fare p2,
    we can set booking limit ω(c−y(c)) on sales at fare p2. This is equivalent to using the larger
    protection level

    ŷ(c) = (1 −ω)c + ωy(c) (24)

    for sales at fare 1. This modification makes implementation easier for systems designed for
    standard nesting controls and it performs very well under a variety of demand arrival patterns.

    It is possible to combine demand choice models with fare arrival patterns by sorting cus-
    tomers through their first choice demand and then assuming a low-to-high demand arrival
    pattern. For the two fare case, the first choice demands for fare 1 and fare 2 are Poisson
    random variables with rates Λπ1(E2) and Λπ2(E2). Assume now that customers whose first
    choice demand is for fare 2 arrive first, perhaps because of purchasing restrictions associated
    with this fare. Customers whose first choice is fare 2 will purchase this fare if available. They
    will consider upgrading to fare 1 if fare 2 is not available. One may wonder what kind of
    control is effective to deal with this arrival pattern. It turns out that setting protection level
    ŷ(c) given by (24) for fare 1, with standard nesting, is optimal for this arrival pattern and is
    very robust to other (mixed) arrival patterns (Gallego, Li and Ratliff [8]).

    8.4 Multiple Fare Classes

    For multiple fare classes, finding optimal protection levels can be very complex. However, if
    we limit our search to the best two consecutive efficient sets we can easily adapt the results
    from the two-fare class to deal with the multiple-fare class problem. For any j ∈{1, . . . ,n−1}
    consider the problem of allocating capacity between actions j (corresponding to efficient set
    Ej) and action j + 1 (corresponding to efficient set Ej+1) where action j + 1 is offered first.
    In particular, suppose we want to protect y ≤ c units of capacity for action j against action
    j + 1. We will then sell min(Dj+1,c−y) units under action j + 1 at an average fare qj+1. We
    will then move to action j with max(y,c−Dj+1) units of capacity and residual demand Uj(y),
    where Uj(y) is conditionally binomial with parameters (Dj+1 − c + y)+ and βj = πj/πj+1.
    Assuming we do not restrict sales under action j the expected revenue under actions j + 1
    and j will be given by

    Wj+1(y,c) = qjE min(Uj(y), max(y,c−Dj+1)) + qj+1E min(Dj+1,c−y). (25)

    Notice that under action j we will either run out of capacity or will run out of customers.
    Indeed, if Uj(y) ≥ y then we run out of capacity, and if Uj(y) < y then we run out of customers. Let Wj+1(c) = maxy≤c Wj+1(y,c) and set W1(c) = q1E min(D1,c). Clearly,

    Vn(c) ≥ max
    1≤j≤n

    Wj(c), (26)

    so a simple heuristic is to compute Wj(c) for each j ∈ {1, . . . ,n} and select j to maxi-
    mize Wj(c). To find an optimal protection level for Ej against Ej+1 we need to compute
    ∆Wj+1(y,c) = Wj+1(y,c)−Wj+1(y−1,c). For this we can repeat the analysis of the two fare
    case to show that an optimal protection level for action Ej against action Ej+1 is given by

    30

    yj(c) = 0 if ∆Wj+1(1,c) < 0 and by

    yj(c) = max{y ∈{1, . . . ,c} : P(Uj(y − 1) ≥ y|Dj+1 > c−y) > rj}, (27)

    where

    rj =
    uj+1
    qj

    =
    qj+1 −βjqj
    (1 −βj)qj

    .

    Alternatively, we can use the heuristic described in the two fare section to approximate
    Uj(y−1) by Dj−βj(c+ 1−y) and use this in turn to approximate the conditional probability
    in (27) by P(Dj ≥ y + β(c−y + 1)). This involves finding the pseudo-protection level

    y
    p
    j = max{y ∈N : P(D1 ≥ y) > rj}.

    If c < y p j + dj+1, then

    yhj (c) = max

    {
    y ∈N+ : y ≤

    y
    p
    j −βj(c + 1)

    1 −βj

    }
    ∧ c, (28)

    and set yh(c) = 0 if c ≥ ypj + dj+1.

    We will let V hn (c) be the expected revenues resulting from applying the protection levels.

    Example 8 Consider now a three fare example with fares p1 = 1000,p2 = 800,p3 = 500,
    schedule quality si = 200, i = 1, 2, 3, βp = −.0035, βs = .005, φ = 1. Then v1 = .082,v2 =
    0.165,v3 = 0.472. Assume that the outside alternative is a product with price p0 = 1100 and
    schedule quality s0 = 500 and that the expected number of potential customers is Poisson with
    parameter Λ = 25. Table 9 reports the protection levels yj(c) and y

    h
    j (c) as well as V3(c) and

    V h3 (c) for c ∈{4, 6, . . . , 26, 28}. As shown in the Table, the heuristic performs very well with
    a maximum gap of 0.14% relative to V3(c) which was computed through exhaustive search.
    It is also instructive to see that V h3 (c) is not far from V3(c,T), as reported in Table 7, for the
    dynamic model. In fact, the average gap is less than 0.5% while the largest gap is 1.0% for
    c = 18.

    Example 7 suggest that the heuristic for the static model works almost as well as the
    optimal dynamic program Vn(T,c) for the case where efficient sets are nested-by-fare and
    fares cannot be opened once they are closed for the first time. Thus the multi-fare heuristic
    described in this section works well to prevent strategic customers from gaming the system
    provided that the efficient fares are nested-by-fare as they are in a number of important
    applications. While the heuristic for the static model gives up a bit in terms of performance
    relative to the dynamic model, it has several advantages. First, the static model does not
    need the overall demand to be Poisson. Second, the static model does not need as much detail
    in terms of the arrival rates. These advantages are part of the reason why people in industry
    have a preference for static models, even thought dynamic models are easier to understand,
    easier to solve to optimality, and just as easy to implement.

    31

    c Load y1(c) y2(c) y
    h
    1 (c) y

    h
    2 (c) V3(c) V

    h
    3 (c) Gap(%)

    4 4.59 4 4 4 4 3,769 3,769 0.00
    6 3.06 3 6 3 6 5,310 5,310 0.00
    8 2.30 1 8 1 8 6,845 6,845 0.00

    10 1.84 0 10 0 10 8,217 8,217 0.00
    12 1.53 0 12 0 12 9,288 9,288 0.00
    14 1.31 0 14 0 14 9,971 9,971 0.00
    16 1.15 0 13 0 14 10,357 10,354 0.02
    18 1.02 0 9 0 10 10,700 10,694 0.05
    20 0.92 0 5 0 6 11,019 11,019 0.00
    22 0.84 0 4 0 2 11,254 11,238 0.14
    24 0.77 0 3 0 0 11,391 11,388 0.03
    26 0.71 0 2 0 0 11,458 11,450 0.08
    28 0.66 0 2 0 0 11,488 11,485 0.03

    Table 9: Performance of Heuristic for Three Fare Example

    9 Acknowledgments

    I acknowledge the feedback from my students and collaborators. In particular, I would like
    to recognize the contributions and feedback from Anrand Li, Lin Li, Jing Dong and Richard
    Ratliff.

    32

    10 Appendix

    Proof of Theorem 1: If the choice model πj(S),j ∈ S satisfies GAM then there exist constants
    vi, i ∈ N+, ṽi ∈ [0,vi] i ∈ N and ṽ0 = v0 +


    j∈N (vj − ṽj) such that πR(S) = v(R)/(ṽ0 + Ṽ (S)

    for all R ⊂ S. For this choice model, the left hand side of Axiom 1’ is (ṽ0 +Ṽ (S)/(ṽ0 +Ṽ (T)).
    Let θj = 1−ṽj/vj. Then the right hand side of Axiom 1’ is given by 1−


    j∈T−S(1−θj)vj/(ṽ0 +

    Ṽ (T)) = (ṽ0 + Ṽ (S)/(ṽ0 + Ṽ (T)). This shows that the GAM satisfies Axiom 1’. If πi({i}) = 0
    then vi = 0 and consequently ṽi = 0. From this it follows that πS−{i}(T −{i}) =

    V (S)−vi
    ṽ0+Ṽ (T)−ṽi

    =
    V (S)

    ṽ0+Ṽ (T)
    = πS(T), so Axiom 2 holds.

    Conversely, suppose a choice model satisfies the GLA. Then by selecting R = {i} ⊂ S ⊂
    T = N we see from Axiom 1’ that

    πi(S) =
    πi(N)

    1 −

    j/∈S(1 −θj)πj(N)

    .

    Since π0(N) +

    j∈N πj(N) = 1 the denominator can be written as π0(N) +


    j∈N θjπj(N) +∑

    j∈S(1 −θj)πj(N), resulting in

    πi(S) =
    πi(N)

    π0(N) +

    j∈N θjπj(N) +


    j∈S(1 −θj)πj(N)

    .

    Letting vj = πj(N) for all j ∈ N+, ṽ0 = v0 +

    j∈N θjvj and ṽj = (1 −θj)vj ∈ [0, 1] for j ∈ N

    the choice model can be written as

    πi(S) =
    vi

    ṽ0 + ṽ(S)
    ,

    so it satisfies the GAM.

    Proof of Theorem 2: Let N ′ be the universe of products. The set of vendors is M =
    {1, . . . ,m}. Let vij be the attraction value of product i offered by vendor j, and let Sj ⊂ N ′
    be the products offered by vendor j ∈ M. Let Oi = {j ∈ M : i ∈ Sj} be the set of vendors
    offering product i, and N = {i ∈ N ′ : Oi 6= ∅} be the collection of products that are offered.
    We consider a NL model where customers first select a product and then a vendor. Let γi
    be the dissimilarity parameter of nest i. Under the nested model, a nest i with Oi 6= ∅, is
    selected with probability (∑

    l∈Oi v
    1/γi
    il
    )γi
    v0 +

    k
    (∑
    l∈Ok v
    1/γk
    kl

    )γk . (29)
    The conditional probability that a customer who selects nest i will buy the product from

    vendor j ∈ Oi is given by
    v

    1/γi
    ij∑
    l∈Oi v
    1/γi
    il

    . (30)

    Consequently, the probability that a customer selects product i ∈ Sj from vendor j is given

    33

    by (∑
    l∈Oi v

    1/γi
    il
    )γi
    v0 +

    k
    (∑
    l∈Ok v
    1/γk
    kl

    )γk v
    1/γi
    ij∑

    l∈Oi v
    1/γi
    il
    .

    We are interested in the limit of these probabilities as γk ↓ 0 for all k. For this purpose
    we remark that well know fact: limγk↓0(


    l∈Ok v

    1/γk
    il )

    γk = maxl∈Oi vil. The limit, say pij, of
    equation (30) is equal to 1 if vendor j is the most attractive, i.e., if vij > vil for all l ∈ Oi,
    l 6= j; pij = 0, if vij < maxl∈Oi vil; and pij = 1/m if vij = maxl∈Oi vil but vendor j is tied with other m− 1 vendors.

    Now,

    πi(Sj) =
    pij maxl∈Oi vil

    v0 +

    k maxl∈Ok vkl

    .

    For all k ∈ N, define V −kj = maxl∈Ok,l 6=j vkl and Vkj = maxl∈Ok∪{j} vkl. Then, for i ∈ Sj,

    πi(Sj) =
    Vijpij

    v0 +

    k∈Sj Vkj +


    k∈S̄j V


    kj

    ,

    where S̄j = {i ∈ N : i /∈ Sj}. The selection probability can be written as

    πi(Sj) =
    Vijpij

    v0 +

    k∈N V


    kj +


    k∈Sj (Vkj −V


    kj )

    ,

    or equivalently, as

    πi(Sj) =
    Vijpij
    v0 +

    k∈N V

    kj +

    k∈Sj (Vkj −V


    kj )pkj

    ,

    since Vkj − V −kj = (Vkj − V

    kj )pkj for all k. This is because pkj < 1 implies Vkj − V


    kj = 0.

    This shows that πi(Sj) corresponds to a GAM with ã0j = v0 +

    k∈N V


    kj , akj = pkjVkj, and

    ãkj = (Vkj −V −kj )pkj.

    Proof of Proposition 2: Notice that π(S) is increasing in S for the GAM since V (S) ≥
    Ṽ (S) ≥ 0 are both increasing in S. Since the P-GAM is a special case π(S) is increasing in S.
    Now, consider a set T that is not nested-by-fare and let ρ = π(T). Then there exist an index
    k such that πk < ρ ≤ πk+1. Let tk = (πk+1 −ρ)/(πk+1 −πk), tk+1 = 1 − tk and tj = 0 for all other j. Then

    ∑n
    j=1 πjtj = tkπk + tk+1πk+1 = ρ. We will show that the vector x, defined by

    xj = tkπj(Sk) + tk+1πj(Sk+1),j = 1, . . . ,n majorizes the vector πj(T), j = 1, . . .n. To do this
    we will need to establish the following equation:

    tkπi(Sk) + tk+1πi(Sk+1) =
    vi

    ṽ0 + Ṽ (T)
    ∀ i ≤ k. (31)

    The result then follows, because for j ≤ k, equation (31) implies that

    x[1,j] =
    v(Sj)

    ṽ0 + Ṽ (T)
    ≥ πSj (T),

    34

    as not all elements in Sj need to be in T. On the other hand, for j > k, we have

    x[1,j] = π(T) ≥ πSj (T),

    since again, not all elements in Sj need to be in T.

    To verify equation (31) we will show that tk and tk+1 can be written as

    tk =
    ṽ0 + ṽ(Sk)

    ṽ0 + ṽ(T)

    v(Sk + 1) −v(T)
    v(Sk + 1) −v(Sk)

    ,
    and

    tk+1 =
    ṽ0 + ṽ(Sk+1)

    ṽ0 + ṽ(T)

    v(T) −v(Sk)
    v(Sk + 1) −v(Sk)

    ,

    as then (31) follows from simple algebra. We know from arguments in the proof of Proposi-
    tion 2, that

    πk+1 −πk = πk+1(Sk+1)
    ṽ0

    ṽ0 + ṽ(Sk)
    ,

    so showing the result for tk is equivalent to showing that

    πk+1 −ρ =
    v(Sk + 1) −v(T)
    ṽ0 + ṽ(Sk + 1)

    ṽ0
    ṽ0 + ṽ(T)

    ,

    which follows from easily from the fact that ṽj = (1−θ)vj for all j. The proof for tk+1 follows
    along similar lines.

    Proof of Proposition 5: We need to compute the difference between E[min(U(y), max(y,c−
    D2)) and E[min(U(y − 1), (y − 1,c− D2)]. Since both quantities are zero when c − D2 ≥ y
    and if c − D2 < y the difference reduces to E[min(U(y),y)] − E[min(U(y − 1),y − 1)]. By expressing the expectation as the sum of tail probabilities and conditioning on the demand from the potential customer we see that

    E[min(U(y),y)] =
    y∑
    z=1

    P(U(y) ≥ z)

    = P(U(y) ≥ y) + β
    y−1∑
    z=1

    P(U(y − 1) ≥ z − 1) + (1 −β)
    y−1∑
    z=1

    P(U(y − 1) ≥ z).

    We now use the fact that E[min(U(y − 1),y − 1)] =
    ∑y−1
    z=1 P(U(y − 1) ≥ z), to express the

    difference as

    E[min(U(y),y)] −E[min(U(y − 1),y − 1)] = P(U(y) ≥ y) + βP (U(y − 1) < y − 1).

    Since P(U(y) ≥ y) = βP (U(y − 1) ≥ y − 1) + (1 −β)P(U(y − 1) ≥ y), we conclude that

    E[min(U(y),y)]−E[min(U(y−1),y−1)] = [β+(1−β)P(U(y−1) ≥ y|D2 > c−y)]P(D2 > c−y).

    35

    On the other hand, E min(c−y,D2) −E min(c + 1 −y,D2)] = −P(D2 > c−y). Therefore,

    ∆W2(c,y) = [q1(β + (1 −β)P(U(y − 1) ≥ y|D2 > c−y) − q2)]P(D2 > c−y)

    as claimed.

    36

    References

    [1] Belobaba, P. P., and L.R. Weatherford. (1996) “Comparing Decision Rules that Incorpo-
    rate Customer Diversion in Perishable Asset Revenue Management Situations.” Decision
    Sciences, 27, 343-363.

    [2] Blanchet, J, Gallego, G., and V. Goyal (2013) “A Markov Chain Approximation to
    Discrete Choice Modeling.” Working paper, Columbia University, New York, NY.

    [3] Brumelle, S. L., J. I. McGill, T. H. Oum, M. W. Tretheway and K. Sawaki. (1990)
    “Allocation of Airline Seats Between Stochastically Dependent Demands,” Transporation
    Science, 24, 183-192.

    [4] Cooper, W., Homem de Mello, T., and Kleywegt, A. (2006) “Models of the spiral-down
    effect in revenue management.” (Operations Research, 54, 968-987.

    [5] Domencich, T. A., and D. McFadden (1975) “Urban Travel Demand : A behavioral
    analysis,” North Holland Publishing Co., Amsterdam.

    [6] Fiig, Thomas, Isler, K., Hopperstad, C., and P. Belobaba. 2010. “Optimization of Mixed
    Fare Structures: Theory and Applications.” Journal of Revenue and Pricing Manage-
    ment. 9, 152-170.

    [7] Gallego, G., L. Lin and R. Ratliff (2009) “Choice Based EMSR methods for single-resource
    revenue management with demand dependencies.” Journal of Revenue and Pricing Man-
    agement, 8, 207-240.

    [8] Gallego, G., L. Lin and R. Ratliff (2009) “Demand Arrival Order and RM Controls.”
    AGIFORS Cargo and RM Study Group

    [9] Gallego, G., Ratliff, R., and S. Shebalov (2010) “A General Attraction Model and an
    Efficient Formulation for the Network Revenue Management Problem.” Submitted to
    Operations Research.

    [Green(1984)] Green, P. J. 1984. Journal of the Royal Statistical Society. Series B, 46, 149-192.

    [Greene(1984)] Greene, W.H. 2000. Econometric Analysis. Fourth edition. London: Prentice
    Hall.

    [10] Kincaid, W.M. and Darling, D.A. (1963) “An inventory pricing problem.” Journal of
    Mathematical Analysis and Applications 7: 183208.

    [11] Lee. C. T. and M. Hersh. (1993) “A Model for Dynamic Airline Seat Inventory Control
    with Multiple Seat Bookings,” Transportation Science, 27, 252–265.

    [12] Luce, R. D. (1959). “Individual Choice Behavior: A Theoretical Analysis.” New York:
    Wiley

    [13] Luce, R.D. (1977) ”The Choice Axiom after Twenty Years.” Journal of Mathematical
    Psychology, 15, pp. 215-233.

    37

    [14] Marshall, A. W. and Olkin, I. (1979). Inequalities: Theory of Majorization and Its Ap-
    plications. Academic Press, New York, NY.

    [15] McFadden, D. (1978) . Modelling the choice of residential location, in A. Karlquist,
    ed., Spatial Interaction Theory and Planning Models, North Holland Publishing Co.,
    Amsterdam, chapter 25, pp. 7596.

    [16] McFadden, D. (1980). “Econometric models for probabilistic choice among products.”
    The Journal of Business. 53, 13-29.

    [17] McFadden, D., K. Train. (2000). “Mixed mnl models for discrete response.” Journal of
    applied Econometrics. 15, 447470.

    [18] Rusmevichientong, P., Shmoys, D. and H. Topaloglu. (2010). “Assortment Optimization
    with Mixtures of Logits.” Working paper, Cornell University.

    [19] Talluri, K and G. van Ryzin. (2004) “Revenue Management Under a General Discrete
    Choice Model of Consumer Behavior.” Management Science, 50, 15-33.

    [Train(2002)] Train, K. 2002. Discrete Choice Methods with Simulation. Cambridge Univer-
    sity Press.

    [20] Walczack, D., S. Mardan, and Kallesen, R. 2010. “Customer voice, fare adjustments and
    the marginal expected revenue data transformation: A note on using old yield manage-
    ment techniques in the brave new world of pricing.” Journal of Revenue and Pricing
    Management, 9, 94-109.

    38

    IEOR

    4

    6

    0

    1

    : Dynamic Pricing and Revenue Management
    Midterm

    2

    01

    3

    Professor Guillermo Gallego

    INSTRUCTIONS:

    1. Write all your answers on the question sheets. Answers written on blue books will not be
    evaluated. Show and explain your work. Points will be deducted for solutions that are not
    clearly explained.

    2. You are allowed one page of notes on both sides.

    3. Write your name, sign the honor pledge and indicate your degree program.

    HONOR PLEDGE: I pledge that I have neither given nor received unauthorized aid during this
    examination.

    Name: Signature: Degree Program :

    1

    1. Static Model Independent Demands

    Consider a three fare problem with fares p1 = $

    5

    00,p2 = $450, and p3 = $400 and Poisson
    demands with intensities λ1 = 3, λ2 = 3, and λ3 = 10. Suppose you are given the following
    partial table of marginal values ∆Vj(x) = Vj(x) −Vj(x− 1),j = 1, 2, 3 for x = 1, . . . , 5.

    x ∆V1(x) ∆V2(x) ∆V3(x)
    1 $475.10
    2 $400.45 $447.55
    3 $434.55
    4 $401.15
    5 $344.00 $400.00

    Table 1: Data for Problem 2

    a) What are the protection levels y1 and y2?

    b) Compute V1(2)

    c) Compute V2(5)

    d) Compute V3(5).

    2

    2. Dynamic Allocation Model: Independent Demands

    Consider the independent demand, dynamic, capacity allocation model

    V (t,x) = V (t− 1,x) +
    n∑

    j=1

    λjt[pj − ∆V (t− 1,x)]+, (1)

    and assume that p1 > p2 > … > pn. Let λt =
    ∑n

    j=1 λjt be the overall arrival rate. Let

    πjt =
    ∑j

    k=1 λkt/λt and rjt =
    ∑j

    k=1 pkλkt/λt for all j = 1, . . . ,n and define π0t = r0t = 0.

    a) Interpret πjt and rjt in terms of the offer set Sj = {1, . . . ,j} for j = 1, . . . ,n.

    b) Let qjt = rjt/πjt if πjt 6= 0 and let qjt = 0 otherwise. Interpret qjt when positive.

    c) Let M = {0, 1, . . . ,n}. Argue that (1) can be written as

    V (t,x) = V (t− 1,x) + max
    j∈M

    λtπjt[qjt − ∆V (t− 1,x)].

    d) Give a pricing interpretation to this model.

    3

    3. Discrete Choice Models and Efficient Sets

    Given a choice model, let (π(S),r(S)), be respectively, the sales rate and the revenue rate
    associated with offering set S ⊂ N = {1, . . . ,n}. Recall that π(S) =


    k∈S πk(S) and r(S) =∑

    k∈S pkπk(S).

    For any ρ ≥ 0 consider the linear program

    R(ρ) = max


    S⊂N

    r(S)t(S) (2)

    subject to

    S⊂N

    π(S)t(S) ≤ ρ


    S⊂N

    t(S) = 1

    t(S) ≥ 0 ∀S ⊂ N.

    a) Is R(ρ) strictly increasing in ρ?

    b) Is R(ρ) convex in ρ?

    c) What can you say about R(π(S)) vs r(S) if S is an efficient set?

    d) Consider a time homogenous dependent demand model with arrival rate λ and let ΛT =
    λT. Let c be the initial capacity. What can you say about ΛtR(c/ΛT )?

    e) Name a class of models for which the efficient sets are nested.

    4

    4. Dynamic Allocation Model: Dependent Demands Consider the discrete time, dynamic
    programming, model for dependent demands,

    V (t,x) = V (t− 1,x) + λt max
    S⊂N

    [r(S) − ∆V (t− 1,x)π(S)]. (3)

    Let (πj,rj) be, respectively, the sales rate and revenue rate per arriving customer associated
    with efficient set Ej,j ∈ M = {0, 1, . . . ,m} and assume that the efficient sets have been
    ordered so that πj is increasing in j ∈ M.

    a) How does problem (3) simplify if you know (πj,rj), j ∈ M?

    b) Let a(t,x) = arg maxj∈M [rj − ∆V (t − 1,x)πj]. Which set of fares should be offered at
    state (t,x)?

    c) Is a(t,x) increasing or decreasing in t?

    d) Suppose that the efficient sets are nested. Explain how the dynamic program can reopen
    a fare once it is closed.

    5

    5. Static Model: Dependent Demands Consider a two fare problem with dependent de-
    mands, and assume that the efficient fares are E0 = ∅,E1 = {1} and E2 = {1, 2}. Let πi and
    ri denote, respectively, the sales rate and the revenue rate per arriving customer under action
    i = 0, 1, 2, where action i corresponds to set Ei, i = 0, 1, 2. Let Di be Poisson with parameter
    Λπi, i = 0, 1, 2. Consider two artificial products with demands di = Di − Di−1 for i = 1, 2,
    and respective fares p̂1 = (r1 − r0)/(π1 − π0) and p̂2 = (r2 − r1)/(π2 − π1). It is possible to
    show that d1 and d2 are independent random variables. In industry, people have proposed to
    use Littlewood’s rule with the data corresponding to these artificial products.

    a) What is the interpretation of di, i = 1, 2.

    b) Consider the protection level for fare p̂1 against fare p̂2 given by Littlewood’s rule

    ŷ1 = max{y ∈N : P(d1 ≥ y) > p̂2/p̂1}.

    What do you think would go wrong if you protect ŷ1 units for sale for artificial product
    1 (set E1) when capacity is large?

    c) How much capacity would you reserve for set E1 if capacity is large?

    6

    Still stressed with your coursework?
    Get quality coursework help from an expert!