SCI Test-bed Components

Competitive Analysis of Online Booking:
Dynamic Policies
Michael Ball, Huina Gao, Itir Karaesman
R. H. Smith School of Business
University of Maryland
and
Maurice Queyranne
Sauder School of Business
University of British Columbia
© Michael O. Ball
Motivation: Assemble-to-Order
Products
components
production
capacity
Some particular features:
•
•
products
•
Very simple case:
•
Multiple capacity constraints
Time dimension –
production capacity and
components replenish over
time
Time dimension – product
differentiation based on
delivery time
No low before high
1 key component
2 products
© Michael O. Ball
Competitive Analysis
i1, i2 , i3, …
Algorithm
Designer
algorithm
input
stream
Evil
Adversary
Competitive Ratio =
Min input streams {(alg performance)/(best performance)}
“Traditional” revenue management analysis has assumed:
• Demand can be forecast reasonably well
• Risk neutrality
Are these valid??
© Michael O. Ball
Sample Result
• Flight has 95 available seats, three fare
classes: $1,000, $750, $500
• Policy that guarantees at least 63% of the
max possible revenue:
– Protect 15 high fare seats
– Protect 35 seats for two higher fare classes (i.e.
sell at most 60 lowest fare seats)
© Michael O. Ball
Two-Fare Analysis
•
•
•
•
n = number of seats
f1 = higher fare; f2 = lower fare.
r = f2/f1 = discount ratio.
Key quantity: b(r) = 1 / (2 – r)
Policy intuition:
Always best to accept any high fare (H) that comes
along
 Adversary will start off with low fare requests
