View
231
Download
0
Tags:
Embed Size (px)
Citation preview
A Dial-A-Flight Problem
Martin Savelsbergh
A Dial-a-Flight Problem
“Per-Seat, On-Demand” Jet ServicesHow to Keep Air Transportation Moving at the Speed of Business
A Dial-a-Flight Problem
Project Team
• Georgia Tech– Mo Bazaraa– Faram Engineer– Daniel Espinoza– Renan Garcia– Marcos Goycoolea– George Nemhauser– Martin Savelsbergh
• ILOG– Emilie Danna– Zonghau Gu
• DayJet– Eugene Traits– Alex Khmelnitsky
A Dial-a-Flight Problem
Per-Seat, On-Demand Jet Services
• Background– Security delays at major airports– Rigid schedules of commercial airlines– Hub-and-spoke network of commercial
airlines– Affordable small jet planes– Large number of small, underused airports
A Dial-a-Flight Problem
A Dial-a-Flight Problem
Eclipse 500
• Crew– 1 pilot
• Cruise speed– 431 miles/hr
• Maximum range– 1,473 miles
• Maximum altitude– 41,000 ft
• Capacity– 5 passengers
A Dial-a-Flight Problem
Business Model
• Outward facing– On-demand booking– Competitive pricing– High quality & reliable service– Large coverage area
• Inward facing– Dynamic route creation– Passenger aggregation
A Dial-a-Flight Problem
Optimization Problems
• Order acceptance (on-line)
• Schedule optimization (off-line)
• Revenue management
• Disruption recovery models
• Strategic planning
Uncertainty
A Dial-a-Flight Problem
Optimization Problems
Order AcceptanceGiven a list of accepted flight requests and a new flight request. Decide whether the new flight request be accommodated.
Schedule OptimizationGiven a list of flight requests, create feasible itineraries for the planes in the fleet so as to satisfy all flight requests at minimum cost.
A Dial-a-Flight Problem
Flight Request
• Origin
• Destination
• Earliest departure time
• Latest arrival time
• Number of passengers
• Weight
A Dial-a-Flight Problem
Feasible Plane Itinerary
• Two shifts (morning/afternoon)
• Starting & ending at the home base
• No more than one intermediate stop for a passenger (no plane change)
• No more than five passengers on board at any time
• Maximum number of flying hours (per shift)
• Maximum number of working hours (per shift)
• Maximum weight
A Dial-a-Flight Problem
Multi-commodity Network Flow Model
• Nodes – Define events characterizing an itinerary of a plane– Pick up a passenger– Drop off a passenger– Fly from airport A to airport B– …
• Arcs – Link events that can follow each other in an itinerary of a plane
A Dial-a-Flight Problem
Node Definitions
• Node specifying that a plane is at airport A at time t without passengers
• Node specifying that a plane at airport A will take off at time t for airport B
• Node specifying that request R will be satisfied by a plane at airport A taking off at time t for airport B
A,t
B,t
R,t
A Dial-a-Flight Problem
Illustrative Example:
• Airports A, B and C• Flying times:
– (A,B): 4– (A,C): 6– (B,C): 4
• Three requests– R1: A to B (Early: 1, Late: 6)– R2: A to C (Early: 1, Late: 8)– R3: B to C (Early: 4, Late: 10)
A Dial-a-Flight Problem
Network Representation
A A
A
B
C
B
R1
R2
C
R2
C
R2
B
C
R3
B
C
R3
B
C
R3
C C C C
A
B
R1
R2
C
R2
A1 A2 A3
B6B5B4
C7 C8 C9 C10
A Dial-a-Flight Problem
Illustrative Route I:
C
R3
C,9
A,1B
A1
B5C9
Airport
A
B
C
Action
Select BDeadhead
Select CPickup R3
Drop off R3
B,5
Departure
1
5
9
A Dial-a-Flight Problem
Illustrative Route II:
C
R3
C,9
A,1B
R1R2
A1
B5C9
Airport
A
B
C
Action
Select BPickup R1Pickup R2
Drop off R1Pickup R3
Drop off R2Drop off R3
Departure
1
5
9
A Dial-a-Flight Problem
Multi-commodityNetwork Flow Model
• For each plane– Network flow structure– Capacity limit– Flying time limit– Weight limit– Satisfy a request at most once
• Across planes– Satisfy all flight requests
A Dial-a-Flight Problem
Model Refinements
• Can we reduce the network size?• Can we identify edges that are in no
optimal solution?• Can we identify nodes that are in no
optimal solution?• Can we use the side-constraints to
eliminate edges?• Can we discard non-optimal solutions?• Can we discard some optimal solutions?
A Dial-a-Flight Problem
Time Discretization
• Regular discretization
• Flexible discretization– Allow different discretization for each airport– Allow non-regular discretization for each
airport• Start from a regular discretization• Add critical times for a request• Add times associated with best-known schedule
A Dial-a-Flight Problem
Network Generation
• Include only feasible nodes– e.g., earliest arrival time at an airport
• Include only necessary flights– e.g., no indirect flights unless a passenger
has to be picked up or dropped off
• Enforce that planes depart as early as possible (objective = minimize flying time)
A Dial-a-Flight Problem
Network Generation
A
B
C
20 30 40100
Many “equivalent” solutions:
Request 1
Equivalent Solutions: Same cost, same sequence. Different take-off times.
Request 2
DeparturesArrivals
A
B
C
R1
R2
A Dial-a-Flight Problem
Network Generation
A
B
C
20 30 40100
We maintain only the Earliest Departure (ED) solution
(Always take off as early/soon as possible)
Request 1Request 2
DeparturesArrivals
A
B
C
R1
R2
A Dial-a-Flight Problem
Network Generation
A
B
C
20 30 40100
Request 1Request 2Request 3
Even small problems can be very complex:
Intermediate connections => many solutions.
DeparturesArrivalsIntermediate Connections
A
B
C
R1
R3
R2
A Dial-a-Flight Problem
Network Generation
A
B
C
20 30 40100
Request 1Request 2Request 3
There aren’t very many ED solutions
• Allows tackling small-medium problems• Exploits properties of the cost function• Are there more opportunities?
DeparturesArrivalsIntermediate Connections
A
B
C
R1
R3
R2
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Network Generation
A Dial-a-Flight Problem
Eliminating Edges
R1
R2R1
R1
Using “satisfy at most once” constraint to identify infeasible edges in the network
A Dial-a-Flight Problem
Eliminating Edges
Eliminate redundant edges
A Dial-a-Flight Problem
Eliminating Nodes
Eliminate redundant nodes
A Dial-a-Flight Problem
Eliminating Nodes
Eliminating a node may eliminate side constraints
Connecting two arcs into a single arc may allow eliminating that arc
A Dial-a-Flight Problem
Network Reduction
Instance: Initial graph Reduced graph
Nodes Edges Nodes Edges Nodes % Edges %
R1Y1Q4B
(28)
166336 469149 18192 314080 10.93% 66.94%
171613 485399 18837 325275 10.97% 67.01%
175245 495579 19086 331662 10.89% 66.92%
R1Y1Q3A
(17)
59649 166213 7255 114184 12.16% 68.69%
58933 160653 6979 108680 11.84% 67.64%
59437 164120 7056 110572 11.87% 67.34%
R1Y1Q2C
(9)
15990 43421 1921 29343 12.01% 67.57%
15780 43356 1923 28949 12.18% 66.77%
16408 44927 1971 30336 12.01% 67.52%
A Dial-a-Flight Problem
Solving Large Instances
• Feasible solution always available (constructed during order acceptance)
• Multi-commodity network flow model too big for large instances
• Multi-commodity network flow very fast for small instances
A Dial-a-Flight Problem
Local Search
• A solution consists of a set of plane itineraries serving all requests
• Any subset of plane itineraries and the requests served by these itineraries defines a smaller instance
• Any solution to the smaller instance can replace the itineraries in the original instance
A Dial-a-Flight Problem
Local Search
Select a subset of plane itineraries
Optimally solve the Instance defined by the
selected itineraries
Initial solution
Update solution
A Dial-a-Flight Problem
Local Search
• How to select the size of the subset of planes?– Trade-off between improvement potential and
computational requirements
• How to select the subset of planes?– Random– Instance/solution characteristics
• Parallel implementation– Run several local searches on several processors
A Dial-a-Flight Problem
Airport Metrics
• Airport metric 1– Choose first jet randomly– Choose remaining jets among those with a base within a radius
of 30 miles from the base of the first jet chosen (randomly)• Airport metric 2
– Choose first jet randomly– Choose remaining jets based on the number of airports in their
itinerary that are within 30 miles from the base of the first jet chosen (maximize)
• Airport metric 3– Choose first jet randomly– Choose remaining jets based on the number of airports in their
itinerary that coincide with the airports in the itinerary of the first jet chosen (maximize)
A Dial-a-Flight Problem
LOD Metrics
• Based on “commonality” of two LODs– Each LOD has an earliest departure time and a latest
arrival time– Evaluate whether it is possible to satisfy both LODs
with a single plane, and, if so, determine the flexibility in the initial departure time
• Example– (A,B),[100,500]– (A,B),[200,600] Departure: [200,300]– Flying time AB: 200
A Dial-a-Flight Problem
LOD Metrics
• (A,B) & (A,C) A-B-C & A-C-B & A-B-A-C & A-C-A-B
• (A,C) & (B,C) A-B-C & B-A-C & A-C-B-C & B-C-A-C
• (A,B) & (B,C) A-B-C & B-C-A-B
• (A,B) & (C,D) …
A Dial-a-Flight Problem
Boss
Grunt 1
Grunt 2
Grunt ?
. . .
Master
Designed so that the workers can coordinate
themselves
Master/grunts ask questionsBoss answers questions
Parallel Framework
A Dial-a-Flight Problem
Parallel Local Search
• Communication– Each processor works on the complete
instances– Only improved solutions have to be shared
• Synchronization– Asynchronous setup– Solution exchange only when an improvement
is identified
A Dial-a-Flight Problem
Wait
Send job toboss
Initialize optimization
problem
Master
Bossready?
No
Yes Bossdone?
Yes
Wait
No
Receive bestsolution
from boss
Halt
A Dial-a-Flight Problem
Wait
Receive jobfrom master
Initialize
Boss
Newjob
msg?
No
Yes
Time is up?
Yes
NoIdlegruntmsg?
NoYes
Bettersolution?
Send best solution to grunt
Updatebest solution
Bossdonemsg?
WaitNo
Yes
Send best solution to master
Yes
No
Receive solution
from grunt
Wait
A Dial-a-Flight Problem
Wait
Send solutionto boss
Grunt
Idlegrunt?
No
Yes
Yes
No Receive bestsolution
from bossInitialize
Bettersolution?
Reoptimizeuntil solution
improves
A Dial-a-Flight Problem
Computational Results
Size Probability
2 20%
3 33%
4 27%
5 13%
6 7%
Metric Probability
Random 25%
Airport 1 25%
Airport 2 25%
Airport 3 25%
Experimental Setup
A Dial-a-Flight Problem
Local Search
Flying timeLegs Deadheads LODs Improvement
2087202823 843 2572 -
1882892663 778 2597 -
1870872605 715 2575 -
Number of planes: 312Number of airports: 46
~11 legs per itinerary~9 LODs per itinerary
A Dial-a-Flight Problem
Local Search
Flying timeLegs Deadheads LODs Improvement
1934152732 757 2572 7.3%
1798042579 688 2597 4.5%
1794852541 648 2575 4.1%
5 grunts, 6 hours, random
Flying timeLegs Deadheads LODs Improvement
2087202823 843 2572 -
1882892663 778 2597 -
1870872605 715 2575 -
Base solution
A Dial-a-Flight Problem
Local Search
Flying timeLegs Deadheads LODs Improvement
1934152732 757 2572 7.3%
1798042579 688 2597 4.5%
1794852541 648 2575 4.1%
5 grunts, 6 hours, random
Flying timeLegs Deadheads LODs Improvement
1911332671 694 2572 8.4%
1777282506 622 2597 5.6%
1770952487 598 2575 5.3%
5 grunts, 6 hours, airport metric
A Dial-a-Flight Problem
Local Search
Flying timeLegs Deadheads LODs Improvement
1911332671 694 2572 8.4%
1777282506 622 2597 5.6%
1770952487 598 2575 5.3%
5 grunts, 6 hours, airport metric
Flying timeLegs Deadheads LODs Improvement
2087202637 667 2572 9.6%
1882892500 614 2597 6.0%
1870872468 583 2575 5.8%
10 grunts, 6 hours, airport metric
A Dial-a-Flight Problem
Local Search
Flying timeLegs Deadheads LODs Improvement
1910912667 696 2572 8.4%
1782772523 637 2597 5.3%
1776672495 602 2575 5.0%
10 grunts, 4 hours, airport metric
Flying timeLegs Deadheads LODs Improvement
2087202637 667 2572 9.6%
1882892500 614 2597 6.0%
1870872468 583 2575 5.8%
10 grunts, 6 hours, airport metric
A Dial-a-Flight Problem
Local Search
10 grunts, 6hrs, airport metric
710000
720000
730000
740000
750000
760000
770000
0 50 100 150 200 250 300 350 400
A Dial-a-Flight Problem
Local Search Analysis
Success Rate Neighborhood Size
0
5
10
15
20
25
30
2 3 4 5 6
A Dial-a-Flight Problem
Local Search Analysis
Success Rate Metric
0
2
4
6
8
10
12
14
1 2 3 4
1: Random2: Airport metric 13: Airport metric 24: Airport metric 3
A Dial-a-Flight Problem
Column Generation Formulation
…
= 1
≤ 1
LOD
Plane
Itin
erar
y
A Dial-a-Flight Problem
Pricing Problem
• Observations– Pricing problem decomposes by plane– Pricing problem is a constrained shortest path
problem (on the directed acyclic network)• Capacity• Flying time• Weight• Satisfy at most once
– Pricing problem involves all LODs
A Dial-a-Flight Problem
Constrained Shortest Path
• Three phase approach– Pure shortest path (s t)– Shortest path with capacity constraint (t s)– Shortest path with all constraints
Shortest path provides lower bound completion cost
s t
Constraints:• Capacity• Flying time• Weight• Serve request ≤ 1
A Dial-a-Flight Problem
Pricing Problem
• Once the pricing problem has been solved, it is extremely fast to generate additional itineraries with slightly higher costs
A Dial-a-Flight Problem
Branching
• Two level branching– Departure window
• Two itineraries with fractional values will have at least one LOD in common
• Restrict the departure time of a common LOD in such a way that the itineraries end up on different branches
– Plane• In case the departure time of the common LOD is
exactly the same in each itinerary restrict the LOD to a particular plane
A Dial-a-Flight Problem
Parallellization
• Observations– The pricing problem decomposes by plane– Solve the pricing problem for each plane at a
separate processor
A Dial-a-Flight Problem
Computational Results
LODsInitial
integer
Best integer (BP)
Best integer (mip)
Improvement
Root LP bound
Best bound
Gap closed in the BP tree
Remaining gap
BP nodes
Columns (total)
Columns (root)
Time (root)
80 4622 4592 4592 0.65% 4569.0 4569.0 0.01% 0.50% 2137 38870 5312 87.2
97 4745 4745 4714 0.65% 4613.8 4613.9 0.08% 2.12% 897 38795 17778 229.7
107 5241 5241 5241 0.00% 5034.2 5088.3 26.17% 2.91% 270 101975 46337 447.0
108 5870 5870 5870 0.00% 5711.5 5723.3 7.40% 2.50% 386 75646 41240 489.2
115 5230 5230 5230 0.00% 4967.2 4967.3 0.04% 5.02% 461 40447 30740 344.6
98 5779 5779 5760 0.33% 5740.3 5741.2 4.23% 0.33% 1187 26138 10160 192.6
115 5905 5905 5905 0.00% 5632.8 5650.3 6.42% 4.31% 345 50553 30258 316.4
88 4727 4727 4711 0.34% 4670.6 4671.1 1.21% 0.85% 1210 26852 7757 203.1
110 6057 6057 6057 0.00% 5864.8 5892.4 14.38% 2.72% 554 48688 24828 234.2
110 5288 5288 5288 0.00% 5078.8 5078.8 0.00% 3.96% 88 39150 36773 1034.1
82 4431 4431 4429 0.05% 4342.4 4344.7 2.72% 1.90% 1378 26520 7861 150.3
93 4767 4767 4764 0.06% 4688.2 4700.0 15.55% 1.34% 945 39394 12843 194.0
93 4807 4807 4806 0.02% 4777.7 4782.5 16.84% 0.49% 1268 38704 7050 212.1
114 5627 5627 5627 0.00% 5333.0 5379.3 15.75% 4.40% 260 61467 47833 409.4
97 4732 4732 4732 0.00% 4476.5 4493.0 6.45% 5.05% 610 46302 33668 244.2
108 5572 5572 5365 3.72% 5275.2 5301.2 28.96% 1.19% 401 71810 31183 264.8
110 5092 5092 5092 0.00% 4995.6 5006.2 11.01% 1.68% 523 37385 12734 474.5
103 5976 5976 5976 0.00% 5578.9 5593.9 3.78% 6.39% 551 45834 30652 196.8
A Dial-a-Flight Problem
Next Big Challenge: Order Acceptance
A Dial-a-Flight Problem
Real-Time IP Solving
Single new row
Newcolumns
Solved IP
How can we use the already solved sub-problem which contains 99% of the rows to solve the new problem?
A Dial-a-Flight Problem
Real-Time IP Solving
• Typically, as the example shows, the instances that we solve are highly correlated and differ by small data changes or the addition of a row or column
• But the absence of a nice duality theory for IP means that IP sensitivity analysis is much, much harder than the elegant and computationally simple LP sensitivity analysis.
• So in the absence of starting from scratch, do we benefit by– Saving the previous solution(s)?– Saving whole or part of the solution tree?
A Dial-a-Flight Problem
Questions?