0% found this document useful (0 votes)
13 views9 pages

RM_Notes-1

This document discusses revenue management through linear programming, focusing on the formulation of the problem and its applications in various contexts such as airlines, cloud computing, and hotels. It elaborates on bid-price control in both discrete and continuous settings, detailing how to maximize revenue by deciding whether to accept or reject requests based on resource availability and expected arrivals. The document also highlights the upper bound property of deterministic linear programming in relation to expected revenue from policies.

Uploaded by

angela8779a
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views9 pages

RM_Notes-1

This document discusses revenue management through linear programming, focusing on the formulation of the problem and its applications in various contexts such as airlines, cloud computing, and hotels. It elaborates on bid-price control in both discrete and continuous settings, detailing how to maximize revenue by deciding whether to accept or reject requests based on resource availability and expected arrivals. The document also highlights the upper bound property of deterministic linear programming in relation to expected revenue from policies.

Uploaded by

angela8779a
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

MGMTMSA408 Operations Analytics

Note on Revenue Management

Velibor Misic

March 28, 2025

1 Overview

In this note, we will briefly review the revenue management LP formulation in


generality, and discuss some extensions of this, particularly in the case where time
is modeled in a continuous as opposed to a discrete fashion.

2 General formulation of the revenue management prob-


lem

In the general revenue management setup, we receive requests over a finite time
horizon. Each request consumes some amount of one or more resources. The prob-
lem is to decide, at each request arrival, whether to accept the request or reject the
request, so as to maximize the total revenue garnered over the total time horizon.
We begin by defining the basic data of our problem:

• N : number of request types.

• j: index of a request type (j ∈ {1, . . . , N }).

• M : number of resources.

• i: index of a resource (i ∈ {1, . . . , M }).

• Ai,j : quantity of resource i consumed by request type j.

• Aj : vector of Ai,j values for a fixed request type j.

• Bi : quantity of resource i available at the start of the time horizon.

• dj : expected/forecasted number of requests of type j over the time horizon.

• rj : revenue accrued from accepting a request of type j.

1
In our linear programming formulation of the revenue management problem, we
let xj denote the number of requests of type j that we accept over the entire time
horizon. We also assume that there will be exactly dj requests of each request type
j. The problem can then be formulated as follows:
N
X
maximize rj xj (1a)
j=1
N
X
subject to Ai,j xj ≤ Bi , ∀i, (1b)
j=1

xj ≤ dj , ∀j (1c)
xj ≥ 0, ∀j. (1d)

In the above, we have formulated the problem generally in terms of requests, request
types, and resources. Some examples:

• In the single-leg flight problem we saw in class, request types correspond to


different fares on the same flight. There is only one resource (so M = 1),
which is the seats on that one flight. The Ai,j values are all 1, because each
fare consumes a single seat on the flight.

• In the multi-leg flight problem, request types correspond to different itineraries


(BOS to SLC direct, SLC to SFO direct, BOS to SFO via SLC, etc.). There
are M = 4 resources (the four legs of the flight). There are N = 8 itineraries,
correspond to all the origin-destination pairs (BOS → SLC, BOS → SFO, BOS
→ LAX, etc.). The Ai,j values are all either 1 or 0, because each itinerary
consumes at most seat on a given flight.

• In a cloud computing context, requests could correspond to different instance