(L): Question – how many to accept before only
H’s are accepted??
© Michael O. Ball
Basic Trade Off
Note: must accept first order, o.w. adversary will stop after submitting one
order with algorithm performance = 0.
LLLLLLLLLLLLLLLL
available seats
Stop accepting L’s
Accept too few L’s  adversary will only
send additional L’s
LLLLLLLLLLLLLHHHHHHHHH
Stop accepting L’s
Accept too many L’s  adversary will
only send additional H’s
© Michael O. Ball
Best Two-Fare Policy
Proposal: protect (1 – b(r)) n = (1 – 1/(2 – r)) n
… assume for the moment that b(r) n is integer ..
LLLLLLLLLLLLLLLLLLL
All L’s after stopping 
Performance = (f2 b(r) n ) / (f2 n) = b(r)
LLLLLLLLLLLLLHHHHH
All H’s after stopping 
Performance = [f2 b(r) n + f1 (1 – b(r)) n] / (f1 n) = b(r)
© Michael O. Ball
More General Cases
f = price
f1=fmax
f2
f3
f4 = fmin
n
protection levels: (f3)
(f2)
(f1)
q = total
order
quantity
accepted
© Michael O. Ball
m Fare Classes
Define:  = m - {i=2,m} fi / f i-1
Theorem: For the continuous m-fare problem, no
booking policy, deterministic or random, has a
competitive ratio larger than 1 / .
Define: i = (n / ) (i - {j=1,i} fj+1 / f j)
Theorem: For the continuous m-fare problem, the
protection level policy using protection levels i
achieves a competitive ratio of at least 1 / .
e.g. f1 = 1000, f2 = 750, f3 = 500, 1 /   63 %
© Michael O. Ball
Approach to alternate type of policy
f = price
Optimal adversary strategy
f1=fmax
f2
f3
f4 = fmin
n
protection levels: (f3)
(f2)
(f1)
q = total
order
quantity
accepted
© Michael O. Ball
Order Quantity Control Fcn
f = price
P’(q)
n
q = total
order
quantity
accepted
© Michael O. Ball
Order Quantity Control Policy
f = price
Order quantity control policy:
after q orders have been accepted, accept
next order if price of order > P’(q)
n
q = total
order
quantity
accepted
© Michael O. Ball
Order Quantity Control Policy
f = price
Order quantity control policy:
after q orders have been accepted, accept
next order if price of order > P’(q)
n
Accept!!
or
Reject!!
q = total
order
quantity
accepted
© Michael O. Ball
Numerical Experiments
• Compare against another approach that does not require a-priori
demand information: Van Ryzin & McGill, “Revenue Management
without Forecasting or Optimization: an Adaptive Algorithm for
Determining Airline Seat Protection Levels”
• Two categories of demand generation:
– Stationary – demand in each fare class is normally distributed
– Non-stationary – for a given day/flight, demand is normally distributed
but mean demand jumps between one of three mean pairs with a certain
probability:
30
65
48
48
65
30
.9
.1
.05
30
65
.9
48
48
.9
65
30
.05
.1
© Michael O. Ball
Comparison: capacity: 100
High: fare -- $2000, mean demand -- 15
Low: fare -- $1000, mean demand -- 81
Van Ryzin & McGill
Low before High
CTL
Assume Low Before High
EXP
Robust
Random
Assume Random
CTL
EXP
100000.00
98000.00
96000.00
94000.00
92000.00
90000.00
88000.00
86000.00
84000.00
82000.00
80000.00
78000.00
76000.00
74000.00
104000.00
102000.00
100000.00
98000.00
96000.00
94000.00
92000.00
90000.00
88000.00
86000.00
84000.00
82000.00
80000.00
1
2
3
Ave diff:
4
5
6
-$7210
7
1
2
3
4
-$10140
5
6
7
© Michael O. Ball
Comparison: capacity: 100
High: fare -- $2000, mean demand -- 15
Low: fare -- $1500, mean demand -- 81
Van Ryzin & McGill
Low before High
Assume Low Before High
CTL
EXP
Robust
Random
Assume Random
CTL
EXP
140000.00
138000.00
136000.00
134000.00
136000.00
132000.00
130000.00
128000.00
126000.00
134000.00
132000.00
124000.00
122000.00
120000.00
118000.00
130000.00
128000.00
126000.00
1
2
Ave diff:
3
4
5
-$1760
6
7
116000.00
114000.00
112000.00
1
2
3
-$6130
4
5
6
7
© Michael O. Ball
Comparison: capacity: 100
High: fare -- $2000, mean demand -- 48
Low: fare -- $1000, mean demand -- 48
Van Ryzin & McGill
Low before High
CTL
136000.00
134000.00
132000.00
130000.00
128000.00
126000.00
124000.00
122000.00
120000.00
Ave diff:
3
EXP
EXP
138000.00
2
CTL
Assume Random
Assume Low Before High
1
Robust
Random
4
5
+$ 2750
6
7
134000.00
132000.00
130000.00
128000.00
126000.00
124000.00
122000.00
120000.00
118000.00
116000.00
114000.00
112000.00
110000.00
108000.00
106000.00
104000.00
102000.00
1
2
3
4
+$6550
5
6
7
© Michael O. Ball
Comparison of protection levels
Van Ryzin & McGill
Low before High
Assume Low Before High
75.00
70.00
65.00
60.00
55.00
50.00
45.00
40.00
35.00
30.00
25.00
20.00
15.00
10.00
5.00
0.00
Robust
Random
Assume Random
CTL
EXP
110.00
105.00
100.00
95.00
90.00
85.00
80.00
75.00
70.00
65.00
60.00
55.00
50.00
45.00
40.00
35.00
30.00
25.00
20.00
15.00
10.00
5.00
0.00
1
19 37 55 73 91 109 127 145 163 181 199 217 235 253 271 289 307 325 343
1
18 35 52
69 86 103 120 137 154 171 188 205 222 239 256 273 290 307 324 341
© Michael O. Ball
Comparison: capacity: 100
High: fare -- $2000, mean demand -- 65
Low: fare -- $1500, mean demand -- 31
Van Ryzin & McGill
Low before High
Assume Low Before High
CTL
Robust
Random
Assume Random
EXP
CTL
EXP
170000.00
170000.00
168000.00
166000.00
164000.00
162000.00
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
144000.00
142000.00
140000.00
138000.00
136000.00
134000.00
132000.00
130000.00
168000.00
166000.00
164000.00
162000.00
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
1
2
Ave diff:
3
4
5
+$1620
6
7
1
2
3
4
+$8130
5
6
7
© Michael O. Ball
Comparison: capacity: 100
High: fare -- $2000, mean demand -- 81
Low: fare -- $1000, mean demand -- 15
Van Ryzin & McGill
Low before High
Assume Low Before High
CTL
EXP
Assume Random
174000.00
172000.00
170000.00
168000.00
166000.00
164000.00
162000.00
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
144000.00
142000.00
140000.00
1
2
Ave diff:
3
4
5
-$650
Robust
Random
6
7
CTL
EXP
168000.00
166000.00
164000.00
162000.00
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
144000.00
142000.00
140000.00
138000.00
1
2
3
+$7320
4
5
6
7
© Michael O. Ball
Comparison: capacity: 100
Non-stationary demand:
High: fare -- $2000, mean demand -- 65 48 30
Low: fare -- $1000, mean demand -- 30 48 65
Van Ryzin & McGill
Robust
Low before High
Random
Assume Low Before High
CTL
Assume Random
EXP
CTL
EXP
130000.00
128000.00
126000.00
124000.00
122000.00
120000.00
118000.00
116000.00
114000.00
112000.00
110000.00
108000.00
106000.00
138000.00
136000.00
134000.00
132000.00
130000.00
128000.00
126000.00
124000.00
122000.00
120000.00
118000.00
1
2
3
Ave diff:
4
5
+$4170
6
7
1
2
3
4
+$8080
5
6
7
© Michael O. Ball
Comparison of protection levels
Van Ryzin & McGill
Low before High
Assume Low Before High
CTL
EXP
110.00
105.00
100.00
95.00
90.00
85.00
80.00
75.00
70.00
65.00
60.00
55.00
50.00
45.00
40.00
35.00
30.00
25.00
20.00
15.00
10.00
5.00
0.00
1
17
33
49
65
81
97 113 129 145 161 177 193 209 225 241 257 273 289 305 321 337
Robust
Random
Assume Random
CTL
EXP
110.00
105.00
100.00
95.00
90.00
85.00
80.00
75.00
70.00
65.00
60.00
55.00
50.00
45.00
40.00
35.00
30.00
25.00
20.00
15.00
10.00
5.00
0.00
1
20 39 58 77 96 115 134 153 172 191 210 229 248 267 286 305 324 343
© Michael O. Ball
Comparison: capacity: 100
Non-stationary demand:
High: fare -- $2000, mean demand -- 65 48 30
Low: fare -- $1500, mean demand -- 30 48 65
Van Ryzin & McGill
Robust
Low before High
Random
Assume Low Before High
CTL
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
144000.00
142000.00
140000.00
1
2
3
4
5
6
7
+$1150
EXP
160000.00
158000.00
156000.00
154000.00
152000.00
150000.00
148000.00
146000.00
144000.00
142000.00
140000.00
138000.00
136000.00
134000.00
132000.00
130000.00
128000.00
126000.00
124000.00
122000.00
120000.00
1
Ave diff:
CTL
Assume Random
EXP
2
3
4
+$8740
5
6
7
© Michael O. Ball
Observations
• Random vs low-before-high makes a
difference – for random, lower protection
levels seem better.
• Robust policy works well across range of
demand scenarios – demand distribution
most useful in cases of unbalanced demand.
© Michael O. Ball
Dynamic Policy Motivation:
Taking advantage of an inferior adversary
nb(r)
n
Optimal Adversary Policies:
Start low
After threshold:
• Stay low
• Or jump to high and
stay high
© Michael O. Ball
Dynamic Policy Motivation:
Taking advantage of an inferior adversary
nb(r)
n
© Michael O. Ball
Dynamic Policy Motivation:
Taking advantage of an inferior adversary
Having 2 (or more)
high’s “in the bank”
leads to a problem on a
smaller n  threshold
can be smaller & overall
guarantee is improved.
n’b(r) nb(r)
n’
n
© Michael O. Ball
Dynamically Revising Threshold
orig threshold: n b(r) = n / (2-r)
let: h’ = # high fare request accepted so far
 = h’/n  = ( f1 + (1 - ) f2 ) / f2
revised threshold:
n (1 + (1 – r) /r ) / (1 +  (1 – r) )
© Michael O. Ball
Dynamic Policy: numerical test
n = 100; r = .5
h’
1
5
10
20
30
40
50
”
dynamic
guarantee
’
static
guarantee
65.78
62.30
58.60
50.00
42.42
35.29
28.57
.67
.69
.71
.75
.79
.82
.86
66.67
66.67
66.67
66.67
66.67
66.67
66.67
.67
.67
.67
.67
.67
.67
.67
© Michael O. Ball
Final Thoughts
• Many implicit and explicit assumptions in airline
revenue management problems – relaxing these
can lead to novel problems.
• Online algorithm approach shows significant
promise:
– No risk neutrality assumption.
– Demand information not required.
– Policies are practical and seem to work well across
range of demand distributions.
© Michael O. Ball