I upload 2 questions and four materials related to this questions, please take a look then decide whether you want to do them or not, the name of this course is ” Dynamic Pricing & Revenue Management “, please upload solution to me before deadline, also I need detailed explaination, thank you.
IEOR 460
1
Assignment 7
1. Consider the following dynamic pricing problem with three market segments with time
invariant arrival rates dmt(p) = dm(p) = λme
−p/θm,m = 1, 2, 3 and random request
Zm,m = 1, 2, 3. Assume that λ1 = 10, λ2 = 5 and λ3 = 15, that θ1 = 500,θ2 = 550,θ3 =
600, and that the distribution of Zm is given by P(Zm = 1) = 0.8, P(Zm = 2) = .1 and
P(Zm = 3) = P(Zm = 4) = .05, for m = 1, 2, 3. Finally, assume that T = 10 and that
c = 70.
a) Compute z(T,c) by using formula (21) in the chapter on Dynamic Pricing.
b) Use the result of part a) to compute V̄ (T,c), the upper bound on the optimal
expected revenue.
c) Simulate the performance of the quasi-static pricing policy Phm(t,x) given in formula
(19). In the simulation you should use the distribution of Zm to generate the request
sizes, and accept all requests at price Phm(t,x) of size Zm ≤ x.
d) Repeat part c), updating z of the quasi-static pricing policy at t = 5.
2. Consider a single market model with Poisson demands with dt(p) = λe
−p/θ with λ = 10,
θ = 500, T = 100 and c = 150. Let tj = 50j for j = 1, 2 be the reading dates.
a) Simulate the performance of the quasi-static pricing policy updating z at each
reading date.
b) Solve the dynamic policy in Section 5.2, and compare the performance of the semi-
dynamic pricing policy to the results of part a)
c) Repeat parts a) and b) assuming that the reading dates are tj = 10j,j = 1, . . . , 10.
Which policy performs better?
1
Network Revenue Management: Independent
Demands c©
Guillermo Gallego
Spring
1
2
Abstract
We present a continuous time formulation of the network revenue management model
with independent demands. The objective is to maximize expected revenues from an
initial set of resources that cannot be replenished during the sales horizon. We present
the Hamilton Jacobi Bellman equation that characterizes the optimal value function. We
use affine functions in a dynamic programming approximation to obtain an upper bound
on the value function and a bid-price heuristic that admits fares with values at least as
large as the sum of the bid prices of the resources consumed. We argue that the bid-price
heuristic can perform poorly for products with fares that are exactly equal to the sum
of the bid-prices, particularly if demand for such products arrive early during the sales
horizon. We recommend a refinement of the bid-price heuristic that randomly admits
fares that are equal to the sum of bid-prices, which can be shown to be asymptotically
optimal. We also discuss refinements that incorporate demand randomness ignored by
bid-price heuristics based on the affine approximation.
1 Introduction: Independent Demand Case
Consider a network with several resources that can be combined in different ways to produce
different products. In the context of an airline, the resources are the flight legs that are
combined to form itineraries or routes from an origin to a destination. In hotel applications,
the resources are the room nights and an itinerary may correspond to a single or multiple
night stay. An origin-destination fare (ODF) represents an itinerary and a fare. Accordingly,
there may be several fares corresponding to an itinerary, with lower fares often being more
restricted in terms of the time of purchase, length of stay, or including few ancillary services
such as advanced seat selection, luggage handling, mileage accrual and meals.
We will assume that itineraries and fares are given and that demands are independent
conditioned on the given fares. More precisely, we will assume that an arriving customer has
a particular ODF in mind and will buy that ODF if available and will not make a purchase
otherwise. Under this model a customer interested in a non-restricted fare for a given itinerary
will not change his mind and purchase a lower priced but more restricted fare. Alternatively,
1
a customer interested in a low fare product will not buy up if the desired fare is unavailable.
The independent demand assumption, while restrictive, works well when fares are well differ-
entiated and customers can turn to a competitor if they fail to find the fare they want. The
independent demand model preforms poorly if fares are not well differentiated or alternative
providers are not available. Indeed, when fares differ only in price it makes sense to purchase
the one with the lowest price. Moreover, when alternative low fares are not available, some
customers may buy up to more expensive but less restricted fares. In such situations we
recommend abandoning the independent demand model in favor of a choice model where cus-
tomer choices depend on the available fares. The next chapter treats the dependent demand
case through the use of choice models.
2 Formulations
Suppose that there are m resources in the network and let c ∈Zm denote the vector of initial
capacities. We will assume that resources cannot be replenished during the sales horizon. We
will measure time backwards, so t will represent the time-to-go. Initially t = T and at the
date of departure t = 0. For any time-to-go t we will let (t,x) represent the state of the
system where x represents the vector of remaining inventories. The initial state is (T,c). We
will now develop the necessary notation to write a continuous time dynamic program for the
maximum expected revenue, say V (t,x), that can be extracted from state (t,x).
We will assume that customers arrive according to a Poisson or compound Poisson process
with time varying arrival rates. Expositionally, it helps to introduce the main ideas for the
Poisson case and later take care of the changes needed to deal with the compound Poisson
case. We will let λtkj denote the arrival rate at time t of ODF kj for customers interested in
fare pkj,j ∈{1, . . . ,nk} of itinerary k.
Let Ak be the vector of resources utilized by itinerary k. Then Ak is an m-dimensional
vector of zeros and ones with a one for each resource consumed by itinerary k. Consider now
a time increment δt that is small enough so that we we can think of λtkjδt as the probability
that an arrival occurs at time t for ODF kj. Then,
V (t,x) =
K∑
k=1
nk∑
j=1
λtkjδt max{V (t−δt,x),pkj+V (t−δt,x−Ak)}+(1−
K∑
k=1
nk∑
j=1
λtkjδt)V (t−δt,x)+o(δt)
where o(δt) is a quantity that goes to zero faster than δt. Rearranging terms and taking limits
we obtain the partial differential equation
∂V (t,x)
∂t
=
K∑
k=1
nk∑
j=1
λtkj[pkj − ∆kV (t,x)]+ (1)
with boundary conditions V (t, 0) = V (0,x) = 0 for all x ≥ 0. Here ∆kV (t,x) = V (t,x) −
V (t,x − Ak) if x ≥ Ak and ∆kV (t,k) = ∞ otherwise. This continuous time formulation
2
indicates that the marginal value of time is equal to the net revenue in excess of the marginal
value of capacity.
It is clearly optimal to accept ODF kj if pkj ≥ ∆kV (t,x). This gives rise to a nested by
fare structure. Indeed, if fares are ordered so that pk1 ≥ pk2 ≥ . . . ≥ pknk . Then, if fare pkj is
accepted then so are all fares pki with i ≤ j and if fare j is reqjected then so are all fares with
i > j.
It is conceptually useful to think of λtk =
∑nk
j=1 λtkj as the arrival rate of requests for
itinerary k and the requests for specific fares λtkj = λtkqtkj as thinned Poisson processes. This
is equivalent to having random fare Ptk at time t for itinerary k where Ptk takes value pkj with
probability qtkj. Writing (1) in terms of random fares yields the equivalent formulation
∂V (t,x)
∂t
=
K∑
k=1
λtkE[Ptk − ∆kV (t,x)]+. (2)
Formulation (2) makes explicit the arrival rate for each itinerary and the fact that distribution
of fares for an itinerary may change over time to reflect time preferences or fare restrictions.
Formulation (2) is actually more general than the motivation that led to it as it is valid for any
random fares Ptk with finite means. Viewing Ptk as a general random variable, not necessarily
restricted to the set of offered fares {pk1, . . . ,pknk}, may be helpful to deal with net fares that
may be different depending on the distribution channel costs. However, most of these benefits
can be captured by a enlarging, if necessary, the set of fares {pk1,pk2, . . . ,pknk} to allow to
deal with commission netting and channel effects.
While formulation (2) is rich in detail, it is sometimes convenient to work with a more
streamlined formulation that aggregates ODFs into a single index n =
∑K
k=1 nk. Abusing
notation slightly, the single index formulation results in
∂V (t,x)
∂t
=
n∑
j=1
λtj(pj − ∆jV (t,x))+ (
3
)
where in this formulation λtj and pj denote respectively the arrival rate and the fare of ODF
j. Notice that in this formulation there may be multiple identical columns corresponding to
different fare classes for the same itinerary. This formulation has the virtue of simplicity and
generality at the cost of abstractness as it distances the model a bit from one of its potential
origins. It simplicity allows us to more easily treat the compound Poisson case, to discuss
the nested by fare structure of optimal solutions and randomness in the arrival rates. After
we discuss these extensions we will go back to formulation (1), that at the cost of additional
notation, keeps the distinction among the fares for different itineraries.
2.1 Compound Poisson Process
The network DP is written under the implicit assumption that arriving requests for ODF j
are for a single unit. If demand for an ODF j is a compound Poisson process with arrival rate
λtj and demand size Zj with q
k
j = P(Zj = k), then we can model this by using columns of
3
the form Akj = kAj with corresponding fare p
k
j and arrival rate λ
k
tj = λtjq
k
j for all k such that
qkj > 0. Notice that the total fare p
k
j for a size k request for ODF j need not be equal to kpj,
thus allowing for economies or diseconomies of scale in group pricing. Under this formulation,
a size k request for ODF j is accepted if and only if pkj ≥ ∆kjV (t,x) = V (t,x)−V (t,x−Akj ) =
V (t,x) − V (t − kAj). This allow us to treat ODF of each size as a different request in the
single index model.
2.2 Doubly Stochastic Poisson Process
If the arrival rates themselves are random for each t, say λitj with probability θ
i
j, then the HJB
(3) is of the same form with λtj =
∑
i λ
i
tjθ
i.
3 LP Based Upper Bound on V (T,c)
We now return to formulation (1) with the goal of obtaining an upper bound on the optimal
expected revenue V (T,c). We will use the perfect foresight idea introduced in Chapter 1 to
obtain an upper bound on revenue for the single resource problem. Let Dkj be the aggregate
demand for ODF kj over the horizon [0,T]. Then Dkj is Poisson with parameter Λkj =∫T
0 λskids. Consider the linear program
V̄ (T,c) = max
K∑
k=1
nk∑
j=1
pkjykj (
4
)
s.t.
K∑
k=1
Ak
nk∑
j=1
ykj ≤ c
0 ≤ ykj ≤ Λkj ∀ k,j.
This Linear Program is know as the deterministic network LP (DNLP) and also as the fluid
limit LP. We will now show that this linear program is an upper bound on the value function
V (T,c).
Theorem 1
V (T,c) ≤ V̄ (T,c).
Proof: Consider the revenue from the optimal dynamic policy, that accepts a request
for ODF kj at state (t,x) if pkj ≥ ∆kV (t,x), for a specific realization of demands Dkj,j =
1, . . . ,nk,k = 1, . . . ,K. This revenue is at most equal to the revenue from the perfect foresight
model that decides how many units from each ODF to accept after seeing the realization of
demand.
V (T,c|D) = max
K∑
k=1
nk∑
j=1
pkjykj
4
s.t.
K∑
k=1
Ak
nk∑
j=1
ykj ≤ c
0 ≤ ykj ≤ Dkj ∀ k,j.
It follows that V (T,c) ≤ EV (T,c|D). Since V (T,c|D) is concave in D, Jensen’s inequality
implies that V (T,c) ≤ EV (T,c|D) ≤ V (T,c|Λ) = V̄ (T,c) where Λ = E[D] is the vector of
expected demands.
The DLP is more typically encountered in the single index incarnation in matrix notation:
V̄ (T,c) = max p′y (
5
)
subject to Ay ≤ c
0 ≤ y ≤ Λ,
where y = (y1, . . . ,yn) and Λ = (Λ1, . . . , Λn).
Both the primal and the dual are feasible and bounded so they have an optimal solu-
tion. By strong duality they both result in the same value for the objective function and all
complementary slackness conditions apply. The dual problem to (4) is given by
V̄ (T,c) = min z′c + u′Λ (
6
)
s.t. z′Aj + uj ≥ pj ∀j
z,uj ≥ 0 ∀ j.
At optimality, the dual variable zi is the marginal value of capacity of resource i, while the
dual variables uj is the marginal value of demand for ODF j. By complementary slackness,
zi > 0 implies that the capacity constraint for resource i is tight, and uj > 0 implies that all
the demand of ODF j is used.
Example 1 Consider a network with two connecting flights and assume that two fares are
available for each individual flight as well as for the connecting flight. Using the single index
model we have 6 ODFs with incident matrix
A =
(
1 1 0 0 1 1
0 0 1 1 1 1
)
.
The fare vector and arrival rates are as follows:
p = ( 150,
10
0,
12
0,
8
0, 250, 1
7
0 )
5
λt = ( 0.06, 0.00, 0.04, 0.00, 0.06, 0.00 ) 1 ≤ t ≤ 500
λt = ( 0.00, 0.12, 0.00, 0.16, 0.00, 0.08 ) 501 ≤ t ≤ 1000
with capacity vector c = (
9
0, 90). Notice that the arrival rates are such that low fare demands
arrive before high fare demands. The vector of ΛTj =
∫T
0 λtjdt is given by
ΛT = ( 30, 60, 20, 80, 30, 40 ) .
The solution to (5) is given by
ȳ = ( 30, 30, 20, 40, 30, 0 )
and the solution to the primal problem (6) is given by z̄ = (100, 80). The optimal value
function is $20,600.
Heuristics for the stochastic system can be constructed both in terms of the solutions to
the primal or the dual problem. In the next section we emphasize heuristics based on the
primal problem. Heuristics based on the DLP require n values instead of m << n required
by the dual. However, heuristics based on the DLP have the potential of performing well if
implemented correctly, particularly if DLP is resolved at reading dates T = tN > .. . > t1 > 0.
This is particularly true when new forecasts are available at reading dates. Resolving the
DLP has good asymptotic properties, see Maglaras and Meisnner [6] in the context of a single
resource. However, resolving may hurt rather than help performances in some instances, see
Cooper [2] for details, particularly towards the end of the horizon when the fluid approximation
implied by the DLP suffers the most from ignoring randomness.
4 Bid-Price and PAC Heuristics
Any vector z ∈
product j at t = 1 is accepted as long as Aj ≤ x). In words, accept a request if its fare is equals
or exceeds the sum of bid prices for the resources consumed and there is available capacity. A
bid-price vector that is commonly used is the solution to linear program (6), although other
bid-prices are often used as explained later. A bid-price heuristic has the advantage of using
only m numbers, one for each resource.
Let F = {j : pj ≥ z′Aj} and R = {j : pj < z′Aj}. Then all ODFs belong to either the
set F or the set R. The bid price heuristic accepts requests for ODFs in F, provided there is
enough capacity, and rejects all requests for ODFs in R. The solution to the linear program
(6) almost always has a non-empty set P = {j : pj = z′Aj}⊂F consists of ODFs whose fares
are equal to the sum of the bid-prices. Let F = {j : pj > z̄′Aj}. Then the set of ODFs can
be partitioned into the three sets F,P and R with F = F ∪P .
Let y be the solution to the DLP (5). Consider now a probabilistic admission control (PAC)
6
heuristic, that admits a request for ODF j with probability ỹj = yj/ΛTj. By complementary
slackness, R = {j : yj = 0}, P = {j : 0 < yj < ΛTj} and F = {j : yj = ΛTj}. This implies
that the acceptance probabilities are ỹj = 0 for j ∈ R, ỹj ∈ (0, 1) for j ∈ P and ỹj = 1 for
j ∈ F. Notice that the data requirements for the PAC is the solution to the DLP with involves
n >> m numbers. If P = ∅, then the PAC and bid-price heuristics coincide. However, if
P 6= ∅, then the PAC heuristic has a more refined method of dealing with ODFs in P . This
is good news when the solution to the DLP has many ODFs in P , particularly when request
for ODFs in P arrive before ODFs in F as is common in practice. The following example
illustrates this situation.
Example 2 Consider Example 1 and notice that the six ODFs are partitioned as follows:
F = {1, 3, 5}, P = {2, 4} and R = {6}. Notice also that fares in P arrive before fares in
F . The performance of the bid-price heuristic was estimated through simulation resulting in
approximate expected revenues of $17,732, estimated by averaging the revenues of 100,000
simulated instances. The PAC heuristic, has ỹj = 0.5 for j ∈ P , so the PAC, admits ODFs in
P with probability 50%. This improves the expected revenues, estimated by simulation, from
$17,732 to $19,386.
Under the assumption that the random fares Ptk in formulation (2) are continuous random
variables that are uniformly bounded, Talluri and van Ryzin [8] show that the bid-price
heuristic based on the solution of program (6) is asymptotically optimal. The asymptotic
result is for a sequence of problem instances where the demand rates and capacity are scaled
up by a factor b > 1. More precisely, if V b(T,c) is the optimal expected revenue for a system
with arrival rates bλtk and capacity bc, and V
b
z̄ (T,c) is the expected revenue based on the
solution z̄ to (6), Talluri and van Ryzin [8] show that
V bz̄ (T,c)
V b(T,c)
→ 1 as b →∞.
The assumption that Ptk is continuous guarantees that set of partially accepted fares P
is empty. However, this is rarely the case in practice. The asymptotic optimality of the bid-
prices heuristic is unfortunately destroyed if the continuity assumption of the random fares
Ptk is relaxed. It is easy to see what goes wrong by thinking of a single resource problem
with two fares p1 > p2, with aggregate demands Λ1 = (1 − �)c and Λ2 such that Λ1 + Λ2 > c.
Then z = p2 and the bid-price heuristic accepts all requests until capacity is exhausted. If
arrivals are low-to-high and Λ2 >> c then the entire capacity will be consumed by low-fare
customers. One may try to correct things by using a bid-price heuristic that accepts only
fares in set F = {1} but then things go wrong if Λ1 = �c as most of the capacity would get
spoiled. Notice that neither version of the heuristic (accepting F ∪P or just F) improves as
demand and capacity are scaled by b > 1. As a result, bid-price heuristics are not, in general,
asymptotically optimal. In practice, P 6= ∅ and demand for the marginal fares in P tend to
arrive before demand for fares in F . Thus, the bid-price heuristic risks being too generous in
accepting requests for fares in P at the cost of cannibalizing capacity that would be better
used by fares in F.
Our next result states that the asymptotic optimality is preserved by the PAC even if the
7
set P 6= ∅. The proof can be found in the Appendix. An independent proof of a similar result
can be found in Reiman and Wang [12].
Theorem 2 The PAC heuristic is asymptotically optimal as capacity and demand rates are
scaled up.
4.1 Refinements of Bid-Price and PAC Heuristics
In practice, bid price heuristics perform better if the DLP is resolved frequently during the
horizon, e.g., at reading dates when forecasts may also be updated. This helps because cor-
rections can be made before too much of the demand is cannibalized by fares in P . Resolving
the DLP has good asymptotic properties, see Maglaras and Meissner [6], in the context of
a single resource. However, resolving may hurt rather than help performances in some in-
stances, see Cooper [2] for details, particularly towards the end of the horizon when the fluid
approximation implied by the DLP suffers the most from ignoring randomness. Nevertheless,
over the entire horizon, it seems that the benefits from resolving can be substantial and result
in a bounded optimality gap as shown by Jasin and Kumar [7].
Heuristics can also benefit from refinements that make them more sensitive to demand
randomness. Talluri and van Ryzin [9] suggest solving the DLP problem many times with
simulated, rather than average, demands and then averaging the bid prices of the generated
solutions. This idea tries to estimate the gradient of EV (T,c|D) instead of the gradient of
V̄ (T,c) = V (T,c|E[D]). Likewise, one can obtain average admission probabilities for the PAC
heuristic. Topaloglu [10] shows that randomizing the DLP preserves the asymptotic optimality
properties in Taluri and van Rizin [8].
Another refinement proposed in the literature is to solve a version of the DLP (5) that yields
time-dependent admission probabilities and time dependent bid-prices. This idea emerged
from the use of approximate dynamic programming with affine functions for the discrete time
version of (3) as proposed by Adelman [1] and later refined by Tong and Topaloglu [
11
]. Recall
that the discrete time approximation of (3) yields a good approximation as long as time is
rescaled so that
∑n
j=1 λtj << 1 for every t = 1, . . . ,T . With this rescaling, we limit our
presentation of this body of work to a linear program that is a natural extension of (4),
where
for each time-to-go t = 1, . . . ,T , the variables ytj, represent the expected sales of product j
at time t. Starting with inventory xT = c, the inventory evolves according to the equation
xt−1 = xt − Ayt. To ensure feasibility, we require xt ≥ 0 and yt ≤ λt for all t = 1, . . . ,T .
Tong and Topaloglu [11] show that there are m×n additional constraints for each t that come
from the ADP formulation, and can be written succinctly as A diag(yt) ≤ xtλ′t. Constraint
ij corresponds to resource i and product j. It states that Aijyjt ≤ xitλjt. For the airline case
Aij is either zero or one. If Aij = 0 then the constraint is vacuous. On the other hand, if
Aij = 1 then the constraint implies that yjt ≤ λjtxit. This constraint is only more binding
than yjt ≤ λjt, coupled with xt−1 ≥ 0, when there are resources that are consumed by product
j with 0 < xti ≤ 1, which happens only towards the end of the horizon when t is small.
8
This leads to the DLP-t formulation (where the t stands for time-varying controls):
Ṽ (T,c) = max
T∑
t=1
p′yt (7)
subject to xT = c
xt −xt−1 −Ayt = 0 ∀ t = 1, . . . ,T
yt ≤ λt ∀ t = 1, . . . ,T
A diag(yt) ≤ xtλ′t ∀ t = 1, . . . ,T
yt ≥ 0,xt ≥ 0 ∀ t = 1, . . . ,T
Formulation (7) is due to Tong and Topaloglu [11], and it is actually a tighter upper
bound than the NDLP. To see this, notice that if yt, t = 1, . . . ,T is an optimal solution to
(7), then y =
∑T
t=1 λtyt is a feasible solution to (4), with the same objective value. This
shows that Ṽ (T,c) ≤ V̄ (T,c). Moreover, V (T,c) ≤ Ṽ (T,c), since Ṽ (T,c) is obtained through
approximate dynamic programming, as shown by Tong and Topaloglu [11]. The problem in
Example 1 was solved using the above procedure resulting in Ṽ (T,c) = $20, 510.
Vossen and Zhang [
14
] proposes a clever disaggregation idea to speed up the solution of
(7). The key is to aggregate the constraints beyond period s. Let yt be, as before, the expected
sales over periods t = 1, . . . ,s, and let y be the aggregate sale over periods s+ 1, . . . ,T . Notice
that the demand over those periods is equal to λ = ΛT − Λs. Let
Ṽs(T,c) = max
s∑
t=1
p′yt + p
′y (8)
subject to x = c
x−xs −Ay = 0
xt −xt−1 −Ayt = 0 ∀ t = 1, . . . ,s
y ≤ λ
yt ≤ λt ∀ t = 1, . . . ,s
A diag(yt) ≤ xtλ′t ∀ t = 1, . . . ,s
yt ≥ 0,xt ≥ 0,y ≥ 0 ∀ t = 1, . . . ,T
Clearly the case s = T reduces to the DLP-t as 0 ≤ y ≤ λ = 0 implies that xT = c.
Since Ṽs(T,c) is a relaxation of Ṽ (T,c), it follows that Ṽs(T,c) ≥ Ṽ (T,c). Let y together with
yt, 1 ≤ t ≤ s be an optimal solution to Ṽs(T,c). We now expand the solution over the full
horizon by setting yit = 0 for all s < t ≤ T if λi = 0 and yit = yiλit/λi otherwise. Since the
objective value of Ṽ (T,c) coincides with Ṽs(T,c), we know that the solution is optimal as long
as it is feasible. Thus the idea is to solve Ṽs(T,c) for small values of s and test for feasibility
for the expanded solution. If the solution is feasible, the procedure stops and otherwise the
problem is solved again with s ← s + 1. The problem in Example 1 was solved using the
above procedure yielding an optimal solution at s = 10, so Ṽ10(T,c) = Ṽ (T,c) = $20, 510.
Formulation (8) can be made even more compact by replacing the first three constraints with
9
A(
∑s
t=1 yt + y) ≤ c, and writing the sixth constraint as A diag(yt) ≤ (c−A(
∑s
u=t+1 yu + y))λ
′
t,
as suggested by Vossen and Zhang [14].
The solution to (7) divides the set of itineraries into three subsets Ft = {j : yjt = λjt},
Pt = {j : 0 < yjt < λjt} and Rt = {j : yjt = 0}, and this can be viewed as a time
dependent version of the PAC heuristic, where a request for itinerary j at time t is accepted
with probability ỹjt = yjt/λjt if λjt > 0 and with probability zero otherwise. The dual, zt,
of the capacity constraint xt − xt−1 − Ayt = 0, produces a time dependent bid-price vector.
Under this heuristic, itinerary j is accepted at state (t,x) if pj ≥ z′t−1Aj and x ≥ Aj.
Example 3 Table 4.1 provides simulation estimates of the expected revenues of the refine-
ments suggested in this Section. In particular, we resolve both the DLP and the DLP-t, 1, 4
and 10 times (evenly spaced during the horizon) for the data of Example 1. We also provide
estimates of the randomized DLP suggested in [9] under the heading DLP-r. The simulation
estimates are based on 100,000 repetitions of the heuristic. The bid-price heuristic improves as
we move to more frequent resolves, actually overtaking the performance of the PAC heuristic.
This is not unusual as the bid-price heuristic tends to gradually tighten capacity for fares in P .
The DLP-t did not provide a significant increase in profits except for the PAC heuristic with
ten resolves. The randomized versions of the bid-price heuristic did well for 1 and 4 resolves,
but poorly for ten resolves. This observation is consistent with other reports; see de Boer et
al. [3] and Williamson [
13
].
Control 1 4 10
Bid-Price DLP $17,732 $18,519 $19,582
PAC DLP $19,386 $19,438 $19,554
Bid-Price DLP-r $17,736 $19,372 $19,448
PAC DLP-r $18,867 $19,257 $19,429
Bid-Price DLP-t $17,733 $18,325 $19,583
PAC DLP-t $19,337 $19,457 $ 19,569
Table 1: Performance of Bid-Price and PAC heuristics for NDLP and NDLPt
In Example 3 the DLP-t refinement was only marginally better than the DLP. However,
extensive computational experiments in Tong and Topaloglu [11] show that the DLP-t can be
beneficial compared to DLP, especially if the DLP is not resolved frequently.
5 Heuristics that Take Randomness into Account
In addition to bid-price heuristics, researchers and practitioners have also devised heuris-
tics that incorporate randomness. Here we described two such heuristics. If the number of
itineraries is not overwhelmingly large, one can try to use the EMSR-b heuristic or a similar
heuristic for each itinerary to find protection levels for higher fares relative to lower fares. If
the number of itineraries is large, an alternative is to aggregate ODFs into buckets for each
resource and to use EMSR-b or a similar heuristic for each resource. We will now explain
these two heuristics in detail.
10
5.1 Managing Itineraries
If the number of itineraries K is not too large, or at least the number of itineraries with
significant demand is not large, then we can try to improve performance by using a combination
of capacity allocation and single-resource heuristics. More specifically, let ȳk =
∑nk
j=1 ȳkj be
the total capacity that the DLP allocates to itinerary k and consider the problem of allocating
that capacity among fares, pk1 > pk2 > .. . > pknk with Poisson demands ΛTk1, ΛTk2, . . . , ΛTknk
assuming low-to-high arrivals. The output will be protection levels and nested booking limits
for the different fares. The heuristic allows bookings of itinerary k at fare pkj at state (t,x) if
x ≥ Ak and it is within the nested booking limits. If the fare is accepted the sale is recorded
and counted against the nested booking limits.
Example 4 For Example 2, we have three itineraries. Itinerary 1 consumes one unit of
resource 1 and is allocated 60 units of capacity for fares p11 = 150 and p12 = 100. The
expected demands for these two fares over the entire horizon are 30 and 60 respectively. An
EMSR-b analysis shows that we should protect 28 units of capacity for fare p11, resulting
in nested booking limits 60 and 32 = 60-28, respectively, for fares p11 and p12. Itinerary 2
consumes one unit of resource 2 and is allocated 60 units of capacity for fares p21 = 120 and
p22 = 80. The expected demand for these two fares over the entire horizon are 20 and 80
respectively. An EMSR-b analysis shows that we should protect 18 units of capacity for fare
p21, resulting in nested booking limits 60 and 42 = 60-18, respectively, for fare p21 and p22.
Finally, itinerary 3 consumes one unit of each resource and is allocated 30 units of capacity
for fares p31 = 250 and p32 = 170. The expected demands for these fares are 30 and 40.
An EMSR-b analysis shows that we should protect 27 units for fare p31 resulting in nested
booking limits 30 and 3= 30-27, respectively, for fares p31 and p32. The expected revenue was
estimated, through simulation, to be $19,658 or 1.4% better than the PAC heuristic applied
once at the beginning of the horizon.
5.2 Managing Resources
We will use the single index convention to describe the main ideas. Let Ij = {i : Aij > 0}
be the set of resources utilized by ODF j. The net contribution of ODF j to resource i
is defined by subtracting the value of the capacity used by ODF j on all other resources
consumed by ODF j. For any vector of bid prices z ≥ 0, let pij(z) = pj −
∑
l 6=i Aljzl if
i ∈ Ij and pij(z) = 0 otherwise. For each resource i = 1, . . . ,m we can now solve a single
resource revenue management problem with fares pij(z) and arrival rates λij = λj for all
j ∈ Ji = {j : Aij > 0}. Notice that we no longer assume that the fares will arrive low-to-high,
but a robust heuristic is to compute protection levels as if the arrivals are low-to-high and then
use standard, rather than theft nesting. The low-to-high protection levels can be computed
using dynamic programming or a heuristic such as EMSR-b. When a request for ODF j
arrives at state (t,x), the request is accepted if the net fare is accepted for each resource
i ∈ Ij. The problem with a direct implementation of this approach is that there may be too
many different itineraries mapped to resources. Some of these itineraries will have very similar
net contributions and some will have very small demands. A natural idea is to aggregate the
11
itineraries into buckets of similar net contributions and aggregate the demands within each
bucket. The exercise results in a more manageable single resource allocation problem. The
idea of aggregating ODFs into buckets was developed by the Operations Research group at
American Airlines and is known as Displacement Adjusted Virtual Nesting (DAVN). This
method, used in conjunction with z = z̄ combines ideas of bid-prices, to compute net fare
contributions, and ideas of single leg controls. Not surprisingly, the method performs quite
well.
Example 5 Consider the data of Example 2. Suppose that three buckets are defined such
that bucket 1 contains all net fares greater than $120, bucket 2 all fares between $60 and
$120 and bucket 3 all fares below $60. The itineraries that utilize resource 1, under the single
index model, are 1,2,5 and 6 and the net fares for resource 1 are: p11(z̄) = 150,p12(z̄) =
100,p15(z̄) = 170 = 250 − 80,p16(z̄) = 170 − 80 = 90. Accordingly fare 1 and 5 belongs to
bucket 1, with corresponding expected demands 30 and 30. Fares 2 and 6 belong to bucket 2
with corresponding expected demands 60 and 40. We can aggregate fares 1 and 5 of bucket 1
into a single weighted average fare of 160 with aggregate demand 60. Similarly, for bucket 2
we can aggregate fares 2 and 6 into a single weighted average fare of 96 with aggregate demand
100. An EMSR-b calculation reveals that it is optimal to protect 58 units of capacity to bucket
1 and thereby authorize up to 32 units of capacity to book under bucket 2.
We can repeat the procedure for resource 2 and obtain net fares p23(z̄) = 120, p24(z̄) = 80,
p25(z̄) = 250 − 100 = 150 and p26(z̄) = 170 − 100 = 70, with corresponding demands 20, 80,
30 and 40. Clearly fares 3 and 5 map into bucket 1 while fares 4 and 6 map into bucket 2.
We can aggregate fares 3 and 5 of bucket 1 into a single weighted average fare of 138 with
aggregate demand 50. Similarly , for bucket 2 we can aggregate fares 4 and 6 into a single
weighted average fare of 76.67 with aggregate demand 120. An EMSR-b calculation reveals
that it is optimal to protect 48 units of capacity to bucket 1 and thereby authorize up to 42
units of capacity to book under bucket 2. The expected revenues, estimated via simulation, are
$19,785 or 2.0% higher than the PAC heuristic applied once at the beginning of the horizon.
6 Appendix
Proof of Theorems 1 and 2. Proof: We start by analyzing the performance of the bid price
heuristic z̄, we will now construct upper and lower bounds on Vz̄(T,c). Notice that
Γz(T,c) = Rz(T) + z
′(c−Dz(T)) (9)
where
Rz(T) =
K∑
k=1
nk∑
j=1
ΛTkjpkjδ(pkj −z′Ak)
is the expected revenue from an uncapacitated system that admits requests for ODFs kj with
pkj ≥ z′Ak,
Dz(T) =
K∑
k=1
Ak
nk∑
j=1
ΛTkjδ(pkj −z′Ak)
12
is the expected demand for the resources under the same admission control rule, and δ(·)
is the heavyside function that is one if and only if the argument is non-negative. We will
now argue that the second term of Γz̄(T,c) in equation (9) is non-positive. Clearly the terms
with z̄i = 0 do not contribute, so it is enough to show that ci ≤ Dz̄(T)i when z̄i > 0,
but this follows because by complementary slackness ci =
∑K
k=1 Aik
∑nk
j=1 ȳkj for such i and
ȳkj ≤ ΛTkjδ(pk−z̄′Ak), again by complementary slackness. The important conclusion to draw
from this analysis is that V (T,c) ≤ V̄ (T,c) ≤ Rz̄(T).
To construct a lower bound on Vz(T,c) it helps to imagine that management is willing to
charge itself an overbooking cost, say θi for each unit of resource i that is overbooked. If we
use an arbitrary bid price vector z ≥ 0 as an admission control rule without filtering requests
for lack of capacity the expected revenue, net of overbooking costs, is given by
Γz,θ(c,T) = Rz(T) −θ′E(Nz(T) − c)+
where Nz(T) is a Poisson vector with intensity Dz(T). Let θ̄ be a vector with components
θ̄i = max{pkj : Aki > 0} i = 1, . . . ,m.
Clearly θ̄i is the maximum revenue that can accrue from the sale of any ODF that consumes
resource i, but this amount will be charged for each unit of i that is consumed in excess of
capacity ci resulting in the series of inequalities
Rz̄(T) − θ̄′E(Nz̄(T) − c)+ ≤ Vz̄(T,c) ≤ V (T,c) ≤ V̄ (T,c) ≤ Rz̄(T), (10)
that directly imply
V bz̄ (T,c)
V b(T,c)
≥ 1 −
θ̄′E(Nbz̄ (T) − c)+
Rbz̄(T)
(11)
where the superscript b represents a system with demands bλtk and capacity bc scaled up by
a factor b > 1.
Under the assumption that the Ptks in formulation (2) are continuous random variables
that are uniformly bounded, Talluri and van Ryzin [8] use similar arguments and a bound on
partial expectations to show that the right hand side of (11) is of the form 1−O(1/
√
b). Taking
the limit as b → ∞ shows that the ratio of V bz̄ (T,c) to V b(T,c) goes to one. The conclusion
drawn is that under the stated conditions bid-price heuristics are asymptotically optimal. The
bound on partial expectations, see Gallego [4], is E(Z−z)+ ≤ 0.5(
√
σ2 + (z −µ)2−(z−µ)) and
holds for all random variables Z with mean µ and variance σ2. The continuity assumption
was used by Talluri and van Ryzin to show, via the Karush-Kuhn Tucker conditions, that
Dz̄(T) ≤ c. As we have seen, the opposite inequality holds for critical resources (z̄i > 0) when
the distribution of Ptks are discrete. Under the PAC heuristic, expected admitted demands
DPAC(T) =
∑K
k=1 Ak
∑nk
j=1 ȳkj ≤ c and consequently on RPAC(T) = V̄ (T,c). Using the bound
on partial expectations we see that
E(NbPAC(T) − c)
+
i ≤ 0.5
√
b
√
DPAC(T)i
for each i. The result then follows from ERbPAC(T) = bERPAC(T).
13
References
[1] Adelman, D. (2007), Dynamic bid-prices in revenue management, Operations Research
55(4), 647661.
[2] Cooper, W. (2002). Asymptotic behavior of an allocation policy for revenue management.
Oper. Res. 50, 720-727.
[3] de Boer, S. V., R. Freling, N. Piersma (2002). “Mathematical programming for network
revenue management revisited,” Eur. J. Oper. Res, 137, 72-92.
[4] Gallego, G. (1992). A min-max distribution free procedure for the (Q,r) inventory model.
Oper. Res. Letters, 11, 55-60.
[5] Kunnumkal, S. and H. Topaloglu (2010). Computing Time-Dependent Bid Prices in Net-
work Revenue Management Problems. Transportation Science, 44, 38-62.
[6] Maglaras, C. and Meissner J. (2006). Dynamic Pricing Strategies fro Multiproduct Revenue
Management Problems. MSOM, 8, 2, 136-148.
Columbia University.
[7] Jasin, S. and S. Kumar (2010) A Re-solving Heuristic with Bounded Revenue Loss for
Network Revenue Management with Customer Choice. Working paper, Stanford University.
[8] Talluri, K, and G. van Ryzin (1998). An Analysis of Bid-Price Controls for Network
Revenue Management. Management Science, 44, 11, 1577-1593.
[9] Talluri, K and G. van Ryzin (1999) “A Randomized Linear Programming Method for
Computing Network Bid Prices.” Transportation Science, 33, 207-216.
[10] Topaloglu, H. (2007) “On the asymptotic optimality of the randomized linear program
for network revenue management.” Technical report, School of IEOR, Cornell University,
Ithaca, NY, 2007
[11] Tong, C. and Topaloglu, H. (2011) “On Approximate Linear Programming Approaches
for Network Revenue Management Problems.” Working paper, Columbia University.
[12] Reiman, M. and Wang, Q. (2007) “An Asymptotically Optimal Policy for a Quantity-
Based Network Revenue Management Problem.” Working paper, Alcatel-Lucent Bell Labs.
[13] Williamson, E. L. (1992) “Airline network seat inventory control: Methodologies and
revenue impacts,” Ph.D. thesis, Flight Transportation Laboratory, Massachusetts Institute
of Technology, Cambridge, MA.
[14] Vossen, T., and Zhang, D. 2012. “A Dynamic Disaggregation Approach to Approximate
Linear Programs for Network Revenue Management.” Working paper, Leads School of Busi-
ness, University of Colorado at Boulder.
[15] Zhang, D. and D. Adelman (2009). An Approximate Dynamic Programming Approach
to Network Revenue Management with Customer Choice. Transportation Science, 381-394.
14
>Linear Program
Example
evenue
, 0
0
0
0
0
0
0
20 0
30 0 1 1 0 0 1 1 0
0
F 1
0
30 0 100 60 20 50% 0 80 80 0.5 30 0 0
0 30 60 20 80 30 0 100 250 80 00
120 0
100 80 00
006 9
1 1 1 1 1 2 1 1 2 2 9. 3 1 1 3 3 . 4 1 1 4 4 1 1 11 11 1 1 14 14 1 1 16 16 1 1 18 18 1 1 19 19 1 1 21 21 1 1 22 22 1 1 23 23 1 1 24 24 1 1 27 27 1 1 28 28 1 1 31 31 1 1 32 32 1 1 33 33 1 1 34 34 1 1 36 36 1 1 37 37 1 1 39 39 1 1 41 41 1 1 42 42 1 1 44 44 1 1 45 45 1 1 46 46 1 1 47 47 1 1 49 49 1 1 51 51 1 1 52 52 1 1 53 53 1 1 54 54 1 1 55 55 1 1 56 56 9999
9
1 57 1 58 1 59 1 60 0.999999999 1 61 62 1 63 0.9999999999 2
52
0.9999999999 3
1
0.9999999998 14
99
58
008
2 1
1
51
9
9
0.99999998 28
98
6
61
67
1
6 8
94
77
3
02
073
51
83
072
1
2 44
41
7
9
1
4
7 22
59
4
63
5
03
095
5
41
83
5
0 6
5
9 1
5
8 6
15
9
9
74
94
9
84
3
3 8 78
37
8 7 17 6
7 4
65
85
7 90 15
55
06 8
0 24 1
6
8 653
893
7
5
2 6
9 41
009
5
6 1
5 76 111 70 8
90 1453
202 2 7 319
28
7 1 44
66 74
77 2
5 2
8996
6 68
23288
09 3 9
59 3
13
2 9 62
32066
4768
4 2 63
5
23 5
6
3049
8 9
19 28 81 104
1 09 1
1 6
42
4 109 8 36
3 7023
19
6 74
79 18
779
6 37
0 5 55
1 8 282076
7 78 053
899 5 84
0 8014
7537 15 35
21585
49
7 91
5058
9 007
0688 020 2 954
68
0661
24
6 97
4 08
0 7
32 5
782
2
75
1490 9785 0 093404
77817
36 56 7
45
7
9
91
996 4
215
58953
5 32
21
963 7877 5
299
292
64
7 3
11828
95 5
2 144
3 8055967
19 023 1
2874
97 09
2 546
9 2
75 967
0 4
78 3 8 4
79
67 92
3
2
02 1
15
126
6113
71 5
6 8
133
5
4205768
80 759
155497
683 7
3 4
368
95
1 5
1
277
4
4
134
082892
38 71696
928995
254 76819
92228
4
7
77866
4 41
1 8
8
13
44
818093
78748
9 73
44
1
8143
608
4
93 35465
6
954 68 6
8
112877
88
894
0646
90922
670037
3 567
87
06
637 8 41
43
28
27
003068
515
50785
5 5
5
63
54 9
41485
8 4
99256
2174
98
1
1308
9113
15
9
1
031425
28
81
72053
957
546
1
37
8 1
97
68
135
13 1
49
7
150 100 120 80 250 170 30 60 20 80 30 40 0.67 0.68 28 18 27 30 40 20 70 30 0 30 70 20 90 30 30 28 70 18 90 27 30 6.00% 8.00% 3.00% 70 42 90 72 30 3 Nest LP 0 0 0 0 0 0 Revenue Revenue 1000 .13
,701.26
.00
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 $ – 0 SFO-DEN Discount DEN-STL Full Fare DEN-STL Discount SFO-STL Full Fare SFO-STL Discount >Sensitivity Report .1 Sensitivity Report
Worksheet: [Networkexmaple_ AVN
.xls] /2 : :1 AM
s
inal
0
0 0 0 0 30 0 0 30 0 20 40 40 0 30 0
0 0 0
30 Linear Program 0.00
0
100 80 0
0
for ODF 1
DAVN 1 120 100 120 80 60 100 1
60 0
.00
17 9
0.6 Fare Demand Bucket NLF Bucket 100 .00
90 F 30 150 1 0 50 .00
55555 F 120 20 120 1 120 . 90 0 0 F 30 1 1 150 1 40 90 2 70 2 00
Bucket1 0 0 0 00
0 0 0 0 0 0 0
30 150 0 0 0 0 0 0 0 60 Total: 50 0
0 0 0 0 0 0 0 0 0 00
0 0 0 0 0 0 00
40 70 00
6666 0 0 0 0 0 0 100 120 0.03 0 Nest LP 0 0 0 0 0 0 Revenue Revenue Revenue 1000 1000 ,0 . ,9 .80
3. .00
.00
.00
0.00
5.66
3.62
3. ,9 .13
, .26
3, 8.06
90
0.00
0.00
0.00
.00
.00
0.00
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Submitted to Operations Research A General Attraction Model and Sales-based Linear Customer Choice
Guillermo Gallego 1 0027,
gmg2@columbia.edu
Richard Ratliff and Sergey Shebalov This paper addresses two concerns with the state of the art in network revenue management with dependent
demands. The first concern is that the basic attraction model (BAM), of which the multinomial logit (MNL)
model is a special case, tends to overestimate demand recapture in practice. The second concern is that the
choice based deterministic linear program, currently in use to derive heuristics for the stochastic network
revenue management problem, has an exponential number of variables. We introduce a generalized attraction
model (GAM) that allows for partial demand dependencies ranging from the BAM to the independent
demand model (IDM). We also provide an axiomatic justification for the GAM and a method to estimate its
parameters. As a choice model, the GAM is of practical interest because of its flexibility to adjust product-
specific recapture. Our second contribution is a new formulation called the Sales Based Linear Program
(SBLP) that works for the GAM. This formulation avoids the exponential number of variables in the earlier
choice-based network RM approaches, and is essentially the same size as the well known LP formulation
for the IDM. The SBLP should be of interest to revenue managers because it makes choice-based network
RM problems tractable to solve. In addition, the SBLP formulation yields new insights into the assortment
problem that arises when capacities are infinite. Together these two contributions move forward the state of
the art for network revenue management under customer choice and competition .
Key words : pricing, choice models, network revenue management, dependent demands, O&D, upsell,
recapture
1. Introduction
One of the leading areas of research in revenue management (RM) has been incorporating dem and
dependencies into forecasting and optimization models. Developing effective models for suppliers
to estimate how consumer demand is redirected as the set of available products changes is critical
1
Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization in determining the revenue maximizing set of products and prices to offer for sale in industries
where RM is used. These industries include airlines, hotels, and car rental companies, but the issue
of how customers select among different offerings is also important in transportation, retailing and
healthcare. Several terms are used in industry to describe different types of demand dependen-
cies. If all products are available for sale, we observe the first-choice, or natural, demand, for each
of the products. However, when a product is unavailable, its first-choice demand is redirected to
other available alternatives (including the ‘no-purchase’ alternative). From a supplier’s perspective,
this turned away demand for a product can result in two possible outcomes: ‘spill’ or ‘recapture’.
Spill refers to redirected demand that is lost to competition or to the no-purchase alternative, and
recapture refers to redirected demand that results in the sale of a different available product. Depen-
dent demand RM models lead to improved revenue performance because they consider recaptured
demand that would otherwise be ignored using traditional RM methods that assume independent
demands. The work presented in this paper provides a practical mechanism to incorporate both
of these effects into the network RM optimization process through use of customer-choice models
(including methods to estimate the model parameters in the presence of competition).
An early motivation for studying demand dependencies was concerned with incorporating a
special type of recapture known as ‘upsell demand’ in single resource RM problems. Upsell is
recapture from closed discount fare classes into open, higher valued ones that consume the same
capacity (called ‘same-flight upsell’ in the airline industry). More specifically, there was a perceived
need to model the probability that a customer would buy up to a higher fare class if his preferred fare
was not available. The inability to account for upsell demand makes the widely used independent
demand model (IDM) too pessimistic, resulting in too much inventory offered at lower fares and
in a phenomenon known as ‘revenue spiral down’; see Cooper et al. (2006). To our knowledge, the
first authors to account for upsell potential in the context of single resource RM were Brumelle
et al. (1990) who worked out implicit formulas for the two fare class problem. A static heuristic
was proposed by Belobaba and Weatherford (1996), who made fare adjustments while keeping
the assumption of independent demands. Talluri and van Ryzin (2004) develop the first stochastic Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization dynamic programming formulation for choice-based, dependent demand for the single resource case.
Gallego, Ratliff and Li (2009) developed heuristics that combined fare adjustments with dependent
demand structure for multiple fares that worked nearly as well as solving the dynamic program of
Talluri and van Ryzin (2004). Their work suggest that considering same-flight upsell has significant
revenue impact, leading to improvements ranging from 3-6%.
For network models, in addition to upsell, it is also important to consider ‘cross-flight recapture’
that occurs when a customer’s preferred choice is unavailable, and he selects to purchase a fare
on a different flight instead of buying up to a higher fare on the same flight. Authors that have
tried to estimate upsell and recapture effects include Andersson (1998), Ja et al. (2001), and Ratliff
et al. (2008). In markets in which there are multiple flight departures, recapture rates typically
range between 15-55%; see Ja et al. (2001). Other authors have dealt with the topic of demand
estimation from historical sales and availability data. The most recent methods use maximum like-
lihood estimation techniques to estimate primary demands and market flight alternative selection
probabilities (including both same-flight upsell and cross-flight recapture); for details, see Vulcano
et al. (2012), Meterelliyoz (2009) and Newman, Garrow, Ferguson and Jacobs (2010).
Most of the optimization work in network revenue management with dependent demands is based
on formulating and solving large scale linear programs that are then used as the basis to develop
heuristics for the stochastic network revenue management (SNRM) problem; e.g. see Bront et al.
(2009), Fiig et al. (2010), Gallego et al. (2004), Kunnumkal and Topaloglu (2010), Kunnumkal
and Topaloglu (2008), Liu and van Ryzin (2008), and Zhang and Adelman (2009). Note that
preliminary versions of Fiig et al. (2010) were discussed as early as 2005, and the method is one
of the earliest practical heuristics for incorporating dependent demands into SNRM optimization.
However, as described in section 5.4, the applicability of the approach requires severe assumptions
and is restricted to certain special cases and fundamentally differs from the discrete choice models
described in this paper.
Our paper makes two main contributions. The first contribution is to discrete choice modeling
and should be of interest both to people working on RM, as well as to others with an interest Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization in discrete choice modeling. The second contribution is the development of a tractable network
optimization formulation for dependent demands under the aforementioned discrete choice model.
Our first contribution is a response to known limitations of the multinomial choice model (MNL)
which is often used to handle demand dependencies. The MNL developed by McFadden (1974) is a
random utility model based on independent Gumbel errors, and a special case of the basic attraction
model (BAM) developed axiomatically by Luce (1959). The BAM states that the demand for a
product is the ratio of the attractiveness of the product divided by the sum of the attractiveness
of the available products (including a no purchase alternative). This means that closing a product
will result in spill, and a portion of the spill is recaptured by other available products in proportion
to their attraction values. In practice, we have seen situations where the BAM overestimates or
misallocates recapture probabilities. In a sense, one could say that the BAM tends to be too
optimistic about recapture. In contrast, the independent demand model (IDM) assumes that all
demand for a product is lost when the product is not available for sale. It is fair to say, therefore,
that the IDM is too pessimistic about recapture as all demand spills to the no-purchase alternative.
To address these limitations, we develop a generalized attraction model (GAM) that is better at
handling recapture than either the BAM or the IDM. In essence, the GAM adds flexibility in
modeling spill and recapture by making the attractiveness of the no-purchase alternative a function
of the products not offered. As we shall see, the GAM includes both the BAM and the IDM as
special cases. We justify the GAM axiomatically by generalizing one of the Luce Axioms to better
control for the portion of the demand that is recaptured by other products. We show that the GAM
also arises as a limiting case of the nested logit (NL) model where the offerings within each nest
are perfectly correlated. In its full generality, the GAM has about twice as many parameters than
the BAM. However, a parsimonious version is also presented that has only one more parameter
than the BAM.
We adapt and enhance the Expectation-Maximization algorithm (henceforth EM algorithm)
developed by Vulcano et al. (2012) for the BAM to estimate the parameters for the GAM , with
the estimates becoming better if the firm knows its market share when it offers all products. The Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization estimation requires only data from the products offered by the firm and the corresponding selections
made by customers.
Our second main contribution is the development of a new formulation for the network revenue
management problem under the GAM. This formulation avoids the exponential number of variables
in the Choice Based Linear Program (CBLP) that was designed originally for the BAM; see Gallego
et al. (2004). In the CBLP, the exponential number of variables arises because a variable is needed to
capture the amount of time each subset of products is offered during the sales horizon. The number
of products itself is usually very large; for example, in airlines, it is the number of origin-destination
fares (ODFs), and the number of subsets is two raised to the number of ODFs for each market
segment. This forces the use of column generation in the CBLP and makes resolving frequently
or solving for randomly generated demands impractical. We propose an alternative formulation
called the sales based linear program (SBLP), which we show is equivalent to the CBLP not only
under the BAM but also under the GAM. Due to a unique combination of demand balancing and
scaling constraints, the new formulation, has a linear rather than exponential number of variables
and constraints. This provides important practical advantages because the SBLP allows for direct
solution without the need for large-scale column generation techniques. We also show how to
recover the solution to the CBLP from the SBLP. We show, moreover, that the solution to the
SBLP is a nested collection of offered sets together with the optimal proportion of time to offer
each set. The smallest of these subsets is the core, consisting of products that are always offered.
Larger subsets typically contain lower-revenue products that are only offered part of the time.
Offering these subsets from the largest to the smallest in the suggested portions of the time over
the sales horizon provides a heuristic to the stochastic version of the problem. Moreover, the ease
with which we can compute the optimal offered sets from the SBLP formulation allow us to resolve
the problem frequently and update the offer sets. In addition, other heuristics proposed by the
research community, e.g., Bront et al. (2009), Kunnumkal and Topaloglu (2010), Kunnumkal and
Topaloglu (2008), Liu and van Ryzin (2008), Talluri (2012), and Zhang and Adelman (2009), can
benefit from the ability to quickly solve large scale versions of the CBLP and SBLP formulations. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization The solution to the SBLP also provides managerial insights into the assortment problem (a special
case that arises when capacities are infinite).
The remainder of this paper is organized as follows. In §2 we present the GAM as well as
two justifications for the model. We then present an expectation-maximization (E-M) algorithm
to estimate its parameters. In §3 we present the stochastic, choice based, network revenue
management problem. The choice based linear program is reviewed in section §4. The new,
sales based linear program is presented in §5 as well as examples that illustrate the use of the
formulation. The infinite capacity case gives rise to the assortment problem and is studied in §6.
Our conclusions and directions for future research are in §7.
2. Generalized Attraction Model
For several decades, most revenue management systems operated under the simplest type of cus-
tomer choice process known as the independent demand model (IDM). Under the IDM, demand for
any given product is independent of the availability of other products being offered. So if a vendor
is out-of-stock for a particular product (or it is otherwise unavailable for sale), then that demand
is simply lost (to the no-purchase alternative); there is no possibility of the vendor recapturing
any of those sales to alternate products because the demands are treated as independent. Many
practitioners recognized that ignoring such demand interactions lacked realism, but efforts to incor-
porate upsell heuristics into RM optimization processes were hampered by practical difficulties in
estimating upsell rates. It was widely feared that, without a rigorous foundation for estimating
upsell, the use of such heuristics could lead to an overprotection bias in the inventory controls (and
consequent revenue losses). By the late 1990’s, progress on dependent demand estimation methods
began to be made. van Ryzin, Talluri and Mahajan (1999) presented excellent arguments for the
integration of discrete choice models into RM optimization processes, and initial efforts to apply
this approach focused on the multinomial logit model (MNL) which is a special case of the basic
attraction model (BAM) discussed next. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Under the BAM, the probability that a customer selects product j ∈ S when set S ⊂ N =
{1,.. .,n} is offered, is given by
πj(S) = v0 + V (S)
, (1)
where V (S) = j∈S vj. The vj values are measures of the attractiveness of the different choices,
embodied in the MNL model as exponentiated utilities (vj = e parameter that is inversely related to the variance of the Gumbel distribution). The no-purchase
alternative is denoted by j = 0, and π0(S) is the probability that a customer will prefer not to
purchase when the offer set is S. One could more formally write πj(S+) instead of πj(S) since
the customer is really selecting from S+. However, we will refrain from this formalism and follow
the convention of writing πj(S) to mean πj(S+). Also, unless otherwise stated, S ⊂ N and the
probabilities πj(S) refer to a particular vendor. In discrete choice models, a single vendor is often
implicitly implied. However, in some of our discussions below, we will allow for multiple vendors.
In the case of multiple vendors, the probabilities πj(S) j ∈S, will depend on the offerings of other
vendors. There is considerable empirical evidence that the BAM may be optimistic in estimating recapture
probabilities. 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, leave without purchasing,
or go to another store and look for the 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.
We will propose a generalization of the BAM , called the General Attraction Model (GAM) to
better deal with the consequences of not offering a product. Before presenting a formal definition
of the GAM, we will present a simple example and will revisit the red-bus, blue-bus paradox (Ben-
Akiva and Lerman (1994)). Suppose there are two products with attraction values v1 = v2 = v0 = 1.
Under the BAM, πk({1,2}) = 1/3 for k = 0,1,2. Eliminating choice 2 results in πk({1}) = 50% for Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization k = 0,1, so one half of the demand for product 2 is recaptured by product 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. 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 can now select between the no-purchase alternative (v0 = 1), product 1 (v1 = 1), and
product 2’ (w2 = 0.5), so the probabilities of purchase from the store offering only product 1 are
now
π0({1}) = 2.5 1 2.5 By including 2’ as a latent alternative, the probability of choosing product 1 has decreased from
50% under the BAM to 40%. However, this probability is still higher than that of the independent
demand model (IDM) which is 33.3%. So the GAM allows us to obtain estimates that are in-between
the BAM and the IDM by considering product specific shadow attractions. This formulation may
also help with inter-temporal choices, where a choice j /∈S+ may become available at a later time.
In this case wj is the shadow attraction of choice j discounted by time and the risk that it may
not be available in the future. Notice that this formulation is different from what results if we use
the traditional approach of viewing a product and location as a bundle. Indeed, including product
2’ with attraction w2 = 0.5, results in choice set {1,2,2′} for the customer when the vendor offers
assortment {1,2}. This results in π1({1,2,2′}) = 1/3.5 6= 1/3. The problem with this approach, in
terms of the MNL, is that an independent Gumbel random variable is drawn to determine the
random utility of product 2’.
Under the red-bus, blue-bus paradox, a person has a choice between driving a car and taking
either a red or blue bus (it is implicitly assumed that both buses have ample capacity and depart
at the same time). Let v1 represent the direct attractiveness of driving a car and let v2,w2 repre-
sent, respectively, the attraction and the shadow attraction of the two buses. If w2 = v2 then the
probabilities are unchanged if one of the buses is removed (as one intuitively expects because there
are essentially zero search costs in finding a comparable bus). The model with w2 = 0 represents Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization the case where there is no second bus. The common way to deal with the paradox is to use a nested
logit (NL) model. Under the NL model used to resolve the paradox, a person first selects a mode
of transportation and then one of the offerings within each mode. We are able to avoid the use of
the NL model, but as we shall see later, our model can be viewed as a limit of a NL model.
To formally define the GAM let S̄ = {j ∈N : j /∈S} be the complement of S in N = {1,.. .,n}.
In addition to the attraction values vj, there are shadow attraction values wj ∈ [0,vj],j ∈N such
that for any subset S ⊂N
πj(S) = v0 + W(S̄) + V (S)
j ∈S, (2)
where for any R ⊂ N, W(R) = j∈R wj. Consequently, the no-purchase probability is given by
π0(S) = (v0 + W(S̄))/(v0 + W(S̄) + V (S)). In essence, the attraction value of the no-purchase
alternative has been modified to be v0 + W(S̄).
An alternative, perhaps simpler, way of presenting the GAM by using the following transforma-
tion: ṽ0 = v0 + W(N) and ṽj = vj −wj,j ∈N. For S ⊂N, let Ṽ (S) = j∈S ṽj. With this notation
the GAM becomes:
πj(S) = ṽ0 + Ṽ (S) where πS(S) = j∈S πj(S). Notice that all choice probabilities are non-negative as long as ṽj =
vj −wj ≥ 0 and ṽ0 = v0 + j∈N wj > 0, which holds when v0 > 0 and wj ∈ [0,vj] for all j ∈N.
The case wk = 0,k ∈N recovers the BAM, because ṽ0 = v0 and ṽj = vj,j ∈N. In contrast, the
case wk = vk,k ∈N, results in ṽ0 + Ṽ (S) = v0 + V (N) for all offered sets S ⊂N. The probability
πj(S), of selecting product j is independent of the set S containing j, resulting in the independent
demand model (IDM).
The parsimonious formulation P-GAM is given by wj = θvj ∀j ∈N for θ ∈ [0,1] can serve to
test H0 : θ = 0 vs H1 : θ > 0 to see whether the BAM applies or to test H0 : θ = 1 against H1 : θ < 1,
to see whether the IDM applies. If either of these tests fail, then a GAM maybe a better fit to the
data. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization We provide two justifications for the GAM. The first justification is Axiomatic. The second
is a limiting case of the nested logit (NL) model. Readers who are not interested in the formal
derivation of the GAM can skip to section 2.4 for a method to estimate the GAM parameters.
2.1. Axiomatic Justification
Luce (1959) proposed two choice axioms. To describe the axioms under the assumption that the
no-purchase alternative is always available we will use the notation πS+ (T) = j∈S+ S ⊂T and will use set difference notation T −S = T ∩ S̄ to represent the elements of T that are
not in S. The Luce axioms are given by :
• 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}).
The most celebrated consequence of the Luce Axioms, due to Luce (1959), is that πi(S) satisfies
the Luce Axioms if and only if there exist attraction values vj,j ∈N+ such that equation (1) holds.
Since its original publication, the paper Luce (1959) has been cited thousands of times. Among
the most famous citations, we find the already mentioned paper by McFadden (1974) that shows
that the only random utility model that is consistent with the BAM is the one with independent
Gumbel errors. An early paper by Debreu (1960), criticizes the Luce model as it suffers from the so
called independence of irrelevant alternatives (IIA). The IIA states the relative preference between
two alternatives does not change as additional alternatives are added to the choice set. Debreu,
however, suggests that the addition of an alternative to an offered set hurts alternatives that are
similar to the added alternative more than those that are dissimilar to it. To illustrate this, Debreu
provides an example that is a precursor to the red-bus, blue-bus paradox based on the choice
between three records: a suite by Debussy, and two different recordings of the same Beethoven Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization symphony. Another famous paper by Tversky (1972), criticizes both the Luce model as well as all
random utility models that assume independent utilities for their inability to deal with the IIA.
Tversky offers the elimination by aspects theory as a way to cope with the IIA. Others, such as n
Domenich and McFadden (1975) and Williams (1977), have turned to the nested logit (NL) model
as an alternative way of dealing with the IIA. Under a nested logit model, for example, a person
will first chose between modes of transportation (car or bus) before selecting a particular car or
bus color.
To our knowledge no one has altered the Luce Axioms with the explicit goal of modifying the
recapture probabilities. Yellott (1977), however, gives a characterization of the Luce model by an
axiom which he called invariance under uniform expansion of the choice set, which is weaker than
Luce’s Axiom but implies Luce’s Axiom when the choice model is assumed to be an independent
random utility model. The reader is also refereed to Dagsvik (1983), who expands Yellott’s ideas
to choices made over time.
Notice that Axiom 1 holds trivially for R = ∅ since π∅(S) = 0 for all S ⊂N. For ∅ 6= R⊂S the
formula can be written as the ratio of the demand captured by R when we add T −S to S. The
ratio is given by
πR(T)
πR(S) and is independent of R⊂S. Our goal is to generalize Axiom 1 so that the ratio remains indepen-
dent of R⊂S but in such a way that we have more control over the proportion of the demand that
goes to T −S. This suggests the following generalization of Axiom 1.
• Axiom 1’: If πi({i}) ∈ (0,1) for all i∈T, then for any ∅ 6= R⊂S ⊂T
πR(T) πR(S) ∑ (1−θj)πj(T)
for some set of values θj ∈ [0,1],j ∈N.
We will call the set of Axioms 1’ and 2 the Generalized Luce Axioms (GLA). We can think of
θj ∈ [0,1] as a relative measure of the competitiveness of product j in the market place. The next Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization result states that a choice model satisfies the GLA if and only if it is a GAM and links θj to the
ratio of wj to vj.
Theorem 1. A choice model πi(S) satisfies the GLA if and only if it is of the GAM form. More-
over, wj = θjvj for all j ∈N.
A proof of this theorem may be found in the Appendix. Notice that it is tempting to relax the
constraint wj ≥ 0 as long as ṽ0 > 0. However, this relaxation would lead to a violation of Axiom 2.
2.2. GAM as Limit of Nested Logit Model under Competition
We now show that the GAM also arises as the limit of the nested logit (NL) model. The NL model
was originally proposed in Domenich and McFadden (1975), and later refined in McFadden (1978),
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 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 correspond to individual products offered in the
market. Customers first select a product, and then one of the vendors offering the selected product. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 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) =
(∑ v 1/γi )γi ∑ (∑ v )γk v1/γiij∑ v , (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 vij’s are not raised to the power 1/γi. This is sometimes done for convenience
by simply redefining vkl ←v are fixed. However, the normalized model presented here is consistent with random utility models,
see Train (2002), 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 vendor 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 γi ↓ 0 for all i is a GAM. More precisely, there are attraction
values akj, ãkj ∈ [0,akj], and ã0j ≥ 0, such that the discrete choice model for vendor j is given by
πi(Sj) = ã0j + k∈Sj ∀i∈Sj. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 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 select 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.3. Limitation and Heuristic Uses of the GAM
One limitation of the GAM as we propose it is that, in practice, the attraction and shadow attrac-
tion values may depend on a set of covariates that may be customer or product specific. This can be
dealt with either by assuming a latent class model on the population of customers or by assuming
a customer specific random set of coefficients to capture the impact of the covariates. This results
in a mixture of GAMs. The issues also arise when using the BAM. In practice, often a single BAM
is used to try to capture the choice probabilities of customers that may come from different market
segments. This stretches both models, as this should really be handled by adding market seg ments.
However the GAM can cope much better with this situation as the following example illustrates.
Example 1: Suppose there are two stores (denoted l), and each store attracts half of the
population. We will assume that there are two products (denoted k) and that the GAM parameters
vlk and wlk for the two stores are as given in Table 1: Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization v10 v11 v12 v20 v21 v22 1 1 1 1 0.9 0.9 Table 1 Attraction Values (v,w)
With this type of information we can use the GAM to compute choice probabilities πj(S) that
a customer will purchase product j ∈S from Store 1 when Store 1 offers set S, and Store 2 offers
set R = {1,2}. Suppose Store 1 has observed selection probabilities for different offer sets S as
provided in Table 2:
S π0(S) π1(S) π2(S) Table 2 Observed πj (S,R) for R = {1,2}
To estimate these choice probabilities using a single market GAM we found the values of
vk,wk,k = 1,2 with v0 = 1 that minimizes the sum of squared errors of the predicted probabilities.
This results in the GAM model: v0 = 1, v1 = v2 = 0.25, w1 = 0.20 and w2 = 0.15. This model per-
fectly recovers the probabilities in Table 2. However, when limited to the BAM, the largest error
is 1.97% in estimating π0({1,2}).
This improved ability to fit the data comes at a cost because the GAM requires estimating w in
addition to v. As we will see in the next section, it is possible to estimate the v and w from the
store’s offer sets and sales data. We will assume, as in any estimation of discrete choice modeling,
that the same choice model prevails over the collected data set. If this is not the case, then the
estimation should be done over a subset of the data where this assumption holds. As such, we do
not require information about what the competitors are offering, only that their offer sets do not
vary over the data set. This is an implicit assumption made when estimating any discrete choice
model. The output of the estimation provides the store manager an indication of which products
face more competition by looking at the resulting estimates of the ratios θi = wi/vi. Over time, Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization a firm can estimate parametric or full GAM models that take into account what competitors are
offering and then update their choice models dynamically depending on what the competition is
doing.
2.4. GAM Estimation and Examples
It is possible to estimate the parameters of the GAM by refining and extending the Expectation
Maximization method developed by VvRR (Vulcano et al. (2012)) for the BAM. Readers not
interested in estimation can skip to Section 3. We assume that demands in periods t = 1,.. .,T arise
from a GAM with parameters v and w and arrival rates λt = λ for t = 1,.. .,T . The homogeneity
of the arrival rates is not crucial. In fact the method described here can be extended to the case
where the arrival rates are governed by co-variates such as the day of the week, seasonality index,
and indicator variables of demand drivers such as conferences, concerts or other events that can
influence demand. Our main purpose here is show that it is possible to estimate demands fairly
accurately. The data are given by the offer sets St ⊂N and the realized sales zt ⊂Zn+, excluding the
unobserved value of the customers who chose the no-purchase alternative, for t = 1,.. .,T . VvRR
assume that the market share s = πN(N), when all products are offered, is known. While we do
not make this assumption here, we do present results with and without knowledge of s.
VvRR update estimates of v by estimating demands for each of the products in N when some of
them are not offered. To see how this is done, consider a generic period with offer set S ⊂N,S 6= N
and realized sales vector Z = z. Let Xj be the demand for product j if set N instead of S was
offered. We will estimate Xj conditioned on Z = z. Consider first the case j /∈ S. Since Xj is
Poisson with parameter λπj(N), substituting the MLE estimate λ̂ = e estimate X̂j = λ̂πj(N) = πS (S) disregard the information zj. For example, if zj = 0 then we know that the realization of Xj was
zero as customers had product j available for sale. We can think of Xj, conditioned on (S,z) as a
binomial random variable with parameters zj and probability of selection πj(N)/πj(S). In other
words, each of the zj customers that selected j when S was available, would have selected j anyway Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization with probability πj(N)/πj(S). Then X̂j = πj (S) that X̂[1,n] = i=1 e′z πN(N) = λ̂s. We can find X̂0 by treating it as j /∈ S resulting in
X̂0 = πS (S) Proposition 1. (VvRR extended to the GAM): If j ∈S then
X̂j = πj(S) If j /∈S or j = 0 we have
X̂j = πS(S) Moreover, X̂[1,n] = j∈N X̂j = πS (S) VvRR use the formulas for the BAM to estimate the parameters λ,v1,.. .,vn under the assump-
tion that the share s = v(N)/(1 + v(N)) is known. From this they use an E-M method to iterate
between estimating the X̂js given a vector v and then optimizing the likelihood function over v
given the observations. The MLE has a closed form solution so the updates are given by v̂j = X̂j/X̂0
for all j ∈N, where X̂0 = rX̂[1,n] and r = 1/s−1. VvRR use results in Wu (1983) to show that
the method converges. We now propose a refinement of the VvRR method that can significantly
reduce the estimation errors.
Using data (St,zt),t = 1… ,T, VvRR obtain estimates X̂tj that are then averaged over the T
observations for each j. In effect, this amounts to pooling estimators from the different sets by
giving each period the same weight. When pooling estimators it is convenient to take into account
the variance of the estimators and give more weight to sets with smaller variance. Indeed, if we
have T different unbiased estimators of the same unknown parameter, each with variance σ2t , then
giving weights proportional to the inverse of the variance minimizes the variance of the pooled
estimator. Notice that the variance of X̂tj is proportional to 1/πj(St) if j ∈St and proportional to
1/πSt (St) otherwise. Let atj = πj(St) if j ∈St and atj = πSt (St) if j /∈St. We can select the set the
weights for product j as
ωtj = asj Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Our numerical experiments suggests that using this weighting scheme reduces the variance of the
estimators by about 4%.
To extend the procedure to the GAM we combine ideas of the EM method based on MLEs and
least squares (LS). It is also possible to refine the estimates by using iterative re-weighted least
squares (Green (1984) and Rubin (1983)) but our computational experience shows that there is
little benefit from doing this. To initialize the estimation we use formulas for the expected sales
under St,t = 1,. ..,T for arbitrary parameters λ,v and w. More precisely, we estimate E[Ztj] by
λπj(St) = λ v0 + V (S) + W(S̄) We then minimize the sum of squared errors between estimated and observed sales (zts):
T∑ ∑ [ vj −zti subject to the constraints 0 ≤ w ≤ v and λ ≥ 0. This is equivalent to maximizing the likelihood
function ignoring the unobserved values of the no-purchase alternative zt0.
This gives us an initial estimate λ(0),v(0),w(0) and an initial estimate of the market share s(0) =
v(0)(N)/(1 + v(0)(N)). Let r(0) = 1/s(0) − 1. If s is known then we add the constraint v(N) = r =
1/s−1. Given estimates of v(k) and w(k) the procedure works as follows:
E-step: Estimate the first choice demands X̂ estimate of the weights α (k) ∑T X̂ (k) (k) (k)X̂(k)[1,n] and update
the estimates of v by
v X̂ X j ∈N. M-step: Feed v(k+1) together with arbitrary λ and w to estimate sales under St,t = 1,.. .,T and
minimize the sum of squared errors between observed and expected sales over λ and w subject to
w≤v(k+1) and non-negativity constraint to obtain updates λ(k+1), w(k+1) and s(k+1).
The proof of convergence is a combination of the arguments in Wu, as in VvRR, and the fact
that the least squared errors problem is a convex minimization problem. The case when s is known Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization works exactly as above, except that we do not need to update this parameter. The M-step can be
done by solving the score equations:
∑ πi(St)[e ∑ zti = 0 i = 1,.. .,n,
∑ π̂i(St)[e ∑ π̂i(St) = 0 i = 1,.. .,n.
and πSt (St)− e′zt/λ = 0,
where Ai is the set of periods where product i is offered and
π̂i(St) = 1 + V (St) + W(S̄t) This is a system of up to 2n + 1 equations on 2n + 1 unknowns. Attempting to solve the score
equations directly or through re-weighted least squares does not materially improve the estimates
relative to the least square procedure described above.
We now present three examples to illustrate how the procedure works in three different cases:
1) w = 0 corresponding to the BAM, 2) w = θv corresponding to the (parsimonious) p-GAM, and
3) 0 6= w≤v corresponding to the GAM. These examples are based on Example 1 in VvRR. The
examples involve five products and 15 periods where the set N = {1,2,3,4,5} was offered in four
periods, set {2,3,4,5} was offered in two periods, while sets {3,4,5},{4,5} and {5} were each
offered in three periods. Notice that product 5 is always offered making it impossible to estimate
w5. On the other hand, estimates of w5 would not be needed unless the firm planned to not offer
product 5.
In their paper, VvRR present the estimation results for a specific realization of sales zt,t =
1,.. .,T = 15 corresponding to the 15 offer sets St,t = 1,. ..,15. We instead generate 500 simulated
instances of sales, each over 15 periods, and then compute our estimates for each of the 500
simulations. We report the mean and standard deviation of λ, v and either θ or w over the 500 Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization simulations. We feel these summary statistics are more indicative of the ability of the method
to estimate the parameters. We report results when s (historical market share) is assumed to be
known, as in Vulcano et al. (2012), and some results for the case when s is unknown (see 1. in the
endnotes).
Estimates of the model parameters tend to be quite accurate when s is known and the estimation
of λ and v become more accurate when w 6= 0. The results for s unknown tend to be accurate when
w = 0 but severely biased when w 6= 0. The bias is positive for v and w and negative for λ. Since it is
possible to have biased estimates of the parameters but accurate estimates of demands, we measure
how close the estimated demands λ̂π̂i(S) = λ̂ 1+v̂(S)+ŵ(S̄) demands λπi(S), i∈S, S ⊂N and also how close the estimated demands λ̂π̂i(St) i∈St,t = 1,.. .,T
are from sales zti,i∈St,t = 1,.. .,T . These measures are reported, respectively, as the Model Mean
Squared Error (M-MSE ) and the traditional Mean Squared Error (MSE) between the estimates
and the data. Surprisingly the results with unknown s, although strongly biased in terms of the
model parameters, often produce M-MSEs and MSEs that are similar to the corresponding values
when s is known.
Example 2 (BAM) In the original VvRR example, the true value of w is 0. The estimates with
s known and s unknown as well as the true values of the parameters are given in Table 3.
s λ v1 v2 v3 v4 v5 Table 3 Estimated values of λ and v with s known
The MSE and the M-MSE were respectively 247.50 and 58.44, for both the case of s known and
unknown.
Example 3 (P-GAM) For this example v is the same as above but w = θv with θ = 0.20. The
results are given in Table 4. Notice that the estimate of θ is more accurate for the case of s unknown.
Clearly the estimated values with s known are much closer to the actual values. However, the fit
to the model and to data for the case of s unknown is similar to the case of s known. Indeed, the Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization s λ v1 v2 v3 v4 v5 θ Table 4 Estimated values of λ,v and θ with s known
MSE and the M-MSE were respectively 226.2 and 50.37 for the case of s known and 228.54 and
53.84, respectively, for the case of s unknown. This suggests that the parameter values that can be
far from the true parameters and yet have a sufficiently close fit to the model and to the data.
Example 4 (GAM) For this example λ and v are as above, and w = (0.25,0.35,0.15,0.05,0.05).
The results are given in Table 5.
s λ v1 v2 v3 v4 v5 w1 w2 w3 w4 w5 Table 5 Estimated values of λ,v and w with s known and unknown
Notice that the estimated values of λ and v for the case of v known are better under the GAM
than for the case w = 0 or w = θv. The MSE and M-MSE are respectively 204.71 and 48.56 for the
case of s known. The estimates of the parameters are severely biased when s is unknown so are not
reported. However, the MSE and M-MSE were respectively, 203.70 and 54.33, a surprisingly good
fit to data. This again suggests that there is a ridge of parameter values that fit the data and the
model well.
3. Stochastic Revenue Management over a Network
In this section we present the formulation for the stochastic revenue management over a network.
We will assume that there are L customer market segments and that customers in a particular
market segment are interested in a specific set of itineraries and fares (see 2. in the endnotes) from
a set of origins to one or more destinations. For example, a market segment could be morning
flights from New York to San Francisco that are less than $500, or all flights from New York
City to the Mexican Caribbean. Notice that there may be multiple fares with different restrictions
associated with each itinerary. At any time the set of origin-destination-fares (ODFs) offered for Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization sale to market segment l is a subset Sl ⊂Nl,l∈L = {1,.. .,L} where Nl is the consideration set for
market segment l∈L with associated fares plk, for each product k in nest Nl. If the consideration
sets are non-overlapping over the market segments then there is no need to add further restrictions
to the offered sets. This is also true when consideration sets overlap if the capacity provider is free
to independently decide what fares to offer in each market. As an example, round-trips from the
US to Asia are sold both in Asia and the US. If the carrier can charge different fares depending
on whether the customer buys the fare in the US or in Asia, then no further restrictions are
needed. Otherwise, he needs to impose restrictions so that the same set of products is offered in
both markets. One way to handle this is to post a single offer set S at a time, so then use the
projection subsets Sl = S ∩Nl for all markets l that are constrained to offers the same price for
offered fares. Customers in market segment l select from Sl and the no-purchase alternative. We
will abuse notation slightly and write πlk(Sl) to denote the probability of selecting product k∈Sl+
from market segment l. For convenience we define πlk(Sl) = 0 if k /∈Sl+.
The state of the system will be denoted by (t,x) where t is the time-to-go and x is an m-
dimensional vector representing remaining inventories. The initial state is (T,c) where T is the
length of the horizon and c is the initial inventory capacity. For ease of exposition we will assume
that customers arrive to market segment l as a Poisson process with time homogeneous rate λl.
We will denote by J(t,x) the maximum expected revenues that can be obtained from state (t,x).
The Hamilton-Jacobi-Bellman (HJB) equation is given by
∂J(t,x)
∂t λl max ∑ πlk(Sl) (plk −∆lkJ(t,x)) (5)
where ∆lkJ(t,x) = J(t,x)−J(t,x−Alk), where Alk is the vector of resources consumed by k∈Nl
(e.g. flight legs on a connecting itinerary class). The boundary conditions are J(0,x) = 0 and
J(t,0) = 0. Talluri and van Ryzin (2004) developed the first stochastic, choice-based, dependent
demand model for the single resource case in discrete time. The first choice-based, network
formulation is due to Gallego et al. (2004). Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 4. The Choice Based Linear Program
An upper bound J̄(T,c) on the value function J(T,c) can be obtained by solving a deterministic
linear program. The justification for the bound can be obtained by using approximate dynamic
programming with affine functions.
We now introduce additional notation to write the linear program with value function J̄(T,c) ≥
J(T,c). Let πl(Sl) be the nl = |Nl|-dimensional vector with components πlk(Sl),k ∈ Nl. Clearly
πl(Sl) has zeros for all k /∈Sl. The vector πl(Sl) gives us the probability of sale for each fare in Nl
per customer when we offer set Sl. Let rl(Sl) = p ∑ plkπlk(Sl) be the revenue rate per
customer associated with offering set Sl ⊂Nl where pl = (plk)k∈Nl is the fare vector for segment
l∈L. Notice that πl(∅) = 0 ∈ with offering set Sl ⊂Nl where Al is a matrix with columns Alj associated with ODF j ∈Nl.
The choice based deterministic linear program (CBLP) for this model can be written as
J̄(T,c) = max l∈LλlT Sl⊂Nl subject to l∈LλlT Sl⊂Nl Sl⊂Nl αl(Sl) ≥ 0 Sl ⊂Nl l∈L.
(6)
The decision variables are αl(Sl),Sl ⊂ Nl,l ∈L which represent the proportion of time that set
Sl ⊂Nl is used. The case of non-homogeneous arrival rates can be handled by replacing λlT by∫ T ∑ nl decision variables. Gallego et al. (2004) showed that J(T,c) ≤ J̄(T,c)
and proposed an efficient column generation algorithm for a class of attraction models that
includes the BAM. This formulation has been used and analyzed by other researchers including
Bront et al. (2009), Kunnumkal and Topaloglu (2010), Kunnumkal and Topaloglu (2008), Liu and
van Ryzin (2008) and Zhang and Adelman (2009).
5. The Sales Based Linear Program for the GAM
In this section we will present a linear program that is equivalent to the CBLP for the GAM, but
is much smaller in size (essentially the same size as the well known IDM) and easier to solve (as Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization it avoids the need for column generation). The new formulation is called the sales based linear
program (SBLP) because the decision variables are sales quantities. The number of variables in
the formulation is l∈L(nl + 1), where xlk,k = 0,1.. .,nl,l∈L represents the sales of product k in
market segment l. Let the aggregate market demand for segment l be denoted by Λl = λlT,l∈L
(or 0 this notation the formulation of the SBLP is given by:
R(T,c)= max l∈L k∈Nl subject to capacity : l∈L k∈Nl balance : vl0
xl0 +
∑ ṽlk xlk = Λl l∈L
scale : xlk − xl0
vl0 non-negativity: xlk ≥ 0 k∈Nl l∈L
(7)
Theorem 3. If each market segment πlj(Sl) is of the GAM form (2) then J̄(T,c) = R(T,c).
We demonstrate the equivalence of the CBLP and SBLP formulations by showing that the SBLP
is a relaxation of the CBLP and then proving that the dual of the SBLP is a relaxation of the dual
of the CBLP. Full details of this proof may be found in the Appendix.
The intuition behind the SBLP formulation is as follows. Our decision variables represent the
amount of inventory to allocate for sales across ODFs for different market segments. The objective
is to maximize revenues. Three types of constraints are required. The capacity constraints limit
the sum of the allocations. The balance constraints ensure that the sale allocations are in certain
hyperplanes, so when some service classes are closed for sale, the demands for the remaining open
service classes (including the null alternative) changes dependently; they must be modified to offset
the amount of the closed demands. The scale constraints operate on the principle that demands
are rescaled depending on both the availability and the attractiveness of other items in the choice
set.
The decision variables xl0 play an important role in the SBLP. Since the null alternative has
positive attractiveness and is always available, the dependent demand for any service class is Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization upper bounded based on its size relative to the null alternative. The scale constraints imply that
xlk/vlk ≤ xl0/vl0. Therefore, the scale constraints favor a large value of xl0. On the other hand,
the balance constraint can be written as k∈N ṽlkxlk/vlk ≤ Λl − ṽl0xl0/vl0, favoring a small value
of xl0. The LP solves for this tradeoff taking into account the objective function and the capacity
constraint. We will have more to say about xl0 in the absence of capacity constraints in Section 6.
The combination of the balance and scale constraints ensures that GAM properties are compactly
represented in the optimizer and that the correct ratios are maintained between the sizes of each
of the open alternatives.
For the BAM the demand balance constraint simplifies to xl0 + k∈Nl pendent demand case, ṽl0 = vl0 + k∈Nl to xl0 = (vl0/ṽl0)Λl, and the scale constraint becomes xlk ≤ (vlk/ṽl0)Λl,k ∈ Nl, so clearly xl0 +∑ xlk ≤ Λl.
We remark that the CBLP and therefore the SBLP can be extended to multi-stage problems
since the inventory dynamics are linear. This allows for different choice models of the GAM family
to be used in different periods and is the typical approach in practice.
5.1. Recovering the Solution for the CBLP
So we have learned that the SBLP problem is much easier to solve and provides the same revenue
performance as the CBLP. However, there are some circumstances (described later in this section)
in which it is more desirable to use the CBLP solution. The reader may wonder whether it is
possible to recover the solution to the CBLP from the solution to the SBLP. In other words, is it
possible to obtain a collection of offer sets {S : α(S) > 0} that solves the CBLP from the solution
xlk,k ∈Nl,l ∈L of the SBLP? The answer is yes, and the method presented here for the GAM
is inspired by Topaloglu et al. (2011) who used our SBLP formulation and presented a method
to recover the solution to the CBLP for the BAM. When used with the GAM, recovering the
CBLP solution is important because solutions in terms of assortments tend to be more robust then
solutions in terms of sales. Indeed, our experience is that when GAM parameters are estimated, Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization the solution in terms of sales can be fairly far from the solution with known parameters, whereas
the solution in terms of assortments tends to be much closer.
In this section we will show how to obtain the solution of the CBLP from the SBLP and will also
show that for each market segment the offered sets are nested in the sense that there exist subsets
Slk increasing in k with positive weights. The products in the smallest set are core products that
are always offered. Larger sets contain additional products that are only offered part of the time.
The sorting of the products is not by revenues, but by the ratio of xlk/vlk for all k∈Nl ∪{0} for
each l∈L. We then form the sets Sl0 = ∅ and Slk = {1,. ..,k} for k = 1,.. .,nl, where nl = |Nl| is
the cardinality of Nl. For k = 0,1,.. .,nl, let
αl(Slk) =
( ) Λl where for convenience we define xl,nl+1/vl,nl+1 = 0. Set αl(Sl) = 0 for all Sl ⊂Nl not in the col-
lection Sl0,Sl1,.. .,Slnl . It is then easy to verify that αl(Sl) ≥ 0, that Sl⊂Nl Sl⊂Nl are satisfied, and the objective function coincides with that of the SBLP. Notice that for each
market segment the offered sets are nested Sl0 ⊂Sl1 ⊂ .. .⊂Slnl , and that set Slk is offered for a
positive fraction of time if and only if xlk/vlk > xl,k+1/vl,k+1. Unlike the BAM and the IDM, the
sorting order of products under the GAM is not necessarily revenue ordered. This is because fares
that face more competition (wlj close to vlj) are more likely to be offered even if their corresponding
fares are low.
5.2. Bounds and Numerical Examples
In this section we present two results that relate the solutions to the extreme cases w = 0 and w = v
to the case 0 ≤w≤v. The proofs of the propositions are in the Appendix.
The reader may wonder whether the solution that assumes wj = 0 for all j ∈N is feasible when
wj ∈ (0,vj) j ∈N . The following proposition confirms and generalizes this idea. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Proposition 2. Suppose that αl(Sl),Sl ⊂ Nl,l ∈L is a solution to the CBLP for the GAM for
fixed vlk,k ∈Nl+,l∈L and wlk ∈ [0,vlk],k ∈Nl,l∈L. Then αl(Sl),Sl ⊂Nl,l∈L is a feasible, but
suboptimal, solution for all GAM models with w′lk ∈ (wlk,vlk],k∈Nl,l∈L.
An easy consequence of this proposition is that if αl(Sl),l ∈L is an optimal solution for the
CBLP under the BAM, then it is also a feasible, but suboptimal, solution for all GAMs with
wk ∈ (0,vk]. This implies that the solution to the BAM is a lower bound on the revenue for the
GAM with wk ∈ (0,vk] for all k.
As mentioned in the introduction, the IDM underestimates demand recapture. As such optimal
solutions for the SBLP under the IDM are feasible but suboptimal solutions for the GAM. The
following proposition generalizes this notion.
Proposition 3. Suppose that xlk,k ∈Nl,l∈L is an optimal solution to the SBLP for the GAM
for fixed vlk,k∈Nl+ and wlk ∈ [0,vlk],k∈Nl,l∈L. Then xlk,k∈Nl+,l∈L is a feasible solution for
all GAM models with w′lk ∈ [0,wlk],k∈Nl,l∈L with the same objective function value.
An immediate corollary is that if xlk,k ∈Nl,l∈L is an optimal solution to the SBLP under the
independent demand model then it is also a feasible solution for the GAM with wk ∈ [0,vk] with
the same revenue as the IDM. This implies that the solution to the IDM is another lower bound
on the GAM with wk ∈ [0,vk] for all k.
Example 5: The following example problem was originally reported in Liu and van Ryzin (2008).
There are three flights AB,BC and AC. All customers depart from A with destinations to either
B or C. The relevant itineraries are therefore AB,ABC and AC. For each of these itineraries
there are two fares (high and low) and three market segments. Market segment 1 are customers
who travel to B. Market segment 2 are customers who travel to C but only at a high fare. Market
segment 3 are customers who travel to C but only at the low fare. The six fares as well as vlj,j ∈Nl
and vl0 for l = 1,2,3 are given in Table 6. The arrivals are uniformly distributed over a horizon of
T = 15, and the expected market sizes are Λ1 = 6,Λ2 = 9,Λ3 = 15 and that capacity c = (10,5,5)
for flights AB, BC and AC. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 1 2 3 4 5 6 0 Fares $1,200 $800 $600 $800 $500 $300 (AChigh,v2j) 10 5 5 Table 6 Market Segment and Attraction Values v
In this example we will consider the parsimonious p-GAM model wlj = θvlj for all j ∈ Nl,l ∈
{1,2,3} for values of θ ∈ [0,1]. We will assume that the vlj values are known for all j ∈ Nl,l ∈
{1,2,3}, but the BAM and the IDM use the extreme values θ = 0 and θ = 1, while the GAM uses
the correct value of θ. This situation may arise if the model is calibrated based on sales when all
products are offered, e.g., Sl = Nl for all l∈{1,2,3}. The objective here is to study the robustness
of using the BAM and the IDM to the p-GAM for values of θ ∈ (0,1). The situation where the
parameters are calibrated from data that includes recapture will be presented in the next example.
The solution to the CBLP for the BAM is given by α({1,2,3}) = 60%, α({1,2,3,5}) = 23.3% and
α({1,2,3,4,5}) = 16.7% with α(S) = 0 for all other subsets of products. Equivalently, the solution
spends 18, 7 and 5 units of time, respectively, offering sets {1,2,3}, {1,2,3,5} and {1,2,3,4,5}. The
solution results in $11,546.43 in revenues (see 3. in the endnotes). By Proposition 2, the solution
α({1,2,3}) = 60%, α({1,2,3,5}) = 23.3%, α({1,2,3,4,5}) = 16.7% is feasible for all θ∈ (0,1] with a
lower objective function value. The corresponding SBLP solution is shown in Table 7 and provides
the same revenue outcome as the CBLP.
1 2 3 4 5 6 0 (AChigh,x2j) 4.50 2.25 2.25 $7,200.00 Total 4.50 2.25 4.29 0.50 2.75 0.0 15.71 $11,546.43 The case θ = 1 corresponds to the IDM. The solution to the SBLP for the IDM and the cor-
responding revenue is given in Table 8. By Proposition 3, the solution to the IDM is a feasible
solution for all θ∈ [0,1) with the same objective value function. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 1 2 3 4 5 6 0 (AChigh,x2j) 4.50 2.25 2.25 $7,200.00 Total 4.50 2.25 2.00 0.50 2.75 3.00 9.05 $11,075.00 R en $10,100
$10,200
$10,300
$10,400
$10,500
$10,600
$10,700
$10,800
$10,900
$11,000
$11,100
$11,200
$11,300
$11,400
$11,500
$11,600
Theta
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Legend
gam bam idm
Figure 1 GAM, BAM and IDM Revenue for Known θ ∈ [0,1] Values
Figure 1 shows how the two extreme solutions (CBLP for θ = 0) and (SBLP for θ = 1) perform
for the attraction values given in Table 6 when the true model is GAM with θ∈ (0,1). Notice that
the BAM solution does well only for small values of θ, say θ≤ 20% and performs poorly for large
values of θ. Indeed, the BAM solution gives up about 10% of the optimal profits at the extreme
value of θ = 1. The case θ = 1 corresponds to the independent demand model, and in this case
the BAM anticipates demand recapture when there is none. A related finding was reported by
Hartmans (2006) of Scandinavian Airlines; his simulation studies showed clear positive revenue
potential of including recapture effects, but assuming strong recapture in cases where it does note
exist can lead to revenue losses. The solution for the IDM gives up significant profits only for small
values of θ. In particular, the IDM solution loses over 4% of the optimal profits for θ = 0 but less Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization than 0.25% of profits for θ≥ 40%.
The optimal value function for the GAM is only marginally better than the maximum of the
value functions for the BAM and the IDM. Notice that these results apply to the special case of the
p-GAM, where all products in the choice set have had their shadow attractions downgraded by the
same relative amount. In a more typical application, only products that face competition will have
positive shadow attractions, so we expect the revenue differences between the BAM and GAM not
to be as large as in Example 5. Nonetheless, the example does highlight the asymmetry of revenue
performance associated with overestimating versus underestimating recapture probabilities.
Example 6: One may wonder how the three models would compare, if the attraction values in
Example 5 were estimated from data. Estimating the parameters would give the BAM and the
IDM more flexibility to compensate for using the wrong value of θ. On the other hand, the burden
of estimating a p-GAM as either a BAM or an IDM, can put stress on the estimated parameter.
It is not clear, therefore, whether the gaps suggested by Figure 1 are indicative of the difference
in performance when the parameters need to be estimated. On the other hand, the GAM has one
more parameter to estimate. What is important, therefore is to ascertain whether the GAM can
result in significant improvements over the BAM and IDM, and whether the gaps are smaller or
larger than those in the figure.
We tested this for three values of θ: 0.1, 0.5 and 0.9. Based on Figure 1, at θ = 0.1, we expect the
BAM to do very well and the IDM to do poorly. At θ = 0.5, we expect the BAM to struggle and
the IDM to do well. Finally, at θ = 0.9 we expect the BAM to do poorly and the IDM to very well.
To evaluate the performance of the three models, we generated data, estimated the parameters,
solved the SBLP with the estimated parameters for each of the three models, and then evaluated,
via simulation, the performance of the heuristic that uses the offer sets recommended by the SBLP.
We then compute the relative performance of the BAM and the IDM to the GAM. We report the
average of the relative performance over 500 repetitions of the entire procedure.
We simulate 50 instances of demands for each of the three non-trivial subsets for each market
to generate the data to estimate the parameters. For example, market 1 consists of product 3 and Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 4, with non-trivial subsets {3},{4} and {3,4}. To estimate the parameters we used the procedure
described in Section 2.4. To solve the linear program, we used the SBLP and converted the solution
to the CBLP as indicated in Section 5.1. To evaluate the performance of the heuristic we simulated
1000 repetitions using the offer sets recommended by the heuristic. The implementation of the
heuristic always starts by offering the largest set within a market. All the simulated requests are
accepted on a first-come first-serve basis within capacity limits.
For θ = 0.1, all of the three models do a reasonably good job of estimating the attraction values.
All of the three models, agreed on offering product 3 all of the time. The GAM and the BAM
agreed on offering products 1 and 2 all of the time. The IDM model, however, would some times
offer product 2 by itself for short periods of time. For market 3, the BAM and the GAM, were
remarkably consistent on offering product 5 by itself about 28% of the time and products 4 and
5 about 14% of the time. We were surprised by this, given the often significant differences in
the estimated parameters. The IDM disagreed offered product 5 by itself about 28% of the time,
but rarely offered product 4 at all. The performance of the BAM was essentially identical to the
performance of the GAM, achieving close to 100% of the revenues obtained by the GAM heuristic.
The IDM model, on the other hand, yielded about 98.2% of the revenue of the GAM heuristic.
For θ = 0.5, the estimates of the parameters for both the GAM and the IDM are fairly close to
the actual values. This is not so for the BAM, that makes a huge effort to accommodate for the
partial recapture resulting from θ = 0.5. Table 9 illustrates the true parameters and the estimated
values for the BAM, GAM, and IDM for one instance of the problem. Remarkably, even though
the estimates of the parameters for the BAM are often way off, the recommendations made by the
BAM were not far from those made by the GAM when viewed as solutions of the CBLP. In fact,
for the estimated values in Table 9, the recommendations were nearly identical: Offer products 1,2
and 3 all the time. Offer product 4 and 5 together 16% of the time, and offer product 5 by itself
27% of the time. The IDM solution for the reported instance in Table 9 was consistent with the
BAM and GAM for markets segments 1 and 2, but offered products 4 and 5 together 4% of the
time, and product 5 by itself 34% of the time. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Averaging over the 500 instances, the IDM was able to capture 99.45% of the revenues of the
GAM, while the BAM was able to capture 99.58%. This is contrast to Figure 1. These experiments
suggest that estimation helps the BAM relative to having the correct values of the attraction values
and the wrong value of θ, but it does not help the IDM as much.
v13 v16 v10 Λ1 θ v21 v22 v20 Λ2 θ v34 v35 v30 Λ3 θ Table 9 Estimates of Parameters when θ = 0.50
For θ = 0.9, the estimates of the parameters are way off for the BAM, while the estimates for the
GAM and the IDM are quite close to the actual values. Nevertheless, the three models continue
to agree in terms of offering products 1, 2 and 3 all the time for most instances of the problem.
For a particular instance, generated with the same seed as Table 9, the BAM, offers products 4
and 5 together 16% of the time and offers product 5 by itself 10% of the time. The IDM, offers
products 4 and 5 together 14% of the time and product 5 by itself 30% of the time. The GAM
offers products 4 and 5 together 16% of the time and product 5 by itself 27% of the time. Notice
that the GAM and the IDM solutions are very similar. But the BAM suffers because very little
demand is recaptured from product 6 and from product 4 when only product 5 is offered. Averaging
over the 500 instances, the IDM was able to capture 99.9% of the revenue relative to the GAM,
while the BAM was able to capture 98.9% of the revenue relative to the GAM. In summary, with
estimated parameters, the IDM and the BAM do better relative to the GAM than what would
be predicted by Figure 1 when the parameters are known. Our biggest surprise was the relative
modest deterioration of the BAM revenue given how far the estimates of the parameters are, in
particular when θ = 0.9. To illustrate this, the estimates for the attraction values v21,v22,v20 and
Λ2 are 0.81, 0.38, 18.81, and 112.14. In contrast the true values, are 10, 5, 5, and 9.
Example 7: We continue using the running example in Liu and van Ryzin but we now assume
that demand is governed by the specific GAM presented in Table 10. The model reflects positive Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization w values for lower fares. The optimal revenue under this model is $11,225.00, and the optimal
allocations are given in Table 11. We know from Proposition 2 that the CBLP solution for the
BAM is feasible for this GAM. The resulting revenue is $11,185.86. The solution to the IDM for
the SBLP is also feasible for the GAM and results in revenue $11,075.00. It is clear that in this
case the BAM performs better than the IDM solution. The solution for the CBLP is as follows:
For market 1, fare ABH is offered 100% of the time and nothing else. For market 2, fares ACH
and ABCH are both offered 100% of the time. Finally, for market 3, fare ABCL is offered 25%
of the time by itself, while fares ABCL and ACL are offered together 17% of the time. When the
parameters of the problem need to be estimated, the BAM obtained 99.8% of the revenues, and
the IDM obtained 99.0% of the revenues relative to the GAM.
1 2 3 4 5 6 0 Fares $1,200 $800 $600 $800 $500 $300 (AChigh,v2j,w2j) (10, 2) (5, 1) 5 Table 10 Market Segment and Attraction Values (v,w)
1 2 3 4 5 6 0 (AChigh,x2j) 4.50 2.25 2.25 $7,200.00 Total 4.50 2.25 3.75 0.50 2.75 0.00 14.52 $11,225.00 5.3. Overlapping Market Segments
Another point worth noting is that the CBLP and SBLP formulations remain equivalent even if
the market segments have products that overlap. The caveat is that both formulations assume in
this case that each market segment will be managed independently. This works only if the capacity
provider has the ability to offer a product for a market segment without offering it to other market Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization segments. On the other hand, if a fare cannot be offered in one market without offering to other
markets then both the CBLP and the SBLP formulations are upper bounds that can be tightened
by adding additional constraints. This approach was used by Bront et al. (2009) for the CBLP.
They use column generation assuming that each market segment follows a BAM and show that the
column generation step is NP-hard. The SBLP formulation allows for further manipulation as it is
easier to add cuts that can streamline some of the computation for overlapping market segments.
In particular, Talluri (2012) has reported encouraging results using the SBLP in the context of the
BAM with overlapping market segments when the number of different products for each market
segment is relatively small.
5.4. Heuristics for the Stochastic Problem
The compact form of the SBLP formulation and the ease with which we can recover the solution to
the CBLP from the SBLP allows for the practical developments of heuristics that call for frequent
re-solving of the SBLP. For example, a bid-price heuristic can be developed by taking into account
both the dual vector z corresponding to the capacity constraint as well as the dual variable βl
corresponding to the balance constraint for market segment l ∈L. Let plk −z′Alk −βlṽlk/vlk be
the reduced fare for k ∈Nl. Products with positive reduced fares in the SBLP have xlk at their
upper bounds of the scale constraint, which implies that they are offered 100% of the time in the
CBLP. Products with xlk/vlk ∈ (0,xl0/vl0) have reduced fares equal to zero. These corresponds to
fares that are available only part of the time in the solution to the CBLP. Finally, products with
negative reduced fares in the SBLP have xlk = 0 and are not offered at all by the CBLP. As in
any bid-price heuristic, the caveat is that it may accept too many requests for products with zero
reduced fares. The remedy for this, as is the case for independent demand model, is to re-solve the
SBLP frequently as this gives the model an opportunity to close down such fares.
An alternative heuristic is to use the solution to the SBLP, map it into the solution of the CBLP
and use the solution to the CBLP as a guide to admission control heuristics. To see how this Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization can be implemented, suppose that for a certain market the solution to the CBLP, after relabel-
ing the products if necessary, is to offers sets {1,2,3},{1,2,3,4} and {1,2,3,4,5} respectively for
α({1,2,3}) = 0.70,α({1,2,3,4}) = 0.20 and α({1,2,3,4,5}) = .10 fraction of the horizon [0,T ]. It is
typically advisable to offer the largest sets first, as they include the fares with zero reduced costs.
The advantage of this heuristic is that it does not over accept fares with zero reduced costs. The
heuristic can also benefit from re-solving. For example, the largest sets in each market segment with
αl(Slk) > 0,l∈L can be offered for minl∈Lαl(Slk)T units of time and at that point the SBLP can
be re-solved to obtain an updated solution to the SBLP from which a new solution to the CBLP
can be produced. The procedure can be repeated until the end of the horizon. Our experience is
that if the SBLP is solved only once, then this heuristic can perform better than the bid-price
heuristic. However, with frequent resolving, the bid-price heuristic tends to do better.
The compact form of the SBLP allows for solving the problem for random realizations of the
aggregate demand as suggested in Talluri and van Ryzin (1999). Our experience is that this refine-
ment does better than the bid-price heuristic if the SBLP is solved infrequently. However, when
the SBLP is re-solved frequently during the horizon the advantage tends to disappear and even
become negative.
While the above heuristics do not anticipate randomness, they do respond to randomness when
the SBLP is re-solved frequently. A number of authors have tried to incorporate randomness more
directly at either the leg level or the itinerary level. Liu and van Ryzin (2008) project demands into
legs and apply dynamic programming at the leg level to come up with improved heuristics. Variants
of the expected marginal seat revenue (EMSR) heuristic that attempt to deal with dependent
demands are discussed in Weatherford and Ratliff (2010) (e.g. DAVN-MR and choice-based EMSR).
The EMSR-b MR method, proposed in Fiig et al. (2010) , see also Walczack, Mardan, and Kallesen
(2010), uses a combination of fare adjustments and a decomposition of dependent demands into
independent components that allows for the use of techniques developed originally for the problem
with independent demands. While computationally appealing, these methods makes very strong
assumptions about the order of arrivals that are unlikely to hold in practice because the independent Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization demands obtained by the transformation cannot be directly observed and therefore cannot be
adequately controlled by the output of the heuristic. The reason for this is that the independent
demands obtained by the transformation consist of customers willing to buy the marginal fare and
nothing else. In other words, customers willing to pay a higher fare need to wait until their fare is
available and are not allowed to take advantage of the lower fares. In essence, the method works only
if yieldable demand arrives before priceable demand for each fare class. In sharp contrast the choice-
based EMSR heuristic of Gallego, Ratliff and Li (2009), while a bit more onerous computationally,
does almost as well as the dynamic program at the leg level because it takes into account demand
dependency. We refer the reader to Gallego and Li (2012) for an explanation of the potential issues
arising from using fare transformation with the independent demand decomposition suggested by
Fiig et al. (2010) and Walczack, Mardan, and Kallesen (2010).
6. The Assortment Problem
As a corollary to Theorem 3, the infinite capacity formulations for the SBLP and CBLP are
equivalent. With infinite capacity the problem separates by market segment so it is enough to study
a single market segment. To facilitate this we will drop the subscript l both in the formulation
and in the analysis. The resulting problem can be interpreted as that of finding the assortment of
products S ⊂N and the corresponding sales xk,k∈N to maximize profits from a market segment
of size D that makes decisions based on a GAM choice model. Under this interpretation the pk
values are gross unit profits, net of unit costs.
R(T) = max k∈N pkxk
subject to balance : ṽ0 ∑ ṽk scale : v0 non-negativity: xk ≥ 0 k∈N+
(8)
The problem is similar to a bin-packing problem with constraints linking the xk’s to x0. An
analysis of the problem reveals that the allocations should be in descending order of the ratio of Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization pk to ṽk/vk. This ratio can be expressed as pkvk/ṽk. For the BAM the allocation is in decreasing
order of price. Including lower priced products improves sales, but it cannibalizes demands and
dilutes revenue from higher priced products. As such, the allocation of demand to products needs
to balance the potential for more sales against demand cannibalization. The sorting of products
for the GAM depends not only on price but on the ratio vk/ṽk, so a low priced product with a
high competitive factor θk = wk/vk may have higher ranking than a higher priced product with
a low competitive factor. To explain how to obtain an efficient allocation of demand over the
different products we will assume that the products are sorted in decreasing order of pkvk/ṽk.
Let Xj = {1,.. .,j} and consider the allocation xk = vkx0/v0 for all k∈Xj and xk = 0 for k /∈Xj.
Solving the demand constraint for x0 we obtain
x0 = ṽ0 + Ṽ (Xj) and revenue
Rj = ∑ pkπk(Xj)D. (9)
Now consider the problem of finding the revenue Rj+1 for set Xj+1 = Xj ∪{j + 1}. It turns out
that Rj+1 can be written as a convex combination of Rj and pj+1Dvj+1/ṽj+1. This implies that
Rj+1 >Rj if and only if Rj index
j = max{j ≥ 1 : pj ≥ ∑ pkπk(Xj)(1−θj)}. (10)
The following proposition whose proof can be found in the Appendix establishes the optimality
(see 4. in the endnotes) of Xj.
Theorem 4. The assortment Xj with j given by equation (10) is optimal.
Notice that j in equation (10) is independent of D. This means that products 1,.. .,j are offered
for all demand levels D > 0 and products j + 1,.. .,n are closed regardless of the value of D.
Products j + 1,.. .,n are inefficient in the sense they do not increase sales enough to compensate
for the demand they cannibalize. Table 4 illustrates precisely this fact as product 5 priced at $105 Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization is inefficient because p5/(1−θ5) at $100 fare with a competitive factor θ1 = 0.9 than the higher product 5 at $105 with competitive
factor θ5 = 0. The intuition behind this is that closing product 5 is more likely to result in recapture
than closing fare 1 (whose demand will most likely be lost to competition or to the no purchase
alternative).
k pk vk θk xk pkxk Total $107.79 If the problem consists of multiple market segments and each market segment is allowed to post
its own available product set Xlj then the problem reduces to sorting the products for market
segment l in decreasing order of plk/(1−θlk), where θlk = wlk/vlk, and then computing j(l) using
(10) for each l. The resulting sets Xlj(l),l ∈ L are optimal. This has implications to Revenue
Management applications where capacity is finite. When capacity is finite, the fares are reduced
by the marginal value of capacity, and fares that are sub-optimal when capacity is infinite remain
so when capacity is finite. This fact has been used remove inefficient fares from the SBLP by Sabre
resulting in a significant savings in computations.
If a single assortment set S is to be offered to all market segments then the problem is
NP-hard, see Rusmevichientong et al. (2010), even if there are only two market segments and
the choice model is the BAM. However, the problem for the BAM is somewhat easier to analyze
since the preference ordering for all the market segments is p1 > p2 > … > pn whereas the
preference ordering for the GAM may be different for different market segments. Assuming the
order p1 > p2 > … > pn, Rusmevichientong et al. (2010) provide a two market segment example
where it is optimal to offer X1 = {1} to market segment one, to offer X2 = {1,2} to market Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization segment two and to offer X = {1,3} to a composite of 50% of each of the two market segments.
Given the NP-hardness of the assortment problem with overlapping sets, the research activity
has concentrated on bounds, heuristics and performance warranties. We refer the reader to the
working papers by Rusmevichientong et al. (2009) and Rusmevichientong and Topaloglu (2009).
If prices are also decision variables, with choices reflecting price sensitivities, then the problem
involves finding the offer sets and prices for each market segment. We refer the reader to Schön
(2010) who allows for price discrimination, e.g., to offer different prices and offer sets to different
market segments. The problem of offering a single offer set and a single vector of prices for all the
market segments is again NP-hard.
7. Conclusions and Future Research
The general attraction model formulation is a new variation of the basic attraction model. We have
presented an E-M algorithm to estimate the parameters that is an extension and refinement of
Vulcano et al. (2012). Work is currently underway to develop techniques to estimate the parameters
in situations where the arrival rates λlt are driven by a set of covariates such as day-of-the-week,
seasonality indices, and other factors that may affect demand. One known problem in applying the
BAM to typical airline problems is that the IIA property can be violated in cases where there are
large differences in the departure times of alternate flight services; in such cases, the recapture rates
between these widely spread departures would be overestimated. This problem can be mitigated
by segmenting customers by their preferred departure time.
One limitation of our model is that it provides only an upper bound when there are overlapping
market segments, and only a single offer set can be posted at any given time. However, the SBLP
formulation is more amenable to adding cuts and to finding polynomial time approximation algo-
rithms to handle commonality constraints. We are currently working on these extensions for both
the assortment problem and the case of finite capacities. It is also possible to extend the results in
this paper to other objective functions given the equivalence of the solutions space for the CBLP Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization and the SBLP (see 5. in the endnotes). The SBLP provides the basis for many heuristics for the
stochastic network revenue management problem. Since the size of the problem is essentially the
same as that of the independent demand model, applying the randomized linear program (RLP)
of Talluri and van Ryzin (1999) becomes viable for the GAM model. Other heuristics such as those
proposed by Gallego, Ratliff and Li (2009), Jasin and Kumar (2010), Kunnumkal and Topaloglu
(2008), and Liu and van Ryzin (2008) are aided by the ease of solving the SBLP and enriched by
the GAM. We also showed that the SBLP and GAM can be successfully applied to the assortment problem
that arises when the capacities are set at infinity; the assortment problem is important in its own
right both in the context of perishable and non-perishable products. The new insight is that,
under the GAM, it is not necessarily true that the optimal assortment consists of the highest
priced products.
Endnotes
1. The authors are grateful to Anran Li for coding the EM procedure and conducting the experi-
ments. 2. The airfare value used in the RM optimization may be adjusted to account for other associated
revenues (e.g. baggage fees) or costs (e.g. meals or in-flight wireless access charges).
3. This result is a slight improvement on the one reported in Liu and van Ryzin (2008) for which
we calculate a profit of $11,546.20 based on an allocation of 16.35, 2.48, 10.3 and 0.87 units of
time, respectively, on the sets {1,2,3}, {1,2,3,4}, {1,2,3,5}, {1,2,3,4,5}.
4. H. Topaloglu at Cornell independently found the same sorting for the GAM. Personal commu-
nication.
5. H. Topalogulu has used this idea to model the multiclass overbooking problem under discrete
choice models in a presentation at the 2011 Informs Revenue Management Conference at Columbia
University. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Appendix A: Proof of Theorem 1
If the choice model πj(S),j ∈S satisfies GAM then there exist constants vj,j ∈N+, ṽj ≥ 0,j ∈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}) = ṽ0+Ṽ (T)−ṽi V (S) ṽ0+Ṽ (T) Conversely, suppose a choice model satisfies the GLA. Then by selecting R = {i}⊂S ⊂T = N
we see from Axiom 1’ that
πi(S) = 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) +∑ πi(S) = 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) = ṽ0 + Ṽ (S) so it satisfies the GAM.
Appendix B: 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 Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization 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(∑ v )γk . (11) j ∈Oi is given by 1/γi l∈Oi 1/γi . (12)
Consequently, the probability that a customer selects product i∈Sj from vendor j is given by(∑ v 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 1/γk γk = maxl∈Oi vil. The limit, say pij, of equation
(12) 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) = v0 + k . 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) = v0 + k∈Sj ∑ V −kj where S̄j = {i∈N : i /∈Sj}. The selection probability can be written as
πi(Sj) = k∈N V ∑ (Vkj −V −kj ) or equivalently, as
πi(Sj) = (Vkj −V −kj )pkj since Vkj −V −kj = (Vkj −V − that πi(Sj) corresponds to a GAM with ã0j = v0 + k∈N V − Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Appendix C: Proof of Theorem 3
We will first establish that J̄(T,c) ≤R(T,c) by showing that any solution to the CBLP can
be converted into a feasible solution to the SBLP for the GAM. Assume a solution αl(Sl),l ∈
L for the CBLP is given and for k ∈ Nl let xlk = Λl Sl⊂Nl tion and the capacity constraint in terms of xlk are given respectively by l∈L k=1 l∈L k=1 x̃l0 = Λl αl(Sl)πl0(Sl).
Notice that x̃l0 = xl0 + k∈Nl xl0 = Λl αl(Sl) v0 + Wl(S̄l) + Vl(Sl)
and ylk = Λl Sl⊂Nl:k/∈Sl
αl(Sl) wlk
v0 + Wl(S̄l) + Vl(Sl) We now argue that is bounded above by xl0 . This follows because
xlk Sl⊂Nl:k∈Sl
αl(Sl) v0 + Wl(S̄l) + Vl(Sl) while
xl0 and the second equation sums over at least as many subsets.
Notice that if wlk > 0 then
xlk + = or equivalently
ylk = wlk
[ ] since vl0 k∈Nl. Substituting ylk into
xl0 + ylk + xlk = Λl Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization and collecting terms we obtain( ∑ ) ∑ ( ) which is equivalent to the demand balance constraint since ṽl0 = vl0 + k∈Nl for all k∈Nl.
We will now show that R(T,c) ≤ J̄(T,c) by showing that any solution to the dual of the CBLP
can be converted to a feasible solution to the dual of the SBLP. Let z and β̃l,l∈L be an optimal
solution for the dual of the CBLP, where z is the dual vector corresponding to the capacity
constraint, and for each l∈L, β̃l is the dual variable corresponding to the constraint limiting the
proportion of time that sets Sl ⊂Nl are offered.
Let βl = β̃l/Λl. Then the feasibility constraint for the dual of the CBLP takes the form
βl + (z′Alj −plj)πlj(Sl) ≥ 0 Sl ⊂Nl, l∈L. (14)
For each market segment we define the sets:
Fl = {k∈Nl : plk −z′Alk − βl ≥ 0}, l∈L
and the quantities:
γlk = (plk −z′Alk)vlk −βlṽlk ≥ 0 k∈Fl.
For k /∈Fl we set γlk = 0.
We will now show that z,βl,l∈L and γlk k ∈Nl,l∈L is a feasible solution to the dual of the
SBLP:
R(T,c) = min l∈LβlΛl + z subject to βl + z′Alk + ≥ plk k∈Nl, l∈L
βl j∈Nl ≥ 0 l∈L
z ≥ 0, γlk ≥ 0 k∈Nl, l∈L
(15)
By construction
βl + z′Alk + Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization for all k∈Nl,l∈L.
Our next task is to show that
βl γlj Since vl0 > 0 and γlj = 0 for j /∈Fl it is enough to show that
βlṽl0 − γlj ≥ 0
Substituting the definition of γlj and rearranging terms, the inequality is equivalent to
βl[ṽl0 + Ṽl(Fl)] + (z′Alj −plj)vlj ≥ 0.
Dividing by ṽl0 + Ṽl(Fl) the inequality is equivalent to
βl + (z′Alj −plj)πlj(Fl) ≥ 0.
However, this inequality holds because of the feasibility of the dual of the CBLP (14) applied to
Fl. Since any optimal solution to the dual of the CBLP has a corresponding solution to the dual
of the SBLP with the same objective function we have R(T,c) ≤ J̄(T,c) completing the proof.
Appendix D: Proof of Proposition 2
To show feasibility it is enough to show that the capacity constraint is satisfied and to do this
it is enough to show that the vectors πl(Sl) are decreasing in wk. To facilitate the notation we will
drop the market segment index l. Then
πj(S) = v0 + W(S̄) + V (S) which is decreasing in wk. As a result, if we compare the demands under model wk,k ∈ N and
model w′k ∈ (wk,vk],k∈N, we see that the demands under the latter model are bounded above by
the demands under the former model. Consequently, strictly less capacity is consumed under the
latter model. Moreover, revenues suffer from lower demands so the original solution is suboptimal. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Appendix E: Proof of Proposition 3
Suppose that xlk,k ∈Nl,l ∈L is an optimal solution to the SBLP under the GAM for fixed
vk,k∈N+ and wk ∈ [0,vk],k∈N and consider a GAM model with the same vks and w′k ∈ [0,wk],k∈
N. To see that the xlk remains feasible it is enough to verify the demand balance constraint for
each market segment. To facilitate the exposition we will drop the market segment subscript l. The
demand balance constraint can be written as
x0 + xk + wk( ) = D.
Now consider a GAM with w′k ∈ [0,wk]. Then the demand scaling constraints guarantee that
x0 + w′k( ) ≤D.
This shows that xk,k ∈ N together with some x′0 ≥ x0 form a feasible solution to the demand
balance constraint without violating the demand scaling constraints.
Appendix F: Proof of Theorem 4:
We first verify that x0 and xk,k ∈Xj, with j given by equation (10) is feasible for the SBLP
assortment problem. Suppose that xk = vkx0/v0 for all k∈Xj, Then the demand balance equation
is ṽk Solving for x0 we obtain x0 = v0D/(ṽ0 + Ṽ (Xj)). But now = x0 = 1 D for all k ∈ Xj
together with the non-negativity of x0 and xk,k ∈Xj shows that the solution is indeed feasible.
This feasible solution has objective value Rj given by equation (9).
To prove that Rj is the maximum revenue for the assortment problem we will show that there
is a feasible solution to the dual with the same objective value. Consider the dual with objective
function Dβ and constraint set ṽ0β − k β = Rj/D together with γk = pkvk − ṽkβ for k∈Xj and γk = 0 for k /∈Xj is a feasible solution to Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization the dual. The non-negative constraint γk ≥ 0 is satisfied by construction for k > j. For k∈Xj the
constraint is equivalent to pkvk ≥ ṽlβ, which in turn is equivalent to pkDvk/ṽk ≥Rj for all k∈Xj.
Since the items are sorted in decreasing order of pkvk/ṽk it is enough to show that pjDvj/ṽj ≥Rj.
However, we know that Rj is a convex combination of Rj−1 and pjDvj/ṽk. Moreover, since
Rj ≥Rj−1 it follows that Rj ≤pjDvj/ṽj. It remains to show that ṽ0β− k by showing that β = Rj/D is a solution to equation ṽ0β = k∈Xj k∈Xj. This is equivalent to [ṽ0 +Ṽ (Xk)]β = k∈Xj ∑ pkπk(Xj) = Rj/D
completing the proof. References
Andersson, S. 1998. Passenger choice analysis for seat capacity control: a pilot project in Scandinavian
Airlines. International Transactions in Operational Research 5, 471-486.
Belobaba, P., L. Weatherford 1996. Comparing decision rules that incorporate customer diversion in perish-
able asset revenue management situations. Decision Sciences Journal 27(2), 343-363.
Ben-Akiva, M., S. Lerman 1994. Discrete Choice Analysis: Theory and Application to Travel Demand. MIT
Press Series in Transportation Studies. The MIT Press. Cambridge, Massachusetts. pg. 52.
Bront, J., I. Mendez-Diaz, G. Vulcano 2009. A Column Generation Algorithm for Choice-Based Network
Revenue Management. Operations Research, 57, 769-784.
Brumelle, S., J. McGill, T. Oum, K. Sawaki, M. Tretheway 1990. Allocation of airline seats between stochas-
tically dependent demands. Transportation Science, 24, 183-192.
Cooper, W., T. Homem de Mello, A. Kleywegt 2006. Models of the spiral-down effect in revenue management
(Operations Research, 54, 968-987.
Dagsvik, J. K. 1983. Discrete Dynamic Choice: An Extension of the Choice Models of Thurstone and Luce.
Journal of Mathematical Psychology, 27, 1-43.
Debreu, G. 1960. Review of R.D. Luce, Individual choice behavior: A theoretical analysis. American Economic
Review, 50, 186-188. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Domencich, T. A., and D. McFadden 1975. Urban Travel Demand : A behavioral analysis, North Holland
Publishing Co., Amsterdam.
Fiig, T., K. Isler, C. Hopperstad, P. Belobaba 2010. Optimization of mixed fare structures: Theory and
application. Journal of Revenue and Pricing Management 9, 152-170.
Gallego, G. and L. Li 2012. The pitfalls of using independent demands with fare adjustments. Presentation
at AGIFORS Revenue Management Study Group Meeting. Barcelona, Spain.
Gallego, G., L. Li, R. Ratliff 2009. Choice-based EMSR methods for single-leg revenue management with
demand dependencies. Journal of Revenue and Pricing Management 8(2/3), 207-240.
Gallego, G., R. Phillips 2004. Revenue Management of Flexible Products. MSOM, 6, 321-337.
Gallego, G., C. Stefanescu. 2009. Upgrades, Upsells and Pricing in Revenue Management. Working paper,
Columbia University.
Gallego, G., G. Iyengar, R. Phillips, A. Dubey 2004. Managing Flexible Products on a Network Revenue
Management. Working Paper. Technical Report TR-2004-01, Dept. of Industrial Engineering and Oper-
ations Research. Columbia University.
Green, P. J. 1984. Journal of the Royal Statistical Society. Series B, 46, 149-192.
Greene, W.H. 2000. Econometric Analysis. Fourth edition. London: Prentice Hall.
Hartmans, G. 2006. Sell-up Simulation. Presentation at AGIFORS Revenue Management Study Group
Meeting. Cancun, Mexico.
Ja, S., B. Rao, S. Chandler 2001. Passenger recapture estimation in airline RM. Presentation at 41st AGI-
FORS Symposium. Sydney, Australia.
Jasin, S., S. Kumar 2010. A Re-solving Heuristic with Bounded Revenue Loss for Network Revenue Man-
agement with Customer Choice. Working paper, Stanford University.
Kunnumkal, S., H. Topaloglu 2008. A Refined Deterministic Linear Program for the Network Revenue
Management Problem with Customer Choice Behavior. Forthcoming in Naval Research Logistics.
Kunnumkal, S., H. Topaloglu 2010. Computing Time-Dependent Bid Prices in Network Revenue Management
Problems. Transportation Science, 44(1), 38-62.
Luce, R. D. 1959. Individual Choice Behavior: A Theoretical Analysis. New York: Wiley Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Liu, Q., G. van Ryzin 2008. On the Choice-Based Linear Programming Model for Network Revenue Man-
agement. MSOM 10, 288-310.
Meterelliyoz, M., M. Ferguson, L. Garrow 2009. Estimation of choice-based revenue management models
for multi-product industries. Working paper (corresponding author is laurie.garrow@ce.gatech.edu).
August 19, 2009.
McFadden, D. 1974. Conditional logit analysis of qualitative choice behavior, in P. Zarembka, ed., ‘Frontiers
in Economics’, Academic Press, pp. 105-142.
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.
Newman, J., L. Garrow, M. Ferguson, T. Jacobs. 2010. Estimation of Choice-based Models Using Sales Data
From a Single Firm. Working paper, Georgia Tech.
Ratliff, R., B. Rao, C. Narayan, K. Yellepeddi 2008. A multi-flight recapture heuristic for estimating uncon-
strained demand from airline bookings. Journal of Revenue and Pricing Management 7(2), 153-171.
Rubin, D. B. 1983. Iteratively Reweighted Least Squares. In Encyclopedia of Statistical Sciences, vol. 4.
Kotz., S., N. L. Johnson, C. B. Read (eds). John Wiley & Sons, New York, NY, 272-275.
Rusmevichientong, P., Z-J. Shen, D. Shmoys 2009. Dynamic assortment optimization with a multinomial
logit choice model and capacity constraint. Operations Research 58(6), 1666-1680.
Rusmevichientong, P., D. Shmoys, H. Topaloglu 2010. Assortment Optimization with Mixtures of Logits.
Working paper SORIE, Cornell University. February 10, 2010.
Rusmevichientong, P., H. Topaloglu 2009. Robust assortment optimization under the multinomial logit
model. Working Paper, Cornell University, School of Operations Research and Information Engineering.
July 11, 2010.
Schön, C. 2010. On the Optimal Product Line Selection Problem with Price Discrimination. Management
Science, 56, 896-902.
Talluri, K. 2010. A Randomized Concave Programming Method for Choice Network Revenue Management.
Working paper 1215, UPF, Barcelona, Spain.
Talluri, K. 2012. Network revenue management: Models and algorithms. Presentation at Georgia Tech con-
ference organized by Laurie Garrow. Gallego, Ratliff, and Shebalov: A General Choice Model and Network RM Optimization Talluri, K. , G. van Ryzin 1999. A randomized linear programming method for computing network bid prices.
Transportation Science, 33(2), 207-216.
Talluri, K., G. van Ryzin 2004. Revenue Management Under a General Discrete Choice Model of Consumer
Behavior. Management Science, 50, 15-33.
Topaloglu, H., I. Birbil, F. Frenk, N. Noyan 2011. Open Loop Policies for Overbooking Over a Single Flight
Leg. Working paper, Cornell University. Presentation at INFORMS Revenue Management and Pricing
section conference at Columbia University on June 24, 2011. New York, New York.
Train, K. 2002. Discrete Choice Methods with Simulation. Cambridge University Press.
Tversky, A. 1972. Elimination by Aspects: A Theory of Choice. Psychological Review, 79, 281-299.
van Ryzin, G., Talluri, K, and S. Mahajan. 1999. Why We Need Discrete Choice Theory in Revenue Man-
agement. Presentation at 39th AGIFORS Symposium, New Orleans.
Vulcano, G., G. van Ryzin, R. Ratliff 2012. Estimating Primary Demand for Substitutable Products from
Sales Transaction Data. Operations Research, 60, 313 -334
Walczack,D., S. Mardan, and R. Kallesen 2010. Customer choice, fare adjustments and the marginal expected
revenue data transformation: A note on using old yield management techniques in the brave new world
of pricing. Journal of Revenue and Pricing Management, 9, 94-109.
Weatherford, L., R. Ratliff 2010. Review of revenue management methods with dependent demands. Journal
of Revenue and Pricing Management, 9(2), 326-340.
Williams, H. C. W. L. 1977. On the formation of travel demand models and economic evaluation measures
of user benefit. Environment and Planning, 9(3), 285344.
Wu, C., F. Jeff. 1983. On the Convergence Properties of the EM Algorithm. Annals of Statistics, 11 95103.
Yellott J. I. Jr. 1977. The Relationship between Luce‘s choice axiom, Thurstone‘s theory of comparative
judgment, and the double exponential distribution. Journal of Mathematical Psychology. 15, 109-146.
Zhang, D., D. Adelman 2009. An Approximate Dynamic Programming Approach to Network Revenue Man-
agement with Customer Choice. Transportation Science, 43(3), 381-394.
2
Networ
k
Total
R
$
2
0
6
0.00
SFO-DEN Full
Fare
SFO-DEN Discount
DEN-STL Full Fare
DEN-STL Discount
SFO-STL Full Fare
SFO-STL Discount
Fare
1
5
10
1
20
8
25
1
7
Allocated Capacity
3
30
4
Constraints:
9
90
Fligh 1 Capacity
100
0 0 1 1 1 1 90 90
10
0%
Fligh 2 Capacity
12
1 0 0 0 0 0 30 30 100%
Demand for
OD
50
15
0 1 0 0 0 0 30
60
50%
Demand for ODF 2
0.5
6.00%
0 0 1 0 0 0 20 20 100%
Demand for ODF 3
40
120
0 0 0 1 0 0 40
80
Demand for ODF 4
8.00%
0 0 0 0 1 0 30 30 100%
Demand for ODF 5
70
250
0 0 0 0 0 1 0 40 0%
Demand for ODF 6
17
Admit
mubar1
theta1
mubar2
theta2
170
Vbar
206
R
26
800
D1
D2
13
c1-D1
-30
c2-D2
-40
–
62
k
Pr(D_1 >=k)
Pr(D_2>=k)
Emin(D_1,k)
Emin(D_2,k)
E(D_1-c_1)^+
30.00
63
48
E(D_2-c_2)^+
40.0002
57
43
29
Gamma_nu,nu
$ 20,
59
35
Gamma_theta,nu
$ 6,2
98
38
5 1 1 5 5
6 1 1 6 6
7 1 1 7 7
8 1 1 8 8
9 1 1 9 9
10 1 1 10 10
11
12 1 1 12 12
13 1 1 13 13
14
15 1 1 15 15
16
17 1 1 17 17
18
19
20 1 1 20 20
21
22
23
24
25 1 1 25 25
26 1 1 26 26
27
28
29 1 1 29 29
30 1 1 30 30
31
32
33
34
35 1 1 35 35
36
37
38 1 1 38 38
39
40 1 1 40 40
41
42
43 1 1 43 43
44
45
46
47
48 1 1 48 48
49
50 1 1 50 50
51
52
53
54
55
56
57
0.
99
999
56.9999999999
58
0.9999999999
57.9999999
998
59
0.9999999998
58.99999999
95
60
0.9999999
995
59.999999999
61
6
0.999999998
62 0.999999998 1
61.9999999
96
63
0.999999
996
62.9999999
92
64
0.9999999
922
63.9999999
84
63.9999999999
65
0.99999998
64.9999999
69
64.9999999998
66
0.9999999
72
65.999999
94
65.9999999996
67
0.9999999
484
0.9999999996
66.999999
88
66.9999999
992
68
0.999999
906
0.9999999992
67.999999
79
67.99999999
83
69
0.9999998
311
0.9999999
984
68.9999996
269
68.9999999
967
70
0.99999
97
0.9999999
969
69.99999
93
77
69.9999999
936
71
0.99999
947
75
0.9999999
941
70.999998
805
70.99999998
78
72
0.99999
91
0.9999999
89
71.99999
790
71.9999999
76
73
0.999998
470
72.999996
376
72.9999999
569
74
0.9999
974
368
0.9999999
638
73.999
993
81
73.9999999
207
75
0.99999
575
0.9999999
354
74.999
989
572
74.999999
85
76
0.99999
307
0.9999998
86
75.9999
82
493
75.9999
997
422
77
0.9999
888
401
0.999999
801
76.99997
148
76.9999995
439
78
0.99998
223
0.9999996
594
77.9999
537
271
77.999999
203
79
0.99997
208
0.9999
994
221
78.9999
258
78.9999
986
254
80
0.9999
566
0.9999
990
316
79.99
988
245
79.999997
657
81
0.9999
335
0.999998
397
80.9998
159
656
80.9999
960
541
82
0.999
899
202
0.99999
737
87
81.9997
151
857
81.9999
934
327
83
0.9998
490
0.99999
576
82.999
564
229
82.999989
196
84
0.999
776
500
0.999993
235
83.999
340
297
83.99998
243
85
0.99967
286
0.9999
893
218
84.9990
135
956
84.99997
175
86
0.9995
265
589
0.99998
333
85.998
540
154
85.99995
509
87
0.9993
224
0.999974
288
86.99
786
256
86.9999
293
787
88
0.9990
408
242
0.9999
607
687
87.99
690
338
87.999
890
147
89
0.9986
568
443
0.9999
407
964
88.99
556
232
88.9998
309
438
90
0.998
139
118
0.9999
116
233
89.99
369
351
89.9997
425
671
91
0.997
448
817
0.9998
694
844
90.99
114
168
90.99
961
205
92
0.9
965
385
304
0.999
809
285
91.98
768
669
91.99
942
133
93
0.99
535
119
0.999
724
222
92.98
303
789
92.999
145
560
94
0.9
938
191
595
0.999
605
176
93.
976
570
579
93.9
987
508
95
0.99
186
336
0.999
440
742
94.
968
204
216
94.99
819
521
96
0.989
392
885
0.9992
158
462
95.
958
113
306
95.99
740
598
97
0.98
630
478
0.9989
111
209
96.9
444
180
931
96.9
963
187
193
98
0.98
248
445
0.998
502
262
97.
926
255
97.99
482
144
99
0.9
778
505
0.9
979
609
781
98.
904
709
573
98.99
278
236
100
0.
972
136
260
0.997
249
591
99.
876
453
174
99.9
900
320
152
101
0.9
653
319
0.9963
247
100.
842
177
282
100.986
356
804
102
0.
957
476
546
0.995
134
449
101.
799
424
374
101.98
149
125
103
0.9
477
367
0.9936
173
102.
747
161
383
102.
975
108
604
104
0.9
366
559
782
0.
991
702
642
103.68
381
165
103.9
668
683
105
0.9
238
528
0.98
930
818
104.607
688
104.9
561
501
106
0.
909
585
867
0.986
345
227
105.5
169
467
105.94
246
597
107
0.
892
167
654
0.9
827
141
106.
409
349
106.9
251
387
108
0.87
416
190
0.
978
295
107.
283
828
875
107.90
347
328
109
0.85
355
0.97
298
281
108.
137
810
163
108.876
454
214
110
0.8
308
270
0.96
664
197
108.968
240
866
109.8
430
618
111
0.80
610
0.
959
150
109.
774
343
932
110.
802
466
112
0.
779
339
894
0.9
503
766
545
110.5
536
833
877
111.7
526
317
113
0.7
506
649
172
0.
940
192
753
111.304
348
112.
692
160
712
114
0.
720
213
613
0.9
284
767
614
112.02
456
188
113.62
129
326
115
0.68
596
0.
915
164
195
112.7
127
215
292
114.5
364
252
116
0.65
471
954
0.90001
342
113.3
674
334
837
115.
436
226
762
117
0.6
201
313
0.8
830
765
113.987
544
415
116.319
510
299
118
0.
584
622
0.86
428
124
114.5
721
711
117.
183
157
119
0.5
485
329
0.8
435
231
115.120
700
953
118.0
273
388
120
0.5
121
399
785
0.
820
928
905
115.
632
400
738
118.
848
121
0.
475
469
792
0.79
640
903
116.108
587
119.6
446
663
122
0.4
396
474
0.
770
637
662
116.
548
241
120.
414
325
123
0.
404
419
0.74
199
116.95
239
599
121.
156
458
124
0.369
519
0.712
322
797
117.3
219
155
121.
869
707
125
0.3
360
661
0.
681
181
117.65
791
756
122.
550
287
126
0.3038
253
0.6
488
921
117.9
617
289
123.1991
562
858
127
0.27
318
807
0.61
549
924
118.
234
923
698
123.8
146
495
128
0.
244
225
359
0.58
132
895
118.
479
577
124.
395
357
129
0.
217
796
263
0.5466308047
118.
696
228
684
124.9
426
130
0.19
182
0.51
166
741
118.8
880
465
125.45
427
301
131
0.168
518
386
0.4766965
434
119.0
565
748
524
125.930969
557
132
0.14
716
626
0.
441
337
119.2037
411
126.37
296
133
0.1
277
525
0.40782
189
119.3
314
746
126.
780
874
134
0.110241
554
0.374
418
119.4
417
379
127.15
520
608
135
0.09
455
645
0.3
420
119.5
362
574
127.
497
179
136
0.080
616
927
0.
310
119.61
691
672
127.
808
511
137
0.068
315
0.
280
611
119.
685
272
128.0
889
962
138
0.05
405
0.25
267
759
119.74
276
513
128.
341
670
814
139
0.04
171
300
0.22
600
629
119.7909
391
517
128.
567
667
140
0.040082
699
0.201068
312
119.
831
185
128.76874
499
141
0.0
331
496
0.177
911
119.8
641
463
128.94
665
602
142
0.0272
491
0.156561
461
119.
891
129.10
321
643
143
0.0222
627
0.1
370
119.
913
352
129.2
402
361
144
0.0180
784
0.119246
539
119.93176
178
129.359
480
153
145
0.01
459
487
0.10320
507
119.
946
353
129.46
268
522
146
0.011
705
736
0.0888
230
652
119.9
580
590
129.5
515
147
0.00
933
862
0.07
601
119.9
673
129.6
275
588
148
0.00
739
0.0
646
119.974790
581
129.692217
686
149
0.00
582
0.0
547
464
119.9
806
836
129.746962
330
150
0.00456
344
0.0
460
655
119.9
851
129.79
302
151
0.003
551
651
0.03
854
365
119.98
873
377
129.831
571
532
152
0.00
274
0.0320
678
119.991
481
917
129.86
363
929
153
0.00
211
0.026
529
350
119.9
935
639
129.8
901
743
154
0.001
615
823
0.021823427
119.9
952
129.9119921705
155
0.0012
279
0.017
850
119.9964392
757
129.929
843
156
0.000927
728
0.01
451
119.9
973
129.
944
621
157
0.00069
675
0.01174
259
119.9
980
624
129.9561047474
158
0.0005202217
0.0094435766
119.9
985
398
129.965548
324
159
0.0003
861
0.00
755
198
119.9989
701
129.9
731
160
0.0002
849
0.0060053967
119.99
925
129.97
910
703
161
0.0002090
578
0.004748
795
119.99946
413
129.9
838
498
162
0.0001524
912
0.00
373
119.9996166275
129.98
758
647
163
0.0001105899
0.00
291
119.999
727
129.9905085731
164
0.0000797424
0.0022705454
119.99980
695
129.9927791185
165
0.00005
717
0.0017557928
119.999
864
129.994
534
166
0.0000407
555
0.0013502302
119.9999048
863
129.99588
514
167
0.0000288888
0.001032
620
119.9999337
751
129.9969177624
168
0.0000203
619
0.000785
380
119.9999541369
129.9
977
169
0.0000142712
0.00059
406
119.99996
840
129.99
829
170
0.0000099465
0.0004
468
119.9999
783
129.99874
410
171
0.00000
689
0.0003343561
119.9999
852
483
129.99
907
457
172
0.0000047514
0.00024
879
119.9999899997
129.99932
725
173
0.0000032568
0.000
184
119.9999932565
129.99
951
918
174
0.000002
220
0.000135
543
119.9999954766
129.99964
693
175
0.0000015051
0.0000992387
119.999996
981
129.9997461
735
Booking Limits
OD 1 1 2 2 3 3
Fares
means
Ratios
0.67
0.00 0.04 0.05
Protection Levels
LP Solution
Booking Limits 42 72 3
Lp nested
EMSR_b
CB_DATA_
Sim Mixed Arrivals
Simulation of LP Based Policy
Revenue
$ – 0
0.26
3.00%
2.00%
4.00%
Nest LP
Period
CD1
CD2
CD3
CD4
CD5
CD6
S1
S2
S3
S4
S5
S6
with EMSR_b BL
deterministic BL
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Statistics
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Trials
1000
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mean
$23,062.43
$22,946.80
0.5%
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Median
$23,280.00
$23,080.00
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mode
$23,580.00
$24,000.00
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Standard Deviation
$695.66
$913.62
-23.9%
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Variance
$483,
939
$
834
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Skewness
-1.36
-0.8990
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Kurtosis
5.14
3.74
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Coeff. of Variability
0.0302
0.0398
11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Minimum
$19,540.00
$18,
950
12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Maximum
$24,140.00
$24,370.00
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Range Width
$4,600.00
$5,420.00
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mean Std. Error
$22.00
$28.89
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
remaing capacity
cumulative revenue
21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
126 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
130 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
157 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
164 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
180 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
194
195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
200
201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
209 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
210
211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
212
213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
217 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
220 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
230 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
234 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
235 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
237
238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
257
258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
260 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
261
262 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
263 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
264
265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
266
267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
270 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
271 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
274 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
283 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
284 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
285 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
290
291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
294
295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
305
306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
309 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
310 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
323
324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
327 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
329 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
330 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
332
333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
335 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
346
347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
355 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
358
359 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
369 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
370 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
371
372
373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
375
376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
377 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
378
379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
380 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
382
383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
384
385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
388 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
389
390
391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
393
394
395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
398 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
403
404 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
405 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
406 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
409 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
410 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
412
413 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
418 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
420 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
421
422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
423
424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
429
430 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
431
432
433
434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
437
438 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
442
443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
446 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
447
448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
450
451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
452
453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
457 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
458 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
460 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
462 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
468 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
470 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
471 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
472
473
474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
477 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
478 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
484 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
486
487 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
489
490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
492
493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
494
495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 $ – 0
501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
504
505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
507 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
510 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
512
513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
516
517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
520 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
522 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
523
524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
527
528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
529 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
530
531
532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
533
534 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
538
539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
540 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
542
543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
548 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
549 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
550 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
551 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
552
553
554 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
555 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
557 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
558
559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
563
564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
570 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
572 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
578 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
579 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
580 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
581 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
582 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
583
584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
586
587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
590 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
592
593
594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
596 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
597 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
602 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
603
604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
606
607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
609 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
610 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
612
613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
617 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
618 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
623
624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
625
626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
628
629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
630 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
631
632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
633
634
635
636
637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
638 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
640 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
641 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
642 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
643 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
644
645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
648
649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
650
651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
657 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
658
659
660
661 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
663 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
666
667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
668 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
670 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
676
677
678 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
679
680
681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
682
683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
684 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
686 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
687 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
689 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
690 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
697
698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
700 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
702 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
704
705 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
706
707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
708
709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
710
711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
713
714
715
716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
718
719
720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
721 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
722
723
724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
726
727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
729
730
731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
732
733
734
735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
739 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
740 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
742 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
744
745
746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
749
750
751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
752
753 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
754
755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
758 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
760
761
762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
763
764
765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
769
770 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
771
772
773
774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
775
776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
777
778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
780 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
783 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
788
789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
790 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
793
794
795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
798
799 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
801 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
803
804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
807 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
810 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
811
812
813
814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
815
816
817 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
820 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
821
822
823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
824
825
826
827 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
828 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
829 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
830 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
832
833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
834 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
835
836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
839
840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
841
842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
845
846
847
848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
849 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
850 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
852 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
853
854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
855
856
857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
859
860
861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
862 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
865
866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
867 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
868
869 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
870
871
872
873 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
876 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
878
879 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
881
882
883
884
885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
886
887
888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
890 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
891 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
894 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
895 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
896
897
898
899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
900 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
902
903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
906 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
908
909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
910 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
914
915 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
916
917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
919
920
921 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
925 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
926 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
929 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
930 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
932 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
937
938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
939 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
940 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
942 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
943
944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
945
946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
948
949
950 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
955
956 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
960 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
961 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
966
967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
970
971
972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
974 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
975 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
977 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
979 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
980 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
981 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
982
983
984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
986 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
987 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
990 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
994 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
995 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
997 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Resolving
Network Example
Total Revenue
SFO-DEN Full Fare
Fare 150 100 120 80 250 170 Allocated Capacity 12 0 10 20 15 0
Constraints: 1 1 0 0 1 1 27 0 Fligh 1 Capacity
0 0 1 1 1 1 45 0 Fligh 2 Capacity
1 0 0 0 0 0 12 15
Demand for ODF 1
0 1 0 0 0 0 0 30 Demand for ODF 2
0 0 1 0 0 0 10 10 Demand for ODF 3
0 0 0 1 0 0 20 40 Demand for ODF 4
0 0 0 0 1 0 15 15 Demand for ODF 5
0 0 0 0 0 1 0 20 Demand for ODF 6
2
1
Microsoft Excel 1
4
D
Linear Program
Report Created: 4/1
6
0
12
10
26
5
Variable
Cell
F
Reduced
Cell
Name
Value
Gradient
$B$6
Allocated
Capacity
SFO-DEN Full
Fare
3
$C$6
Allocated Capacity
SFO-DEN Discount
30
$D$6
Allocated Capacity
DEN-STL Full Fare
20
$E$6
Allocated Capacity
DEN-STL Discount
40
$F$6
Allocated Capacity
SFO-STL Full Fare
$G$6
Allocated Capacity
SFO-STL Discount
-10
Constraints
Final
Lagrange
Cell Name Value
Multiplier
$H$10
$H$
11
$H$12
$H$
13
7
$H$
14
$H$7
Constraints:
9
100
$H$
8
90
80
$H$9
50
Network Example
Total
Revenue
$ 20,
60
SFO-DEN Full Fare SFO-DEN Discount DEN-STL Full Fare DEN-STL Discount SFO-STL Full Fare SFO-STL Discount
Fare
15
120
25
17
Allocated Capacity 30 30 20 40 30 0
Constraints: 1 1 0 0 1 1 90 90
Fligh 1 Capacity
0 0 1 1 1 1 90 90
Fligh 2 Capacity
1 0 0 0 0 0 30 30
Demand
0 1 0 0 0 0 30 60
Demand for ODF 2
0 0 1 0 0 0 20 20
Demand for ODF 3
0 0 0 1 0 0 40 80
Demand for ODF 4
0 0 0 0 1 0 30 30
Demand for ODF 5
0 0 0 0 0 1 0 40
Demand for ODF 6
CB_DATA_
bucket
Net leg fares >=
Opportunity Cost
leg 1
bucket 2 60
<= Net leg fares<
leg 2
bucket 3
Net leg fares <
EMSR_b
Capacity
Demand mean
Average Contribution
Protection level
Leg 1
Leg 2
Leg1,
Bucket
$
16
58
0.6
19
55
66
Product
Class
NLF
Leg1,
Bucket2
$
96
San Francisco to Denver
150
Leg1,
Bucket3
$ – 0
San Francisco to Denver D 100 60 100 2 120
Leg2,
Bucket1
$
1
38
48
0.
57
51
33
32
18
0.
555
56
Denver to St. Louis
Leg2,Bucket2
$
76
67
Denver to St. Louis D 80 80 80 2
Leg2,Bucket3
San Francisco to St. Louis
250
70
San Francisco to St. Louis D
170
Bucket Demand Fare
Leg 1 Leg 2
Bucket1 30 150
45
0 0 0 0 0 0
0 0 0 20 120
24
30 170
510
450
0 0 0 0 0 0
Total:
160
138
Bucket2 0 0 0 Bucket2 0 0 0
60 100
600
0 0 0 80 80
64
40 90
36
28
Total: 100 96 Total: 120
76.
666
667
Bucket3 0 0 0 Bucket3 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0 Total: 0 0 Total: 0 0
Simulation
Simulation of LP Based Policy
Leg1 Bucket1
Leg2 Bucket1
Revenue $ – 0
Leg1 Bucket2
42
Leg2 Bucket2
73
0.03
0.06
0.02
0.08
0.04
Leg2 Bucket3
Nest LP
Displacement-Adjusted
Period
CD1
CD2
CD3
CD4
CD5
CD6
S1
S2
S3
S4
S5
S6
with EMSR_b BL
deterministic BL
Virtual Nesting(DAVN)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Statistics
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Trials
1000
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mean
$
23
62
43
$
22
46
$23,
21
63
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Median
$23,
280
$23,080.00
$23,
420
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mode
$23,
580
$24,000.00
$23,
82
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Standard Deviation
$
69
$
91
$
78
29
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Variance
$4
83
39
$8
34
701
$
61
53
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Skewness
-1.36
-0.
89
-1.5
500
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Kurtosis
5.14
3.
74
5.
99
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Coeff. of Variability
0.0
302
0.03
98
0.03
37
11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Minimum
$19,
54
$18,
95
$18,
92
12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Maximum
$24,
140
$24,
370
$24,
47
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mean Std. Error
$22.00
$28.89
$24.
77
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
remaing capacity
cumulative revenue
21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
27
28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
31
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35
36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
41
42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
44
45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
49
50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
52
53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
59
60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
65
66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
68
69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
71
72
73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
75
76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
79
80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
81
82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
84
85
86
87
88
89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
93
94
95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
97
98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139
140 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141
142
143
144
145
146
147
148
149
150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
151
152
153
154
155
156
157
158
159
160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
161
162
163
164
165
166
167
168
169
170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 120 $ – 0
501
502
503
504
505
506
507
508
509
510 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Sheet1
manuscript XX
Program for Network Revenue Management under
Department of Industrial Engienering and Operations Research, Columbia University, New York, NY
Research Group, Sabre Holdings, Southlake, TX 76092, richard.ratliff@sabre.com
2 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 3
4 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 5
6 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 7
vj
∑
ρuj for utilities uj where ρ > 0 is a
8 Article submitted to Operations Research; manuscript no. XX
1.5
= 60%, π1({1}) =
= 40%.
Article submitted to Operations Research; manuscript no. XX 9
vj
∑
∑
vj
∀j ∈S and π0(S) = 1−πS(S). (3)
∑
∑
10 Article submitted to Operations Research; manuscript no. XX
∑
πj(T) for all
Article submitted to Operations Research; manuscript no. XX 11
= πS+ (T) = 1−πT−S(T),
= 1−
j∈T−S
12 Article submitted to Operations Research; manuscript no. XX
√
Article submitted to Operations Research; manuscript no. XX 13
l∈Oi
il
v0 +
k
l∈Ok
1/γk
kl
l∈Oi
1/γi
il
1/γk
kl . There is no danger in using this transformation as long as the γ’s
aij
∑
ãkj
14 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 15
w11 w12 w21 w22
0.9 0.8 0.8 0.7
∅ 100% 0% 0%
{1} 82.1% 17.9% 0%
{2} 82.8% 0.0% 17.2%
{1,2} 66.7% 16.7% 16.7%
16 Article submitted to Operations Research; manuscript no. XX
′z/πS(S) of λ we obtain the
πj (N)
e′z. We could use a similar estimate for products j ∈S but this would
Article submitted to Operations Research; manuscript no. XX 17
πj (N)
zj is just the expectation of the binomial. Notice
∑m
X̂j =
πS (S)
π0(N)
e′z = λ̂(1−s). We summarize the results in the following proposition:
πj(N)
zj.
πj(N)
e′z.
∑
πN (N)
e′z.
atj∑T
s=1
.
18 Article submitted to Operations Research; manuscript no. XX
vj
j ∈St, t∈{1,.. .,T}.
t=1
i∈St
λ
v0 + V (S) + W(S̄)
]2
,
(k)
tj and then aggregate over time using the current
(k)
tj to produce X̂
j =
t=1
(k)
tj α
tj and X̂
0 = r
(k+1)
j =
(k)
j
(k)
0
Article submitted to Operations Research; manuscript no. XX 19
t∈Ai
′zt + λπ0(St)]−
t∈Ai
t/∈Ai
′zt + λπ0(St)]−λ
t/∈Ai
T∑
t=1
T∑
t=1
vi
t /∈Ai.
20 Article submitted to Operations Research; manuscript no. XX
v̂i
i∈S, S ⊂N are from the true expected
known 50.27 0.988 0.700 0400 0.200 0.050
unknown 51.26 1.212 0.818 0.449 0.219 0.053
true 50.00 1.000 0.700 0.400 0.200 0.050
Article submitted to Operations Research; manuscript no. XX 21
known 50.12 0.988 0.702 0.397 0.201 0.051 0.238
unknown 4.390 0.111 0.079 0.062 0.035 0.014 0.219
true 50.00 1.000 0.700 0.400 0.200 0.050 0.200
known 50.19 0.994 0.700 0.404 0.202 0.051 0.321 0.288 0.186 0.106 0.010
true 50.00 1.000 0.700 0.400 0.200 0.050 0.250 0.350 0.150 0.050 0.050
22 Article submitted to Operations Research; manuscript no. XX
=
∑
l∈L
Sl⊂Nl
k∈Sl
Article submitted to Operations Research; manuscript no. XX 23
′
lπl(Sl) =
k∈Nl
∑
∑
rl(Sl)αl(Sl)
∑
∑
Alπl(Sl)αl(Sl) ≤c∑
αl(Sl) = 1 l∈L
0
λlsds. There are
l∈L 2
24 Article submitted to Operations Research; manuscript no. XX
∑
∫ T
λlsds if the arrival rates are time varying) inclusive of the no-purchase alternative. With
∑
∑
plkxlk
∑
∑
Alkxlk ≤ c
ṽl0
k∈Nl
vlk
vlk
≤ 0 k∈Nl l∈L
Article submitted to Operations Research; manuscript no. XX 25
∑
∑
xlk = Λl. For the inde-
∑
vlk and ṽlk = 0 for k∈Nl. The balance constraint reduces
k∈Nl
26 Article submitted to Operations Research; manuscript no. XX
xlk
vlk
−
xl,k+1
vl,k+1
Ṽ (Slk)
,
∑
αl(Sl) = 1, and that∑
αl(Sl)πlk(Sl) = xlk. Applying this to the CBLP we can immediately see that all constraints
Article submitted to Operations Research; manuscript no. XX 27
28 Article submitted to Operations Research; manuscript no. XX
Products ACH ABCH ABH ACL ABCL ABL Null
(AB,v1j) 5 8 2
(AClow,v3j) 5 10 10
Products ACH ABCH ABH ACL ABCL ABL xl0 Profit
(AB,x1j) 4.29 1.71 $2,571.43
(AClow,x3j) 0.50 2.75 11.75 $1,775.00
Table 7 SBLP Allocation Solution for BAM with (θ = 0)
Article submitted to Operations Research; manuscript no. XX 29
Products ACH ABCH ABH ACL ABCL ABL xl0 Profit
(AB,x1j) 2.00 3.00 0.80 $2,100.00
(AClow,x3j) 0.50 2.75 6.00 $1,775.00
Table 8 SBLP Allocation Solution for IDM with (θ = 1)
ev
ue
30 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 31
32 Article submitted to Operations Research; manuscript no. XX
True 5.00 8.00 2.00 6.00 0.50 10.00 5.00 5.00 9.00 0.50 5.00 10.00 10.00 15.00 0.50
BAM 3.79 8.38 1.87 5.00 0.00 5.19 2.35 12.46 17.54 0.00 3.05 6.77 15.18 23.17 0.00
GAM 4.96 8.08 1.95 5.53 0.39 10.36 4.70 4.94 8.78 0.50 4.74 10.51 10.17 15.17 0.35
IDM 5.34 7.85 1.81 6.40 1.00 10.06 5.04 4.89 9.64 1.00 5.00 9.99 10.00 16.78 1.00
Article submitted to Operations Research; manuscript no. XX 33
Products ACH ABCH ABH ACL ABCL ABL Null
(AB,v1j,w1j) (5, 0) (8, 1) 2
(AClow,v3j,w3j) (5, 1) (10, 0) 10
Products ACH ABCH ABH ACL ABCL ABL xl0 Profit
(AB,x1j) 3.75 0.00 1.50 $2,250.00
(AClow,x3j) 0.50 2.75 10.77 $1,775.00
Table 11 SBLP Allocation Solution with GAM (w > 0)
34 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 35
36 Article submitted to Operations Research; manuscript no. XX
∑
v0
x0 +
k∈N
vk
xk = D
xk
vk
− x0
≤ 0 k∈N
Article submitted to Operations Research; manuscript no. XX 37
v0
D, xk = πk(Xj)D k∈Xj,
k∈Sj
k∈Xj
38 Article submitted to Operations Research; manuscript no. XX
0 1 0.0233
1 $100 15 0.9 0.3488 $34.88
2 $110 6 0.8 0.1395 $15.35
3 $115 9 0.7 0.2093 $24.07
4 $120 12 0.6 0.2791 $33.49
5 $105 9 0 0.0000 $0.00
Table 12 Example Assortment Problem
Article submitted to Operations Research; manuscript no. XX 39
40 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 41
∑
∑
V (S)−vi
=
= πS(T), so Axiom 2 holds.
πi(N)
∑
.
∑
∑
j∈S(1−θj)πj(N), resulting in
πi(N)
π0(N) +
∑
∑
.
∑
vi
,
42 Article submitted to Operations Research; manuscript no. XX
l∈Oi
1/γi
il
)γi
v0 +
∑
k
(∑
l∈Ok
v
1/γk
kl
The conditional probability that a customer who selects nest i will buy the product from vendor
v
ij∑
v
il
l∈Oi
1/γi
il
)γi
v0 +
∑
k
(∑
l∈Ok
v
1/γk
kl
)γk v1/γiij∑
l∈Oi
v
1/γi
il
.
∑
v
il )
pij maxl∈Oi vil
∑
maxl∈Ok vkl
Vijpij
∑
Vkj +
k∈S̄j
,
Vijpij
v0 +
∑
−
kj +
k∈Sj
,
Vijpij
v0 +
∑
k∈N V
−
kj +
∑
k∈Sj
,
−
kj )pkj for all k. This is because pkj < 1 implies Vkj −V
kj = 0. This shows
∑
−
kj , akj = pkjVkj, and ãkj = (Vkj−V
kj )pkj.
Article submitted to Operations Research; manuscript no. XX 43
∑
αl(Sl)πlk(Sl). The objective func-
∑
∑nk
plkxlk and∑
∑nk
Alkxlk ≤c. Let
∑
Sl⊂Nl
∑
ylk where
∑
Sl⊂Nl
vl0
∑
k∈Nl.
xlk
vlk
vl0
vlk
= Λl
∑
1
vl0
= Λl
∑
Sl⊂Nl
αl(Sl)
1
v0 + Wl(S̄l) + Vl(Sl)
vlk
ylk
wlk
xl0
vl0
,
xl0
vl0
−
xlk
vlk
≥ 0 (13)
xlk
vlk
≤ xl0
. On the other hand, by definition, ylk = 0 if wlk = 0. Thus formula (13) holds for all
∑
k∈Nl
∑
k∈Nl
44 Article submitted to Operations Research; manuscript no. XX
vl0 +
k∈Nl
wlk
vl0
xl0 +
k∈Nl
vlk −wlk
vlk
xlk = Λl ∀ l∈L,
∑
wlk and ṽlk = vlk−wlk
∑
j∈Sl
ṽlk
vlk
∑
′c
ṽlk
vlk
γlk
vlk
ṽl0
vl0
−
∑
γlj
vl0
ṽlk
vlk
γlk
vlk
≥plk
Article submitted to Operations Research; manuscript no. XX 45
ṽl0
vl0
−
∑
j∈Nl
vl0
≥ 0
∑
j∈Fl
∑
j∈Fl
∑
j∈Fl
vi
46 Article submitted to Operations Research; manuscript no. XX
n∑
k=1
n∑
k=1
x0
v0
−
xk
vk
n∑
k=1
xk +
n∑
k=1
x0
v0
−
xk
vk
ṽ0
v0
x0 +
∑
k∈Xj
v0
x0 = D.
xk
vk
v0
ṽ0+Ṽ (Xj )
∑
γk ≥ 0 and ṽkβ + γk ≥ pkvk,k ∈ N. We claim that
Article submitted to Operations Research; manuscript no. XX 47
∑
γk ≥ 0. We will do this
∑
γk where γk = pkvk − ṽkβ for
∑
pkvk. We see that β =
k∈Xj
48 Article submitted to Operations Research; manuscript no. XX
Article submitted to Operations Research; manuscript no. XX 49
50 Article submitted to Operations Research; manuscript no. XX