types (see for example the instances offered by Amazon Elastic Compute
Cloud: https://aws.amazon.com/ec2/instance-types/). The resources
correspond to different components of a computer/servers, such as CPUs,
memory, GPUs, etc. Each instance corresponds to provisioning a certain
amount of CPUs, memory, GPUs, etc. The Ai,j values correspond to how
much of each of these resources is used by an instance.

• In a hotel, requests correspond to a customer booking a particular type of


room (smoking standard, non-smoking standard, queen bed, king bed, luxury
king, etc.) for a particular check in date and check out date (e.g., check in on
4/18, check out on 4/19. The resources are the number of each type of room
available on each day (e.g., number of queen rooms available on 4/18, number
of queen rooms available on 4/19, etc.). The Ai,j value of a request j for a
resource i is 1 if that request j uses that resource. For example, if a request
j is for a queen room for check in on 4/18 and check out on 4/20, and i is
queen rooms on 4/18, then Ai,j = 1; whereas if i is queen rooms on 4/23, then
Ai,j = 0.

2
3 Bid-price control in the discrete setting

To use the LP to inform a dynamic policy, we need to make an assumption about


the probabilistic process that governs how requests arrive.
In the discrete setting, we assume that the time horizon is finite: there are T periods,
indexed from 1 to T . In each period there is at most one arrival of each of the N
request types. For each request type j, pj is the probability of a request of that
type occuring in a given period; and for convenience, we can define p0 to be the
probability of no requests.
Let Xt,j be a random variable that is 1 if a request of type j occurs in period t,
and 0 otherwise. Xt,j is then a Bernoulli random variable, with probability pj ; its
distribution is given by

P (Xt,j = 1) = pj ,
P (Xt,j = 0) = 1 − pj

It is also straightforward to check that the expected value of Xt,j is pj :

E[Xt,j ] = pj · 1 + (1 − pj ) · 0 = pj

Let Nt,T,j be the number of requests of type j from period t to T . Nt,T,j is related
to the Xt,j variables in the following way:
T
X
Nt,T,j = Xt′ ,j . (2)
t′ =t

The expected value of Nt,T,j is

XT
E[Nt,T,j ] = E[ Xt′ ,j ]
t′ =t
T
X
= E[Xt′ ,j ]
t′ =t
T
X
= pj
t′ =t
= (T − t + 1)pj .

With these assumptions, let us parametrize our linear program from the previous
section in terms of the period t we are in and the remaining amount of each resource

3
b = (b1 , . . . , bM ). Our LP, which we write as LP (t, b) is
N
X
LP (t, b) = maximize rj xj (3a)
j=1
N
X
subject to Ai,j xj ≤ bi , ∀i, (3b)
j=1

xj ≤ (T − t + 1)pj , ∀j (3c)
xj ≥ 0, ∀j. (3d)

Our bid price control algorithm is then as follows:


1: Initialize bi = Bi for all i ∈ {1, . . . , M }.
2: Initialize revenue R = 0.
3: for t ∈ {1, . . . , T } do
4: Observe the current request j.
5: Solve LP (t, b) and let π t (b) be the vector of shadow prices for constraint (3b).
6: if rj ≥ A⊤ j π t (b) and b ≥ Aj then
7: (Accept the request)
8: Set R ← R + rj
9: Set b ← b − Aj
10: else
11: (Reject the request)
12: end if
13: end for

4 Upper bound property

In class, one interesting aspect we highlighted about the deterministic LP (prob-


lem 3) is that when we solve it for b = B and t = 1, we obtain an upper bound on
the performance of any policy.
Why is this the case? To see this, Q suppose that we have N a policy π. A policy π is
just a function π : {1, . . . , T } × M
i=1 {0, . . . , B i } → {0, 1} , that gives us, for each
period t and each possible inventory position – given by b1 , . . . , bM – a vector of
actions corresponding to the request types. Here, a 0 corresponds to rejecting the
request, and 1 corresponds to accepting the request. We can specify the policy in
any way; the only requirement that we place on the policy is that it must reject any
request for which there is insufficient capacity.
For example, suppose that M = 3, N = 5 – so we have 3 resources, and 5 types
of requests. Suppose that π(2, 22, 34, 30) = (1, 1, 0, 0, 1). This means that if, at the
start of period t = 2, we have 22 units of resource 1, 34 units of resource 2, and 30
units of resource 3, then we should accept requests of types 1, 2 and 5, and reject
requests of types 3 and 4. To specify a policy, we would need to say, for every t and
every set of values b1 , . . . , bM , what the N -dimensional vector of zeros and ones is.

4
Suppose that we fix any policy π, and we simulate the policy. In each simulation,
the number of units we accept of request j is Xjπ , which is a random variable.
Along any simulation (or in probability, what is called a sample path), we have that
Xjπ ≤ N1,T,j ; recall that N1,T,j is the random variable for how many requests we got
of type j from t = 1 to t = T . This is true because if we follow any policy, the most
number of requests of a type that the policy can accept is the number of requests
of that type that arrived over the entire time horizon. (If only 5 requests of type 1
were realized, then X1π is at most 5; it is not possible for it to be 6 or 10 or 2000.)
In probability, this is sometimes written as

Xjπ ≤ N1,T,j , a.s., (4)

where a.s. stands for “almost surely”; in probability theory, this is just another way
of saying with probability 1, i.e., in every sample path, this inequality will hold. If
we take the expected value of both sides, we get

E[Xjπ ] ≤ E[N1,T,j ] (5)

which is the same as


E[Xjπ ] ≤ T pj . (6)

Additionally, observe also that in any sample path, the number of requests of type j
that the policy accepts has to be at least zero. It is not possible to accept a negative
number of requests. So we also have

Xjπ ≥ 0, a.s., (7)

and if we take the expected value of both sides, we get

E[Xjπ ] ≥ 0. (8)

Lastly, let’s consider what happens with each resource. For resource i, observe that
the total amount of resource i that is consumed by policy π will not exceed the
initial amount Bi along any sample path. In math:
N
X
Ai,j Xjπ ≤ Bi , a.s., (9)
j=1

and if we take expected values, we get


N
X
E[ Ai,j Xjπ ] (10)
j=1
N
X
= Ai,j E[Xjπ ] (by linearity of expectation) (11)
j=1

≤ Bi . (12)

Finally, along any sample path, the revenue that π garners is given by N π
P
j=1 rj Xj ,
PN
and so the expected revenue of policy π can be shown to be j=1 rj E[Xjπ ].

5
Let’s now collect everything. All of the inequalities that we wrote above can be
collected as follows:
N
X
Ai,j E[Xjπ ] ≤ Bi , ∀i, (13)
j=1

E[Xjπ ] ≤ T pj , ∀j, (14)


E[Xjπ ] ≥0 ∀j. (15)

If we compare this to the definition of our deterministic LP (problem (3)), we notice


that the set of inequalities is identical!
Thus, if we consider x̃ = (E[X1π ], . . . , E[XN
π ]) as the vector of these expected values,

then x̃ is a feasible solution of the LP (3). Additionally, the objective value of x̃,
is exactly the expected revenue of policy π. Since x̃ is feasible, but not necessarily
optimal, the optimal objective value of problem (3) with t = 1 and b = B is an
upper bound on the expected revenue of policy π.
Another way to think about problem (3) is that this LP is treating the expected
number of requests that we accept as a decision variable, and the constraints cor-
respond to physical limits on what these expected values can be. The decision
variables xj do not tell us the policy, but tell us how the policy should behave in
expectation.

5 Bid-price control in the continuous setting

Bid-price control can also be used when time is continuous. In a continuous time
setting, we assume that T is the length of the continuous time horizon – for example,
T could be 24 hours. A request can arrive any continuous point in time in the interval
[0, 24]. For example, the sequence of request times could be

0.0333, 0.5612382, 1.7210, 2.9334, 4.00133232, 4.0023288881910, . . .

A common model that is used for describing such arrival processes is the Poisson
process. Before we define the Poisson process, we first define the Poisson random
variable.
Poisson random variable: A random variable X is a Poisson random variable
with mean µ if it has the following probability distribution:
µx −µ
P (X = x) = ·e .
x!
where x = 0, 1, 2, 3, . . . . We write X ∼ Poisson(µ) as a short hand notation to
indicate that X follows the Poisson distribution with mean µ.
We now define a Poisson process:
Poisson process: A Poisson process is a way of describing arrivals in continuous
time. We let Nt1 ,t2 , where t2 > t1 , denote the number of requests that arrive between

6
time t1 and time t2 . A Poisson process with rate λ means that on average, we get
λ arrivals per unit time. (For example, if t is in hours, and λ = 5, then this would
mean we get on average 5 arrivals per hour.) In a Poisson process with rate λ, Nt1 ,t2
is a Poisson random variable with mean λ(t2 − t1 ).
(Following from the example with λ = 5, if we asked how many arrivals we would see
between 6 hours and 10 hours, then we would be interested in N6,10 , which would
be a Poisson random variable with mean 5 · (10 − 6) = 20.)
Generalizing bid-price control to the continuous setting: For the purpose
of generalizing the bid-price control policy to this setting, we assume that of our
N request types, arrivals of request type j behave according to a Poisson process
Nt1 ,t2 ,j with arrival rate λj . This means that the number of arrival over the entire
horizon, N0,T,j , is a Poisson random variable with mean λj T . In addition, at any
point in time t ∈ [0, T ], the number of arrivals we expect to see in the remaining
interval [t, T ], is a Poisson random variable with mean λj (T − t). (Note that there is
no longer a +1 correction here, because we are modeling the problem in continuous
time!) So we have:
E[Nt,T,j ] = λj (T − t)
This now becomes our forecast for the number of arrivals of type j when we are at
time t for the remainder of the time horizon.
With these assumptions, let us parametrize our linear program in terms of a time
t in the continuous time horizon [0, T ] and the remaining amount of each resource
b = (b1 , . . . , bM ). Our LP, which we write as LP (t, b) is
N
X
LPcts (t, b) = maximize rj xj (16a)
j=1
N
X
subject to Ai,j xj ≤ bi , ∀i, (16b)
j=1

xj ≤ (T − t)λj , ∀j (16c)
xj ≥ 0, ∀j. (16d)

Our bid price control algorithm is then as follows:


1: Initialize bi = Bi for all i ∈ {1, . . . , M }.
2: Initialize revenue R = 0.
3: Initialize t to the time of the first request arrival.
4: while t < T do
5: Observe the current request j
6: Solve LPcts (t, b) and let π t (b) be the vector of shadow prices for constraint (16b).
7: if rj ≥ A⊤ j π t (b) and b ≥ Aj then
8: (Accept the request)
9: Set R ← R + rj
10: Set b ← b − Aj
11: else
12: (Reject the request)
13: end if

7
14: end while

6 Other properties of the Poisson arrival process

The Poisson process has a number of other properties which are not critical to know
for the purpose of using the bid-price control algorithm above, but are good to know
as they are routinely capitalized on in other applications.
Exponential inter-arrival times / Memorylessness: In a Poisson process with
arrival rate λ, the time between consecutive arrivals – the inter-arrival time – is
assumed to follow an exponential distribution with rate λ (or equivalently, with
mean 1/λ). The density function of the exponential distribution is

f (x) = λe−λx .

The exponential distribution is often used in probabilistic modeling because it has


what is known as the memoryless property. To make this concrete, suppose that
you are waiting at a bus stop, and X is the random time in minutes until the next
bus shows up. Let’s suppose that X is an exponential random variable with rate λ.
The probability that X is greater than some q – your bus arrives after q minutes –
is Z ∞ Z ∞
P (X > q) = f (x)dx = λe−λx dx = e−λq . (17)
q q

Suppose now that you have waited t minutes already. What is the probability that
you wait for another q minutes? This is the conditional probability

P (X > t + q | X > t). (18)

We can calculate this out just by applying the definition of conditional probability:
P (X > t + q, X > t)
P (X > t + q | X > t) =
P (X > t)
P (X > t + q)
=
P (X > t)
e−λ(t+q)
=
e−λt
−λq
=e (19)

Let’s now digest what we these two results are saying:

• Equation (17) says: when you just start waiting, the probability that you wait
longer than q minutes is e−λq ; this is P (X > q) = e−λq .

• Equation (19) says: After already waiting for t minutes, the probability that
you wait another q minutes... is still e−λq !

This property is the memoryless property: the probability of an event happening


in a certain period is independent of how much time has elapsed up to now. Note

8
that among continuous probability distributions, this property is unique to the ex-
ponential distribution. If a continuous probability distribution has this property,
it must be the exponential distribution. (Among discrete distributions, the only
distribution which has this property is the geometric distribution.)
Conditional distribution of arrival times is uniform: Another useful property
of the Poisson process is the following: suppose that Nt1 ,t2 is a Poisson process with
rate λ. Suppose that we know that n arrivals have occurred in the interval [t1 , t2 ].
What is the joint distribution of the arrival times of these n arrivals? It turns out
that the n arrival times are uniformly distributed over the interval [t1 , t2 ]. This is
a property that is useful when simulating the Poisson process (this is the property
being used in the code for generating arrival sequences in the cloud computing
homework problem).
Thinning of Poisson processes: Suppose that we have a Poisson process denoted
by Nt1 ,t2 , with rate λ. The arrivals are randomly divided into two groups: an arrival
goes to group 1 with probability p1 and to group 2 with probability p2 , where
p1 + p2 = 1.
The thinning property says this: if you focus on just arrivals to group 1, then the
arrival process for group 1 is itself a Poisson process, with rate p1 λ. The arrival
process for groups 2 is also a Poisson process, with rate p2 λ.
As a physical example, suppose that you are standing at a bus stop in Westwood.
Buses arrive randomly as a Poisson process with rate 5 per hour. Of all buses, 40%
are green and 60% are blue. Then, the arrival process of green buses is a Poisson
process with rate 5 × 0.4 = 2 per hour, and the arrival process of blue buses is a
Poisson process with rate 5 × 0.6 = 3 per hour.
Superposition of Poisson processes: The previous property says that if you
randomly divide arrivals from a Poisson process into two groups, the arrival process
of each group is a Poisson process.
It turns out that combining Poisson processes together also results in a Poisson
process. For example, suppose that a bank receives applications for two types of
loans: mortgage loans and personal loans. Applications for these loans arrive ac-
cording to Poisson processes, with mortgage loan applications arriving at a rate of
20.2 applications per month, and personal loan applications arriving at rate of 4.5
applications per month. Then, the arrival process for loan applications of any kind
is a Poisson process with arrival rate 20.2 + 4.5 = 24.7 applications per month.

You might also like