Methodology for Analysis, Modeling and Simulation of Airport Gate-waiting Delays
A dissertation submitted in partial fulfillment of the requirements for the degree of
Doctor of Philosophy at George Mason University
By
Jianfeng Wang
Master of Science
George Mason University, 2007
Bachelor of Science
Civil Aviation University of China, 2002
Director: Dr. John F. Shortle, Associate Professor
Co-Director: Dr. Lance Sherry, Associate Professor
Department of Systems Engineering and Operations Research
Spring Semester 2011
George Mason University
Fairfax, VA
c 2011 by Jianfeng Wang
Copyright ⃝
All Rights Reserved
ii
Dedication
I dedicate this dissertation to my wife Xiaoxia Tang, my mother Hui Li, my father Bing
Wang, and my grandfather Zhongxue Wang.
iii
Acknowledgments
I would like to thank the following people who made this possible.
I would like to deeply thank my dissertation director, Dr. John F. Shortle for his tremendous care, encouragement and help on my Ph.D. completion. Dr. Shortle cared very much
for my Ph.D. study. At decision points in my Ph.D. study, the question in Dr. Shortle’s
mind was what would benefit me the most. Dr. Shortle’s encouragement kept me motivated
to complete the dissertation. With Dr. Shortle beside me, I never lost hope no matter how
difficult the situation was. Dr. Shortle offered tremendous help on my Ph.D. study. He
spent lots of time in advising me and thinking for me. He devoted much time to editing
this dissertation. He is very dependable. When I needed help, he always made time for me,
sometimes even over the weekend. After I started working full time, Dr. Shortle tried to
accommodate my schedule. For me, Dr. Shortle is a role model of a first class professor, a
responsible researcher and an integral person. The luckiest thing for me in this journey was
to have him as my dissertation director, and it is a great honor for me having been one of
his Ph.D. students.
I would like to thank my dissertation co-director, Dr. Lance Sherry for his advice, connections, encouragement, and challenges. Dr. Sherry advised me to use a problem-oriented
approach to identify a dissertation topic, to emphasize real world applications, and to use
goal-oriented approach to plan daily activities. Dr. Sherry used his extraordinary capability
to let me connect to many people to find shortcuts to complete the dissertation. For example, Dr. Sherry connected me to Juan Wang on statistics, to Guillermo Calderon-Meza
on database and SQL, to Chris Smith in Sensis Corporation on an algorithm validation, to
David Jacobs on gate operation visualization, to Mike Dupuy on dissertation editing, etc.
When I had challenges and got frustrated, Dr. Sherry often noticed it and offered strong
encouragement with his can-do spirit and bravery. For example, when I was frustrated for
not getting airline data, he told me that data would not be an obstacle. When I saw only a
few people in a conference room to listen to my presentation, he told me that my job was to
present it to one person and to make the person understand. Dr. Sherry also offered tough
questions for me to think more and be better prepared for presentations.
I would like to thank Dr. George L. Donohue’s thought-provoking questions and suggestions to make my dissertation realistic and applicable for policy decisions. His insightful
comments in seminars at the Center for Air Transportation Systems Research (CATSR)
sparked thinking and shaped my view on the air transportation system.
I would like to thank Dr. Alexander Brodsky for helping me to make this dissertation
understandable outside of the aviation community. I especially thank him for improving
my dissertation introduction, background, and conclusion.
I would like to thank Dr. Chun-Hung Chen for offering my first assistantship in the U.S.
so that I could pursuit my Ph.D. at George Mason University (GMU). I also thank him for
teaching me simulation.
iv
I would like to thank fellow CATSR students for helping me in my Ph.D. study. I
would like to thank Guillermo Calderon-Meza for setting up the BTS database server and
Concurrent Versions System (CVS) at CATSR and helping me with SQL programming and
Java programming. I would like to thank Juan Wang for helping me with statistics. I
would like to thank Maricel Medina for helping me with Excel pivot tables. I would like
to thank Abdul Qadar Kara for debugging in Java and recommending CVS. I would like
to thank Raheem Rufai on Java programming and debugging. I would like to thank John
Ferguson on his comments on my presentation slides and checking ATL airport gates for
me in person. I would like to thank Yimin Zhang and Vivek Kumar for their comments on
my presentation slides.
I would like to thank the following people in industry. I would like to thank Chris Smith
in Sensis Corporation for his courtesy to provide JFK airport surface operation videos
in Aerobahn. I would like to thank Dr. Tony Diana and Akira Kondo in the FAA for
providing access to the ASPM databases and help in understanding the databases. I would
like to thank Dr. Terry Thompson in Metron Aviation for his advice on making a good
presentation.
I would like to thank the following GMU graduates, students, and friends. I would like
to thank Dr. Donghai He for encouraging me not to be afraid of working on my Ph.D. while
working full time. He let me work hard such that year 2010 — the last year of my Ph.D.
study and the first year of my professional career — became the most achieving year for
me in life so far. He also helps me technically in many ways, including simulation debug,
LATEX, recommending JabRef to manage references, etc. I would like to thank Dr. Wei Sun
on his advice on Ph.D. study and LATEX. I would like to thank Mike Dupuy for editing my
dissertation.
I would like to thank my supervisor at CSSI, inc., Melissa Ohsfeldt, who always encourages team members on continuing education and publishing papers and is flexible with
work schedule.
Finally, I would like to thank my family for their support and influence. I thank my wife
Xiaoxia Tang, who keeps supporting me to accomplish this goal from September 2004 to
February 2011 despite my limited economic and time contribution to the family in this long
journey. I also appreciate her reminding me to stay focused on my study from distractions.
I thank my mother Hui Li, who encourages me to work hard when young, to be brave to
face difficulties, and to respect any work I do. I thank my grandfather Zhongxue Wang,
who provided me with pre-school education and cultivated my interest in natural science.
I learned from him to be truthful to the work I do and to be truthful as a person.
v
Table of Contents
Page
List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
List of Abbreviations . . . . . . .
Abstract . . . . . . . . . . . . . .
1 Introduction . . . . . . . . .
1.1 Airport Gate Congestion
.
.
.
.
xiv
xv
1
2
Problem Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Research Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
1.2.2
Research Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3
Unique Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.4
Summary of Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.5 Potential Readers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Background and Literature Review . . . . . . . . . . . . . . . . . . . . . . . . . .
9
10
1.2
2.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Airport Operations and Gate-waiting Delays . . . . . . . . . . . . . . . . .
10
2.1.1
The Gate Assignment Process . . . . . . . . . . . . . . . . . . . . . .
10
2.1.2
2.1.3
Gate Arrival Process . . . . . . . . . . . . . . . . . . . . . . . . . . .
Turnaround Operations . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
Related literature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Gate-waiting Delay Metric . . . . . . . . . . . . . . . . . . . . . . . .
14
14
2.2.2
Gate-waiting Delay Functional Causes . . . . . . . . . . . . . . . . .
15
2.2.3
Gate-waiting Delay Mitigation Strategies . . . . . . . . . . . . . . .
16
2.2.4
Relationship Between Gate, Taxiway and Runway Capacity . . . . .
22
Summary of Key Gaps in the Literature . . . . . . . . . . . . . . . . . . . .
23
Data Sources and Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.1
Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 BTS Airline On-Time Performance Database . . . . . . . . . . . . .
3.1.2 ASPM Individual Flights Database and Taxi Times Database . . . .
25
25
26
3.1.3
26
2.2
2.3
3
.
.
.
.
ix
xi
Comparison of BTS and ASPM Databases . . . . . . . . . . . . . . .
vi
3.2
3.3
4
3.2.1
Modeling of Taxi-in Process and Gate-occupancy Process . . . . . .
30
3.2.2
Algorithm 1: Estimation and Validation of Gate-waiting Delay . . .
31
3.2.3
Algorithm 2: Estimation of Gate Occupancy Time . . . . . . . . . .
33
Key Limitations and Assumptions . . . . . . . . . . . . . . . . . . . . . . .
34
. . . . . . . . . . . .
36
Gate Delay Characteristics at Major U.S. Airports . . . . . . . . . . . . . .
37
4.1.1
Gate Delay by Airport . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.1.2
Gate Delay by Day . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.1.3
Gate Delay by Time of Day . . . . . . . . . . . . . . . . . . . . . . .
42
4.1.4
Gate Delay by Carrier . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.1.5
Gate Delay by Aircraft Size . . . . . . . . . . . . . . . . . . . . . . .
47
Functional Causes of Gate Delay in High Gate Delay Days . . . . . . . . . .
47
4.2.1
Analysis of Carrier Aggregated Data (6 Airports) . . . . . . . . . . .
49
4.2.2
Analysis of Carrier Specific Data (LGA) . . . . . . . . . . . . . . . .
56
Analysis Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.3.1
Average Gate Delay Across the OEP-35 Airports . . . . . . . . . . .
63
4.3.2
High Gate-Delay Days at Six Major Airports . . . . . . . . . . . . .
63
Gate Delay Simulation Model and Analysis . . . . . . . . . . . . . . . . . . . . .
65
5.1
Gate-delay Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.1.1
Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.1.2
Terminology
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.1.3
Model Description and Data Sources . . . . . . . . . . . . . . . . . .
69
5.1.4
Modeling Assumptions and Limitations . . . . . . . . . . . . . . . .
78
5.1.5
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
Simulation Results and Analysis . . . . . . . . . . . . . . . . . . . . . . . .
80
5.2.1
Canonical Airport Simulation . . . . . . . . . . . . . . . . . . . . . .
80
5.2.2
5.2.3
5.2.4
5.2.5
LGA Simulation . . . . . . .
ATL Simulation . . . . . . .
DFW Simulation . . . . . . .
Simulation Results Summary
.
.
.
.
88
92
94
98
Conclusions and Recommendations for Future Research . . . . . . . . . . . . . .
6.1 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 Gate Delay Severity . . . . . . . . . . . . . . . . . . . . . . . . . . .
102
102
102
4.2
4.3
5.2
6
28
30
Gate-waiting Delay Characteristics and Functional Causes
4.1
5
3.1.4 Other Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6.2
6.1.2
Gate Delay Characteristics . . . . . . . . . . . . . . . . . . . . . . .
102
6.1.3
Gate Delay Functional Causes
. . . . . . . . . . . . . . . . . . . . .
103
6.1.4
Gate Delay Mitigation Strategies . . . . . . . . . . . . . . . . . . . .
103
Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Improved Gate Delay Modeling . . . . . . . . . . . . . . . . . . . . .
103
103
6.2.2
104
Industrial Applications . . . . . . . . . . . . . . . . . . . . . . . . . .
A Functional Cause Identification of Extreme Gate Delays Using Carrier Aggregated
Data (BTS Data) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
106
A.1
A.2
A.3
A.4
A.5
A.6
A.7
.
.
.
.
.
.
.
106
107
108
109
110
111
112
B Simulation Model Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
169
LGA . . . . . . . . .
ATL . . . . . . . . .
JFK . . . . . . . . .
EWR . . . . . . . .
DFW . . . . . . . .
MIA . . . . . . . . .
6 Airport Summary
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
List of Tables
Table
Page
3.1
Coverage of BTS and ASPM databases . . . . . . . . . . . . . . . . . . . . .
27
3.2
Flights recorded in various data sources . . . . . . . . . . . . . . . . . . . .
27
3.3
Required parameters and data sources . . . . . . . . . . . . . . . . . . . . .
30
3.4
Results for arrival departure pairing, ATL, summer 2007, BTS data . . . .
34
4.1
Scope of the analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2
Top 10 airports (if available) which have high gate-waiting fraction flights,
Algorithm 1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3
Gate-waiting delay by major carriers at several major U.S. airports, Algorithm 1a (ASPM data) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4
41
46
Gate-waiting delay difference between major carriers, three major airports
in the New York, Algorithm 1a (ASPM data) . . . . . . . . . . . . . . . . .
46
4.5
Pearson correlation coefficients between gate-waiting delay and aircraft size,
4.6
ASPM data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specific days analyzed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7
Gate Delay Functional Causes in 12 High Gate-delay Days at LGA in Summer
59
5.1
2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deterministic simulation model parameters and assumptions illustrated with
LGA, part 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
5.2
48
55
Deterministic simulation model parameters and assumptions illustrated with
LGA, part 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
5.3
Stochastic simulation model parameters . . . . . . . . . . . . . . . . . . . .
72
5.4
Demand disaggregation, fictitious data . . . . . . . . . . . . . . . . . . . . .
76
5.5
Disruption: one factor at a time . . . . . . . . . . . . . . . . . . . . . . . . .
83
5.6
Eight factors to be investigated, canonical airport (one carrier) . . . . . . .
86
5.7
One factor at a time for disruption and factorial design for mitigation strategies 87
5.8
Calculated mitigation effects on disruptions, canonical airport . . . . . . . .
89
5.9
Eight factors to be investigated, LGA (AA, MQ, DL, OH) . . . . . . . . . .
91
ix
5.10 Calculated mitigation effects on disruptions, LGA
. . . . . . . . . . . . . .
93
5.11 Impact of common gates on gate delay reduction; disruption: arrival delay,
LGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
5.12 Eight factors to be investigated, ATL (DL, FL) . . . . . . . . . . . . . . . .
95
5.13 Calculated mitigation effects on disruptions, ATL . . . . . . . . . . . . . . .
96
5.14 Impact of common gates on gate delay reduction; disruption: gate-blocking
time extension, ATL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
5.15 Eight factors to be investigated, DFW (AA, MQ) . . . . . . . . . . . . . . .
99
5.16 Calculated mitigation effects on disruptions, DFW . . . . . . . . . . . . . .
100
A.1 Functional Causes of High Gate Delay in the Worst 3 Days at LGA in Summer
2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Functional Causes of High Gate Delay in the Worst 3 Days at ATL in Summer
106
2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3 Functional Causes of High Gate Delay in the Worst 3 Days at JFK in Summer
107
2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.4 Functional Causes of High Gate Delay in the Worst 3 Days at EWR in
108
Summer 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.5 Functional Causes of High Gate Delay in the Worst 3 Days at DFW in
109
Summer 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.6 Functional Causes of High Gate Delay in the Worst 3 Days at MIA in Summer
110
2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.7 Gate Delay Functional Causes in 18 High Gate-delay Days in Summer 2007
111
112
x
List of Figures
Figure
Page
1.1
Loop of aircraft phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Gate waiting at penalty box at Chicago O’Hare airport . . . . . . . . . . .
3
1.3
High gate-delay-fraction days in OEP-35 airports, summer 2007, Algorithm
1b (will be discussed in Section 3.2.2) . . . . . . . . . . . . . . . . . . . . .
4
2.1
Chronological issues related to gate delay . . . . . . . . . . . . . . . . . . .
11
2.2
Gate assignment GUI (an arrow represents a flight; a color represents an
aircraft type) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.3
Functional causes of gate-waiting delay . . . . . . . . . . . . . . . . . . . . .
15
2.4
Gate delay mitigation strategies . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1
Delta and Northwest terminal and five remote gates at LGA. The fact that
Comair’s Gate 5A has no jet bridge or contact gate parking and that two
regional jets park at the remote gates indicate that Comair uses the five
remote gates; Source: Google Maps snapshot on 7/6/2009. . . . . . . . . . .
29
3.2
Taxi-in and gate-occupancy process . . . . . . . . . . . . . . . . . . . . . . .
30
3.3
Algorithm 1a: gate-waiting-delay estimation only using ASPM database . .
32
3.4
Algorithm 1b: gate-waiting-delay estimation primarily using BTS database
33
3.5
Arrival and departure pairing method . . . . . . . . . . . . . . . . . . . . .
34
4.1
Gate delay per scheduled fight in OEP 35 airports, summer 2007, Algorithm
4.2
1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gate-delay fraction in OEP 35 airports, summer 2007, Algorithm 1b . . . .
4.3
Gate delay per scheduled fight in OEP 35 airports, summer 2007, Algorithm
4.4
40
1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
High gate-delay-fraction days in OEP-35 airports, summer 2007, Algorithm 1b 40
4.5
Rough gate/runway capacity ratio at some major U.S. airports . . . . . . .
42
4.6
Gate-waiting delay by day at ORD, Algorithm 1b . . . . . . . . . . . . . . .
43
4.7
Daily gate delay of high gate-delay airports . . . . . . . . . . . . . . . . . .
44
4.8
Gate-waiting percentage by time, Algorithm 1b (BTS data) . . . . . . . . .
45
xi
38
39
4.9
Scatter plot of gate-waiting delay in minutes by number of seats at EWR,
Algorithm 1a (ASPM data) . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.10 Comparison of daily total gate delay and schedule volume, ATL and LGA,
summer 2007, BTS data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.11 Functional cause identification, ATL, 06/11/2007 . . . . . . . . . . . . . . .
51
4.12 Functional cause identification, ATL, 07/29/2007 . . . . . . . . . . . . . . .
52
4.13 Functional cause identification, LGA, 06/27/2007 . . . . . . . . . . . . . . .
54
4.14 Cancellations on 4 days, ATL, BTS data . . . . . . . . . . . . . . . . . . . .
55
4.15 Daily gate-waiting delay and QQ plot against gamma model, summer 2007
57
4.16 Total gate-waiting delay by time of day and carrier, LGA . . . . . . . . . .
58
4.17 Gate usage of American and American Eagle, LGA, 6/27/2007 . . . . . . .
60
4.18 Comair gate-waiting delay, arrival rate at LGA on 8/9/2007 . . . . . . . . .
61
4.19 Gate delay and gate-occupancy time by time of day (actual gate-in time),
American and American Eagle . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.1
Gate delay functional causes and mitigation strategies . . . . . . . . . . . .
66
5.2
Critical times in gate operation . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.3
The remote gate area at Washington Dulles International Airport . . . . . .
69
5.4
5.5
Simulation model overview . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulation model demand input, LGA data . . . . . . . . . . . . . . . . . .
73
74
5.6
Demand disruption A: arrival delay; start hour: 19, duration: 2 hours; arrival
delay: 3 hours; fictitious data . . . . . . . . . . . . . . . . . . . . . . . . . .
5.7
75
Demand disruption B: regular turn gate-blocking time extension; start hour:
19, duration: 2 hours; gate-blocking time extension multiplier: 2; fictitious
5.8
data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Demand disruption C: regular turns converted to ending turns; start hour:
75
19, duration: 2 hours; fraction of regular turns converted to ending turns:
0.5; fictitious data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
Simulation model supply disruption and mitigation; LGA data . . . . . . .
77
5.10 Canonical airport demand profile . . . . . . . . . . . . . . . . . . . . . . . .
81
5.11 Canonical airport gate occupancy . . . . . . . . . . . . . . . . . . . . . . . .
82
5.12 Impact of disruptions: one factor at a time, canonical airport . . . . . . . .
83
5.13 Impact of demand disruption A: arrival delay; canonical airport . . . . . . .
84
5.9
5.14 Impact of disruptions (AA, MQ) on total daily gate delays (AA, MQ, DL,
OH): one factor at a time, LGA . . . . . . . . . . . . . . . . . . . . . . . . .
xii
90
5.15 Impact of disruptions (DL) on total daily gate delays (DL, FL): one factor
at a time, ATL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
5.16 Impact of disruptions (AA,MQ) on total daily gate delays (AA,MQ): one
factor at a time, DFW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
A.1 Gate delay functional cause identification at LGA . . . . . . . . . . . . . . .
106
A.2 Gate delay functional cause identification at ATL . . . . . . . . . . . . . . .
107
A.3 Gate delay functional cause identification at JFK . . . . . . . . . . . . . . .
108
A.4 Gate delay functional cause identification at EWR . . . . . . . . . . . . . .
109
A.5 Gate delay functional cause identification at DFW . . . . . . . . . . . . . .
110
A.6 Gate delay functional cause identification at MIA . . . . . . . . . . . . . . .
111
xiii
List of Abbreviations
ASPM
Aviation System Performance Metrics
ATC
Air Traffic Control
BTS
Bureau of Transportation Statistics
FAA
Federal Aviation Administration
NAS
National Airspace System
NextGen
Next Generation Air Transportation System
OEP
Operational Evolution Plan
OOOI
Out of the gate, Off the ground, On the ground and Into the Gate
ASQP
Airline Service Quality Performance
ARINC
Aeronautical Radio, Incorporated
xiv
Abstract
METHODOLOGY FOR ANALYSIS, MODELING AND SIMULATION OF AIRPORT
GATE-WAITING DELAYS
Jianfeng Wang, PhD
George Mason University, 2011
Dissertation Director: Dr. John F. Shortle
Dissertation Co-Director: Dr. Lance Sherry
This dissertation presents methodologies to estimate gate-waiting delays from historical
data, to identify gate-waiting-delay functional causes in major U.S. airports, and to evaluate
the impact of gate operation disruptions and mitigation strategies on gate-waiting delay.
Airport gates are a resource of congestion in the air transportation system. When
an arriving flight cannot pull into its gate, the delay it experiences is called gate-waiting
delay. Some possible reasons for gate-waiting delay are: the gate is occupied, gate staff
or equipment is unavailable, the weather prevents the use of the gate (e.g. lightning), or
the airline has a preferred gate assignment. Gate-waiting delays potentially stay with the
aircraft throughout the day (unless they are absorbed), adding costs to passengers and the
airlines. As the volume of flights increases, ensuring that airport gates do not become a
choke point of the system is critical.
The first part of the dissertation presents a methodology for estimating gate-waiting
delays based on historical, publicly available sources. Analysis of gate-waiting delays at
major U.S. airports in the summer of 2007 identifies the following. (i) Gate-waiting delay
is not a significant problem on majority of days; however, the worst delay days (e.g. 4%
of the days at LGA) are extreme outliers. (ii) The Atlanta International Airport (ATL),
the John F. Kennedy International Airport (JFK), the Dallas/Fort Worth International
Airport (DFW) and the Philadelphia International Airport (PHL) experience the highest
gate-waiting delays among major U.S. airports. (iii) There is a significant gate-waitingdelay difference between airlines due to a disproportional gate allocation. (iv) Gate-waiting
delay is sensitive to time of a day and schedule peaks.
According to basic principles of queueing theory, gate-waiting delay can be attributed to
over-scheduling, higher-than-scheduled arrival rate, longer-than-scheduled gate-occupancy
time, and reduced gate availability. Analysis of the worst days at six major airports in the
summer of 2007 indicates that major gate-waiting delays are primarily due to operational
disruptions — specifically, extended gate occupancy time, reduced gate availability and
higher-than-scheduled arrival rate (usually due to arrival delay). Major gate-waiting delays
are not a result of over-scheduling.
The second part of this dissertation presents a simulation model to evaluate the impact of
gate operational disruptions and gate-waiting-delay mitigation strategies, including building
new gates, implementing common gates, using overnight off-gate parking and adopting selfdocking gates. Simulation results show the following effects of disruptions: (i) The impact
of arrival delay in a time window (e.g. 7 pm to 9 pm) on gate-waiting delay is bounded. (ii)
The impact of longer-than-scheduled gate-occupancy times in a time window on gate-waiting
delay can be unbounded and gate-waiting delay can increase linearly as the disruption level
increases. (iii) Small reductions in gate availability have a small impact on gate-waiting
delay due to slack gate capacity, while larger reductions have a non-linear impact as slack
gate capacity is used up.
Simulation results show the following effects of mitigation strategies: (i) Implementing common gates is an effective mitigation strategy, especially for airports with a flight
schedule not dominated by one carrier, such as LGA. (ii) The overnight off-gate rule is
effective in mitigating gate-waiting delay for flights stranded overnight following departure
cancellations. This is especially true at airports where the gate utilization is at maximum
overnight, such as LGA and DFW. The overnight off-gate rule can also be very effective
to mitigate gate-waiting delay due to operational disruptions in evenings. (iii) Self-docking
gates are effective in mitigating gate-waiting delay due to reduced gate availability.
Chapter 1: Introduction
Growth in demand for air travel has outstripped the growth in capacity provided by airports
and the Air Navigation Service Providers (ANSP). In 2007, flight delays cost passengers
and airlines $12 to $14 billion in lost time and fuel [Robyn, 2008]. In 2010, nationwide air
traffic congestion is predicted to cost $46 billion to the nation’s economy [FAA, 2009].
Air passenger traffic is forecasted to double in 15 years and triple in 20 years with
an expected yearly growth rate of 5 percent [Yeamans, 2001]. To meet growing demand,
aircraft manufacturers have developed the A380 ‘super-jumbo’ jet that will be capable of
carrying from 555 to 800 passengers, and the Next Generation Air Transportation System
(NextGen) is designed to increase the capacity of the national airspace system (NAS), while
increasing efficiency and safety through the use of leading edge technology by using satellites
for navigation and communication [JPDO, 2007].
Currently, the capacity of the air transportation system is limited by airport capacity in
the U.S. [Dillingham, 2005] and airports will continue to be a primary element in the total
capacity of the air transportation system [JPDO, 2007, chapter 3, page 5]. Airport capacity
is affected by many factors such as the configuration and geometry of the airport, the
organization and procedures for airspace use (i.e., air traffic management), airport operating
procedures (i.e., how the runways are used), airmanship, and technology. Of prime concern
to the air transport system are the adequacy of the runways to handle the number of aircraft
movements and the adequacy of the number of terminal gates to load and unload passengers
and cargo. If the runway capacity or the terminal gate capacity is inadequate, delays will
occur [McGregor, 2004]. “Runway capacity at the busiest airports is the primary limiting
factor in NAS operations today, and even with the maximum possible efficiency gains,
some airports may need additional runways to accommodate the expected traffic growth.
1
Focus of this research
Gate queue
Travel starting
and ending point
Takeoff queue
Landing queue
Research scope
Figure 1.1: Loop of aircraft phases
Implementing super-density arrival/departure procedures enables closer spacing for arrivals
and departures and new runways can be built much closer to existing runways” [JPDO,
2007, chapter 2, page 18]. The secondary major limiting factor is the number of gates at an
airport [McGregor, 2004]. In enabling NextGen, one important component is “the reduction
of ground movement delays and congestion due to constrained airport infrastructure” by
“providing sufficient gate capacity” [JPDO, 2007, chapter 3, page 26].
1.1
Airport Gate Congestion
As an airplane arrives to and departs from an airport, it passes through several potential
choke points. These include arrival and departure paths, runways, taxiways, ramps, gates,
and so forth (Figure 1.1 shows a notional illustration). Depending on the demand and
number of resources, different points in this process may become constrained and act as a
choke point. For example, after an aircraft lands on a runway, there are scenarios in which
it cannot pull into its assigned gate and must sit on the tarmac to wait. This phenomenon
is defined as gate waiting. Several airports have created space for flights to “park” if their
assigned gates are not available. This space is known as the “penalty box”. Figure 1.2
shows the penalty box at Chicago O’Hare airport [Matt, 2005].
Studies have identified the stages of flight in which delays occur and the causal factors
that result in delays. For example, the Department of Transportation [Mead, 2001] classifies
delays as turnaround delay, taxi-out delay, airborne delay and taxi-in delay. Taxi-in delay
2
Penalty box
Figure 1.2: Gate waiting at penalty box at Chicago O’Hare airport
accounts for about 8% of overall delay [Mueller and Chatterji, 2002], and gate-waiting
delays (gate delay for short) are the dominant contributor to taxi-in delays [Idris et al.,
1999, Gosling, 1993].
Figure 1.3 shows the gate-waiting severity at the U.S. OEP-35 airports1 in the summer
of 2007. (The specific algorithms used to generate these results will be discussed in Section 3.2.2.) The dark bars in the graph, show the number of days during which 30% or more
of the flights experienced a gate-waiting delay in the summer of 2007. Out of the 35 major
airports, 10 had at least one such day; the other 24 airports did not have any such days, so
they are not shown on the x-axis. The lighter bars in the graph show the number of days
during which 30% or more of the flights experienced gate-waiting delay and pulled into the
gate after the scheduled arrival time. Flights that experienced gate-waiting delay due to
early arrival, but ended up arriving at the gate on time, are not counted. DFW, ATL, JFK
and PHL have the most days during which 30% or more of the flights experienced a strictly
positive gate-waiting delay. On average, 66% of these days in the three airports were due
to early arrivals, representing padding in the schedule and inflexibility/inability to change
1
commercial U.S. airports with significant activity [FAA, 2007]
3
60
50
40
Number of days
Early arrivals
30
30% or more flights experience gate waiting
30% or more flights experience gate waiting
and arrive later than scheduled
20
10
0
DFW
JFK
PHL
ATL
MSP
LGA
IAH
MIA EWR LAX
Airport
Figure 1.3: High gate-delay-fraction days in OEP-35 airports, summer 2007, Algorithm 1b
(will be discussed in Section 3.2.2)
gate assignments when early arrivals occur.
Gate delays affect airline operations and scheduling in many ways. First, gate-waiting
delay increases the cost of operating a flight, including fuel burned, crew cost, aircraft life
and engine life. Second, gate-waiting delays may have a propagation effect due to aircraft
turnaround and crew and passenger connections [Xu, 2007]. If the airport is the passenger’s
final destination, the passenger’s trip delay is equal to this flight’s arrival delay. However,
if gate-waiting delay causes passengers to miss their connections, the passenger’s trip delay
can be much higher than the arrival delay [Wang, 2007, Sherry and Donohue, 2009]. Third,
an airline’s schedule is limited by gate availability. For example, AirTran was not able to
add new flights at ATL until 2007 when three new gates were added [Ramos, 2007].
Gate delays affect an airport’s attractiveness to carriers. Gate availability is a prerequisite to attract new entrant carriers and to expand operations of existing carriers [Belliotti,
2008, page 30].
Gate delay can also affect the FAA Air Traffic Control (ATC)’s surface operations if
airports do not have enough space to hold aircraft waiting for a gate. For example, Boston
Logan International Airport (BOS) does not have holding pads where aircraft can wait for
4
gates, so held aircraft may contribute to surface congestion [Idris et al., 1999].
Gate delay can cause severe customer service problems. Being “trapped on a plane for
several hours causes a lot of frustration” [Stoller, 2009]. In January 1999, severe gate delays
of Northwest Airlines flights at Detroit in stranded hundreds of passengers on aircraft queued
on taxiways for up to 8.5 hours [Slater, 1999]. On August 8, 2009, Continental Airlines and
ExpressJet Airlines caused the passengers on board Continental Express flight 2816 to
remain on the aircraft at Rochester International Airport for almost 6 hours [DOT, 2009a].
In November 2008, the Department of Transportation proposed a rule to enhance airline
passenger protections, including a provision that requires airlines to adopt contingency plans
for lengthy tarmac delays and incorporate them in their contracts of carriage [DOT, 2009a].
New consumer rules prohibit U.S. airlines operating domestic flights from permitting an
aircraft to remain on the tarmac for more than three hours [DOT, 2009b].
Early identification of potential gate congestion is important to take proactive approach.
Atlanta airport has been historically gate constrained. Until 2007, it had not added gates
since building the international E concourse prior to the 1996 Olympics [Ramos, 2007]. After
its 5th runway was commissioned in 2006, gate constraints emerged as a bottleneck [Terreri,
2009] and three new gates were finally added in 2007 [Ramos, 2007]. However, the three new
gates are not enough to meet demand and have become “a sore point between the airport
and its two hub airlines, Delta and AirTran” as both airlines seek the gates’ exclusive use2 .
The severe gate constraint was not realized until the fifth runway was commissioned. After
high gate delay occurred, a reactive approach was taken to implement surface management
system and to assign common gates [Terreri, 2009]. The gate delay could have been better
mitigated if these processes were started earlier.
As the volume of aircraft increases in the national airspace system, ensuring that airport
gates do not become a choke point of the system is critical.
2
The airport finally assigned them as common use [Ramos, 2007]
5
1.2
Problem Statement
Research on gate delay is limited and insufficient due to limited data availability and rarity
of severe gate delays.
Many researchers refer to the gate-waiting phenomenon [Idris, 2001, Richards, 2008].
But most existing research on gate delay is limited to anecdotes [Slater, 1999], experience
or qualitative analysis [Gosling, 1993]. Few quantitative metrics have been given on the
percentage of gate delay as a cause of taxi-in delay [Idris et al., 1999]. NextGen’s concept of
operations “examines concepts that can advance the capabilities of existing infrastructure
and enable new infrastructure to be developed as needed,” but do not identify or intend
to identify specific locations for gate needs at existing airports [JPDO, 2007, chapter 3,
page 1].
No methodology has been developed to identify functional causes of system-wide gate
delay. Systematic analysis of functional causes of severe gate delay is limited because
severe gate disruptions are rare [Slater, 1999]. Mitigation strategies of gate delay have
been suggested individually, but their impacts have not been compared quantitatively or
evaluated collectively.
1.2.1
Research Objectives
The objectives of this research are as follows.
1. Estimate the severity of gate delay at major U.S. airports. The objective is to evaluate
the degree to which airport gates are a limiting resource in the flow of airplanes arriving
to and departing from an airport.
2. Investigate characteristics of gate delay (e.g. effects of carrier, aircraft type, time
of day, etc.). The objective is to determine how gate delays are distributed across
different carriers, aircraft types, and time, etc. For example, it is possible that gate
delays are a problem only for local to specific carriers, in which case gate exchange
among carriers would be helpful.
6
3. Identify functional causes of gate delay. The objective is to consider the system as a
queueing system where airplanes are users and gates are servers. According to queueing theory [Gross et al., 2008], waiting time is a function of arrival (runway landing)
patterns, service (gate occupancy) patterns, number of available servers (gates), and
the queueing discipline (first-come-first served, priority, etc.). The objective is to
identify which of these functions contributes most to the worst gate delays.
4. Evaluate mitigation strategies on gate delay. The objective is to compare different
gate-delay reduction initiatives and investigate how effective these strategies are in
dealing with gate delay under different functional causes.
1.2.2
Research Approach
To achieve the four objectives, the following approach is adopted:
1. Develop a set of unique algorithms based on publicly available data to:
(a) Estimate the gate delay of each arriving flight;
(b) Estimate the gate occupancy time of each turn;
(c) Construct aggregated hourly arrival rate, average gate occupancy time, and gate
utilization;
2. Build a gate-delay simulation to evaluate mitigation strategies of different scenarios:
(a) Develop a stochastic process-based discrete event simulation queueing model to
simulate aircraft movements through gate system;
(b) Construct disruption scenarios based on historical analysis;
(c) Conduct experiments of disruption scenarios with mitigation strategies;
(d) Conduct an experimental design to rank factors and interactions between them
by effects on gate delay.
7
1.3
Unique Contributions
There are three major contributions of this dissertation:
1. This research develops a systematic method for analysis of gate-delay severity and
characteristics. Gate-delay comparison across different airports can be used to identify
specific locations of airport development needs. The asymmetry of gate delay across
airlines can be used by airports for decision making on airline gate allocation and
common gate reservation.
2. This research develops a systematic method to identify functional causes for severe
gate delays.
3. This research develops a gate-delay simulation model, which enables researchers to
evaluate the impacts of major gate-delay functional causes and mitigation strategies
collectively. For example, the simulation can be used to answer questions like, “How
do common gates mitigate gate delay compared with adding new gates?” The model
can also be used to predict gate congestion beyond historical boundaries.
1.4
Summary of Results
This dissertation shows the asymmetry of gate delay across different airports, carriers, days
and time of day. Airports with the biggest gate-delay problems in 2007 were ATL, JFK,
DFW and PHL. There are significant gate delay differences between carriers as a result
of disproportional gate allocation. On most days, gate delays are minor and do not limit
throughput through the airport. However, the worst days tend to be extreme outliers.
Observed severe gate delays were always related to operation disruptions, rather than
over-scheduling. Disruptions include higher-than-scheduled arrival rate, longer gate occupancy time and reduced gate availability. Among the 18 worst days in the summer of 2007,
higher-than-scheduled arrival delay occurred in 9 days, longer gate occupancy time occurred
in 10 days, and reduced gate availability occurred in 10 days.
8
Use of common gates can mitigate gate delays effectively, especially for airports that
are not dominated by a small number of carriers, such as LGA. Overnight off-gate parking
can be effective in mitigating gate disruptions in evenings, especially at airports where gate
utilization is at maximum overnight, such as DFW. There are diminishing returns in the
use of multiple mitigation strategies.
1.5
Potential Readers
Airlines can use this research to assist with the decision on flight cancellations and aircraft
swapping — a process that often ignores gate constraints and delays. In addition, airlines
can use this research to make decisions on gate exchange with other airlines, as well as
investment on new gates/stands and automatic docking systems.
Airports can use this research to gain insights of gate utilization and to assist policy
decisions regarding common gates and gates allocation to airlines. The FAA can use this research to identify specific locations for airport development needs, considering runway/gate
capacity expansion and departure/arrival operation management.
9
Chapter 2: Background and Literature Review
This chapter reviews existing literature related to gate delay. Section 2.1 describes airport
operations related to gate delay. Section 2.2 reviews research related to gate-waiting delays.
Section 2.3 summarizes the key gaps in the literature.
2.1
Airport Operations and Gate-waiting Delays
Gate delay occurs when a flight cannot pull into its gate and must therefore wait on
the tarmac. This phenomenon is closely related to gate assignment, gate arrival process,
turnaround process, etc. Figure 2.1 shows the chronological issues related to gate delay.
2.1.1
The Gate Assignment Process
Gate-waiting delay is closely related to gate assignment, the process of assigning flights to
gates. Gate assignment is usually handled in three phases [Bazargan, 2004].
Phase 1: Feasibility Check
The first phase is a long term planning effort which occurs several months before the day
of operation. Ground controllers check that a feasible gate assignment can be made with
the proposed flight schedule, without making an actual gate assignment. A gate assignment
planning tool (similar to what is shown in Figure 2.2) can be used to give an overall sense
of the gate assignment plan. The schedule must be changed or reduced if there are not
enough gates (except for over-scheduling).
10
Airports (sometimes with airlines): Terminal
building and common gate allocation
(sometimes exclusive gates allocation)
(usually years before operation)
Possible issue: over-scheduling,
schedule padding (quick response to
market)
Airlines: publish schedule
(about 3 months before operation)
0:00
Gate 1
Gate 2
Gate 3
……
Gate n
3:00
6:00
Possible issues: sub-optimal gate allocation
to carriers and common gate reservation
(slow response to market)
12:00 15:00 18:00 21:00 24:00
Airlines: make initial gate assignment
(hours before operation, say 4 am on the
operation day)
Airlines / NAS / ATC: land aircraft (operation)
Airlines: dock aircraft at gate (operation)
Possible issue: not enough buffer
time between two consecutive turns
to absorb operation disruptions (early
arrivals, late departures)
Possible issue: arrival disruption (land
early and no gate, land late and depart late,
arrival cancellation)
Possible issues: gate occupied, ground
crew unavailable (manpower, weather),
inflexible gate change policy
Airlines: turn around aircraft (operation)
Airlines: push back (sometimes needs ATC
clearance or considers ATC information)
ATC: sometimes hold aircraft at gate or other
areas at an airport (operation)
Possible issue: cancellation, flight crew
shortage, ground crew shortage, gate
hold due to GDP
Figure 2.1: Chronological issues related to gate delay
0:00
3:00
6:00
12:00 15:00 18:00 21:00 24:00
Gate 1
Gate 2
Gate 3
……
Gate n
Figure 2.2: Gate assignment GUI (an arrow represents a flight; a color represents an aircraft
type)
11
Phase 2: Development of Daily Gate Assignment Plan
The second phase involves development of a single-day plan prior to the start of the actual
day of operation. A gate assignment tool, similar to the planning tool, can be used to get
the initial gate assignment plan at the start of the day, or the initial gate board.
This phase is the main focus of research on gate assignments. The objective is to improve
the performance of initial gate assignments. The problem is usually modeled as an integer
program [Haghani and Chen, 1998, Yan and Huo, 2001], a mixed integer program [Bolat,
1999, Bolat, 2000] or a network flow problem [Yan and Chang, 1998, Yan and Tang, 2007].
Due to uncertainty in the input data driving the gate assignment process, the gate
assignment tool must be designed such that it produces solutions that are robust to uncertainty. Certain input parameters related to resource demand, such as the expected landing
time and the expected pushback time, are difficult to predict prior to these events [Roling
and Visser, 2007]. A gate assignment planning tool must therefore be able to adapt to perturbations in these input conditions, as well as to account for taxi-in delay due to taxiway
congestions. Adding a buffer time usually improves robustness, but it is still a heuristic
approach constrained by gate capacity.
Phase 3: Change of Gate Assignment During Operation
The third phase revises these daily plans throughout the day of operation due to irregular operations such as delays, bad weather, mechanical failures and maintenance requirements [Bolat, 2000]. The same gate assignment tool can be used to create the initial gate
board at the beginning of the day (phase 2) and to update the gate assignment throughout
the day (phase 3). These updates affect gate waiting, and hence flight on-time performance,
as well as airport staffing and passenger relocations. The updates are made based on gate
controllers’ experience sometimes with the assistance from computer algorithms.
Some models have been developed to focus on gate changes [Gu and Chung, 1999, Yan
and Tang, 2007]. In addition, some research has evaluated the relationship between the
initial gate assignment plan and the real-time gate changes necessary to meet the stochastic
12
flight delays that occur in real operations [Yan et al., 2002, Yan and Tang, 2007, Dorndorf
et al., 2007].
2.1.2
Gate Arrival Process
When an aircraft lands on a runway, it usually goes straight to the ramp (with possible
taxiway delay) and pulls into its assigned gate. In some cases, an aircraft is unable pull
into its gate and is obliged to hold on the tarmac to wait, due to gate unavailability, ground
personnel unavailability, or other causes. The aircraft may stay on the ramp, penalty box,
inactive taxiway, or inactive runway to wait. Generally, it is preferred to park the aircraft in
a non-movement area to minimize disruption to taxiway and ramp operations. For example,
Boston Logan International Airport (BOS) uses hangar positions to store aircraft that do
not have a gate readily available [Idris, 2001]. Chicago O’Hare airport uses a penalty
box to park gate-waiting aircraft temporarily [Matt, 2005]. New York John F. Kennedy
International Airport (JFK) uses inactive taxiways (based on observation of Sensis Taxiview
video1 ).
2.1.3
Turnaround Operations
After arriving at the gate, an aircraft usually goes through a turnaround process to disembark passengers and embark passengers. The turnaround operation includes passenger deplaning and boarding, fueling, and other activities [Fricke and Schultz, 2008]. The
turnaround operation has been mainly investigated using the Critical Path Method (CPM)
[Braaksma and Shortreed, 1971, Idris et al., 1999, Wu and Caves, 2003, Fricke and Schultz,
2008] to study operational procedures consisting of several work flows in order to identify
critical paths in the operation, including passenger flow, crew, catering, fueling, luggage,
cleaning, maintenance, etc.
After the turnaround operation, an aircraft may continue occupying its gate until its
planned departure time to conform to its schedule or its destination airport capacity limit
1
http://www.sensis.com/docs/261/, accessed on Oct. 2, 2010
13
(Ground Delay Program). However, when its gate is requested by another aircraft, this
flight may be pushed back to wait on the tarmac for runway departure.
2.2
Related literature
Research related to this dissertation can be categorized into the following areas:
1. Gate-waiting delay metrics
2. Gate-waiting delay functional causes
3. Mitigation strategies of gate-waiting delay
4. Relationships between gate, taxiway and runway capacity
2.2.1
Gate-waiting Delay Metric
Researchers have mainly described the gate-waiting delay phenomenon anecdotally [Slater,
1999, DOT, 2009a] or by experience [Gosling, 1993, Stoller, 2009, Richards, 2008]. Gatewaiting delay is considered to be the largest contributor of taxi-in delay [Gosling, 1993].
Metrics have been developed to quantify the severity of gate-waiting delay in several major airports. The Aircraft Communications Addressing and Reporting System (ACARS)
records delay duration and cause based on voluntary pilot reports [Idris et al., 1999, Idris,
2001]. Percentages of total delays by cause show that, for Dallas/Fort Worth International
Airport (DFW), Chicago O’Hare International Airport (ORD) and Boston Logan International Airport (BOS), there is a dominance of the taxi-in delays due to gate congestion (gate
occupied) over the other delay categories, such as ramp and field congestion [Idris et al.,
1999]. Based on an analysis by the Department of Transportation [Mead, 2001], taxi-in
delay accounts for about 8% of overall delay [Mueller and Chatterji, 2002].
To date, the author is not aware of any system wide analysis of gate delay using quantitative metrics.
14
Estimation and
characteristics
Functional causes
Stroller 2009
Idris 2001
United 2007
Gate Delay
Factors
•Airport
•Day
•Time
•Carrier
•Aircraft size
Idris 2001
Idris 2001
Gross et al. 2008
Bazargan 2004
Over-scheduling
Higher Arrival Rate
Lower Service Rate
Idris 2001
Richards 2008
Idris 1999
United 2007
Lower Gate Utilization
Waiting time
λ 0(t )
→1
µ 0(t )c 0
1
λ(t)
µ(t) ⋅ c(t)
λ (t ) > λ 0(t ) λ (t ) : Arrival rate
µ (t ) : Service rate
µ (t ) < µ 0(t ) c(t ) :
No. servers
c(t ) < c 0
Figure 2.3: Functional causes of gate-waiting delay
2.2.2
Gate-waiting Delay Functional Causes
Gate-related delays can be understood according to concepts in queueing theory [Gross
et al., 2008], where arriving flights can be thought of as “customers” and gates as “servers”.
Generally speaking, congestion in queueing theory is determined by the utilization quantity,
ρ(t) = λ(t)/c(t)µ(t), where λ(t) is the arrival rate at time t, c(t) is the number of servers
at time t, and µ(t) is the service rate of each server at time t. Higher values of ρ(t)
correspond to greater congestion. Flight operations are based on a schedule where the
scheduled utilization quantity is ρ0 (t) = λ0 (t)/c0 µ0 (t), where λ0 (t) is the scheduled arrival
rate at time t, c0 is the nominal number of servers, and µ0 (t) is the scheduled service rate
of each server at time t. There are four functional causes for gate delay, over-scheduling
(ρ0 (t) is already high (approaching 1)), higher-than-scheduled arrival rate (λ(t) > λ0 (t)),
lower-than-scheduled service rate (µ(t) < µ0 (t)), and reduced available gates or reduced
utilization (c(t) < c0 ), as shown in Figure 2.3.
Over-scheduling can result in gate-waiting delays [Stoller, 2009]. For example, some
airlines over-scheduled their gates at Boston Logan Airport and consequently had more
aircraft on the ground than the number of available gates [Idris, 2001]. Typically, airlines
schedule gates for only up to 80% occupancy, knowing that they will need reserve capacity
to deal with random occurrences [Horonjeff and McKelvey, 1993].
15
High aircraft arrival rates and long gate occupancy times (compared with scheduled
operations) can also be a reason for gate-waiting delay. When an arrival flight finds its
gate occupied, it may be because the arrival aircraft is early; however, it is often due to the
departure delay of its previous flight assigned to the same gate [Idris, 2001].
Gate delay can be also be caused by a reduced number of usable gates, which can
be caused by a variety of reasons, including awaiting gate assignment, unavailable ramp
staff or ground equipment, inclement weather [Idris et al., 1999, Richards, 2008] and airline
preference for keeping the original gate assignment. Based on communication with a gate
manager of a major airline, this particular airline usually lets an arriving aircraft wait for its
original assigned gate even if there is an open alternative, when the gate conflict is detected
late. The reason is that last minute gate reassignment requires crew and passengers on
the ground to be redirected with short notice. Another scenario for the preference of using
the original assigned gate is for early landings, when the itineracy of the aircraft, the crew,
and the passengers are not disrupted by gate delay, as long as the gate arrival is on time.
Generally, the original assigned gate is preferred unless the expected gate-waiting delay is
too long.
2.2.3
Gate-waiting Delay Mitigation Strategies
To deal with different functional causes of gate delay, different strategies2 can be used to
mitigate gate delay as follows (also see Figure 2.43 ):
1. Increase gate capacity (increase c0 ),
2. Reduce scheduled gate occupancy time (increase µ0 ),
3. Reduce scheduled flight volume (reduce λ0 ),
2
One strategy directly mitigates the impact of one particular functional cause. However, the strategy
may indirect mitigate the impact of other functional causes.
3
Strategies in grey color are less recommended because these strategies have large adverse effects or their
effects are not direct.
16
Estimation and
characteristics
Functional causes
Gross et al. 2008
Bazargan 2004
Stroller 2009
Idris 2001
United 2007
Mitigation strategies
JFK Jetblue 2008
ATL 2011
Fricke 2008
Airline: reduce gate
occupancy time
Steuart 1974
Airline: under-schedule
Over-scheduling
Le 2006
Gate Delay
Factors
•Airport
•Day
•Time
•Carrier
•Aircraft size
Idris 2001
Idris 2001
Higher Arrival Rate
Lower Service Rate
Manley 2008
Richards 2008
Reduced
Idris 1999
United 2007
Gate Availability
FAA: runway slot control
ATC: traffic flow
management
Slater 1999
Airline: arrival cancellations
Wang 2010
Airline / airport: off-terminal
parking
Neufville 2002
Idris 2001
Idris 2001
Airline / airport : more gates
Richards 2008
Gu 1999,
Yan 2002,
Yan 2007,
Dorndorf 2007
Airline / airport : common gates
Airline / airport: self-docking
gates
Airline / airport: gate
reassignment
Figure 2.4: Gate delay mitigation strategies
4. Use traffic flow management, such as Ground Delay Program (GDP) to slow runway
arrivals (reduce λ),
5. Cancel arrivals (reduce λ),
6. Tow aircraft off-gate (increase µ),
7. Use common gates (may increase c),
8. Use self-docking systems to improve gate reliability (increase c),
9. Improve gate assignment algorithms (increase c).
Mitigation Strategies for Over-scheduling
To deal with over-scheduling, the key is to reduce gate demand relative to gate capacity.
There are three basic strategies: Increase the number of gates (c0 ), reduce the scheduled
gate occupancy time (1/µ0 ), and reduce the scheduled number of flights (λ0 ).
The first strategy is to increase gate capacity, that is, to increase c0 . If there is a big
imbalance between demand and capacity, this is the only way to meet demand. Of course,
17
this is expensive and limited by the land at airports. Gates have two forms, contact gates
and remote gates.
Contact-gate capacity expansion usually requires terminal expansion because the gates
need to be built with terminals. For example, on October 22, 2008, JetBlue opened its new
Terminal 5 at John F. Kennedy International Airport (JFK) at the cost of approximately
$800 million. The new terminal has 26 gates and can handle 500 daily departures and
arrivals, almost twice the 270 flights the airline used to operate at JFK [Maynard, 2008]. At
ATL, the new international terminal is projected to feature 12 new international gates with
a projected delivery in 2011, at a cost of $1.4 billion [Tharpe, 2008]. Another new terminal
scheduled to be completed after the new international terminal, featuring 70 additional
domestic gates, is estimated to cost around $1.8 billion [Garrett, 2005].
Remote gates are used to park the aircraft remotely on hardstands and transport passengers via buses or vans to the concourses and terminals. However, such operations — already
being used at many airports to avoid the expense of terminal and apron expansions — have
proven to be quite expensive operationally. This arrangement is also inconvenient for passengers and service crews [Yeamans, 2001].
A key question is how many gates are needed since flights do not always arrive and
depart on time. Stochastic models have been developed to model the uncertainty of arrival
punctuality and aircraft gate occupancy time [Hassounah and Steuart, 1993,Wu and Caves,
2003]. Hassounah and Steuart [Hassounah and Steuart, 1993, Steuart, 1974], Edwards and
Newell [Edwards and Newell, 1969], and Bandara and Wirasinghe [Bandara and Wirasinghe,
1988] use empirical data to predict gate demand under uncertainty.
The second strategy is to reduce the scheduled gate occupancy time, that is, to reduce
(1/µ0 ) or increase µ0 . Gate occupancy time is commercially lost time and is therefore
desired to be as short as possible. Gate-occupancy-time reduction can be achieved through
turnaround reliability improvement using second jet-bridges, innovative boarding concepts,
auto adjustment for conveyer belts and equipment, etc. The Single European Sky Air
Traffic Management Research (SESAR) project has set the performance target to cut gate
18
occupancy time for short/medium range aircraft from around 30 minutes currently down
to 15 minutes in 2020 [Fricke and Schultz, 2008].
The third strategy is to reduce the scheduled flight volume, that is, to reduce λ0 . Airline
under-scheduling and reserving spare gates for operation disruption can effectively control
gate congestion [Steuart, 1974, pages 169–189]. The FAA’s slot control may also reduce gate
demand by limiting the number of landings allowed in an airport [Le, 2006]. The scheduled
flight volume should be capped by both gate constraints and runway constraints, whichever
is more restrictive.
Runway capacity is more of a concern to the Federal Aviation Administration (FAA),
whereas gate capacity is more of a concern to airlines. For an airport where runway capacity
is more restrictive, if the scheduled arrival volume from airlines is higher than the runway
capacity, the FAA may impose runway slot controls to reduce delay. Once the demand for
runway is capped, the demand for gates is capped accordingly. See Section 2.2.4 for research
on the relationship between runway and gate capacity. The disadvantage of reducing flight
volume is that this measure may decrease airline revenue.
Mitigation Strategies for Higher-Than-Scheduled Arrival Rate
Gate delay can result from higher-than-scheduled arrival rate due to stochasticity in flight
operations. Air Traffic Control (ATC) can be impacted because a higher arrival rate may
require aircraft holding or lead to gridlock on the airport taxiway system. Another strategy
to reduce gate delay is to use traffic flow management, such as Ground Delay Program
(GDP) to slow runway arrivals, that is, to reduce λ.
NextGen’s Trajectory Management has the prospect of better schedule compliance by
assigning each arriving aircraft to an appropriate runway, arrival stream, and place in sequence [JPDO, 2007, chapter 2, page 21]. In addition, a higher-than-scheduled arrival rate
can result from early arrivals, usually a result of schedule padding. Trajectory Management’s promise for better arrival time prediction may encourage airlines to remove some
schedule padding and hence mitigate gate delay.
19
Another strategy is to cancel arrivals, that is, to reduce λ. If the gate-waiting delay
is so large that too many arrival flights are stranded on tarmac for gate during severe
operation disruption, airlines can cancel arrival flight to reduce gate demand. This approach
is only needed in very rare occurrences when huge gate delay is anticipated. For example,
DTW experienced a snowstorm in Jan. 2–4, 1999 and airline operations were disrupted.
Many airlines cancelled their arrival flights. However, Northwest airline failed to realize
the gate congestion and kept operating inbound flights to DTW and a huge gate delay
occurred [Slater, 1999].
Mitigation Strategies for Longer-Than-Scheduled Gate Occupancy Time
Gate delay can result from longer-than-scheduled gate occupancy time. Longer gate occupancy time is either a result of longer-than-scheduled gate service time, or a result of gate
holding caused by downstream restrictions (discussed in Section 2.2.4). One strategy is to
tow aircraft off-gate4 in order to reduce the time the aircraft occupies a gate, 1/µ [Wang
et al., 2010]; however, towing leads to airlines’ increased operating cost.
Mitigation Strategies for Reduced Available Gates
Another strategy to reduce gate delay is to share gates among airlines, which may increase
c for individual airlines. Two primary drivers that motivate the use of shared gates are
peaking of traffic at different times and uncertainty in the level or type of traffic [de Neufville
and Belin, 2002]. Some gates in airports are reserved for common use for the ease of exchange
of gate usage between different airlines [Ramos, 2007]. Some airports do not have reserved
common gates, but can force gate exchanges when needed. At Boston Logan Airport, the
limited gate capacity problem is made worse by the inflexibility of the airlines to exchange
the use of gates with each other. The Mass-Port Authority (MPA), which maintains Logan
Airport, can force such an exchange when an airline is underutilizing a gate, especially
for international flights, which have a limited number of gates in Terminal E [Idris and
4
mainly for aircraft having a long turnaround time, such as flights staying at an airport overnight
20
Hansman, 2000].
Then the next question becomes “What percentage should be allocated for common
use?” According to integer programming, the fewer the constraints, the better the optimal
solution could be. So all common use could achieve the best gate utilization and lowest gate
delay possible. However, airlines prefer exclusive gate usage for their predictable planning
and efficient operation. So some percentage of gates should be exclusive to specific airlines.
There is also a third form, called preferential use, meaning one airline has preference to use
a gate, but if it is not used, other airlines can use it. This form had been proven ineffective.
“The greater the proportion of common and exclusive-use gates the greater the reduction in
inefficiency5 . Common use gates means the airport controls gate use and will ensure they
are used most efficiently. Similarly, when a gate has been given to a carrier for exclusive
use, it is in the carrier’s best interest to use the resource efficiently. As the proportion
of preferential-use gates rises, efficiency falls. A carrier that has preferential treatment
may try to use gates as a barrier to entry and not necessarily use them efficiently.” [Gillen
and Lall, 1997]. Ideally, the airport should reserve a certain fraction of gates as common
use to account for uncertainty and individual carriers’ peak traffic only. Then individual
carriers can schedule their gates to full capacity. This fraction could be a function of time
of day since uncertainties later in the day are usually higher. The fraction could also be
a function of weather forecasts which predicts the uncertainty level on a day to day basis.
Steuart [Steuart, 1974] used queueing theory to estimate the fraction of gate capacity that
should be reserved for unscheduled extra needs due to delays and other random events. The
key finding is that the fraction decreases when the number of scheduled gates is larger (this
is because random effects tend to cancel when there are more gates) [de Neufville and Belin,
2002]. The limitation of research in common gates is that the research is mainly focused on
small operation perturbations, instead of major operation disruptions.
If gate delay is because aircraft wait to dock in inclement weather or ramp staff is
unavailable, self-docking systems can improve gate reliability (increase c) and reduce gate
5
Terminal efficiency was defined as number of passengers and pounds of cargo served given number of
runways, number of gates and other airport resources.
21
delays. Self-docking systems use laser-based technology to allow pilots to self-park at the
gate, without the need of a ramp worker to marshal it into its gate position. The system has
already been implemented for 92 of 157 gates at Dallas/Forth Worth International Airport
(DFW) since January 2008 [Richards, 2008].
If gate delay is a result of an airline’s reluctance to change gate assignment at the last
moment, one strategy to reduce gate delay is to use more efficient gate assignment algorithms to effectively increase the number of usable gates, c. Algorithms were developed to
improve gate assignment robustness in planning and reduce gate idle time in operation, as
mentioned in Section 2.1.1. But there are three limitations in this research area. First,
gate changes are usually undesirable. A gate change with a long lead time, say 4 hours in
advance, is not so problematic. But a short lead time, say 30 minutes, may be problematic.
Previous research neglected this fact. Second, research in robust gate planning has typically considered small stochastic delays in the schedule and not major disruptions. This
dissertation shows that major schedule disruptions can have a significant impact on gate
congestion, and corresponding gate assignment strategies need to be developed for these
scenarios, including gate delay and cancellations. Third, one method to change gate assignment in operations in approximately an optimal way is to periodically solve an assignment
model [Chandra, 1990], which has been applied to the problem of dynamic dispatching of
vehicles [Durbin, 2003]. Previous research is limited to heuristic logic to change gates.
2.2.4
Relationship Between Gate, Taxiway and Runway Capacity
Relationship of Runway Capacity and Gate Capacity
Some research has transformed gate capacity into an equivalent runway capacity for the purpose of capacity matching using scheduled gate occupancy time and positioning time [de Neufville
and Odoni, 2003]. If runway capacity is bigger than gate capacity, gate delay is expected
under high flight volume. For example, since ATL added its fifth runway, its delay moved
from the air to the airport surface [Terreri, 2009].
The capacity matching for runway and gate capacity planning has not been researched.
22
The current practice is usually reactive, instead of proactive.
One challenge in planning runway capacity and gate capacity jointly is that simply
making runway capacity and gate capacity equivalent and allowing the airport to operate
under that capacity may easily saturate an airport surface under stochastic delays. Higher
gate capacity might be desired to absorb stochastic delays [Idris, 2001] since ground holding
is safer and cheaper than air holding. Quantitative research has not been found to design
the capacity difference.
Relationship of Gate Capacity and Ramp/Taxiway Capacity
When an aircraft pushes back to the ramp, it may block the ramp from being used for
pushback maneuvers from other gates. When a taxiway does not have enough capacity to
hold taxi-out queueing, a departure flight may have to hold at a gate, requiring a longer
gate-occupancy time [Idris, 2001].
2.3
Summary of Key Gaps in the Literature
Key gaps in the literature are.
1. No systematic method to quantitatively measure gate delays and identify functional
causes
2. No method to evaluate the impacts of disruptions and the effects of mitigation strategies collectively
3. No evaluation of mitigation strategies for severe disruptions
In the literature, gate-delay severity and causes are described anecdotally or based on
experience. The author is not aware of any methods using quantitative metrics to estimate
system-wide gate delay severity or to identify major functional causes. Individual strategies
to reduce gate-waiting delays are identified, but no quantitative, comparative and collective
23
impact evaluations of gate-delay mitigation strategies has been found, especially under
severe operation disruptions. This dissertation will address these issues.
24
Chapter 3: Data Sources and Algorithms
This chapter describes the data sources and algorithms for estimating historical gate delay.
Limitations and assumptions are also discussed.
3.1
Data Sources
Gate-waiting delay is not recorded in actual operations and thus is not directly available in
any database. Although several databases record the taxi-in time of individual flights, they
do not break this time into its component parts, such as the delay due to waiting for a gate.
Thus, gate-waiting delay must be inferred or approximated using other information available. This section discusses several data sources—in particular, the Bureau of Transportation Statistics (BTS) and Aviation System Performance Metrics (ASPM) databases—and
associated fields that can be used to infer or approximate gate-waiting delay. The precise
algorithms used to estimate gate-waiting delay are discussed in Section 3.2.
3.1.1
BTS Airline On-Time Performance Database
This database is maintained by BTS, part of the United States Department of Transportation. This database has only one table, On-Time Performance. This table contains on-time
arrival data for non-stop domestic flights by major air carriers and provides such additional items as departure and arrival delays, origin and destination airports, flight numbers,
scheduled and actual departure and arrival times, cancelled and diverted flights, taxi-out
and taxi-in times, air times, and non-stop distances [BTS, 2003]. Key fields in this table are
flight date, destination airport, carrier, scheduled arrival time, “wheels-on” time (the time
that an aircraft lands on the runway, see [USpatent, 2000] for a precise definition), “gate-in”
time (the time that an aircraft pulls into a gate), “gate-out” time (the time that an aircraft
25
pushes back from a gate), and “taxi-in” time (the difference between “wheels-on” time and
“gate-in” time).
3.1.2
ASPM Individual Flights Database and Taxi Times Database
The ASPM database is maintained by the Federal Aviation Administration (FAA). Two
tables used in this dissertation are the “Individual Flights” table and the “Taxi Times” table.
Key fields in the “Individual Flights” table are “wheels-on” time (the time that an aircraft
lands on a runway), “gate-in” time (the time that an aircraft pulls into a gate), the actual
taxi-in time, the taxi-in delay, and the unimpeded taxi-in time. The actual taxi-in time
is the gate-in time minus the wheels-on time (Figure 3.2). The taxi-in delay is the actual
taxi-in time minus the unimpeded taxi-in time. The unimpeded taxi-in time represents the
time it would take for an aircraft to taxi in the absence of delay-causing factors such as
congestion or weather [ASPM, 2008]. This value is estimated using a regression model and
is broken down by calendar year, by season, by carrier and by airport (for those reporting
in the ASQP and Aeronautical Radio, Incorporated (ARINC) data). See [Kondo, 2009] for
further details. In 2001, there were 14 reporting carriers and about 300 reporting airports.
3.1.3
Comparison of BTS and ASPM Databases
The key difference between the BTS database and the ASPM database are the following [BTS, 2003, ASPM, 2008] (see also Table 3.1).
• BTS includes data for air carriers that have at least one percent of total domestic
scheduled-service passenger revenues (20 carriers); ASPM includes data for all carriers.
• BTS includes data for operations to and from airports that account for at least one
percent of the nation’s total domestic scheduled-service passenger enplanements (32
airports in 2007); ASPM includes data for 77 airports.
• BTS includes cancelled flights; ASPM does not.
26
Table 3.1: Coverage of BTS and ASPM databases
BTS
ASPM
Carrier
20 U.S. major
All
Airport
32 U.S. major
77
Cancelled flights
Yes
No
International flights
No
Yes
Aircraft type
No
Yes
Tail number
Yes
BTS Flights Only
Table 3.2: Flights recorded in various data sources
ATL
JFK
Source
6/5/07 7/3/07
BTS
2239
675
ASPM
2690
1175
Average Daily Flights (ACI)
2724
1223
Flightstats.com
2794
1324
• BTS does not include international flights; ASPM does. (BTS covers nonstop scheduledservice flights between points within the United States, including territories.)
• BTS does not include information regarding aircraft type; ASPM does.
• BTS contains the tail number of flights; ASPM only contains the tail number of flights
that are also in BTS.
• BTS does not include unimpeded taxi-in times; ASPM does.
Table 3.2 shows the number of flights recorded in the data sources for two example days
at two airports. In both days, ASPM records more flights than BTS, due to the inclusion
of international flights. Also, the gap between ASPM and BTS is larger for JFK than for
ATL, since JFK has a higher percentage of international flights. As a reference, the third
line gives the average number of daily flights for each airport (averaged over one year, 2007)
obtained from Airport Council International. The last line shows the number of flights
observed from the public website www.flightstats.com.
27
3.1.4
Other Data Sources
c
Other data sources used in this research are the following. Sensis1 Aerobahn⃝TaxiView
surface movement video provides locations of aircraft and vehicles on the airport surface
by time. Google Maps is used as a secondary source to get information about an airport’s
terminal geometry, contact gates and remote gates (hard stand) when the information
from the airport web site is not enough. The website www.flightstats.com provides flight
information by airport and day, including the actual flight’s gate assignment, flight number,
arrival time, departure time, carrier, and aircraft type. There are two main limitations of
this data source. First, data are web-based and therefore lack support for mass data query.
Second, some data, such as gate assignments, are missing. Besides www.flightstats.com,
some other public web sites are also used. The following examples show how the information
is used in this dissertation.
In analysis of ATL, www.flightstats.com indicates that there were 179 gates at ATL on
June 11, 2007. This value is used as the number of gates at ATL in the summer of 2007.
The number of gates may not be the same as the number of gates today, due to new gates
built recently [Ramos, 2007].
In analysis of LGA, the website panynj.gov provides a list of gates and gate users (carriers). The website www.flightstats.com shows that Comair flights (using regional jets) usually go to gate 5A. The website www.wikimapia.org/3557/LaGuardia-Airport-LGA-KLGA
also shows that gate 5A is the Comair gate; but gate 5A can park multiple flights at the
same time based on flightstats.com, which is almost impossible based on the geometry of
the Delta terminal on Google Maps, as shown in Figure 3.1. Google Maps shows five remote
gates on the east side of LGA (not given in panynj.gov) with two regional jets parked there.
These collective data sources indicate that Comair flights use east remote gates to park but
use 5A as the gate name for passenger boarding purposes.
1
Sensis Corporation is a private company based in Syracuse, NY, specializing in radar and passive sensors
for airport surveillance and air defense.
28
Two
regional
jets
Figure 3.1: Delta and Northwest terminal and five remote gates at LGA. The fact that
Comair’s Gate 5A has no jet bridge or contact gate parking and that two regional jets park
at the remote gates indicate that Comair uses the five remote gates; Source: Google Maps
snapshot on 7/6/2009.
29
Possible
Unimpeded taxi in Possible
gateon taxiway and
non-gate waiting
ramp
delay
delay
Positioning Scheduled gate
in time
occupancy time
Possible gate
occupancy
delay
Positioning
out time
Taxi-in delay
Unimpeded
taxi-in time
Gate-occupancy time
Taxi-in time
Wheels-on time
Gate-in time
Gate-out time
Figure 3.2: Taxi-in and gate-occupancy process
Table 3.3: Required parameters and data sources
Parameter
Source
Taxi-in time
Database field in BTS and ASPM
Unimpeded taxi-in time Database field in ASPM estimated
via a regression model [Kondo, 2009]
Gate-occupancy time
Pairing algorithm using BTS database
Positioning time
Deterministic value (estimate)
Calculated via equation (3.2)
Gate-waiting delay
3.2
Algorithms
This section describes the modeling of the taxi-in process and gate-occupancy process, two
specific algorithms for estimating gate-waiting delay from the ASPM and BTS databases
and one algorithm for calculating gate-occupancy time.
3.2.1
Modeling of Taxi-in Process and Gate-occupancy Process
Figure 3.2 shows a realization of the actual taxi-in process and gate-occupancy process. The
taxi-in time includes the unimpeded taxi-in time and the taxi-in delays. These delays may
be gate related or non-gate related (e.g., due to taxiway congestion). The unimpeded taxi-in
time (which is from wheels “on” to gate “in”) includes the positioning-in time (the time to
position an aircraft into the gate). The actual gate-occupancy time includes scheduled gateoccupancy time and possible gate-occupancy delay. The gate-occupancy delay is allowed to
be negative in the case that a late arriving flight leaves on time and thus absorbs delay [Xu,
2007]. A summary of the parameters and their sources in Figure 3.2 are shown in Table 3.3.
30
3.2.2
Algorithm 1: Estimation and Validation of Gate-waiting Delay
Gate-waiting delay is the difference between taxi-in delay and non-gate delay (3.1). However, no existing database contains the non-gate taxi-in delay, so it must be estimated.
Based on interviews with airport managers of a major U.S. airline, airport surface traffic is
the main cause of non-gate delay, and this delay is usually smaller than 5 minutes. As a
default, this paper assumes that up to 5 minutes of taxi-in delay is unrelated to gate delay,
where the remaining taxi-in delay is the estimation of gate-waiting delay (3.2).
Gate-waiting delay = taxi-in delay − non-gate delay
(3.1)
Gate-waiting delay ≈ max(Taxi-in delay − 5 min, 0).
(3.2)
The maximum function ensures that the estimated delay is non-negative. For example,
suppose that the unimpeded taxi-in time is 6 minutes. Then a 7 minute taxi-in time is
estimated to contain 0 minutes of gate-waiting delay, while a 12 minute taxi-in time is
estimated to contain 1 minute of gate-waiting delay. The method is partially justified by
research indicating that gate delays are the dominant contributor to taxi-in delay [Idris
et al., 1999, Gosling, 1993].
The accuracy of (3.2) was also checked for a few sample flights from the surface operation
video of JFK from Sensis Aerobahn TaxiView. Direct observation of the video identified
the amount of time that an aircraft is moving (unimpeded taxi in), standing temporarily
in front of a runway to cross or in front of another aircraft to move (taxi in delay due to
traffic), and standing without any nearby runway or aircraft around it (gate-waiting delay).
The movements of two long taxi-in delayed flights were observed and the estimation error
was no more than 3 minutes. (One flight on 9/28/2008 was observed to have 32 minutes of
gate-waiting delay compared with the original estimate of 34.4 minutes. Another flight on
10/10/2008 was observed to have 15 minutes gate-waiting delay compared with the original
estimate of 16.4 minutes.)
31
ASPM
Database
Taxi-in
Taxi
in
Delay
Gate-waiting
Gate
waiting Delay = Max
(Taxi-in Delay – 5 min, 0)
Gate-waiting
Gate
waiting
Delay
Figure 3.3: Algorithm 1a: gate-waiting-delay estimation only using ASPM database
Of course, this is an approximation, since the method assumes that non-gate-related
delays comprise at most 5 minutes of the total taxi-in delay. Sensitivity analysis was performed on this 5-minute threshold, which will be discussed in Section 4.1.2. The overall
implication of the approximation is that the gate-delay statistic does not provide an exact
magnitude, but can be useful as a relative metric to identify qualitative trends. For example, the identification of high-delay days appears to be insensitive to the exact value of the
threshold (see Figure 4.6 discussed later).
Algorithm 1a: using ASPM Database
The first algorithm is based on data found in the ASPM database (Figure 3.3). Here, taxiin delay is a specific field in the database (equal to the taxi-in time minus the unimpeded
taxi-in time). The method extracts the taxi-in delay from the database and substitutes it
into (3.2) to obtain the gate-waiting delay. A limitation of this algorithm is that it does
not track data associated with cancelled flights.
Algorithm 1b: using ASPM and BTS Databases
Figure 3.4 shows a modified version of the basic algorithm that combines information from
the ASPM and BTS databases. The main difference is that the actual taxi-in time is
obtained from the BTS database instead of the ASPM database. First, data on each
flight is obtained from the BTS database (from the on-time performance table), including
actual taxi-in time, date, carrier, and airport. The last three fields are used to look up the
unimpeded taxi-in time from the ASPM database.
The taxi-in delay is then calculated as the difference between the actual taxi-in time
and the unimpeded taxi-in time. The rest of the procedure is similar to algorithm 1a. It is
32
ASPM
Database
• Date
• Carrier
• Airport
BTS
Database
Unimpeded
Taxi-in Time
+
Taxi-in
Delay
Gate-waiting Delay = Max
(Taxi-in Delay – 5 min, 0)
Gate-waiting
Delay
Actual
Taxi-in Time
Figure 3.4: Algorithm 1b: gate-waiting-delay estimation primarily using BTS database
assumed that any date between June 1 and August 31 is mapped to the summer season for
the purpose of looking up the unimpeded taxi-in time in the ASPM database.
Both Algorithms 1a and 1b have limitations in estimating gate-waiting delays. For
example, to investigate the correlation between aircraft size and gate-waiting delay, Algorithm 1a is used because the ASPM database has aircraft-type information while BTS does
not. On the other hand, when cancellations are considered, Algorithm 1b is used since
the BTS database includes cancellations while ASPM does not. In gate-waiting-delay estimation in Chapter 4, “data source: ASPM database” refers to Algorithm 1a while “data
source: BTS database” refers to Algorithm 1b. In Chapter 4, Algorithm 1a is used in the
carrier difference analysis and aircraft-size correlation analysis. Algorithm 1b is used in all
other places.
3.2.3
Algorithm 2: Estimation of Gate Occupancy Time
Gate occupancy time is calculated using the tail-number tracking method to pair arrivals
and departures in the BTS database. To calculate the gate occupancy time of a particular
flight, the arrival flight and departure flight need to be paired (Figure 3.5), but this pairing
is not included in the BTS or ASPM database. In this dissertation, they are paired using
the tail number in the BTS database, assuming that the turnaround time is between 0
and 1,440 minutes (24 hours). If more than one departure has the same tail number as
an arrival, the departure with the smallest turnaround time is selected. If a flight is not
paired, it is deleted from the pairing table. The limitation of this method is the possible
33
Arrivals
Departures
Pairing algorithm:
•Arrival’s destination =
departure’s origin
•Same tail number
•Closest connection with
turnaround time < 1 day
Arrival
departure
pairs (turns)
Figure 3.5: Arrival and departure pairing method
Table 3.4: Results for arrival departure pairing, ATL, summer 2007, BTS data
Number of input records
29,051(arrivals) + 28,996 (departures) = 58,047
Number of output records 28,383 pairs (98% arrivals remain)
Algorithm complexity
Quadratic in number of input records
Query time
30 seconds on a Dell OptiPlex GX270 with 1.5 GB memory
loss of flights due to unavailable pairing. Table 3.4 shows that 2% of flights are lost during
this process for the data at ATL in the summer of 2007.
3.3
Key Limitations and Assumptions
The key limitation of these algorithms is that non-gate taxi-in delay is assumed to be at
most 5 minutes. This ignores traffic volume fluctuation by time of day. However, sensitivity analysis in previous research shows that this parameter does not affect qualitative
conclusions from the analysis [Wang et al., 2009] (also see Figure 4.6). Also, the unimpeded
taxi-in time from ASPM used in the analysis does not fully consider taxi path (runway
assignment, gate assignment and route selected). This limitation may be improved by incorporating more accurate methods to estimate unimpeded taxi time considering runway
and gate assignments [Simaiakis and Balakrishnan, 2009].
The gate occupancy time derivation algorithm does not consider maintenance or towing.
It is possible that an aircraft is towed out of its gate after arrival and then towed into its
gate before departure for maintenance or to make its gate available for other flights.
There are approximately 1-2% of arrivals that cannot be paired with any departures,
and these flights are deleted. This loss of data may be due to maintenance that separates an
aircraft’s arrival and departure by more than 24 hours. This leads to an underestimation of
34
gate utilization. Conversely, towing may lead to an overestimation of gate utilization. For
example, American Airlines and American Eagle usually have 9 more aircraft at night than
their declared number of gates at LGA, which means some aircraft are towed out of their
gates and do not occupy gates at night. This leads to an overestimation of gate utilization.
Aircraft-gate compatibility constraints are not considered in this dissertation. In reality,
each gate is compatible with only certain types of aircraft. The reason why an aircraft does
not go to an open gate may simply be because the gate size is not compatible. A gate
may also have adjacency constraints, meaning that an aircraft occupying a gate may block
adjacent gates from being used. For example, a gate may be compatible with a Boeing
737 and a Boeing 767, but when a Boeing 767 parks there, an adjacent gate is blocked
and cannot be used. This dissertation does not consider aircraft type because the current
BTS database on-time-performance table does not have aircraft-type information. Also,
www.panynj.gov does not give aircraft type constraints or adjacency constraints for LGA.
A useful extension of this dissertation would be to use other data sources to include aircraft
type in the analysis. The ASPM database can be used to get aircraft type information
and flightstats.com can be used to partially infer gate compatibility information based on
historical data (i.e., what aircraft types have been historically parked at each of these gates).
As for the carrier specific analysis of LGA in Chapter 4 and the simulation of LGA in
Chapter 5 (see Figure 5.9), this limitation should not be a major issue. First, aircraft sizes
of same carriers are similar at LGA. For example, American Airlines and Delta Airlines
usually use the size of Boeing 737, and their affiliates American Eagle and Comair use
regional jets. While there can be dual-use gates, especially between American and American
Eagle, there may be a preference of gate assignment based on aircraft size. Table 4.5 shows
that the correlation coefficient between gate-waiting delay and aircraft size at LGA is only
0.035 (aircraft with 100 more seats generally experience 3.5 more minutes of gate delay).
Secondly, the adjacency constraint usually only applies to a small portion of gates and very
few heavy aircraft fly to LGA, so the gate adjacency constraint does not explain high gate
delay when some gates are unused.
35
Chapter 4: Gate-waiting Delay Characteristics and
Functional Causes
In this chapter, summer 2007 data from the BTS and ASPM databases are used to estimate gate-waiting delay to investigate gate-delay characteristics and to identify gate-delay
functional causes. Summer 2007 was chosen because it represents a historically delay season.
This chapter is organized as follows. Section 4.1 investigates the gate-delay characteristics at major U.S. airports. Based on these results, Section 4.2 selects several high-gate
delay days in several airports to investigate the functional causes of high gate delay. Table 4.1 shows the scope of the analysis. Seasonal average delay and daily total delay are
estimated for all OEP-35 airports. Gate-runway capacity ratio is estimated for only 24 airports, because the required data for the other 11 airports are not publicly available. More
detailed analysis is conducted on 8 airports, including LGA, JFK, EWR (3 airports in the
congested New York region), ATL and DFW (super hubs with high gate delays dominated
by one carrier), MIA (an airport with the highest average gate delay per delayed flight),
LAX (an airport that has high gate delay in average but relatively low extreme days), and
ORD (a super hub). LGA, ATL, JFK, EWR, DFW, MIA all have outlier days where gate
delays are much higher than other days, and the worst 3 days at each of these airports are
analyzed. LGA is the most space-constrained airport of the 8 airports, so gate delay has a
high cost because it may also impact airport surface operations. In addition, LGA is not
dominated by one airline, and two of its three major carriers experience high gate delay,
so the use of common gates may mitigate gate delay. Therefore, carrier specific analysis is
done for LGA.
36
Table 4.1: Scope of the analysis
Seasonal average
delay
Daily total
delay
Gate-runway
capacity ratio
Carrier t test
Aircraft size
correlation test
Worst 3 days
by time of day,
carrier aggregated
Worst 12 days
by time of day,
carrier specific
4.1
LGA
ATL
JFK
EWR
DFW
MIA
LAX
ORD
Other 27
OEP
airports
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
5
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
16
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Gate Delay Characteristics at Major U.S. Airports
Algorithms 1a and 1b described in Section 3 are used for the analysis. “Data source: ASPM
database” refers to Algorithm 1a while “data source: BTS database” refers to Algorithm 1b.
In this chapter, Algorithm 1a is used in the carrier difference analysis and aircraft-size
correlation analysis. Algorithm 1b is used in all other places.
4.1.1
Gate Delay by Airport
The first step is to get an overview of gate-delay severity at the major U.S. OEP-35 airports.
These airports serve major metropolitan areas and also serve as hubs for airline operations.
More than 70 percent of passengers move through these airports. Delays at the OEP-35
airports have a ripple effect on other locations. Key FAA performance measures are based
on data from this set of airports, including Airport Average Daily Capacity, On-Time Gate
Arrivals, and On-Time Gate Departures [FAA, 2007].
37
3.5
3
2.5
Gate delay per scheduled
flight (min)
2
1.5
1
0.5
0
K
F
J
L
W T
F
A
D
IA
M
L
H
P
X
A
L
A
G
L
D
R
O
R
H
W A
I
W T
E
D
P
S
M
A
C
D
X
H
P
N
E
D
T
L
C
S
A
L
C
L
S
D
IA
I
O
W C
B
M
S
O
B
M
E
M
O
F
S
L
W T
D S
M
L
L
F
A
E
S
A
P
T
N
A
S
IT
P
E
L
C
G
V
C
L
N
H
X
D
P
Airport
Figure 4.1: Gate delay per scheduled fight in OEP 35 airports, summer 2007, Algorithm 1b
Figures 4.3 and 4.2 show the gate-delay severity at the OEP-35 airports. In the OEP35 airports, the gate-delay average is up to 3.2 min per scheduled flight at JFK, and the
gate-delay fraction is up to 0.31 at ATL. Gate delays differ significantly across the OEP-35
airports. Hub airports, such as ATL, DFW and JFK, tend to have higher gate delay partly
due to their higher gate-demand fluctuation as a result of waves of arrivals and departures
in hub operations.
Figure 4.4 (repeated from Figure 1.3 in Section 1.1) shows the airports having high
gate-delay fraction days. The dark bars in the graph, show the number of days during
which 30% or more of the flights experienced a gate waiting delay in the summer of 2007.
Out of the 35 major airports, 10 had at least one such day; the other 24 airports did not
have any such days, so they are not shown on the x-axis. The lighter bars in the graph
show the number of days during which 30% or more of the flights experienced gate-waiting
delay and pulled into the gate after the scheduled arrival time. Flights that experienced
gate-waiting delay due to early arrival, but ended up arriving at the gate on time, are not
counted. DFW, ATL, JFK and PHL have the most days during which 30% or more of the
flights experienced a strictly positive gate-waiting delay. On average, 66% of these days
in the three airports were due to early arrivals, representing padding in the schedule and
38
0.35
0.3
0.25
Fraction of scheduled flights
having strictly positive gate
delay
0.2
0.15
0.1
0.05
0
LT W KF X L H W R PS AI D A TL S X N M A CL S A D O O I W LT EL LL TI G N A L X
A E
P N P
A FD J AL H
P AI TD EW M M RO G
L C O
P ED EM CD S L S AI FS CM W
B H
B D S C F P VC AS T H D
M
Airport
Figure 4.2: Gate-delay fraction in OEP 35 airports, summer 2007, Algorithm 1b
inflexibility/inability to change gate assignments when early arrivals occur.
Naturally, the estimate of gate delay is sensitive to the non-gate delay threshold from
(3.2). Table 4.2 gives a sensitivity analysis of the airport gate-delay ranking. The sensitivity
analysis varies the non-gate delay threshold as well as the fraction threshold for identifying
days with a high percentage of gate-delayed flights. Several airports appear near the top
of most lists regardless of the values of these two parameters. (In this table, gate-waiting
delays that arise from early arrivals are not subtracted out.)
Figure 4.5 shows a gate-runway capacity ratio at some major U.S. airports. This ratio
is based on a dynamic apron capacity calculation [de Neufville and Odoni, 2003]. The
calculation assumes that airports are busy non-hub airports and that all flights have a
gate-service time of 60 minutes. This is only a rough estimation and does not consider the
gate-by-gate configuration of carrier and aircraft size. Based on the estimation, HNL is
more likely to experience gate waiting delay than JFK when runway capacity is saturated.
This does not mean that HNL has more gate delay, but rather if runway capacity were
saturated, it would have more gate delay. JFK has a high gate/runway capacity ratio and
also a high delay. One possible reason is that gate allocation is not proportional to flight
39
3.5
3
2.5
Gate delay per scheduled
flight (min)
2
1.5
1
0.5
0
K
F
J
L
W T
F
A
D
IA
M
L
H
P
X
A
L
A
G
L
D
R
O
R
H
W A
I
W T
E
D
P
S
M
A
C
D
X
H
P
N
E
D
T
L
C
S
A
L
C
L
S
D
IA
I
O
W C
B
M
S
O
B
M
E
M
O
F
S
L
W T
D S
M
L
L
F
A
E
S
A
P
T
N
A
S
IT
P
E
L
C
G
V
C
L
N
H
X
D
P
Airport
Figure 4.3: Gate delay per scheduled fight in OEP 35 airports, summer 2007, Algorithm 1b
60
50
40
Number of days
Early arrivals
30
30% or more flights experience gate waiting
30% or more flights experience gate waiting
and arrive later than scheduled
20
10
0
DFW
JFK
PHL
ATL
MSP
LGA
IAH
MIA EWR LAX
Airport
Figure 4.4: High gate-delay-fraction days in OEP-35 airports, summer 2007, Algorithm 1b
40
Table 4.2: Top 10 airports (if available)
gorithm 1b
Gate-waiting
30%
20%
fraction threshold
Non-gate delay
5
5
threshold (min)
Top airports where DFW DFW
ATL
ATL
fraction of flights
experiencing
JFK
JFK
PHL LAX
strictly positive
gate waiting
IAH
IAH
exceeds x%
EWR DTW
(ordered by
MIA EWR
number of such
MSP PHL
“bad” days)
LAX MSP
LGA ORD
which have high gate-waiting fraction flights, Al30%
20%
10%
30%
20%
10%
10
10
10
15
15
15
PHL
JFK
ATL
JFK
DFW
PHL
MIA
ATL
LGA
JFK
ATL
DFW
PHL
LAX
MIA
LGA
EWR
IAH
DTW
PHL
JFK
JFK
PHL
ATL
DFW
JFK
DFW
MIA
PHL
ATL
CLT
DCA
EWR
IAH
LGA
volume, and airlines that have a larger market share than gate-allocation share contribute
to high gate delays.
4.1.2
Gate Delay by Day
Figure 4.6 shows the estimated daily total of gate-delay minutes at ORD for each day during
the summer of 2007. The figure shows estimates using three different values for the non-gate
delay threshold in (3.2). Naturally, the estimated amount of gate delay is smaller when the
non-gate delay threshold is larger. The key observation from this figure is that extreme
gate-waiting delays occur on several bad days at ORD. On most other days, delays are not
that large. This observation is insensitive to the choice of the non-gate delay threshold. In
other words, the two worst days (7/18 and 8/6) stand out as much worse than the other
days, regardless of the non-gate delay threshold value.
Analogous figures for other major airports show similar results (Figure 4.7). Most
airports have several days for which the delay is much higher than other days. The only
exception is LAX, where no outstanding days are observed.
41
2.5
2
Estimated gate /
runway capacity
ratio
1.5
1
0.5
0
LN TI A W N I W LT X TL W S AI O A D S LT H LH PS D R KF
L RO AL A AI P M AI W
H P CD FD ED W
B M FS G
B D S AL C TD O
E J
M
Figure 4.5: Rough gate/runway capacity ratio at some major U.S. airports
4.1.3
Gate Delay by Time of Day
Gate waiting is related to flight volume which has a dependency on time of day. As expected,
gate-waiting percentage is also time dependent, as shown in Figure 4.8. For example, if a
gate-waiting percentage of 30% is considered severe, then 8am to 10am at ATL and JFK,
11am to 9pm at DFW, and selected hours between 3pm to midnight at ATL, JFK, EWR,
LAX are problematic time periods.
4.1.4
Gate Delay by Carrier
Most gates in the U.S. are managed by carriers exclusively, compared with central control by
airports in Europe and Asia. Therefore, it is natural to assume that gate-waiting delays are
different among carriers since carriers have their own gate capacity and carriers determine
the appropriate volume of scheduled flights. Usually, gate capacity has some slack because
of spare gates. Flights can be accommodated by regular gates in the planning phase and
spare gates in case of unexpected events, such as mechanical failures, schedule disruptions,
etc. [Bazargan, 2004].
42
7/18
8/6
setun im 51
0
0 0 01
0 0 02
0 0 03
s e tuni m ni yal ed
gni tiaw- e tag yliad
43
setun im 01
setun im 5
d loh se rht y a led n i- ix at et ag-non
0 0 04
0 0 05
0 0 06
Figure 4.6: Gate-waiting delay by day at ORD, Algorithm 1b
8000
n)i
(m 6000
ya
le 4000
d
tea 2000
g
0
ilya
D
)n 8000
i
(m 6000
ya
le
d 4000
et
ag
2000
ilya
D
0
Daily
gate
delay
(min)
5 /3 1 9 7 /4 2 0 8
/1 /9 7
6 6 /1 2
/ 7 /1 1
/ /2 8 /1 /2 2
/
6 6
7 7 7
8 8 8
6/1 6/15 6/29 7/13 7/27 8/10 8/24
(a) JFK
Daily
gate
delay
(min)
6/1 6/15 6/29 7/13 7/27 8/10 8/24
Date
Date
3000
2500
2000
1500
1000
500
0
16000
14000
12000
10000
8000
6000
4000
2000
0
Date
(b) DFW
Daily
gate
delay
(min)
6/1 6/15 6/29 7/13 7/27 8/10 8/24
(c) ATL
2000
3500
3000
2500
2000
1500
1000
500
0
Daily 1500
gate
delay 1000
(min) 500
0
6/1 6/15 6/29 7/13 7/27 8/10 8/24
6/1 6/15 6/29 7/13 7/27 8/10 8/24
Date
Date
Date
(d) MIA
(e) PHL
(f) LAX
2500
2000
Daily
gate 1500
delay 1000
(min) 500
Daily
gate
delay
(min)
0
6/1 6/156/297/137/278/108/24
2500
6000
5000
4000
3000
2000
1000
0
2000
Daily
gate 1500
delay 1000
(min) 500
0
Date
Date
Date
(g) LGA
(h) ORD
2000
2000
Daily 1500
gate
delay 1000
(min) 500
Daily 1500
gate
delay 1000
(min) 500
6/1 6/15 6/29 7/13 7/27 8/10 8/24
6/1 6/15 6/29 7/13 7/27 8/10 8/24
Date
Date
(j) DTW
(i) EWR
Daily
gate
delay
(min)
0
0
6/1 6/15 6/29 7/13 7/27 8/10 8/24
6/1 6/15 6/29 7/13 7/27 8/10 8/24
(k) IAH
1400
1200
1000
800
600
400
200
0
6/1 6/15 6/29 7/13 7/27 8/10 8/24
Date
(l) MSP
2500
2000
Daily
gate 1500
delay 1000
(min)
500
0
6/1 6/15 6/29 7/13 7/27 8/10 8/24
Date
(m) DCA
Figure 4.7: Daily gate delay of high gate-delay airports
44
60%
50%
40%
ATL
DFW
Gate-waiting percentage
EWR
30%
JFK
LAX
LGA
20%
MIA
ORD
10%
0%
0
3
6
9
12
15
18
21
Hour of day (actual wheels on time)
Figure 4.8: Gate-waiting percentage by time, Algorithm 1b (BTS data)
Based on an analysis of the ASPM database, gate-waiting delays between carriers are
often significantly different. Table 4.3 shows the average gate-waiting delays (per flight)
for major carriers at several airports. For example, at JFK, the three major carriers are
JetBlue Airways (JBU), Delta Air Lines (DAL) with its subsidiary Comair (COM), and
American Airlines (AAL) with its partner American Eagle Airlines (EGF). Based on a ttest, the differences in gate-waiting delays between any two pairs of carriers are found to
be statistically significant (Table 4.4). Similarly, gate-waiting delay at other airports are
usually significantly different between carriers if there is more than one major carrier. Also,
carriers with dominant market share in an airport tend to have higher gate-waiting delays,
possibly due to their more aggressive scheduling based on the volume effect that aggregated
uncertainties are less than the sum of non-aggregated uncertainties. COA has a dominant
market share at EWR and gate-waiting delays of COA flights are significantly higher than
those of AAL. AAL has a dominant market share at DFW, and its gate-waiting delay at
DFW is higher than the delay at EWR.
45
Table 4.3: Gate-waiting delay by major carriers at several major U.S. airports, Algorithm
1a (ASPM data)
Airport
ATL
JFK
LGA
EWR
DFW
LAX
MIA
Carrier
DAL+ASQ
TRS
JBU
DAL+COM
AAL+EGF
AAL+EGF
USA+AWI+PDT
DAL+COM
COA+CJC
COA+BTA
AAL
AAL+EGF
SKW+ASQ
AAL+EGF
SWA
UAL
COA+BTA
ASA+QXE
DAL
AAL+EGF
GFT+COA
DAL+COM
Number of
arrivals
82185
23495
16154
11891
8140
10656
10232
8406
4391
37171
2052
69951
13155
13242
10568
9098
5870
5135
4446
21903
3066
1209
Gate-waiting delay
mean (min)
2.42
1.97
2.01
6.39
2.46
1.45
0.21
1.71
0.24
1.43
0.77
2.65
1.19
1.56
0.69
1.30
2.62
0.42
3.47
2.25
0.51
0.25
Gate-waiting delay
variance (min)
41.03
46.65
40.93
226.75
47.44
32.74
2.42
32.24
3.52
25.34
7.21
52.78
10.90
19.85
7.36
11.99
35.70
6.69
61.11
71.06
14.00
7.72
Table 4.4: Gate-waiting delay difference between major carriers, three major airports in the
New York, Algorithm 1a (ASPM data)
Airport
JFK
LGA
EWR
Group
(DAL+COM) vs. JBU
(AAL+EGF) vs. JBU
(DAL+COM) vs. (AAL+EGF)
(AAL+EGF) vs. (USA+AWI+PDT)
(DAL+COM) vs. (AAL+EGF)
(AAL+EGF) vs. (COA+CJC)
(DAL+COM) vs. (USA+AWI+PDT)
(COA+CJC) vs. (USA+AWI+PDT)
(DAL+COM) vs. (COA+CJC)
(COA+BTA) vs. AAL
46
t statistic
29.8
19.56
9.10
21.58
3.07
19.5
23.46
0.87
21.57
10.23
Difference
Significant
Significant
Significant
Significant
Significant
Significant
Significant
Not significant
Significant
Significant
gate-waiting
delay (min)
Number of seats
Figure 4.9: Scatter plot of gate-waiting delay in minutes by number of seats at EWR,
Algorithm 1a (ASPM data)
4.1.5
Gate Delay by Aircraft Size
Figure 4.9 shows a scatter plot of gate-waiting delay versus aircraft size (in number of seats)
for all flights at EWR during the summer of 2007. Table 4.5 gives the Pearson correlation
coefficients between gate-waiting delay and aircraft size at several airports. In general,
there is a relatively weak dependency of gate-waiting delay on aircraft size. Further, this
correlation may be either positive or negative depending on the airports. For example,
at EWR, the correlation coefficient is .047, meaning that an aircraft with 100 more seats
statistically experiences 4.7 more minutes of gate-waiting delay. At JFK, the correlation
is negative meaning that larger aircraft tend to experience less delay. Either way, the
conclusion is that large aircraft are not exempt from gate-waiting delays.
4.2
Functional Causes of Gate Delay in High Gate Delay
Days
Though gate delay is small on average, it can be very high on the worst days (Figure 4.7).
It is important to understand the functional causes of high gate delay on these days. As
47
Table 4.5: Pearson correlation coefficients between gate-waiting delay and aircraft size,
ASPM data
Coefficients between
gate-waiting delay
Airport
and aircraft size
ATL
-0.026
JFK
-0.015
LGA
0.035
EWR
0.047
0.0089
DFW
LAX
-0.019
0.068
MIA
mentioned in Section 2.2.2, gate-waiting delay can be attributed to over-scheduling, higherthan-scheduled arrival rate(λ), longer-than-scheduled gate occupancy time (µ), and reduced
available gates or fewer gates utilized than scheduled (c)(Figure 2.3). It is natural to
inspect these four functional causes by analyzing historical data. The operation data can
be extracted or approximated using the methods in Section 3.2, but the corresponding
scheduling or planning data cannot be obtained from the existing databases mentioned in
Section 3.1. For example, scheduled gate occupancy time and scheduled gate usage are
unavailable due to operation disruptions, such as cancellations, aircraft swapping, etc.
Therefore, this section compares gate operation statistics in high gate-delay days against
seasonal averages, instead of the plan on those days. The rationale for this approach is that
the high gate-delay days are only a few outliers in the season population, specifically, only
2-3 days out of 92 days. So if the functional difference between a bad day and the seasonal
average can be identified, the functional causes can be identified. Note that gate service
time needs to be investigated not only for same day arrivals, but also for previous day
arrivals since some aircraft stay overnight at an airport and depart the next day (usually
the next morning).
Section 4.2.1 presents the analysis of carrier aggregated data at six airports. Section 4.2.2
presents the analysis of carrier specific data at LGA airport.
48
ATL
15000
LGA
2500
2000
Daily gate
delay (min)
10000
Daily gate 1500
delay (min) 1000
5000
500
0
0
6/1
6/15
6/29
7/13
7/27
8/10
6/1
8/24
6/15 6/29 7/13 7/27 8/10 8/24
Date
Date
1400
400
1200
350
300
1000
Number of
scheduled
arrivals
Number of 250
scheduled 200
arrivals 150
800
600
400
100
200
50
0
0
6/1
6/15
6/29
7/13
7/27
8/10
8/24
6/1
Date
6/15
6/29
7/13
7/27
8/10
8/24
Date
Figure 4.10: Comparison of daily total gate delay and schedule volume, ATL and LGA,
summer 2007, BTS data
4.2.1
Analysis of Carrier Aggregated Data (6 Airports)
This section identifies functional causes of extreme gate delays using carrier aggregated
data. The following illustrates the identification with some examples.
Functional Cause 1: Over-scheduling
Over-scheduling was not a functional cause of extreme gate delays. Figure 4.10 shows two
examples of ATL and LGA. In days where gate delays were much higher than average,
schedule volumes were regular. This means that over-scheduling was not a cause for severe
gate delays.
Functional Cause 2: Reduced Available Gates
Figure 4.11 shows an example of reduced available gates as the functional cause. The
first figure shows that a gate queue formed between 18:00 and 24:00. At the beginning of
this period, the number of utilized gates is significantly smaller than the seasonal average,
indicating reduced gate availability. The other three figures show that the other major
49
operating statistics are close to the seasonal average. The third figure shows that the
average gate occupancy time of arrivals at the beginning or the end of a day is much longer
than that of arrivals in the middle of a day. The reason is that arrivals at the beginning
or the end of a day have a higher fraction of flights staying at the airport overnight. The
term “starting departures” in the last graph is defined as departures whose aircraft arrived
on the previous day (before 3:00 am on the day studied).
Gate under-utilization can be caused by a variety of reasons, including awaiting gate
assignment, unavailable ramp staff or ground equipment, inclement weather, and airline
operation preference (see Section 2.2.2). In addition, for carrier aggregated data (such as
Figure 4.11), gate under-utilization can be caused by a carrier mismatch or an aircrafttype mismatch. In this example, the specific cause of gate under-utilization is not known.
In Section 4.2.2, carrier specific analysis is conducted on LGA to determine when gate
under-utilization is not caused by a carrier mismatch.
Functional Cause 3: Higher Arrival Rate
Figure 4.12 shows an example of a higher-than-average arrival rate as the functional cause.
The first figure shows that gate waiting is most significant between 20:00 and 24:00, and
gate utilization in this period is higher than the seasonal average, precluding gate underutilization as the functional cause. The second figure shows that the actual arrival rate is
higher than the seasonal average, indicating that higher arrival rate is the functional cause.
The third figure shows that gate occupancy time on this day is close to the seasonal average.
The fourth figure shows that the number of departures from overnight stays is also close to
the seasonal average.
Functional Cause 4: Longer Gate-occupancy Time
Figure 4.13 shows an example of longer gate-occupancy time as the functional cause. The
first graph shows the gate queue (the area under it represents total gate delay accumulated
in a certain period) and gate usage. The gate delay time period is between 19:00 and 23:00,
50
200
150
Parked in summer
2007 average
Number 100
of aircraft 50
Parked on the day
studied
0
waiting for gates
on the day studied
0
Hourly
landing
rate
6
12
18
24
30
150
100
Summer 2007 average
50
Day studied
0
0
6
12
18
24
30
600
Average 400
service
time (min) 200
Summer 2007 average
Day studied
0
0
6
12
18
24
30
40
Number of
starting
departures
30
20
summer 2007
10
Day studied
0
0
6
12
18
24
30
Hour of day
Figure 4.11: Functional cause identification, ATL, 06/11/2007
51
200
Number
of aircraft
Parked in summer
2007 average
150
100
Parked on the day
studied
50
0
0
Hourly
landing
rate
12
18
24
30
120
100
80
60
40
20
0
Summer 2007 average
Day studied
0
Average
service
time (min)
6
waiting for gates
on the day studied
6
12
18
24
30
600
400
Summer 2007 average
200
Day studied
0
0
6
12
18
24
30
30
Number of
starting
departures
20
summer 2007
10
Day studied
0
0
6
12
18
24
30
Hour of day
Figure 4.12: Functional cause identification, ATL, 07/29/2007
52
and peaks at 21:00. In this period, more aircraft were parked than the seasonal average, so
reduced available gates are excluded from the functional causes. The second graph shows
that in the gate delay period, 19:00 to 23:00, the arrival rate on this day is lower than
the seasonal average, so higher-than-scheduled arrival rate is excluded from the functional
causes. The third graph shows that the average gate-service time in the gate-delay period,
19:00 to 23:00, and its previous time period, 17:00 to 19:00 (also related), is much higher
than the seasonal average. Increased gate service time for same day arrivals is identified
as a functional cause. The last graph shows that the departure rate in the gate-delay
period, 19:00 to 23:00, is similar to the seasonal average (both are close to zero). Therefore,
increased gate service for previous day arrivals is excluded from the functional causes. In
summary, the functional cause for high gate delay from 19:00 to 23:00 on 6/27/2007 is
increased gate service time for arrivals from 14:00 to 24:00.
Other Observations
Figure 4.14 shows the hourly cancellation rate at ATL on four days. The cancellation
rate is low on June 5, 2007 when the gate-waiting performance is good. The cancellation
rate is high on the three worst days, especially between 3 pm and 10 pm, coinciding with
the periods of high gate waiting. Cancellations can have a negative effect on gate delay,
because a cancellation grounds an airplane for a period of time typically longer than it
would otherwise remain at a gate, thus reducing overall gate capacity. In other words,
flight cancellations reduce the number of active flights. This decreases the overall fleet’s
airborne time and increases the overall fleet’s ground time, which has the potential to
increase gate delay.
Systematic Analysis of Extreme Gate Delays in 6 Airports
A systematic analysis uses carrier aggregated data to investigate the functional causes of
extreme gate delays in the worst 3 days at LGA, ATL, JFK, EWR, DFW and MIA, as
shown in Table 4.6.
53
Number
of aircraft
70
60
50
40
30
20
10
0
parked in
summer 2007
average
parked on the
day studied
0
Hourly
landing
rate
6
12
18
24
30
25
20
15
10
5
0
waiting for
gates on the day
studied
Summer 2007
average
Day studied
0
6
12
18
24
30
800
Average
service
time (min)
600
400
Summer 2007
average
200
Day studied
0
0
Number of
starting
departures
6
12
18
24
30
25
20
15
10
5
0
Summer 2007
average
Day studied
0
6
12
18
24
30
Hour of day
Figure 4.13: Functional cause identification, LGA, 06/27/2007
54
30
2007-06-05
2007
06 05 (good day)
2007-06-11 (bad day)
Cancellations 25
per hour
(arrivals and
departures) 20
2007-07-29 (bad day)
2007-08-24 (bad day)
15
10
5
0
0
3
6
9
12
15
18
21
Hour of day
Figure 4.14: Cancellations on 4 days, ATL, BTS data
Table 4.6: Specific days analyzed
Airports 3 worst days in summer 2007
LGA
6/27, 8/8, 8/9
ATL
6/11, 7/29, 8/24
JFK
6/1, 6/10, 6/11
EWR
6/29, 7/26, 8/9
DFW
6/17, 7/1, 7/2
MIA
6/17, 7/3, 7/5
55
24
The results of the systematic analysis of the 6 airports show that severe gate delays
are related to operation disruptions, rather than over-scheduling. Appendix A shows the
functional cause identification and Table A.7 shows a summary. Among the operation disruptions, extended gate occupancy time for same day arrivals and reduced gate availability
are major contributors of extreme gate delays.
4.2.2
Analysis of Carrier Specific Data (LGA)
One limitation of the analysis using carrier aggregated data in Section 4.2.1 is that it does
not identify functional causes at a carrier level. For example, the analysis does not identify
whether an increase of arrival rate is due to the operation disruption of one carrier or
multiple carriers. The analysis does not identify whether reduced available gates is due to
gates being unavailable for use (due to bad weather, unavailable ramp staff or equipment,
etc.), a carrier mismatch or an aircraft-type mismatch.
This section analyzes carrier specific data to identify functional causes of high gatewaiting delays at the carrier level. Queueing parameters in the LGA system, including
gate utilization, arrival rate, and gate occupancy time, are investigated. As discussed in
Section 3.3, LGA is selected because aircraft sizes of same carriers are similar at LGA such
that it is not be a major issue to ignore aircraft-gate compatibility constraints.
High Gate-waiting Delay Days
The left side of Figure 4.15 shows the total gate-waiting delay at LGA for each day of
Summer 2007. On most days, the delay is not very high, but on a few days, the delay is
very high. The right figure is a quantile-quantile (QQ) plot of the daily total gate delay
against the best distributional fit of the data (77 + Gamma(1.4, 239)1 , in minutes, obtained
c input analyzer). For a perfect fit, the data would fall on a straight line.
using the Arena⃝
The four worst days are significantly above the straight line. This indicates that on the
worst days, the delays are “really bad” — worse than what might be predicted using a
1
The distribution of a random variable X is Gamma(α, λ), λ > 0, α > 0 if its probability density function
is given by f (x) = λe−λx (λx)α−1 /Γ(α), x ≥ 0.
56
QͲQplotofdailygateͲwaitingdelays(min)
2500
2500
2000
2000
Dailygate
D
il
1500
waiting
delay(min) 1000
8/8
Extremedays(heavytails)
6/27 8/9
1500
7/9
Observedvalue
1000
500
500
0
0
Tobeanalyzed indetail
0
6/1 6/15 6/29 7/13 7/27 8/10 8/24
200
400
600
800
1000
1200
1400
1600
1800
Expectedgamma(bestfit)
Dayofyear
Figure 4.15: Daily gate-waiting delay and QQ plot against gamma model, summer 2007
model based on the best statistical fit. Roughly speaking, the 92 days can be divided into
3 sections. The lower section has 80 “good” days, the middle section has 8 “bad” days, and
the top section has 4 “extremely bad” days. The division between 80 “good” days and 8
“bad” days is based on the gap of total delay, but it is somewhat arbitrary. Since one of
this section’s objectives is to include more days to get the frequency of delay causes, the 12
worst days are analyzed in detail.
Dependence of Delays on Carrier and Time
Carriers that experienced high total gate-waiting delays include Comair Inc., Delta Airlines,
American Airlines, American Eagle Airlines and AirTran Airways. US Airways has a big
market share, so it is also included in the analysis of this section. When subsidiary carriers
are merged with mainline carriers, the three major carriers are American with American
Eagle, Delta with Comair, and US Airways. Delta has a higher average gate-waiting delay
than American, which has a much higher delay than US Airways, during the summer of
2007. A t-test shows that these averages are statistically different between any two of the
three carriers, as mentioned in Section 4.1.4. Gate-waiting delay is carrier specific possibly
due to the difference among carriers’ capacity fraction used for scheduling. Average gatewaiting delay is positively correlated with utilization, which means that a larger portion
of reserve capacity can accommodate bigger disruptions of gate operations. For example,
US Airways maintains a high volume of flights and keeps gate-waiting delays low whereas
AirTran has a small market share but has high total gate-waiting delays. The reason is that
US Airways has a higher percentage of surplus gates than AirTran.
57
1600
Summer2007
400
1400
350
1200
Total 1000
gateͲ
waiting 800
delays
600
(min)
400
Total 250
gateͲ
waiting 200
delays
150
(min)
100
200
50
0
0
TwoHighestͲGateͲDelayDays
300
0 2 4 7 9 11 13 15 17 19 21 23
AirTranAirways
AmericanAirlines
AmericanEagleAirlines
Comair
DeltaAirLines
USAirways
0 3 6 9 1215 1821 0 3 6 9 1215 1821
Landinghour
/ /
8/8/2007
8/9/2007
/ /
Landingdateandhour
Figure 4.16: Total gate-waiting delay by time of day and carrier, LGA
Gate delays are also strongly dependent on time of day, as shown in Figure 4.16. On
average, American Airlines tended to have gate-waiting problems around 11am and in
the evening while Comair tended to have problems in the morning. On the two highestgate-delay days, Comair had high gate-waiting delay in the early morning on 8/8/2007
while American had high gate-waiting delay around 11am on 8/9/2007. Similar analysis
of the third highest gate-waiting-delay day, 6/27/2007, shows that American Airlines and
American Eagle Airlines had high gate delays in the evening. Gate-waiting delay is time
specific because carriers have schedules that peak at different times. For example, Comair
has the biggest arrival peaks in the morning and generates the highest gate demand. At
that time, it pushes its gate utilization to the maximum, so gate-waiting delays may occur
when disruptions happen. On the other hand, different gate-demand peak times provide an
opportunity to exchange gate usage among carriers via common gates.
Systematic Analysis of Functional Cause Identification
The following analysis tries to identify the functional causes for gate-waiting delays. This
is done by performing an analysis of the queueing elements: gate utilization, aircraft arrival
rate, and gate service rate.
Table 4.7 shows a summary of the functional cause identification. Similar to Table A.7,
the sum of the cause count is more than the number of days studied (12) because in each of
the 12 high-gate-delay days, gate delay may occur for more than one carrier in more than
58
Table 4.7: Gate Delay Functional Causes in 12 High Gate-delay Days at LGA in Summer
2007
Functional cause
Count
Over-scheduling
0
Reduced available gate
12
Higher arrival rate
8
Increased service time
1
one time period. So there may be more than one cause for gate delay in a day.
Functional Cause 1: Over-scheduling
The airline schedules are similar across different days, but high gate-waiting delays happen
only in a few days (results are similar to Figure 4.10). So the issue is not over-scheduling.
Functional Cause 2: Reduced Available Gates
In all the 12 days, high gate delays were observed even though not all the declared gate
capacity was used. Figure 4.17 shows an example. From about 15:00 to 18:00, there were
significant gate delays even though the number of parked aircraft was less than the number
of gates. American and American Eagle’s operation on August 9, 2007 also showed that
gates were not fully utilized when gate-waiting delays occurred.
Figure 4.17 shows that after about 18:00, there were more parked aircraft than gates.
This is because many overnight aircraft may be parked in hangars, ramps and taxiways.
Note that in this period, gate delay still occurred when gates were fully used. This indicates
that there were multiple functional causes for gate delays on this day. Comair’s gate usage
on August 8, 2007 showed a similar pattern, in which unused gate capacity was followed by
full gate utilization during a period of high gate-waiting delays.
There are several possible reasons that there is unused gate capacity when gate delays
occur, as mentioned in the literature section. If the reason is that aircraft wait to dock in
inclement weather or that ramp staff are unavailable, self-docking systems can improve gate
utilization and reduce gate delays [Richards, 2008]. If a flight chooses to wait for its original
59
35
number of parked
aircraft on 6/27
30
25
average number of parked
aircraft in summer 2007
20
15
number of gates
10
number of aircraft waiting
for gates on 6/27
5
0
0:00
3:00
6:00
9:00
12:00
15:00
18:00
21:00
0:00
3:00
6:00
Time of day
Figure 4.17: Gate usage of American and American Eagle, LGA, 6/27/2007
assigned gate instead of going to an alternative gate (to avoid crew, passenger and baggage
relocation at the last moment), improved gate reassignment based on a better prediction of
flight departure/arrival times can improve gate utilization. Gate delay may also be due to
an aircraft type mismatch, which is not analyzed systematically in this dissertation.
Functional Cause 3: Higher Arrival Rate
One possible cause for high gate-waiting delays is higher-than-scheduled arrival rate due to
arrival compression. Figure 4.18 shows one example. Comair flights landing from 7am to
8am and 2pm to 3pm on 8/9/2007 experience gate-waiting delays. The reason is arrival
compression in the two time windows. Between 7 am an 8 am, 6 aircraft landed instead
of 5 scheduled arrivals. Similarly, between 2 pm and 3 pm, 5 aircraft landed instead of 3
scheduled arrivals. This type of scenario happens in 8 out of 9 days. Therefore, arrival
compression can be a cause of gate-waiting delay.
Functional Cause 4: Longer Gate-occupancy Time
An increase in the gate-occupancy time can lead to gate delays. Figure 4.19 shows the only
example observed in the 12 worst days. On June 27, the observed gate occupancy time
was much higher than the seasonal average after 3 pm. There were two contributors to
60
60
50
40
TotalgateͲ
waitingdelay 30
(min)
20
10
0
0
2
4
6
8 10 12 14 16 18 20 22 24
landinghour
7
Actual wheelsͲon
Actualwheels
on
6
ScheduledgateͲin
5
Arrival
count
4
3
2
1
0
0
2
4
6
8
10 12 14 16 18 20 22 24
Hourofday
Figure 4.18: Comair gate-waiting delay, arrival rate at LGA on 8/9/2007
this longer-than-average gate occupancy time: the extension of the gate occupancy time of
some regular turns2 and the conversion of some regular turns to ending turns3 . The latter
is mainly a result of departures cancellations and reassignments of the aircraft for next day
departures, which is discussed as following.
Section 4.2.1 showed that a high gate occupancy time is related to a high cancellation
rate at ATL. This correlation also happened at LGA this day. American and American
Eagle cancelled 30 arrival flights and 36 departure flights after 3 pm (more than 50% of
scheduled flights after 3 pm). Based on communication with a major U.S. carrier, arrival
cancellations are usually coupled with departure cancellations, which together are coupled
with aircraft swapping to deal with high delay. The driver of this behavior is to maintain
the validity of the aircraft itinerary and the crew itinerary. However, aircraft swapping
usually increases gate occupancy time and gate demand. For example, on this day, many
aircraft arrived at LGA with scheduled departures cancelled. They were swapped to fly
other departures early the next morning, so they stayed at the gates for 10 hours, instead
2
A regular turn is an arrival-departure flight pair in which the arrival and the departure are in the same
day.
3
An ending turn is an arrival-departure flight pair in which the arrival and the departure are in different
days.
61
600
500
400
TotalgateͲ
waitingdelay 300
(min)
200
100
0
0
1200
2
4
6
8
10
12
14
16
18
20
22
24
Landinghour,6/27/07
1000
800
averagegateoccupancytime
600
6/27/2007
400
Average in summer 2007
Averageinsummer2007
200
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
gate arrival hour
gatearrivalhour
Figure 4.19: Gate delay and gate-occupancy time by time of day (actual gate-in time),
American and American Eagle
of 1 hour. Flight cancellations are usually correlated with airport capacity reductions and
Ground Delay Programs (GDP). On this day, there was indeed a GDP from 4 pm though
3 am next day due to thunderstorms. So the complete story was likely as follows. The
predicted airport capacity dropped based on weather prediction, and the FAA issued a
GDP. American Airlines anticipated high delay and decided to cancel 50% of their flights
after 3 pm. As a result, gate occupancy time of cancelled departures extended dramatically
and no gates were available when arriving flights landed. American Airlines probably failed
to consider that gates could be a choke point under a high cancellation rate. If this can be
foreseen, it may be better to cancel fewer departure flights and cancel more arrival flights,
based on the lessons learned from Northwest Airline’s response to the January 1999 Detroit
snowstorm [Slater, 1999].
Sometimes long gate-occupancy times can be voluntary to save fuel and improve safety
under GDP and taxi-out time saving initiatives [Simaiakis and Balakrishnan, 2009]. But
if a gate is needed by an arriving aircraft, the departure aircraft usually pushes back and
makes the gate available, unless there are pushback constraints [Idris, 2001]. Voluntary
gate hold is not a major reason for high gate delay unless cancellations are involved, as
62
mentioned above.
4.3
Analysis Summary
This chapter applied the algorithms developed in Chapter 3 to estimate gate-waiting delays
at the OEP-35 airports and to identify functional causes of high-gate-delay days at LGA,
ATL, JFK, EWR, DFW and MIA using data from the BTS and ASPM databases for the
summer of 2007.
4.3.1
Average Gate Delay Across the OEP-35 Airports
Analysis of the average gate delay across the OEP 35 airports identified the following:
1. For most airports on most days, gate waiting was not an excessive problem. Significant
delays occurred relatively in frequently (e.g., once a month at ATL).
2. However, on the isolated bad days, the gate-waiting delays were typically very bad.
3. Gate-waiting delays had a strong dependency on time of day.
4. At airports with high gate delay, there were statistically significant differences between
the gate delays experienced by the major carriers, meaning that different carriers usually use a different portion of gate capacity for scheduling. For example, at JFK,
Delta schedules more aggressively on their gate capacity (over-scheduling) than JetBlue. This suggests that more common gates could improve gate-waiting delay.
5. The observed correlation between aircraft type and gate-waiting delay was typically
small.
4.3.2
High Gate-Delay Days at Six Major Airports
Analysis of the high gate-delay days at six major airports (including detailed carrier specific
analysis of LGA) identified the following:
63
1. Gate delays in the worst days were usually time specific.
2. Analysis of possible functional causes identifies the following.
(a) Over-scheduling is not a reason for high gate delays since the schedules of highgate-delay days are similar to those in low-gate-delay days.
(b) In some days, a greater-than-scheduled arrival rate (over some period of time)
due to arrival compression was a source of high gate delay.
(c) In some days, gate delay can be attributed to longer-than-normal gate-occupancy
times.
(d) In some days, instances were observed where gate-waiting delays occurred even
though some of the declared gate capacity in the airport was apparently available.
(e) In some days at LGA, reduced gate availability was not due to carrier mismatch.
Rather, some gates became unavailable due to inclement weather, unavailable
ramp staff, or unavailable equipment.
Overall, functional origins of gate-waiting delay included greater-than-scheduled arrival
rate, extended gate occupancy times and reduced number of gates. Many of these origins
are related to schedule disruptions which are the main common factor identified in the worst
days.
64
Chapter 5: Gate Delay Simulation Model and Analysis
To quantitatively evaluate the impact of individual disruptions identified in Chapter 4, and
to evaluate the effect of gate-delay mitigation strategies, this chapter presents a simulation
model to simulate delay causes and evaluate gate-delay mitigation strategies. The analysis
in Chapter 4 was limited by the use of historical data. Thus, it could not isolate the effects
of individual factors, nor could it determine the effects of mitigation strategies.
A simulation model can be used to investigate the impact of individual disrupting factors. For example, when an airline-operation center cancels flights (leaving aircraft on the
ground), they may not realize how much impact this will have on gate congestion. When
airport runway capacity is reduced due to whether, air traffic controllers may not anticipate
possible taxiway congestion when many flights arrive in later hours.
A simulation model can also be used to investigate potential gate mitigation strategies.
To deal with operation disruptions, airports may want to know how many gates should
be reserved as common gates, airlines may want to know when they should park their
flights remotely during a disruption, and regulators may want to weigh the impact on gate
congestion before passing or blocking an airline’s gate swap proposal [Eckert, 2010].
Figure 5.1 shows the gate delay disruptions and mitigation strategies identified in the
literature review (Chapter 2). This chapter quantitatively investigates the following four
major disruptions to gate operations (identified in Chapter 4):
A. Arrival delay, which may cause a greater-than-scheduled arrival rate at a later time
B. Extension of gate-blocking time
C. Conversion of regular turns to overnight turns
D. Unavailable gates
65
Estimation and
characteristics
Gate Delay
Factors
•Airport
•Day
•Time
•Carrier
•Aircraft size
Functional causes
Mitigation strategies
Airline: under-schedule
Over-scheduling
FAA: runway slot control
Higher Arrival Rate
Airline: reduce gate occupancy
time
A: Arrival Delay
Lower Service Rate
B: Regular
turns
C: New
end turns
D: Lower Gate Utilization
I: Airline / airport : offterminal parking at night
Airline / airport: gate
reassignment
II: Airline: self-docking gates
III: Airline/airport: more gates
Any Causes Above
IV: Airline/airport: common
gates
Airline: arrival cancellations
Figure 5.1: Gate delay functional causes and mitigation strategies
This chapter also investigates the following four gate-delay mitigation strategies (identified in Chapter 2):
I. Increase the number of gates
II. Use common gates
III. Use self-docking gates
IV. Park overnight aircraft at an off-gate location
The simulation model also considers the possibility that not all carriers may be impacted
by a disruption and that a disruption may happen in a window of several hours, as identified
in Chapter 4.
66
Gate arrival time
Gate-in time
Positioningin time
Gate-out time
Gate-occupancy time
Gate departure time
Positioningout time
Gate-blocking time
Figure 5.2: Critical times in gate operation
5.1
Gate-delay Simulation Model
5.1.1
Scope
The model simulates gate operations for 24 hours1 . There are two types of entities in the
simulation model — aircraft and gates. A gate is simulated for 24 hours while an aircraft
is simulated from the time it arrives at the ramp until the time it leaves the ramp.
5.1.2
Terminology
The section defines terminology used in this chapter, illustrated in Figure 5.2.
• Gate-occupancy time: the amount of time that an aircraft spends at a gate [de Neufville
and Odoni, 2003] (from gate-in time to gate-out time [BTS, 2003]).
• Positioning time: the time to position an aircraft into (positioning-in time) and out
of (positioning-out time) a gate [de Neufville and Odoni, 2003].
• Gate-blocking time: the time that an aircraft blocks a gate for exclusive use, which
includes gate positioning-in time, gate occupancy time, and gate positioning-out
time [de Neufville and Odoni, 2003, pages 424–430] (Figure 5.2). In this chapter,
gate occupancy time refers to gate-blocking time since gate occupancy time is the
major component of gate-blocking time and is a widely used term.
1
Specifically, from 3 am to the 3 am because there are usually no arrivals or departures around 3 am.
This definition implies that delayed flights typically do not spill over to the next day.
67
• Nominal ramp arrival time: the time that an aircraft is expected to arrive at the ramp
based on a seasonal average.
• Nominal gate-blocking time: the time that an aircraft is expected to block the gate
based on a seasonal average.
• Turn: a process in which an aircraft arrives to a gate, occupies the gate for a period
of time2 , and then departs from the gate. There are two types of turns depending on
the arrival and departure time:
– Regular turn: a turn in which both the arrival flight and the departure flight are
in the same day.
– Overnight turn: a turn in which the arrival flight and the departure flight are in
different days. In the simulation purpose, a new day is defined to start at 3 am.
An overnight turn is further divided into two “half turns”:
∗ Ending turn: a turn in which an aircraft arrives to a gate and then occupies
the gate until the end of the day (3 am).
∗ Starting turn: a turn in which an aircraft occupies the gate from the start
of the day (3 am) and then departs later in the day.
• Regular arrival: the arrival flight of a regular turn.
• Regular departure: the departure flight of a regular turn.
• Ending arrival: the arrival flight of an overnight turn.
• Starting departure: the departure flight of an overnight turn.
• Remote gate: a gate that is far away from the terminal. Figure 5.3 shows the remote
gate area at Washington Dulles International Airport. In order to board passengers,
an airplane parked at the remote gate needs to be moved to the terminal to board
2
In the middle of this period, the aircraft may leave the gate for maintenance, a gate vacation or some
other purpose and then come back.
68
Figure 5.3: The remote gate area at Washington Dulles International Airport
passengers, or passengers need to take a bus to come to the remote gate to board the
airplane.
5.1.3
Model Description and Data Sources
Figure 5.4 shows an overview of the stochastic simulation model. There are three main
components in the model: demand input generation, supply input generation and the gatedelay simulation engine. The gate-delay simulation engine inputs demand and supply and
outputs gate delays. The three main components are sequentially described as follows,
illustrated with LGA data or fictitious data. LGA data sources and related assumptions
are listed in Table 5.1, Table 5.2 and Table 5.3.
Demand
The input for the demand module includes the following four sets of hourly operational
parameters by carrier. These parameters are populated using historical seasonal averages
from the summer of 2007.
69
70
b
maps.google.com
[Klein and Wang, 2006]
c
[Wang et al., 2010]
d
[Fricke and Schultz, 2008]
e
[Fricke and Schultz, 2008]
f
[de Neufville and Odoni, 2003]
a
Demand
Mitigation
Demand
Deviation
Demand
Disruption
Demand
baseline
Category
Scope
Table 5.1: Deterministic simulation model parameters and assumptions illustrated with LGA, part 1
Parameter
Value
Data source
Notes
a
Airport
LGA
Public web site ; LGA is space constraint,
A presentation b
gate waiting is disruptive
Airlines modeled
AA,MQ,DL,OH
A paper c
high gate delay carriers
c
Time
One day in summer 2007 A paper
High delays
Regular arrival rate
Hourly average by carrier [BTS, 2003]
Regular turn (RT) Gate
Hourly average by carrier [BTS, 2003]
Blocking Time (GBT)
Starting departure rate
Hour average by carrier
[BTS, 2003]
Ending arrival rate
Hour average by carrier
[BTS, 2003]
Start Turn (ST) GBT
30 min
A paper d
Enough time
e
Off-gate End Turn (ET) GBT 30 min
A paper
Enough time
On-gate ET GBT
until day end
Positioning-in time
1 minute
A book f
small portion of positioning time
f
Positioning-out time
4 minute
A book
large portion of positioning time
Disruption start time
19:00
A paper c
One sample day
c
Disruption duration
2 hours
A paper
Same as above
Airlines disrupted
AA, MQ
A paper c
One carrier per disruption
Disrupted arrival delay
0
Baseline
To model arrival rate increase
GBT extension multiplier
1
Baseline
Fraction of RT
0
Baseline
converted to ET
Fraction of ET
0.9
A paper c
Seasonal average
parked off-gate
Arrival time deviation
0
Deterministic
GBT deviation
0
Deterministic
X
X
X
X
X
X
Variable
71
b
American Airlines web sites
Delta Air Lines web sites
c
Google Maps; http://wikimapia.org/3557/LaGuardia-Airport-LGA-KLGA; www.flightstats.com, etc.
d
http://www.panynj.gov/airports/lga-airport-map.html
e
with an airport manager of a major U.S. carrier
a
Simulation
Others
Matching
Category
Supply
Table 5.2: Deterministic simulation model parameters and assumptions illustrated with LGA, part 2
Parameter
Value
Data source
Notes
a
Number of AA gates
10
Public web site
Number of MQ gates
6
Same as above
Gate capacity expansion fraction
0
Baseline
Number of DL gates
16
Public web site b
Number of OH gates
5
Public web sites c
Fraction of common gates
0
Public web sites d No indication of common gate usage
Unavailable gate fraction
0
Baseline
Queueing discipline
FCFS
Interview e
Off-gate rule for ending arrivals
FCFS
Arbitrary
Number of replications
1
Deterministic
Aircraft type property of a gate
Generic
ASPM database
similar aircraft used by a carrier
Gate occupancy time for starting turns 30 min
Chapter 4
usually no delay in the morning
Airline compatibility of common gates AA/DL,MQ/OH ASPM database
similar aircraft size
X
X
X
Variable
72
b
Standard deviation of arrival delay in 10 airport is 17.94 minutes
In this paper, time unit is second, alpha = 1.6, beta = 808; Weibull mean is 724.432 seconds, so -724.432 seconds offset is used to adjust distribution
mean to be zero; Weibull standard deviation is 463.58 seconds
c
Caveat: This Weibull distribution is the best fit. But it is not a statistically proved weibull distribution(e.g. a Chi-Square Test wouldn’t pass)
a
Simulation
Category
Demand
Table 5.3: Stochastic simulation model parameters
Parameter
Value
Data source
a
Arrival time deviation Normal (0,18) min
[Mueller and Chatterji, 2002]
GBT deviation
Weibull(1.6,808,-724.432) seconds b [Fricke and Schultz, 2008]c
Number of replications 100
Stochastic
Disruption and
supply
mitigation
Baseline gate
Modified gate
capacity
capacity
Legend
Moment
Duration
Ramp arrival
time deviation
Average ramp
arrival time
Average gate
blocking time
Actual ramp
arrival time
Modified ramp
arrival time
Disruption, disaggregation
and mitigation
FCFS
Airline compatible
Gate blocking
time deviation
Modified gate
blocking time
Gate
arrival time
Actual gate
blocking time
demand
Gate
delay
Gate departure
time
Gate delay simulation engine
Figure 5.4: Simulation model overview
1. Arrival rate for regular turns
2. Average gate-blocking time for regular turns
3. Arrival rate for overnight turns
4. Departure rate for overnight turns
Figure 5.5 shows an example. Data sources come from the BTS database, as listed in
Table 5.1. The limitation of the BTS database is that it does not contain international
flights.
Three demand disruptions are modeled: (A) arrival delay, (B) regular turn gate-blocking
time extension, and (C) conversion from regular turns to ending turns. The three demand
disruptions are described by six demand disruption parameters: disrupted airline, starting
hour, duration (number of hours), arrival delay, gate-blocking time extension multiplier and
fraction of regular turns converted to ending turns, as described in Table 5.1. The first three
parameters are common to all disruptions and the other three parameters are specific to
each disruption. Figure 5.6 illustrates the disruption of arrival delay (A), where arrivals
between 19:00 to 21:00 are delayed 3 hours. This creates an arrival rate peak from 22:00
to 24:00. Figure 5.7 illustrates the disruption of regular turn gate-blocking time extension,
where gate-blocking time is doubled for regular turns that arrive between 19:00 to 21:00.
73
Regular turns
Overnight turns
5
Number of
regular
arrivals
5
4
4
Number of
ending
arrivals
3
2
1
0
3
Average gate
blocking time
for regular
turns (min)
5
7
DL
2
MQ
1
OH
0
9 11 13 15 17 19 21 23 25
160
140
120
100
80
60
40
20
0
AA
3
3
5
7
9 11 13 15 17 19 21 23 25
5
4
Number of
starting
departures
AA
3
DL
2
MQ
1
7
OH
0
9 11 13 15 17 19 21
3
Hour
5
7
9 11 13 15 17 19 21 23 25
Hour
Figure 5.5: Simulation model demand input, LGA data
Figure 5.8 illustrates the disruption of conversion from regular turns to ending turns, where
half of the regular turns between 19:00 to 21:00 are converted to ending turns.
There is one demand mitigation strategy that is modeled in the demand component
of the simulation — parking aircraft staying at an airport overnight off-gate (IV). This
strategy is specified by a single parameter: ending turns parked off-gate as a fraction of
gate capacity. For example, if an airline has 10 gates and the fraction is 0.4, its first 4 ending
turns stay at their gates for 30 minutes and then leave the gates and park elsewhere. The
remaining ending turns stay overnight at their gates. This strategy increases gate capacity
for overnight turns.
Finally, the turn-disaggregation process generates individual turns from the hourly operational data. Table 5.4 illustrates the demand disaggregation process. In the aggregated
process, there are two regular arrivals and one ending arrival. The disaggregation process
evenly distributes ramp arrival times in an hour. So the arrival times of the two regular
arrivals are 18:00 and 18:30. The arrival time of the ending arrival is 18:00.
74
80
70
60
Number of
regular arrivals
50
40
Before disruption
30
After disruption
20
10
0
3
6
9
12 15 18 21 24 27
Hour
Figure 5.6: Demand disruption A: arrival delay; start hour: 19, duration: 2 hours; arrival
delay: 3 hours; fictitious data
140
120
100
Gate blocking
time (min)
80
60
Before disruption
40
After disruption
20
0
6
9
12
15
18
21
24
Hour
Figure 5.7: Demand disruption B: regular turn gate-blocking time extension; start hour:
19, duration: 2 hours; gate-blocking time extension multiplier: 2; fictitious data
75
Number of
flights
50
50
40
40
30
Number of
flights
starting departures
20
regular arrivals
10
30
starting departures
20
regular arrivals
10
ending arrivals
ending arrivals
0
0
3 6 9 12 15 18 21 24 27
3 6 9 12 15 18 21 24 27
Hour
Hour
(a) Before disruption
(b) After disruption
Figure 5.8: Demand disruption C: regular turns converted to ending turns; start hour: 19,
duration: 2 hours; fraction of regular turns converted to ending turns: 0.5; fictitious data
Table 5.4: Demand disaggregation, fictitious data
(a) Before Disaggregation
Hour
18
Carrier
IATA Code
AA
No. regular
arrivals
2
No. end
arrivals
1
No. start
departures
0
Regular arrival’s average
gate occupancy time
60
(b) After Disaggregation
Carrier
IATA Code
AA
AA
AA
Turn
type
Regular
Regular
End
Actual ramp
arrival time
18:00
18:30
18:00
76
Actual gate
departure time
N/A
N/A
N/A
Gate-blocking
time (min)
60
60
N/A
AA, MQ have 10% gate
unavailable in a specific
day
Baseline
Carrier
IATA code
AA
MQ
DL
OH
Aircraft
type
NB
RJ
NB
RJ
No. gates
10
6
16
5
AA, MQ expanded gate
capacity by 10%
20% gates turned
to common use
AA, MQ’s 50% gates are selfdocking
Carrier IATA
No. regular No. selfcode
Aircraft type Gates
docking gates
AA
NB
5
5
MQ
RJ
3
3
DL
NB
16
0
OH
RJ
5
0
Carrier
Aircraft
IATA code type
AA
NB
MQ
RJ
DL
NB
OH
RJ
No.
gates
Carrier
Aircraft
IATA code type
AA
NB
MQ
RJ
DL
NB
OH
RJ
No.
gates
Carrier
Aircraft
IATA code type
AA
NB
MQ
RJ
DL
NB
OH
RJ
AA, DL NB
MQ, OH RJ
No.
gates
11
7
16
5
9
5
16
5
8
5
13
4
5
2
Disruption (D):
reduced gate
availability
Mitigation (I):
more gates
Mitigation (II):
common gates
Mitigation (III): self-docking gates
Figure 5.9: Simulation model supply disruption and mitigation; LGA data
Supply
On the supply side, the nominal gate capacity specifies the number of carrier-specific gates
and the number of common gates. Gate-capacity modification parameters include available
gate fraction, gate capacity expansion fraction, common-gate fraction and self-docking-gate
fraction. These parameters modify the new gate capacity as shown in the four examples
in Figure 5.9. In the baseline scenario, American Airlines (AA) has 10 Narrow Body (NB)
gates; American Eagle (MQ) has 6 Regional Jet (RJ) gates; Delta Airlines (DL) has 16
NB gates; Comair (OH) has 5 RJ gates. Disruption D (some gates become unavailable) is
illustrated by a scenario in which 10% AA and MQ gates becomes unavailable. Mitigation
strategy I (adding new gates) is illustrated by a scenario in which AA and MQ expanded
gate capacity by 10%. Mitigation strategy II (use of common gates) is illustrated by a
scenario in which all four airlines make their 20% gates common use while keeping aircraft
type compatibility. Mitigation strategy III (use of self-docking gates) is illustrated by a
scenario in which 50% AA and MQ gates are made self-docking gates.
77
Gate Delay Simulation Engine
Figure 5.4 shows the logic of the simulation engine from an aircraft’s perspective. An
aircraft enters the system at a ramp arrival time (which is the nominal ramp arrival time
plus a stochastic deviation) and requests gate service immediately. The gate assignment
rule is first-come, first-served, and requires that the carrier property of the aircraft and
the gate match. If a matching gate (carrier match) is available, the aircraft immediately
arrives at the gate and blocks the gate for exclusive use. Otherwise, the aircraft waits on
the tarmac for a gate to become available and hence experience gate-waiting delay. The
gate-blocking time is computed by adding the gate-blocking time deviation to the nominal
gate-blocking time. After the gate-blocking time, the aircraft departs the gate and makes
the gate available to next aircraft.
For a starting turn, an aircraft is assumed to arrive at the ramp 30 minutes before its
nominal ramp departure time. In actual operation, most aircraft occupy the gate overnight.
This simplification in the simulation is based on the fact that starting turns usually do not
contribute to gate delay [Wang et al., 2010] and that 30 minutes is usually more than
enough to prepare a departure (including passenger enplaning) since the nominal service
time for an arrival-departure pair (including passenger deplaning and enplaning) is about 30
minutes [Fricke and Schultz, 2008]. For an ending turn, the simulation is closer to operation
in that it separates the ending turns parked at gates and ending turns parked away from
gates. For ending turns parked away from gates, 30 minutes is also used as the gate-blocking
time.
The simulation parameters specify two stochastic factors, ramp arrival time deviation
and gate-blocking time deviation, as shown in Table 5.3.
5.1.4
Modeling Assumptions and Limitations
The following assumptions are made in the model.
• This is a single airport model. No upstream or downstream effects are considered.
78
• There are no arrival cancellations. That is, all scheduled arrival flights are operated
within the simulation.
• The model only considers functional causes. Deeper causes, including upstream effects, downstream effects and pushback constraints, are not modeled. For example, an
increase in gate-blocking time increase can be due to ground-delay problems and/or
aircraft swaps, which are outside of the model scope.
• The only gate compatibility constraint is carrier match. Actual compatibility constraints often include aircraft-type compatibility, gate-adjacency constraints, and business rules (for example, airlines may dedicate some gates to premium flights, and a
gate can be leased to a specific airline). The assumption that a gate is generic in
terms of aircraft size is appropriate if similar aircraft sizes are used for the same
carrier, which is the case at LGA (RJs in American Airlines are usually part of its
subsidiary, American Eagle, with a different airline code, MQ).
• First-come, first-served gate assignment is used. In practice, every turn has its initial
gate assignment, and it is usually preferred to keep the gate assignment if the delay
is not too long. Based on an interview with an airport manager, if an aircraft sits on
the tarmac for more than 10 minutes, it usually looks for an alternative.
• Use of overnight parking: All starting departures are parked away from gates. Earliest
ending arrivals park off-gate until a planned number is reached.
• Use of common gates: There are only two types of common gates, main line (narrow
body) and regional carriers (regional jets) at LGA. There is only one type of common
gates (compatible with any carrier) at other modeled airports.
• As a disruption scenario, gate capacity reduction lasts for a day while actual gate
capacity reduction usually lasts only for a period of time due to weather, ground
personnel shortage, etc. This assumption is appropriate to model gate capacity reduction in a high gate-utilization period, since a small gate capacity reduction in a
79
low gate-utilization period has no impact on gate delay.
5.1.5
Implementation
The simulation is implemented using Java with the Java simulation library PsimJ2 [Garrido,
2009] and the Java library Stochastic Simulation in Java (SSJ)3 . The Java PsimJ2 library
is a set of Java classes that implements the mechanisms necessary to develop simulation
models and to carry out simulation runs using the process-interaction approach, where
events and activities of major components of a system, defined as processes, are modeled
together [Garrido, 2008].
The random number generator is from the SSJ library, which provides capabilities to
generate random numbers by streams and substreams, which ensures independence among
different random numbers in different locations of the model and different replications of
simulations. It also has better properties compared with Excel and other random number
generators [L’Ecuyer, 2008].
The source code of the simulation model is listed in Appendix B.
5.2
Simulation Results and Analysis
Four disruption and four mitigation strategies are investigated, as discussed in Section 5.1.1.
5.2.1
Canonical Airport Simulation
A canonical airport is first modeled using idealized input data. The purpose is to verify the
simulation model behavior and develop an understanding of the baseline system response
to disruptions and simulation parameters. In subsequent models of individual airports, the
input data are not idealized and the input irregularity may confound the understanding of
simulation results.
3
http://www.iro.umontreal.ca/˜simardr/ssj/indexe.html
80
50
40
Number of
flights
30
starting departures
20
regular arrivals
10
ending arrivals
0
3 6 9 12 15 18 21 24 27
Hour
Figure 5.10: Canonical airport demand profile
Input Data
For simplicity, only one airline is modeled in the canonical airport. Figure 5.10 shows
the demand profile. There are three regular arrival peaks in the morning, afternoon, and
evening, similar to ATL, as shown in Appendix A. The starting departures are concentrated
in the early morning while ending arrivals are concentrated in the late afternoon. The gateblocking time is a constant 60 minutes, and the number of gates is 67.
Verification
To verify the simulation model, gate occupancy statistics are computed in both an analytical
model and the simulation model. The analytical model assumes infinite gate capacity4 and
uses a demand profile to compute gate occupancy. The results from the two models match
each other, as seen in Figure 5.11. It can be seen that the gate utilization is at maximum
in the evening, where disruptions are expected to have the most impact.
4
The infinite gate capacity assumption stands because 67 gates are enough to meet demand any time of
the day (see Figure 5.11).
81
70
60
50
Number of
aircraft parked
40
analytical model
30
simulation model
20
10
0
0
3
6
9 12 15 18 21 24 27 30
Hour
Figure 5.11: Canonical airport gate occupancy
Disruptions: One-Factor-at-a-Time
A two hour window in the evening, 19:00 to 21:00, is selected for disruptions (see Table 5.5).
This time window is selected based on historical data that disruptions often occur in the
evenings (see Appendix A). Figure 5.12 shows the simulation results. The impact of arrival
delay is relatively small because it only shifts demand around. The new demand peak does
cause delay, but the peak demand can be quickly absorbed by slack capacity in non-peak
hours. In contrast, the impact of gate-blocking time extension and turn conversion is linear
after the slack capacity is used. The reason is that the extra gate demand grows linearly
with the disruption magnitude. The impact of gate unavailability increases non-linearly
after slack capacity is used. The reason for this is that gate capacity reduction is for the
entire day and when slack gate capacity is used up, the system is saturated.
To evaluate the quality of using a deterministic simulation, a stochastic simulation is
conducted and compared against the deterministic simulation. The stochastic simulation
parameters in Table 5.3 are used, if applicable. Figure 5.13 compares their results for arrival
delay disruption and shows the following.
82
Table 5.5: Disruption: one factor at a time
Factor
A: Arrival delay (in min)
B: Gate-blocking time multiplier
C: Fraction of regular turns
converted to ending turns
D: Unavailable gate fraction
min
0
1
0
max
360
4
1
disruption start hour
19
19
19
disruption duration
2
2
2
0
0.5
N/A
N/A
20000
20000
15000
15000
Daily gate
delay (min) 10000
Daily gate
delay (min) 10000
5000
5000
0
0
0
60
120
180
240
300
360
1
Arrival delay (min)
1.5
2
2.5
3
3.5
4
Gate blocking time multiplier
(a) Disruption A: Arrival delay
(b) Disruption B: Gate-blocking time extension
20000
20000
Daily gate 15000
delay (min)
15000
Daily gate
delay (min) 10000
10000
5000
5000
0
0
0.2
0.4
0.6
0.8
0
1
0
0.1
0.2
0.3
0.4
Unavailable gate fraction
Fraction of regular turns converted to ending turns
(c) Disruption C: Regular turn converted to ending
turn
(d) Disruption D: Gate unavailable
Figure 5.12: Impact of disruptions: one factor at a time, canonical airport
83
0.5
Daily gate delay
(min)
4800
4200
3600
3000
2400
1800
1200
600
0
Deterministic
Stochastic average of 100
replications with 95%
confidence interval
0
60
120
180
240
300
360
Ramp arrival delay (min)
(a) Arrival deviation distribution standard deviation: 18 minutes
Daily gate delay
(min)
4800
4200
3600
3000
2400
1800
1200
600
0
Deterministic
Stochastic average of 100
replications with 95%
confidence interval
0
60
120
180
240
300
360
Ramp arrival delay (min)
(b) Arrival deviation distribution standard deviation: 14 minutes
Figure 5.13: Impact of demand disruption A: arrival delay; canonical airport
• Deterministic simulation is able to capture the trend of system response to disruptions. It can be seen that the stochastic simulation produces similar results as the
deterministic simulation. So later experiments will use deterministic runs.
• Stochastic simulation generates smaller delay because the deviation washes out demand peaks to some degree.
• As the deviation increases, gate delay decreases because the wash-out effect increases.
84
Mitigation Strategies: Factorial Design
To evaluate the impact of mitigation strategies and their interactions while keeping experiments efficient, a two level design is adopted. Table 5.6 shows the factors, where eight
factors in two categories are presented. The low level parameters represent baseline and the
high level parameters represent the magnitudes of disruptions or mitigation strategies. For
disruptions, the values of the high level parameters are selected to be in a reasonable range
compared with the actual disruption, as shown in Appendix A. In addition, the parameters are selected such that the four disruptions generate similar gate delay based on results
shown in Figure 5.12. The mitigation parameters are selected based on historical data or
literature. For example, Horonjeff and McKelvey [Horonjeff and McKelvey, 1993] indicate
that normally gates are scheduled for up to 80% occupancy. The remaining 20% gate capacity is the slack capacity to deal with operation disruptions. Therefore, it is reasonable
to investigate the impact of converting the 20% slack gate capacity to be common gates.
As a benchmark, the same 20% is used for new gate capacity. Richards [Richards, 2008]
indicates that DFW airport began using self-docking systems at 92 of its 157 gates (58%).
Wang et al. [Wang et al., 2010] show that American Airlines and American Eagle Airlines
usually park 25 aircraft at LGA at night compared with their 16 gates (off-gate parking is
56% of their gate capacity).
Table 5.7 shows the set of experiments. The disruption is investigated one at a time
based on the analysis in Chapter 4. The mitigation strategies are investigated using a
factorial design.
Table 5.8 shows the effects of the four mitigation strategies and their interactions5 .
First, “Gate delay under disruption” is the baseline that no mitigation strategies are in
place. For example, gate delay is 3,630 minutes when the disruption of arrival delay occurs,
and gate delay is 2,955 minutes when the disruption of gate-blocking time extension occurs.
After that, for each of the four disruptions, mitigation strategies and their interactions are
5
The effects are calculated based on simulation results using the software Design-Ease 8.0.4 Trial
(www.statease.com)
85
86
Factor
A: Disrupted arrival delay (in min)
B: Gate-blocking time extension multiplier
C: Fraction of regular turns converted to ending turns
D: Unavailable gate fraction
I: New gate capacity fraction
II: Common gate fraction
III: Self-docking gate fraction
IV: Ending turns parked off-gate as a fraction of gate capacity
0
1
0
0
0
0
0
0
+
120
2
0.35
0.35
0.2
0.2
0.5
0.5
start hour
19
19
19
N/A
N/A
N/A
N/A
N/A
duration
2
2
2
N/A
N/A
N/A
N/A
N/A
Table 5.6: Eight factors to be investigated, canonical airport (one carrier)
carriers impacted
one carrier
one carrier
one carrier
one carrier
one carrier
N/A
one carrier
one carrier
Table 5.7: One factor at a time for
Formulation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
...
65
disruption and factorial design
A B C D I II III
+ + - + + - +
+ - + +
+ +
+ - + +
+ - + +
+ - + + +
+ + - + + - +
+ - + +
+ +
+ - + +
+ - + +
+ - + + +
- + - + - + - + - +
- + - + +
- + +
- + - + +
- + - + +
- + - + + +
- + - + - + - + - +
- + - + +
- + +
- + - + +
- + - + +
- + - + + +
... ... ... ... ... ... ...
- + + + +
87
for mitigation strategies
IV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
...
+
evaluated. For example, when the disruption of arrival delay occurs, the average effect
(whether other strategies are in effect is unknown) of new gate capacity is reducing the gate
delay by 1,614 minutes (a fraction of 0.44 of the baseline, 3,630 minutes6 ). The average
effect of ending turns parked off-gate is reducing gate delay by 2013 minutes (a fraction
of 0.55 of the baseline). The interaction of these two strategies increases gate delay by
762 minutes (a fraction of 0.21 of the baseline). This indicates that implementing multiple
mitigation strategies has diminishing effects. In other words, if one strategy is in use,
the effect of another strategy tends to be small. The results show that additional gates
are very effective for all four types of disruptions, as expected. Surprisingly, ending turn
off-gate parking is very effective not only for the disruption of regular turns converted to
ending turns, but for other disruptions as well. This is because the disruptions in the
experiment occur in the evening and ending turns can vacate gates at the same time using
off-gate parking. Considering that disruptions often occur in evenings (see Appendix A),
off-gate parking has the potential to mitigate gate delay effectively under different types of
disruptions.
5.2.2
LGA Simulation
LGA is simulated because delays at this airport are high, and it is a land constrained
airport so gate delays can impact surface operations. Gate operations of four major airlines
experiencing high gate delays, American Airlines (AA), its regional affiliates American Eagle
Airlines (MQ), Delta Air Lines (DL), and its subsidiary Comair (OH), are modeled at LGA.
Disruptions: One-Factor-at-a-Time
The same parameter values as shown in Table 5.5 are selected for disruptions in the onefactor-at-a-time experiments. Figure 5.14 shows the simulation results. The impacts of the
first three disruptions are moderate compared with those in the canonical airport. This is
6
This is just a benchmark for the comparison with other airports. It does not mean that new gate
capacity would reduce the gate delay of 3,630 minutes by 1,614 minutes or 44% since 1,614 minutes delay
reduction is the average effect whereas it is known that other strategies are not in effect for the baseline
experiment.
88
89
Table 5.8: Calculated mitigation effects on disruptions, canonical airport
Disruption
Arrival
Gate-blocking Regular turn converted
delay
time extension
to ending turn
Gate delay under disruption (min)
3630
2955
3015
Delay reduction under mitigation
min fraction min fraction min
fraction
Main effects
New gates, I
-1614
-0.44
-1890
-0.64
-1443
-0.48
Common gates, II
0
0
0
0
0
0
Self-docking gates, III
0
0
0
0
0
0
Ending turns parked off-gate, IV -2013
-0.55
-975
-0.33
-1571
-0.52
Two-factor interactions
I * II
0
0
0
0
0
0
I * III
0
0
0
0
0
0
I * IV
762
0.21
460
0.16
1443
0.48
II * III
0
0
0
0
0
0
II * IV
0
0
0
0
0
0
III * IV
0
0
0
0
0
0
Three-factor interactions
I * II * III
0
0
0
0
0
0
I * II * IV
0
0
0
0
0
0
0
0
0
0
0
0
I * III * III
II * III * IV
0
0
0
0
0
0
Four-factor interactions
I * II * III * IV
0
0
0
0
0
0
-0.34
0
-0.36
-0.17
0
0.33
0.14
0
0
0.16
0
0
-0.13
0
0
-1071
0
-1144
-545
0
1048
449
0
0
522
0
0
-426
0
0
Gate
unavailable
3187
min fraction
20000
20000
15000
15000
Daily gate
delay (min) 10000
Daily gate
delay (min) 10000
5000
5000
0
0
60
120
180
240
300
0
360
1
Arrival delay (min)
2
2.5
3
3.5
4
Gate blocking time multiplier
(a) Disruption A: Arrival delay
(b) Disruption B: Gate-blocking time extension
20000
Daily gate
delay (min)
1.5
20000
15000
15000
Daily gate
delay (min) 10000
10000
5000
5000
0
0
0.2
0.4
0.6
0.8
0
1
0
0.1
0.2
0.3
0.4
0.5
Unavailable gate fraction
Fraction of regular turns converted to ending turns
(c) Disruption C: Regular turn converted to ending
turn
(d) Disruption D: Gate unavailable
Figure 5.14: Impact of disruptions (AA, MQ) on total daily gate delays (AA, MQ, DL,
OH): one factor at a time, LGA
because there is relatively more slack gate capacity at LGA in the disruption time period,
19:00 to 21:00 (see Figure 4.17). So when disruptions occur, the impacts are relatively
small.
Mitigation Strategies: Factorial Design
Table 5.9 shows the factors, where eight factors in two categories are presented. The
disruption parameters are selected such that the four disruptions generate similar magnitude
of gate delay if possible, based on results shown in Figure 5.14. Some disruption parameter
values are higher than those in canonical airports in order to create a significant disruption.
The design shown in Table 5.7 is also used for LGA.
Table 5.10 shows the simulation results. Additional gates are effective, as expected.
Common gates can be more effective because Delta’s gate capacity is higher than American’s
gate capacity, and therefore 20% of Delta’s gates are more helpful than 20% of American’s
gates. This also indicates that schedules between American Airlines and Delta Airlines are
strongly complementary. In addition, total gate-delay reduction using common gates is not
90
91
Factor
A: Disrupted arrival delay (in min)
B: Gate-blocking time extension multiplier
C: Fraction of regular turns converted to ending turns
D: Unavailable gate fraction
I: New gate capacity fraction
II: Common gate fraction
III: Self-docking gate fraction
IV: Ending turns parked off-gate as a fraction of gate capacity
0
1
0
0
0
0
0
0.9
+
360
4
1
0.2
0.2
0.2
0.5
1.4
start hour
19
19
19
N/A
N/A
N/A
N/A
N/A
duration
2
2
2
N/A
N/A
N/A
N/A
N/A
Table 5.9: Eight factors to be investigated, LGA (AA, MQ, DL, OH)
carriers impacted
AA, MQ
AA, MQ
AA, MQ
AA, MQ
AA, MQ
AA,DL;MQ,OH
AA, MQ
AA, MQ
20000
20000
15000
15000
Daily gate
delay (min) 10000
Daily gate
delay (min) 10000
5000
5000
0
0
0
60
120
180
240
300
360
1
Arrival delay (min)
2
2.5
3
3.5
4
Gate blocking time multiplier
(a) Disruption A: Arrival delay
(b) Disruption B: Gate-blocking time extension
20000
Daily gate
delay (min)
1.5
20000
15000
15000
Daily gate
delay (min) 10000
10000
5000
5000
0
0
0.2
0.4
0.6
0.8
0
1
0
0.1
0.2
0.3
0.4
0.5
Unavailable gate fraction
Fraction of regular turns converted to ending turns
(c) Disruption C: Regular turn converted to ending
turn
(d) Disruption D: Gate unavailable
Figure 5.15: Impact of disruptions (DL) on total daily gate delays (DL, FL): one factor at
a time, ATL
at the expense of any party for this data. Table 5.11 illustrates with an example that using
common gates reduces gate delay of American and American Eagle flights without adding
delay to Delta or Comair.
5.2.3
ATL Simulation
Gate operations of the two major carriers, Delta Air Lines with Delta Connection (DL) and
AirTran Airways (FL), are modeled at ATL.
Disruptions: One-Factor-at-a-Time
The same parameter values as shown in Table 5.5 are selected for disruptions in the onefactor-at-a-time experiments. Figure 5.15 shows the simulation results. The first three
disruptions have a small impact because there is enough slack gate capacity to mitigate
disruptions. The impact of gate capacity reduction is also non-linear, as expected.
92
93
Table 5.10: Calculated mitigation effects on disruptions, LGA
Disruption
Arrival
Gate-blocking Regular turn converted
delay
time extension
to ending turn
Gate delay under disruption (min)
583
448
766
Delay reduction under mitigation min fraction min fraction min
fraction
Main effects
New gates, I
-254
-0.44
-224
-0.50
-286
-0.37
Common gates, II
-256
-0.44
-224
-0.50
-316
-0.41
Self-docking gates, III
0
0
0
0
0
0
Ending turns parked off-gate, IV
-38
-0.06
0
0
-98
-0.13
Two-factor interactions
I * II
154
0.26
124
0.28
186
0.24
I * III
0
0
0
0
0
0
I * IV
36
0.06
0
0
68
0.09
II * III
0
0
0
0
0
0
II * IV
38
0.06
0
0
98
0.13
III * IV
0
0
0
0
0
0
Three-factor interactions
I * II * III
0
0
0
0
0
0
I * II * IV
-36
-0.06
0
0
-68
-0.09
0
0
0
0
0
0
I * III * III
II * III * IV
0
0
0
0
0
0
Four-factor interactions
I * II * III * IV
0
0
0
0
0
0
-0.44
-0.44
-0.01
-0.02
0.24
0.01
0.02
0.01
0.02
0.01
-0.01
-0.02
-0.01
-0.01
0.01
-745
-745
-15
-30
409
15
30
15
30
15
-15
-30
-15
-15
15
Gate
unavailable
1709
min fraction
Table 5.11: Impact of common gates on gate delay reduction; disruption: arrival delay,
LGA
Airline
Gate delay (min)
Gate delay (min)
IATA code without common gates with common gates
AA
147
0
MQ
436
100
DL
0
0
OH
0
0
Mitigation Strategies: Factorial Design
Table 5.12 shows the factors, where eight factors in two categories are presented. The
disruption parameters are selected such that the four disruptions generate similar magnitude
of gate delay if possible, based on results shown in Figure 5.15. The design shown in
Table 5.7 is also used for ATL.
Table 5.13 shows the simulation results. Additional gates and common gates are effective
mitigation strategies. Like LGA, the total gate-delay reduction using common gates is not at
the expense of any party for this data. Table 5.14 shows that both Delta and AirTran benefit
from using common gates, indicating that schedules between them are complementary.
Compared with LGA benefit, the impact of common gates is smaller because Delta Airlines
has a large market share at ATL and 20% of AirTran gates used as common gates does not
help Delta much. Off-gate parking is effective for the disruption of regular turns converted
to ending turns, as expected. If the disruption is due to unavailable gates, self-docking gates
are effective, as expected.
5.2.4
DFW Simulation
Gate operations of the two major airlines, American Airlines (AA) and its regional affiliates
American Eagle Airlines (MQ), are modeled at DFW.
94
95
Factor
A: Disrupted arrival delay (in min)
B: Gate-blocking time extension multiplier
C: Fraction of regular turns converted to ending turns
D: Unavailable gate fraction
I: New gate capacity fraction
II: Common gate fraction
III: Self-docking gate fraction
IV: Ending turns parked off-gate as a fraction of gate capacity
0
1
0
0
0
0
0
0
+
120
4
1
0.1
0.2
0.2
0.5
0.5
start hour
19
19
19
N/A
N/A
N/A
N/A
N/A
duration
2
2
2
N/A
N/A
N/A
N/A
N/A
Table 5.12: Eight factors to be investigated, ATL (DL, FL)
carriers impacted
DL
DL
DL
DL
DL
DL, FL
DL
DL
96
Table 5.13: Calculated mitigation effects on disruptions, ATL
Disruption
Arrival
Gate-blocking Regular turn converted
delay
time extension
to ending turn
Gate delay under disruption (min)
3556
6097
7271
Delay reduction under mitigation
min fraction min fraction min
fraction
Main effects
New gates, I
-1879
-0.53
-3039
-0.50
-3416
-0.47
Common gates, II
-1429
-0.40
-1538
-0.25
-1749
-0.24
Self-docking gates, III
0
0
0
0
0
0
Ending turns parked off-gate, IV
0
0
-1161
-0.19
-1537
-0.21
Two-factor interactions
I * II
134
0.04
243
0.04
454
0.06
I * III
0
0
0
0
0
0
I * IV
0
0
1161
0.19
1537
0.21
II * III
0
0
0
0
0
0
II * IV
0
0
110
0.02
321
0.04
III * IV
0
0
0
0
0
0
Three-factor interactions
I * II * III
0
0
0
0
0
0
I * II * IV
0
0
-110
-0.02
-321
-0.04
0
0
0
0
0
0
I * III * III
II * III * IV
0
0
0
0
0
0
Four-factor interactions
I * II * III * IV
0
0
0
0
0
0
-0.50
-0.22
-0.19
0
-0.02
0.10
0
0.00
0
0
0.01
0
0
0
0
-2949
-1295
-1131
0
-119
570
0
-7
0
0
45
0
0
0
0
Gate
unavailable
5911
min fraction
Table 5.14: Impact of common gates on gate delay reduction; disruption: gate-blocking
time extension, ATL
Airline
Gate delay (min)
Gate delay (min)
IATA code without common gates with common gates
DL
4949
4044
FL
1148
52
20000
20000
15000
15000
Daily gate
delay (min) 10000
Daily gate
delay (min) 10000
5000
5000
0
0
0
60
120
180
240
300
360
1
Arrival delay (min)
1.5
2
2.5
3
3.5
4
Gate blocking time multiplier
(a) Disruption A: Arrival delay
(b) Disruption B: Gate-blocking time extension
20000
20000
Daily gate 15000
delay (min)
15000
Daily gate
delay (min) 10000
10000
5000
5000
0
0
0.2
0.4
0.6
0.8
0
1
0
0.1
0.2
0.3
0.4
0.5
Unavailable gate fraction
Fraction of regular turns converted to ending turns
(c) Disruption C: Regular turn converted to ending
turn
(d) Disruption D: Gate unavailable
Figure 5.16: Impact of disruptions (AA,MQ) on total daily gate delays (AA,MQ): one factor
at a time, DFW
Disruptions: One-Factor-at-a-Time
The same parameter values as shown in Table 5.5 are selected for disruptions in the onefactor-at-a-time experiments. Figure 5.16 shows the simulation results. Ramp arrival delay
has no impact. This indicates that there is enough slack gate capacity to accommodate such
a disruption. Impacts of other disruptions are similar to those in the canonical airport —
the impact of gate-blocking time extension and turn conversion is linear after slack capacity
is used. The reason is that the extra gate demand grows linearly with the disruption
magnitude. The impact of gate unavailability is non-linear after slack capacity is used up,
as expected. The reason is that gate capacity reduction is for the entire day and when slack
gate capacity is used up, the system is saturated.
97
Mitigation Strategies: Factorial Design
Table 5.15 shows the factors, where eight factors in two categories are presented. The
disruption parameters are selected such that the four disruptions generate similar magnitude
of gate delay if possible, based on results shown in Figure 5.16. The design shown in
Table 5.7 is also used for DFW.
Table 5.16 shows the simulation results. As expected, new gates are very effective to
mitigate gate delay. Off-gate parking is effective if the disruption is gate-blocking time
extension or conversion from regular turns to ending turns. If the disruption is due to
unavailable gates, self-docking gates are very effective. Common gates have no effect since
only one airline is modeled at DFW.
5.2.5
Simulation Results Summary
Simulation of a canonical airport, LGA, ATL and DFW identify the following:
• The impact of arrival delay in a time window (e.g. 7 pm to 9 pm) on gate-waiting
delay is bounded.
• The impact of longer-than-scheduled gate-occupancy times in a time window on gatewaiting delay can be unbounded and gate-waiting delay can increase linearly as the
disruption level increases.
• Small reductions in gate availability have a small impact on gate-waiting delay due
to slack gate capacity, while larger reductions have a non-linear impact as slack gate
capacity is used up.
• Using common gates can be a very effective mitigation strategy. This is due to complementary schedules of airlines and slack gate capacity. Common gates have a greater
impact at LGA than at ATL and a greater impact at ATL than at DFW. This is
because the flight schedule at LGA is not dominated by one carrier while the flight
schedule at DFW is strongly dominated by one carrier. The less dominance by one
98
99
Factor
A: Disrupted arrival delay (in min)
B: Gate-blocking time extension multiplier
C: Fraction of regular turns converted to ending turns
D: Unavailable gate fraction
I: New gate capacity fraction
II: Common gate fraction
III: Self-docking gate fraction
IV: Ending turns parked off-gate as a fraction of gate capacity
0
1
0
0
0
0
0
0
+
120
4
0.8
0.35
0.2
0.2
0.5
0.5
start hour
19
19
19
N/A
N/A
N/A
N/A
N/A
duration
2
2
2
N/A
N/A
N/A
N/A
N/A
Table 5.15: Eight factors to be investigated, DFW (AA, MQ)
carriers impacted
AA, MQ
AA, MQ
AA, MQ
AA, MQ
AA, MQ
N/A
AA, MQ
AA, MQ
100
Table 5.16: Calculated mitigation effects on disruptions, DFW
Disruption
Arrival
Gate-blocking Regular turn converted
delay
time extension
to ending turn
Gate delay under disruption (min)
0
2298
1917
Delay reduction under mitigation min fraction min fraction min
fraction
Main effects
New gates, I
0
-1114
-0.48
-959
-0.50
Common gates, II
0
0
0
0
0
Self-docking gates, III
0
0
0
0
0
Ending turns parked off-gate, IV
0
-1184
-0.52
-959
-0.50
Two-factor interactions
I * II
0
0
0
0
0
I * III
0
0
0
0
0
I * IV
0
1114
0.48
959
0.50
II * III
0
0
0
0
0
II * IV
0
0
0
0
0
III * IV
0
0
0
0
0
Three-factor interactions
I * II * III
0
0
0
0
0
I * II * IV
0
0
0
0
0
0
0
0
0
0
I * III * III
II * III * IV
0
0
0
0
0
Four-factor interactions
I * II * III * IV
0
0
0
0
0
-0.49
0
-0.50
0.00
0
0.49
0.00
0
0
0.00
0
0
0.00
0
0
-1194
0
-1219
-3
0
1194
3
0
0
3
0
0
-3
0
0
Gate
unavailable
2419
min fraction
carrier, the more benefit common gates would bring. In addition, studies of LGA and
ATL both show that no party would be negatively impacted using common gates.
• Off-gate overnight parking has higher impact at DFW than at ATL partly because
DFW has maximum gate utilization overnight while ATL has maximum gate utilization during the day (See Appendix A).
• Multiple mitigation strategies have diminishing effects.
101
Chapter 6: Conclusions and Recommendations for Future
Research
6.1
Conclusions
This dissertation developed a systematic method for analysis of gate-delay severity and
characteristics across major U.S. airports. This included developing a set of unique data
processing and joining algorithms to identify gate-delay functional causes. Finally, this
dissertation developed a model to simulate gate-delay functional causes and mitigation
strategies.
6.1.1
Gate Delay Severity
Gate delays at the OEP-35 airports are asymmetric, with ATL, JFK, DFW and PHL
experience much higher gate delay than others, representing the need for gate-capacity
expansion, demand management, or more efficient gate-carrier allocation.
6.1.2
Gate Delay Characteristics
On most days, gate delays are not problematic. However, most airports in this dissertation
have several outlier days, in which gate delays are very bad. Gate delays are statistically
different across different carriers. Gate delays are correlated with aircraft size, but the
correlation is not universal (positive at some airports while negative at other airports).
Gate delays tend to be more severe in the evenings when the schedule has a peak and the
uncertainty tends to be large.
102
6.1.3
Gate Delay Functional Causes
Analysis of historical data at LGA, ATL, JFK, EWR, DFW, and MIA shows that two
major functional causes for gate delay are longer-than-scheduled gate-occupancy time and
reduced available gates. Analysis using a simulation model shows that the impact of gateoccupancy time extension in a time window (e.g. 7 pm to 9 pm) is linear in response to the
disruption magnitude. The impact of reduced gate availability is non-linear in response to
the disruption magnitude. Higher-than-scheduled arrival rate can be a functional cause of
gate delays, but the impact is smaller than the other two disruptions. From historical data,
gate delay is often correlated with cancellations, which tend to increase gate-occupancy
times.
6.1.4
Gate Delay Mitigation Strategies
Additional gates and common gates are effective measures to combat gate delays. Considering the cost of new gates, common gates are especially effective for airports with multiple
major carriers whose schedules are complementary, such as LGA. Self-docking gates can be
very effective if the gate-delay cause is reduced gate availability. Off-terminal parking for
overnight turns are very effective if the disruption cause is conversion from regular turns to
ending turns or other disruptions in the evening. The benefits are larger at DFW than at
ATL because DFW has maximum gate utilization overnight while ATL has maximum gate
utilization during the day. Multiple mitigation strategies have diminishing effects.
6.2
Future Work
6.2.1
Improved Gate Delay Modeling
This dissertation can be further improved with refined modeling using additional data
sources.
A useful extension is to include aircraft type into the analysis. This dissertation ignores
existing aircraft-gate compatibility constraints. The ASPM database can be used to get
103
aircraft type information and flightstats.com can be used to partially infer gate compatibility
information based on historical data (that is, by observing historically which aircraft types
have been parked at which gates). Usage of data sources including international flights
would also give a more complete picture of entire gate usage for an international hub, such
as JFK.
Root causes and chain effects can also be investigated with additional data. For example,
reduced gate utilization can be due to bad weather, a shortage of ground crew, or an airline’s
preference to keep the gate-assignment plan. This dissertation assumes the cause to be one
of the first two, which means that the self-docking gates can help. However, if the cause
is the airline’s preference, the corresponding mitigation strategy would be a flexible gateassignment strategy to combat disruptions.
Another example is extended gate-occupancy time, which can be due to crew shortage
or an imposed ground hold by ATC. Each calls for a different mitigation strategy. With
airline operating data, ATC data and weather data, these chain effects can be investigated to
explain correlations identified in this dissertation. For example, the whole story of weather
impact might unfold as follows. Weather causes a decrease in airport-runway capacity. As a
result, airlines start to cancel flights. Then, gate-occupancy time increases and gate demand
is higher, which causes gate delay.
More mitigation strategies can be evaluated. For example, the arrival stream to airport
runways plays an important role on gate demand and hence gate delay. NextGen proposes
gate-to-gate trajectory based operations. Better planning is expected for all phases of
flights, including gate arrival, and its impact on gate delay can be evaluated.
6.2.2
Industrial Applications
This dissertation can be applied to airport-capacity planning for the FAA and airline gate
allocation for airports.
This dissertation can be used for runway and gate capacity planning purposes to match
gate and runway capacity. For example, ATL had its fifth runway commissioned in 2006.
104
As a result, air delay was moved to ground and gate constraints became apparent [Terreri,
2009]. With better synchronization on runway and gate capacity expansion, air delay and
gate delay could be mitigated proactively.
This dissertation can be used to evaluate different gate allocations to carriers and to
evaluate common-gate allocation. This dissertation can also evaluate airport contingency
plans to combat insufficient common gates during disruptions, such as the use of hard
stands.
105
Appendix A: Functional Cause Identification of Extreme
Gate Delays Using Carrier Aggregated Data (BTS Data)
A.1
LGA
Number
of aircraft
6/27/2007
70
60
50
40
30
20
10
0
0
Hourly
landing
rate
6
12
18
24
30
0
6
12
18
8/9/2007
24
30
70
60
50
40
30
20
10
0
30
30
20
20
20
10
10
10
0
0
0
0
6
12
18
24
30
0
800
6
12
18
24
parked in summer
2007 average
parked on the day
studied
0
30
30
6
12
18
24
waiting for gates
on the day
studied
30
Summer 2007
average
Day studied
0
6
12
18
24
30
800
800
600
600
400
400
Summer 2007
average
200
200
200
0
Day studied
0
0
Average
600
service
time (min) 400
0
Number of
starting
departures
8/8/2007
70
60
50
40
30
20
10
0
6
12
18
24
0
30
6
12
18
24
30
0
6
12
18
24
30
40
40
40
30
30
30
20
20
20
10
Summer 2007
average
10
10
0
0
0
Day studied
0
6
12
18
Hour of day
24
30
0
6
12
18
Hour of day
24
30
0
6
12
18
24
30
Hour of day
Figure A.1: Gate delay functional cause identification at LGA
Table A.1: Functional Causes of High Gate Delay in the Worst 3 Days at LGA in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/27
X
X
8/8
X
8/9
X
X
X
106
A.2
ATL
6/11/2007
Number
of aircraft
7/29/2007
200
200
150
150
150
100
100
100
50
50
50
0
6
12
18
24
120
100
80
60
40
20
0
6
12
18
24
30
120
100
80
60
40
20
0
0
6
12
18
24
30
600
0
6
12
18
24
30
0
6
12
18
24
200
0
0
0
6
12
18
24
20
20
10
10
10
0
0
6
12
18
Hour of day
24
30
12
18
24
waiting for gates
on the day studied
30
Summer 2007
average
Day studied
0
6
12
18
24
30
Summer 2007
average
Day studied
6
12
18
24
30
30
20
0
6
0
30
30
30
600
200
30
40
0
400
400
0
Parked on the day
studied
120
100
80
60
40
20
0
600
Average
400
service
time (min) 200
Number of
starting
departures
0
30
Parked in summer
2007 average
0
0
0
Hourly
landing
rate
8/24/2007
200
Summer
2007 average
Day studied
0
0
6
12
18
Hour of day
24
30
0
6
12
18
24
30
Hour of day
Figure A.2: Gate delay functional cause identification at ATL
Table A.2: Functional Causes of High Gate Delay in the Worst 3 Days at ATL in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/11
X
7/29
X
8/24
X
X
X
107
A.3
JFK
6/1/2007
80
Number
of aircraft
6/11/2007
80
60
60
40
40
40
20
20
20
0
6
12
18
24
30
parked in summer
2007 average
60
0
0
Hourly
landing
rate
6/10/2007
80
0
6
12
18
24
30
parked on the day
studied
0
0
6
12
18
24
30
waiting for gates on
the day studied
40
40
40
30
30
30
20
20
20
Summer 2007
average
10
10
10
Day studied
0
0
0
0
6
12
18
24
30
0
6
12
18
24
30
0
800
6
12
18
24
30
800
800
Average 600
service
400
time (min)
600
600
400
400
Summer 2007
average
200
200
200
Day studied
0
0
0
0
6
12
18
24
0
30
6
12
18
24
0
30
20
20
20
15
15
15
10
10
5
5
5
0
0
0
Number of
10
starting
departures
0
6
12
18
Hour of day
24
30
0
6
12
18
Hour of day
24
30
6
12
18
24
30
Summer 2007
average
Day studied
0
6
12
18
24
30
Hour of day
Figure A.3: Gate delay functional cause identification at JFK
Table A.3: Functional Causes of High Gate Delay in the Worst 3 Days at JFK in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/01
X
6/10
X
X
6/11
X
108
A.4
EWR
6/29/2007
Number
of aircraft
8/9/2007
100
100
100
80
80
80
60
60
60
40
40
40
20
20
0
0
20
0
Hourly
landing
rate
7/26/2007
6
12
18
24
30
0
6
12
18
24
30
parked in
summer 2007
average
parked on the
day studied
waiting for gates
on the day
studied
0
0
6
12
18
24
30
40
40
40
30
30
30
20
20
20
Summer
2007 average
10
10
10
Day studied
0
0
0
0
6
12
18
24
0
30
6
12
18
24
30
0
6
12
18
24
30
40
30
Number of
20
starting
departures 10
0
0
6
12
18
24
Hour of day
30
0
6
12
18
24
30
1000
1000
1000
Average 800
600
service
time (min) 400
200
0
800
800
600
600
400
400
200
200
0
0
0
6
12
18
24
30
Summer
2007 average
Day studied
0
6
12
18
24
30
40
40
30
30
20
20
Summer 2007
average
10
10
Day studied
0
0
0
6
12
18
24
Hour of day
30
0
6
12
18
24
30
Hour of day
Figure A.4: Gate delay functional cause identification at EWR
Table A.4: Functional Causes of High Gate Delay in the Worst 3 Days at EWR in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/29
X
X
7/26
X
X
8/09
109
A.5
DFW
6/17/2007
7/1/2007
140
120
100
Number
80
of aircraft 60
40
20
0
0
Hourly
landing
rate
6
12
18
24
30
80
60
40
20
0
0
6
12
18
24
30
6
12
18
24
6
12
18
24
30
30
parked in
summer 2007
average
parked on the
day studied
0
Summer 2007
average
20
20
Day studied
0
0
0
6
12
18
24
30
0
6
12
18
24
30
1000
800
600
400
200
0
20
10
Hour of day
30
0
0
6
12
18
Hour of day
24
30
0
6
12
18
24
30
Summer 2007
average
Day studied
0
10
24
waiting for
gates on day
studied
40
20
18
30
40
Number of 20
starting
10
departures
12
24
80
30
6
18
60
30
0
12
60
30
0
6
80
1000
800
600
400
200
0
1000
800
Average 600
400
service
time (min) 200
0
0
0
7/2/2007
140
120
100
80
60
40
20
0
140
120
100
80
60
40
20
0
6
12
18
24
30
Summer 2007
average
Day studied
0
0
6
12
18
24
30
Hour of day
Figure A.5: Gate delay functional cause identification at DFW
Table A.5: Functional Causes of High Gate Delay in the Worst 3 Days at DFW in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/17
X
7/01
X
7/02
X
110
A.6
MIA
6/17/2007
Number
of aircraft
7/3/2007
40
40
30
30
30
20
20
20
10
10
10
0
0
0
6
12
18
24
30
6
12
18
24
30
0
20
20
15
15
10
10
10
5
5
5
0
0
0
20
15
0
6
12
18
24
0
30
6
12
18
24
parked in summer
2007 average
parked on the day
studied
waiting for gates on
the day studied
0
25
800
12
18
24
30
Summer 2007
average
Day studied
0
30
6
6
12
18
24
30
800
800
600
600
400
400
Summer 2007
average
200
200
200
Day studied
0
0
0
Average
600
service
time (min) 400
0
Number of
starting
departures
0
25
25
Hourly
landing
rate
7/5/2007
40
6
12
18
24
30
0
6
12
18
24
0
30
6
12
18
24
30
8
8
8
6
6
6
4
4
4
Summer
2007 average
2
2
Day studied
0
0
2
0
0
6
12
18
24
Hour of day
30
0
6
12
18
24
Hour of day
30
0
6
12
18
24
30
Hour of day
Figure A.6: Gate delay functional cause identification at MIA
Table A.6: Functional Causes of High Gate Delay in the Worst 3 Days at MIA in Summer
2007
Date Reduced Higher Increased service Increased service
available arrival
time for same
time for previous
gate
rate
day arrivals
day arrivals
6/17
X
X
X
7/03
X
X
X
X
7/05
X
X
X
111
A.7
6 Airport Summary
Table A.7: Gate Delay Functional Causes in 18 High Gate-delay Days in Summer 2007
Cause
Count
Reduced available gate
10
Higher arrival rate
9
Increased service time for same day arrivals
9
Increased service time for previous day arrivals
4
112
Appendix B: Simulation Model Source Code
1 package TurnGenerator ;
3 import j a v a . u t i l . A r r a y L i s t ;
import j a v a . u t i l . L i s t ;
5
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
7 import j a v a . u t i l . L i s t I t e r a t o r ;
// #[ r e g e n=yes , i d=DCE. 1 B268774−3BD9−B009−3537−A3AA880552CE ]
9 // </ e d i t o r −f o l d >
public c l a s s AggregatedOneDayOneCarrierTurns {
11
private S t r i n g carrierIATACode ;
13
private A r r a y L i s t <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnsArray ; // e l e m e n t s a r e s o r t e d by hour ,
acscending order
15
17
19
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. ABF82C6F−ED13−53A3−FAC0−8D0CD71E7A64 ]
// </ e d i t o r −f o l d >
public AggregatedOneDayOneCarrierTurns ( ) {
aggregatedOneHourOneCarrierTurnsArray = new A r r a y L i s t <
AggregatedOneHourOneCarrierTurns >() ;
}
21
23
25
public AggregatedOneDayOneCarrierTurns ( AggregatedOneHourOneCarrierTurns
aggregatedOneHourOneCarrierTurns ) {
carrierIATACode = aggregatedOneHourOneCarrierTurns . getCarrierIATACode
() ;
aggregatedOneHourOneCarrierTurnsArray = new A r r a y L i s t <
AggregatedOneHourOneCarrierTurns >() ;
aggregatedOneHourOneCarrierTurnsArray . add (
aggregatedOneHourOneCarrierTurns ) ;
}
27
29
31
33
35
37
39
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 1 6 2 7 5 0 8A−79E2−D908−4C37−1CEE3A2BAA30 ]
// </ e d i t o r −f o l d >
public L i s t g e n e r a t e T u r n L i s t ( ) {
L i s t <Turn> t u r n l i s t = new A r r a y L i s t <Turn >() ;
L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnIterator =
aggregatedOneHourOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
double numRegularArrivalsRemainder = 0 ; // s h o u l d be s m a l l e r than 1
double numEndingArrivalsRemainder = 0 ; // s h o u l d be s m a l l e r than 1
double numStartingDeparturesRemainder = 0 ; // s h o u l d be s m a l l e r t h an
1
while ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
AggregatedOneHourOneCarrierTurns aggregatedOneHourOneCarrierTurns
= a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . next ( ) ;
// c o n s t r u c t r e g u l a r t u r n s
113
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
double n u m R e g u l a r A r r i v a l s I n T h i s H o u r =
aggregatedOneHourOneCarrierTurns . g e t N u m R e g u l a r A r r i v a l s ( ) ;
numRegularArrivalsRemainder += n u m R e g u l a r A r r i v a l s I n T h i s H o u r ;
while ( numRegularArrivalsRemainder >= 1 ) {
numRegularArrivalsRemainder −−;
i n t eventMinPastHour = ( i n t ) ( ( 1 − numRegularArrivalsRemainder
/ n u m R e g u l a r A r r i v a l s I n T h i s H o u r ) ∗ 6 0 ) ; // s h o u l d be no
more t h a n 6 0 ;
// now g e n e r a t e a r r i v a l
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” r e g u l a r T u r n ” //
turnType
, aggregatedOneHourOneCarrierTurns . getHourOfDay ( ) ∗60 +
eventMinPastHour // actuaArrInMin
,−1 // actDepInMin
, aggregatedOneHourOneCarrierTurns .
getAverageGateOccupancyTimeInMinForRegularArrivals
( ) // gateOccTimeInMin
));
}
// c o n s t r u c t e n d i n g t u r n s
double numEndingArrivalsInThisHour =
aggregatedOneHourOneCarrierTurns . getNumEndingArrivals ( ) ;
numEndingArrivalsRemainder += numEndingArrivalsInThisHour ;
while ( numEndingArrivalsRemainder >= 1 ) {
numEndingArrivalsRemainder −−;
i n t eventMinPastHour = ( i n t ) ( ( 1 − numEndingArrivalsRemainder /
numEndingArrivalsInThisHour ) ∗ 6 0 ) ; // s h o u l d be no more
t h an 6 0 ;
// now g e n e r a t e a r r i v a l
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” endingTurn ”
// turnType
, aggregatedOneHourOneCarrierTurns . getHourOfDay ( )
∗60 + eventMinPastHour // actuaArrInMin
,−1 // actDepInMin
,−1 // gateOccTimeInMin
));
}
// c o n s t r u c t s t a r t i n g t u r n s
double n u m S t a r t i n g D e p a r t u r e s I n T h i s H o u r =
aggregatedOneHourOneCarrierTurns . g e t N u m S t a r t i n g D e p a r t u r e s ( ) ;
numStartingDeparturesRemainder += n u m S t a r t i n g D e p a r t u r e s I n T h i s H o u r ;
while ( numStartingDeparturesRemainder >= 1 ) {
numStartingDeparturesRemainder −−;
i n t eventMinPastHour = ( i n t ) ( ( 1 −
numStartingDeparturesRemainder /
n u m S t a r t i n g D e p a r t u r e s I n T h i s H o u r ) ∗ 6 0 ) ; // s h o u l d be no
more t h a n 6 0 ;
// now g e n e r a t e d e p a r t u r e
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” s t a r t i n g T u r n ”
// turnType
,−1 // actuaArrInMin
, aggregatedOneHourOneCarrierTurns . getHourOfDay ( )
∗60 + eventMinPastHour // actDepInMin
,−1 // gateOccTimeInMin
));
}
114
}
return t u r n l i s t ;
79
}
81
public L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns> l i s t I t e r a t o r ( ) {
return aggregatedOneHourOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
}
83
85
public void add ( AggregatedOneHourOneCarrierTurns
aggregatedOneHourOneCarrierTurns ) {
// a c h e c k s h o u l d be done b e f o r e h a n d t o make s u r e t h a t
carrierIATACodes match
i f ( ! aggregatedOneHourOneCarrierTurns . getCarrierIATACode ( ) . e q u a l s (
carrierIATACode ) ) {
System . e r r . p r i n t l n ( ” E r r o r i n ”
+ t h i s . g e t C l a s s ( ) . getName ( )
+ ” ! carrierIATACodes do not match . ” ) ;
System . e x i t ( −1) ;
}
aggregatedOneHourOneCarrierTurnsArray . add (
aggregatedOneHourOneCarrierTurns ) ;
}
87
89
91
93
95
public S t r i n g getCarrierIATACode ( ) {
return carrierIATACode ;
}
97
99
public void setCarrierIATACode ( S t r i n g carrierIATACode ) {
t h i s . carrierIATACode = carrierIATACode ;
}
101
103
105
107
109
111
113
115
117
119 }
@Override
public S t r i n g t o S t r i n g ( ) {
S t r i n g t h i s S t r i n g = ” hourOfDay ” +
” , carrierIATACode ” +
” , numRegularArrivals ” +
” , averageGateOccupancyTimeInMinForRegularArrivals ” +
” , numEndingArrivals ” +
” , numStartingDepartures ” ;
L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnIterator = l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
t h i s S t r i n g += ” \n” + a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . nex t
() ;
}
return t h i s S t r i n g ;
}
src/TurnGenerator/AggregatedOneDayOneCarrierTurns.java
package TurnGenerator ;
2
import j a v a . i o . ∗ ;
4 import j a v a . s q l . ∗ ;
import j a v a . u t i l . ∗ ;
115
6
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
8 import j a v a . u t i l . L i s t I t e r a t o r ;
// #[ r e g e n=yes , i d=DCE. 2A51A4DA−EE03−FD9F−5084−86FC39F8F246 ]
10 import j a v a . u t i l . Scanner ;
// </ e d i t o r −f o l d >
12 public c l a s s AggregatedOneDayTurns {
private A r r a y L i s t <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnsArray ;
14
private A r r a y L i s t <AggregatedOneDayOneCarrierTurns>
aggregatedOneDayOneCarrierTurnsArray ;
16
18
20
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 7 4 9 0 1 7 9C−2E76−E410−EC92−8AB2E0F5D4C8 ]
// </ e d i t o r −f o l d >
public AggregatedOneDayTurns ( ) {
aggregatedOneDayOneCarrierTurnsArray = new A r r a y L i s t <
AggregatedOneDayOneCarrierTurns >() ;
}
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
public AggregatedOneDayTurns ( F i l e f i l e N a m e ) throws IOException {
aggregatedOneHourOneCarrierTurnsArray = new A r r a y L i s t <
AggregatedOneHourOneCarrierTurns >() ;
aggregatedOneDayOneCarrierTurnsArray = new A r r a y L i s t <
AggregatedOneDayOneCarrierTurns >() ;
B u f f e r e d R e a d e r inputStream = null ;
String line ;
Scanner s = null ;
try {
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r ( f i l e N a m e ) ) ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . out . p r i n t l n ( ” E r r o r i n u s i n g c l a s s AggregatedOneDayTurns
! Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
s = new Scanner ( l i n e ) ;
s . u s e D e l i m i t e r ( ” ,\\ s ∗” ) ;
AggregatedOneHourOneCarrierTurns
aggregatedOneHourOneCarrierTurns = new
AggregatedOneHourOneCarrierTurns (
s . nextInt ()
, s . n ext ( )
, s . nextInt ()
, s . nextInt ()
, s . nextInt ()
, s . nextInt ()
);
aggregatedOneHourOneCarrierTurnsArray . add (
aggregatedOneHourOneCarrierTurns ) ;
t h i s . add ( aggregatedOneHourOneCarrierTurns ) ;
}
} finally {
i f ( inputStream != null ) {
inputStream . c l o s e ( ) ;
116
}
}
s . close () ;
52
54
}
56
58
60
62
64
66
public void add ( AggregatedOneHourOneCarrierTurns
aggregatedOneHourOneCarrierTurns ) {
L i s t I t e r a t o r <AggregatedOneDayOneCarrierTurns>
aggregatedOneDayOneCarrierTurnIterator =
aggregatedOneDayOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
AggregatedOneDayOneCarrierTurns aggregatedOneDayOneCarrierTurns =
a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . next ( ) ;
i f ( aggregatedOneDayOneCarrierTurns . getCarrierIATACode ( ) . e q u a l s (
aggregatedOneHourOneCarrierTurns . getCarrierIATACode ( ) ) ) {
aggregatedOneDayOneCarrierTurns . add (
aggregatedOneHourOneCarrierTurns ) ;
return ;
}
}
aggregatedOneDayOneCarrierTurnsArray . add (new
AggregatedOneDayOneCarrierTurns ( aggregatedOneHourOneCarrierTurns ) )
;
}
68
70
72
74
76
78
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. FA2147A7−BDA8−758E−6D91−9E20BC30B817 ]
// </ e d i t o r −f o l d >
public L i s t g e n e r a t e T u r n L i s t ( ) {
L i s t t u r n L i s t = new A r r a y L i s t <Turn >() ;
L i s t I t e r a t o r <AggregatedOneDayOneCarrierTurns>
aggregatedOneDayOneCarrierTurnIterator =
aggregatedOneDayOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
t u r n L i s t . a d d A l l ( a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . next ( ) .
generateTurnList () ) ;
}
return t u r n L i s t ;
}
80
82
84
86
88
90
92
public L i s t g e n e r a t e T u r n L i s t O l d ( ) {
L i s t t u r n L i s t = new A r r a y L i s t <Turn >() ;
L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnIterator =
aggregatedOneHourOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
t u r n L i s t . a d d A l l ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . next ( ) .
generateTurnList () ) ;
}
return t u r n L i s t ;
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. CCEF15CE−B208−DA82−2ABF−1411555 F4529 ]
// </ e d i t o r −f o l d >
public void a d d D i s r u p t i o n ( OneDayDisruption oneDayDisruption ) {
117
94
96
98
100
102
104
106
108
110
112
114
116
118
120
122
124
126
128
130
132
134
136
138
140
}
L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnIterator =
aggregatedOneHourOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . next ( ) . a d d D i s r u p t i o n (
o ne Da y Di s ru ption ) ;
}
public i n t s i z e ( ) {
return aggregatedOneHourOneCarrierTurnsArray . s i z e ( ) ;
}
public L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns> l i s t I t e r a t o r ( ) {
return aggregatedOneHourOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
}
public L i s t I t e r a t o r <AggregatedOneDayOneCarrierTurns> l i s t I t e r a t o r B y C a r r i e r
() {
return aggregatedOneDayOneCarrierTurnsArray . l i s t I t e r a t o r ( ) ;
}
@Override
public S t r i n g t o S t r i n g ( ) {
S t r i n g t h i s S t r i n g = new S t r i n g ( ) ;
L i s t I t e r a t o r <AggregatedOneDayOneCarrierTurns>
aggregatedOneDayOneCarrierTurnIterator = l i s t I t e r a t o r B y C a r r i e r ( ) ;
while ( a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
t h i s S t r i n g += ” \n” + a g g r e g a t e d O n e D a y O n e C a r r i e r T u r n I t e r a t o r . next ( )
;
}
return t h i s S t r i n g ;
}
public S t r i n g t o S t r i n g O l d ( ) {
S t r i n g t h i s S t r i n g = ” hourOfDay ” +
” , carrierIATACode ” +
” , numRegularArrivals ” +
” , averageGateOccupancyTimeInMinForRegularArrivals ” +
” , numEndingArrivals ” +
” , numStartingDepartures ” ;
L i s t I t e r a t o r <AggregatedOneHourOneCarrierTurns>
aggregatedOneHourOneCarrierTurnIterator = l i s t I t e r a t o r ( ) ;
while ( a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . hasNext ( ) ) {
t h i s S t r i n g += ” \n” + a g g r e g a t e d O n e H o u r O n e C a r r i e r T u r n I t e r a t o r . nex t
() ;
}
return t h i s S t r i n g ;
}
public void t o F i l e ( F i l e f i l e N a m e ) throws IOException {
P r i n t W r i t e r outputStream = null ;
try {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( f i l e N a m e ) ) ;
outputStream . p r i n t l n ( t o S t r i n g ( ) ) ;
} finally {
118
142
144
146
}
}
}
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
src/TurnGenerator/AggregatedOneDayTurns.java
1 package TurnGenerator ;
3 import j a v a . u t i l . ∗ ;
5 // <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 9E11FDDD−A243−C1DE−2F41−1062BCC13E9D ]
7 // </ e d i t o r −f o l d >
public c l a s s AggregatedOneHourOneCarrierTurns {
9
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
11
// #[ r e g e n=yes , i d=DCE. 8 7 7 8FBA5−A18E−351A−1AC0−F2E33C069013 ]
// </ e d i t o r −f o l d >
13
private i n t hourOfDay ;
15
17
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. A10EAE86−77A9−37E7−8EE3−715FC2CA8B5E ]
// </ e d i t o r −f o l d >
private S t r i n g carrierIATACode ;
19
21
23
25
27
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. C226CC78−B139−1222−E5DF−8E888B731E9D ]
// </ e d i t o r −f o l d >
private i n t n u m R e g u l a r A r r i v a l s ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. A7CA86FD−7EA7−F3A5−5104−5851BB1C235F ]
// </ e d i t o r −f o l d >
private i n t averageGateOccupancyTimeInMinForRegularArrivals ;
29
31
33
35
37
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 0 CD4551D−8116−B2E8−7B72−E79ED252C667 ]
// </ e d i t o r −f o l d >
private i n t numEndingArrivals ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. EEFC6FB3−3557−AFE2−C1D1−459F7B1718F8 ]
// </ e d i t o r −f o l d >
private i n t n u m S t a r t i n g D e p a r t u r e s ;
39
41
43
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 4 9 3 9C2AD−ABDC−7501−F9E9−6E3C484AD091 ]
// </ e d i t o r −f o l d >
public AggregatedOneHourOneCarrierTurns ( ) {
}
45
119
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
public AggregatedOneHourOneCarrierTurns ( in t hourOfDay , S t r i n g
carrierIATACode , i n t numR egula rA rrivals , i n t
averageGateOccupancyTimeInMinForRegularArrivals , in t numEndingArrivals
, int numStartingDepartures ) {
t h i s . hourOfDay = hourOfDay ;
t h i s . carrierIATACode = carrierIATACode ;
this . numRegularArrivals = numRegularArrivals ;
t h i s . averageGateOccupancyTimeInMinForRegularArrivals =
averageGateOccupancyTimeInMinForRegularArrivals ;
t h i s . numEndingArrivals = numEndingArrivals ;
this . numStartingDepartures = numStartingDepartures ;
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 1 ECBD177−FC2D−420E−862E−AB70344B4AE7 ]
// </ e d i t o r −f o l d >
public L i s t g e n e r a t e T u r n L i s t ( ) {
L i s t <Turn> t u r n l i s t = new A r r a y L i s t <Turn >() ;
// c o n s t r u c t r e g u l a r t u r n s
i f ( g e t N u m R e g u l a r A r r i v a l s ( ) != 0 ) {
i n t i n t e r A r r i v a l T i m e = 60/ g e t N u m R e g u l a r A r r i v a l s ( ) ;
f o r ( i n t i =1; i <=g e t N u m R e g u l a r A r r i v a l s ( ) ; i ++) {
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” r e g u l a r T u r n ” //
turnType
, getHourOfDay ( ) ∗60 + i ∗ i n t e r A r r i v a l T i m e //
actuaArrInMin
,−1 // actDepInMin
, getAverageGateOccupancyTimeInMinForRegularArrivals ( )
// gateOccTimeInMin
));
}
}
// c o n s t r u c t e n d i n g t u r n s
i f ( getNumEndingArrivals ( ) != 0 ) {
i n t i n t e r A r r i v a l T i m e = 60/ getNumEndingArrivals ( ) ;
f o r ( i n t i =1; i <=getNumEndingArrivals ( ) ; i ++) {
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” endingTurn ” //
turnType
, getHourOfDay ( ) ∗60 + i ∗ i n t e r A r r i v a l T i m e //
actuaArrInMin
,−1 // actDepInMin
,−1 // gateOccTimeInMin
));
}
}
// c o n s t r u c t s t a r t i n g t u r n s
i f ( g e t N u m S t a r t i n g D e p a r t u r e s ( ) != 0 ) {
i n t i n t e r D e p a r t u r e T i m e = 60/ g e t N u m S t a r t i n g D e p a r t u r e s ( ) ;
f o r ( i n t i =1; i <=g e t N u m S t a r t i n g D e p a r t u r e s ( ) ; i ++) {
t u r n l i s t . add (new Turn ( getCarrierIATACode ( ) , ” s t a r t i n g T u r n ” //
turnType
,−1 // actuaArrInMin
, getHourOfDay ( ) ∗60 + i ∗ i n t e r D e p a r t u r e T i m e //
actDepInMin
,−1 // gateOccTimeInMin
));
120
}
}
return t u r n l i s t ;
91
93
}
95
97
99
101
103
105
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. FC796D8C−2919−D540−C755−5240A81EFAB7 ]
// </ e d i t o r −f o l d >
public void a d d D i s r u p t i o n ( OneDayDisruption oneDayDisruption ) {
L i s t I t e r a t o r <O n e H o u r C a r r i e r D i s r u p t i o n > d i s r u p t i o n L i s t I t e r a t o r =
one D ay D is ru p ti on . g e t O n e H o u r C a r r i e r D i s r u p t i o n L i s t ( ) . l i s t I t e r a t o r ( ) ;
while ( d i s r u p t i o n L i s t I t e r a t o r . hasNext ( ) ) {
i f ( a d d O n e H o u r C a r r i e r D i s r u p t i o n ( d i s r u p t i o n L i s t I t e r a t o r . next ( ) ) ) {
break ; // o n l y one d i s r u p t i o n may a p p l y
}
}
}
107
109
111
113
115 //
117
119
121
123
125
127
129
131
133
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE.75700115 −BA85−CF16−CD86−139CD48FF709 ]
// </ e d i t o r −f o l d >
public boolean a d d O n e H o u r C a r r i e r D i s r u p t i o n ( O n e H o u r C a r r i e r D i s r u p t i o n
oneHourCarrierDisruption ) {
i f ( o n e H o u r C a r r i e r D i s r u p t i o n . g e t D i s r u p t i o n S t a r t i n g H o u r ( )<= t h i s .
getHourOfDay ( )
&& t h i s . getHourOfDay ( ) < o n e H o u r C a r r i e r D i s r u p t i o n .
getDisruptionEndingHour ( )
&& t h i s . getCarrierIATACode ( ) . e q u a l s ( o n e H o u r C a r r i e r D i s r u p t i o n .
getDisruptedCarrierIATACode ( ) ) ) {
add d i s r u p t i o n s
i f ( oneHourCarrierDisruption .
getFractionOfRegularTurnsConvertedToEndingTurns ( ) > 1 | |
oneHourCarrierDisruption .
getFractionOfRegularTurnsConvertedToEndingTurns ( ) < 0 ) {
System . out . p r i n t l n ( ” E r r o r i n AggregatedOneHourOneCarrierTurns .
addOneHourCarrierDisruption ( ) ! ” ) ;
System . out . p r i n t l n ( ” U n r e a s o n a b l e f r a c t i o n o f c o n v e r s i o n ! ” ) ;
System . e x i t ( −1) ;
}
i n t numOfRegularTurnsConvertedToEndingTurns = ( in t ) ( t h i s .
numRegularArrivals ∗ oneHourCarrierDisruption .
getFractionOfRegularTurnsConvertedToEndingTurns ( ) ) ;
t h i s . n u m R e g u l a r A r r i v a l s −= numOfRegularTurnsConvertedToEndingTurns
;
t h i s . numEndingArrivals += numOfRegularTurnsConvertedToEndingTurns ;
t h i s . averageGateOccupancyTimeInMinForRegularArrivals ∗=
o n e H o u r C a r r i e r D i s r u p t i o n . getDisruptedGateOccupancyTimeRatio ( ) ;
return true ; // t h i s d i s r u p t i o n a p p l i e s
} else {
return f a l s e ;
}
}
@Override
public S t r i n g t o S t r i n g ( ) {
return getHourOfDay ( )
121
+
+
+
+
+
135
137
” ,”
” ,”
” ,”
” ,”
” ,”
+
+
+
+
+
getCarrierIATACode ( )
getNumRegularArrivals ( )
getAverageGateOccupancyTimeInMinForRegularArrivals ( )
getNumEndingArrivals ( )
getNumStartingDepartures ( ) ;
139
}
141
public i n t getHourOfDay ( ) {
return hourOfDay ;
}
143
public S t r i n g getCarrierIATACode ( ) {
return carrierIATACode ;
}
145
147
public i n t g e t N u m R e g u l a r A r r i v a l s ( ) {
return n u m R e g u l a r A r r i v a l s ;
}
149
151
public i n t getAverageGateOccupancyTimeInMinForRegularArrivals ( ) {
return averageGateOccupancyTimeInMinForRegularArrivals ;
}
153
155
public i n t getNumEndingArrivals ( ) {
return numEndingArrivals ;
}
157
159
public i n t g e t N u m S t a r t i n g D e p a r t u r e s ( ) {
return n u m S t a r t i n g D e p a r t u r e s ;
}
161
163
165 }
src/TurnGenerator/AggregatedOneHourOneCarrierTurns.java
package TurnGenerator ;
2
import j a v a . i o . ∗ ;
4 import j a v a . u t i l . ∗ ;
6 // <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 1DE34DED−2AAE−FC57−ABA8−9AD89F844EC6 ]
8 // </ e d i t o r −f o l d >
public c l a s s OneDayDisruption {
10
private A r r a y L i s t <O n e H o u r C a r r i e r D i s r u p t i o n >
aggregatedOneHourCarrierDisruptionArray ;
12
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
14
// #[ r e g e n=yes , i d=DCE. 8 3E50ABE−3590−9CF3−07FB−510B50A8C333 ]
// </ e d i t o r −f o l d >
16
public OneDayDisruption ( ) {
a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y = new A r r a y L i s t <
O n e H o u r C a r r i e r D i s r u p t i o n >() ;
18
}
122
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
public OneDayDisruption ( F i l e f i l e N a m e ) throws IOException {
a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y = new A r r a y L i s t <
O n e H o u r C a r r i e r D i s r u p t i o n >() ;
B u f f e r e d R e a d e r inputStream = null ;
String line ;
Scanner s = null ;
try {
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r ( f i l e N a m e ) ) ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . out . p r i n t l n ( ” E r r o r i n u s i n g c l a s s OneDayDisruption !
Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
s = new Scanner ( l i n e ) ;
s . u s e D e l i m i t e r ( ” ,\\ s ∗” ) ;
a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y . add (new
OneHourCarrierDisruption (
s . nextInt ()
, s . nextInt ()
, s . next ( )
, s . nextInt ()
, s . nextDouble ( )
, s . nextDouble ( )
, s . nextDouble ( )
));
}
} finally {
i f ( inputStream != null ) {
inputStream . c l o s e ( ) ;
}
}
s . close () ;
}
public boolean add ( O n e H o u r C a r r i e r D i s r u p t i o n o n e H o u r C a r r i e r D i s r u p t i o n ) {
return a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y . add (
oneHourCarrierDisruption ) ;
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. D9F16AB8−D69B−4C61−2689−52D7BFF172FA ]
// </ e d i t o r −f o l d >
public L i s t g e t O n e H o u r C a r r i e r D i s r u p t i o n L i s t ( ) {
return a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y ;
}
62
64
public L i s t I t e r a t o r <O n e H o u r C a r r i e r D i s r u p t i o n > l i s t I t e r a t o r ( ) {
return a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y . l i s t I t e r a t o r ( ) ;
}
66
68
70
@Override
public S t r i n g t o S t r i n g ( ) {
String objectString = ” disruptionStartingHour ” +
” , disruptionEndingHour ” +
123
” , disruptedCarrierIATACode ” +
” , disruptedCeilingOfRegularArrivalHourlyCount ” +
” , disruptedGateOccupancyTimeRatio ” +
” , disruptedRegularArrivalCancellationRate ” +
” , disruptedEndingArrivalCancellationRate ” ;
ListIterator iter = l i s t I t e r a t o r () ;
while ( i t e r . hasNext ( ) ) {
o b j e c t S t r i n g += ” \n” + i t e r . next ( ) ;
}
return o b j e c t S t r i n g ;
72
74
76
78
80
}
82
84
86 }
public i n t s i z e ( ) {
return a g g r e g a t e d O n e H o u r C a r r i e r D i s r u p t i o n A r r a y . s i z e ( ) ;
}
src/TurnGenerator/OneDayDisruption.java
1 package TurnGenerator ;
3 import j a v a . i o . ∗ ;
import j a v a . u t i l . ∗ ;
5
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
7 // #[ r e g e n=yes , i d=DCE. 5 5 4 5 FC58−FD76−C4E4−7BF4−847D6227919C ]
// </ e d i t o r −f o l d >
9 public c l a s s OneDayTurns {
11
private A r r a y L i s t <Turn> turnArray ;
13
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 0 5 9CC1DE−C2EF−4DD0−3A1A−A2DA05F9CB08 ]
// </ e d i t o r −f o l d >
public OneDayTurns ( ) {
}
15
17
19
21
23
25
27
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. EF4084EF−2975−2A82−B560−0E827B22FAAD ]
// </ e d i t o r −f o l d >
public OneDayTurns ( AggregatedOneDayTurns aggregatedOneDayTurns ) {
turnArray = new A r r a y L i s t <Turn >() ;
L i s t I t e r a t o r <Turn> t u r n I t e r a t o r = aggregatedOneDayTurns .
generateTurnList () . l i s t I t e r a t o r () ;
while ( t u r n I t e r a t o r . hasNext ( ) ) {
turnArray . add ( t u r n I t e r a t o r . next ( ) ) ;
}
}
29
31
public i n t s i z e ( ) {
return turnArray . s i z e ( ) ;
}
33
35
public L i s t I t e r a t o r <Turn> l i s t I t e r a t o r ( ) {
return turnArray . l i s t I t e r a t o r ( ) ;
}
124
37
@Override
public S t r i n g t o S t r i n g ( ) {
S t r i n g o b j e c t S t r i n g = ” carrierIATACode ” +
” , turnType ” +
” , actuaArrInMin ” +
” , actDepInMin ” +
” , gateOccTimeInMin ” ;
ListIterator iter = l i s t I t e r a t o r () ;
while ( i t e r . hasNext ( ) ) {
o b j e c t S t r i n g += ” \n” + i t e r . next ( ) ;
}
return o b j e c t S t r i n g ;
}
39
41
43
45
47
49
51
53
55
57
59
61
63 }
public void t o F i l e ( F i l e f i l e N a m e ) throws IOException {
P r i n t W r i t e r outputStream = null ;
try {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( f i l e N a m e ) ) ;
outputStream . p r i n t l n ( t o S t r i n g ( ) ) ;
} finally {
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
}
src/TurnGenerator/OneDayTurns.java
package TurnGenerator ;
2
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
4 // #[ r e g e n=yes , i d=DCE. 7 8 8 FC758−E21D−4C7B−DE74−6A3282DB5E8C ]
// </ e d i t o r −f o l d >
6 public c l a s s O n e H o u r C a r r i e r D i s r u p t i o n {
8
10
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 5 5 F797F9−684C−40C0−2967−258AD5449771 ]
// </ e d i t o r −f o l d >
private i n t d i s r u p t i o n S t a r t i n g H o u r ;
12
14
16
18
20
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. D121DEA9−90B9−BA87−A382−71F0D347A3A1 ]
// </ e d i t o r −f o l d >
private i n t d i s r u p t i o n E n d i n g H o u r ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 7 C748FDF−2803−65AA−CDAC−1D95835A4B10 ]
// </ e d i t o r −f o l d >
private S t r i n g disruptedCarrierIATACode ;
22
24
26
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. CAE72C35−6F98−8260−B9EC−6865A11BB866 ]
// </ e d i t o r −f o l d >
private double f r a c t i o n O f R e g u l a r T u r n s C o n v e r t e d T o E n d i n g T u r n s ;
125
28
30
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 9 D0044F5−7F77−68D6−82FF−2AFE64E17404 ]
// </ e d i t o r −f o l d >
private double disruptedGateOccupancyTimeRatio ;
32
34
36
38
40
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. C8761637 −6122−3FA7−2543−57740A709AAC ]
// </ e d i t o r −f o l d >
private double d i s r u p t e d R e g u l a r A r r i v a l C a n c e l l a t i o n R a t e ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 5 BE1A3C4−9E17−B145−810F−51B646896534 ]
// </ e d i t o r −f o l d >
private double d i s r u p t e d E n d i n g A r r i v a l C a n c e l l a t i o n R a t e ;
42
44
46
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 5FEB7AC0−C739−76E4−D64A−948AB7102B3D ]
// </ e d i t o r −f o l d >
public O n e H o u r C a r r i e r D i s r u p t i o n ( ) {
}
48
50
52
54
56
58
60
62
public O n e H o u r C a r r i e r D i s r u p t i o n ( i n t d i s r u p t i o n S t a r t i n g H o u r
, int disruptionEndingHour
, S t r i n g disruptedCarrierIATACode
, double f r a c t i o n O f R e g u l a r T u r n s C o n v e r t e d T o E n d i n g T u r n s
, double disruptedGateOccupancyTimeRatio
, double d i s r u p t e d R e g u l a r A r r i v a l C a n c e l l a t i o n R a t e
, double d i s r u p t e d E n d i n g A r r i v a l C a n c e l l a t i o n R a t e ) {
this . disruptionStartingHour = disruptionStartingHour ;
this . disruptionEndingHour = disruptionEndingHour ;
t h i s . disruptedCarrierIATACode = disruptedCarrierIATACode ;
this . fractionOfRegularTurnsConvertedToEndingTurns =
fractionOfRegularTurnsConvertedToEndingTurns ;
t h i s . disruptedGateOccupancyTimeRatio = disruptedGateOccupancyTimeRatio
;
this . disruptedRegularArrivalCancellationRate =
disruptedRegularArrivalCancellationRate ;
this . disruptedEndingArrivalCancellationRate =
disruptedEndingArrivalCancellationRate ;
}
64
66
68
70
72
74
76
78
@Override
public S t r i n g t o S t r i n g ( ) {
return d i s r u p t i o n S t a r t i n g H o u r
+ ” , ” + getDisruptionEndingHour ( )
+ ” , ” + getDisruptedCarrierIATACode ( )
+ ” , ” + getFractionOfRegularTurnsConvertedToEndingTurns ( )
+ ” , ” + getDisruptedGateOccupancyTimeRatio ( )
+ ” ,” + getDisruptedRegularArrivalCancellationRate ()
+ ” ,” + getDisruptedEndingArrivalCancellationRate () ;
}
public i n t g e t D i s r u p t i o n S t a r t i n g H o u r ( ) {
return d i s r u p t i o n S t a r t i n g H o u r ;
}
126
80
82
84
86
88
90
92
94
96
98
100
102
104
106
108
110
112
114
116
118
120
122
124
126
128
public void s e t D i s r u p t i o n S t a r t i n g H o u r ( in t d i s r u p t i o n S t a r t i n g H o u r ) {
this . disruptionStartingHour = disruptionStartingHour ;
}
public i n t g e t D i s r u p t i o n E n d i n g H o u r ( ) {
return d i s r u p t i o n E n d i n g H o u r ;
}
public void s e t D i s r u p t i o n E n d i n g H o u r ( i n t d i s r u p t i o n E n d i n g H o u r ) {
this . disruptionEndingHour = disruptionEndingHour ;
}
public S t r i n g getDisruptedCarrierIATACode ( ) {
return disruptedCarrierIATACode ;
}
public void se t D i s ru p t e dCa rr ier IA T ACode ( S t r i n g disruptedCarrierIATACode ) {
t h i s . disruptedCarrierIATACode = disruptedCarrierIATACode ;
}
public double getDisruptedGateOccupancyTimeRatio ( ) {
return disruptedGateOccupancyTimeRatio ;
}
public void setDisruptedGateOccupancyTimeRatio ( double
disruptedGateOccupancyTimeRatio ) {
t h i s . disruptedGateOccupancyTimeRatio = disruptedGateOccupancyTimeRatio
;
}
public double g e t D i s r u p t e d R e g u l a r A r r i v a l C a n c e l l a t i o n R a t e ( ) {
return d i s r u p t e d R e g u l a r A r r i v a l C a n c e l l a t i o n R a t e ;
}
public void s e t D i s r u p t e d R e g u l a r A r r i v a l C a n c e l l a t i o n R a t e ( double
disruptedRegularArrivalCancellationRate ) {
this . disruptedRegularArrivalCancellationRate =
disruptedRegularArrivalCancellationRate ;
}
public double g e t D i s r u p t e d E n d i n g A r r i v a l C a n c e l l a t i o n R a t e ( ) {
return d i s r u p t e d E n d i n g A r r i v a l C a n c e l l a t i o n R a t e ;
}
public void s e t D i s r u p t e d E n d i n g A r r i v a l C a n c e l l a t i o n R a t e ( double
disruptedEndingArrivalCancellationRate ) {
this . disruptedEndingArrivalCancellationRate =
disruptedEndingArrivalCancellationRate ;
}
/∗ ∗
∗ @return t h e f r a c t i o n O f R e g u l a r T u r n s C o n v e r t e d T o E n d i n g T u r n s
∗/
public double getFractionOfRegularTurnsConvertedToEndingTurns ( ) {
return f r a c t i o n O f R e g u l a r T u r n s C o n v e r t e d T o E n d i n g T u r n s ;
127
}
130
132
134
136
/∗ ∗
∗ @param f r a c t i o n O f R e g u l a r T u r n s C o n v e r t e d T o E n d i n g T u r n s t h e
fractionOfRegularTurnsConvertedToEndingTurns to s e t
∗/
public void se tF r a ct i on O f Reg ula r Turn sConvertedToEndingTurns ( double
fractionOfRegularTurnsConvertedToEndingTurns ) {
this . fractionOfRegularTurnsConvertedToEndingTurns =
fractionOfRegularTurnsConvertedToEndingTurns ;
}
138 }
src/TurnGenerator/OneHourCarrierDisruption.java
1 package TurnGenerator ;
3 // <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 6 A4FB8A9−DAB7−6D6E−0F28−A8C8691E8897 ]
5 // </ e d i t o r −f o l d >
public c l a s s Turn {
7
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
9
// #[ r e g e n=yes , i d=DCE. 3 B3AC2A0−B10F−30CD−D47F−9BDBFC56B9C6 ]
// </ e d i t o r −f o l d >
11
private S t r i n g carrierIATACode ;
13
15
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE.79835683 −B2A6−5A60−6976−197DEC98E6B7 ]
// </ e d i t o r −f o l d >
private S t r i n g turnType ;
17
19
21
23
25
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 9 FE13CBF−09F8−D096−0CDE−28D7A6188E70 ]
// </ e d i t o r −f o l d >
private i n t actuaArrInMin ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. D8028937−02DE−4369−2743−4308797B8051 ]
// </ e d i t o r −f o l d >
private i n t actDepInMin ;
27
29
31
33
35
37
39
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. ED214BA8−8A68−D8A5−6182−B5F02939F0D0 ]
// </ e d i t o r −f o l d >
private i n t gateOccTimeInMin ;
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , i d=DCE. 6 1 9 2 0 9 1F−2454−2277−F954 −80449F5CE32E ]
// </ e d i t o r −f o l d >
public Turn ( ) {
}
public Turn ( S t r i n g carrierIATACode
, S t r i n g turnType
128
41
, i n t actuaArrInMin
, i n t actDepInMin
, i n t gateOccTimeInMin ) {
t h i s . carrierIATACode = carrierIATACode ;
t h i s . turnType = turnType ;
t h i s . actuaArrInMin = actuaArrInMin ;
t h i s . actDepInMin = actDepInMin ;
t h i s . gateOccTimeInMin = gateOccTimeInMin ;
43
45
47
49
}
51
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE.12795900 −2D35−7E5D−0A3A−63D43A76E84F ]
// </ e d i t o r −f o l d >
public i n t getActDepInMin ( ) {
return 0 ;
}
53
55
57
59
61
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. 8 FA737A1−318E−CEF9−536E−1685F9758F5A ]
// </ e d i t o r −f o l d >
public void setActDepInMin ( i n t v a l ) {
}
63
65
67
69
71
73
75
77
79
81
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. 5 2 5 9 0 7EA−B764−E5EE−E53A−069F3CECAB73 ]
// </ e d i t o r −f o l d >
public i n t getActuaArrInMin ( ) {
return 0 ;
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. BA926895−EC0F−F286−30AC−09546F7BDBAA]
// </ e d i t o r −f o l d >
public void setActuaArrInMin ( in t v a l ) {
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. E558B18C−D0BC−3C70−C548−6A38A560F31B ]
// </ e d i t o r −f o l d >
public S t r i n g getCarrierIATACode ( ) {
return null ;
}
83
85
87
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. 7 DDE16A5−9895−D492−0EBF−C9BFA98660B4 ]
// </ e d i t o r −f o l d >
public void setCarrierIATACode ( S t r i n g v a l ) {
}
89
91
93
95
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. 6 0 D79FD3−80FD−5014−48C5−57D21C04B7A8 ]
// </ e d i t o r −f o l d >
public i n t getGateOccTimeInMin ( ) {
return 0 ;
}
129
97
99
101
103
105
107
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. A99246CE−90C4−432E−8067−C7098588F07F ]
// </ e d i t o r −f o l d >
public void setGateOccTimeInMin ( i n t v a l ) {
}
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. 0 A302812 −824A−154E−9F72−F74BCE0CB21C ]
// </ e d i t o r −f o l d >
public S t r i n g getTurnType ( ) {
return null ;
}
109
111
113
// <e d i t o r −f o l d d e f a u l t s t a t e =” c o l l a p s e d ” d e s c=” UML Marker ”>
// #[ r e g e n=yes , regenBody=yes , i d=DCE. ADAC3992−C20D−4A9D−37FC−11161F31F501 ]
// </ e d i t o r −f o l d >
public void setTurnType ( S t r i n g v a l ) {
}
115
117
119
121
123
@Override
public S t r i n g t o S t r i n g ( ) {
return carrierIATACode
+ ” , ” + turnType
+ ” , ” + actuaArrInMin
+ ” , ” + actDepInMin
+ ” , ” + gateOccTimeInMin ;
}
125 }
src/TurnGenerator/Turn.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
2
6 package g a t e a s s i g n m e n t s i m u l a t i o n ;
8 import j a v a . u t i l . c o n c u r r e n t . TimeUnit ;
import p s i m j a v a . Squeue ;
10
/∗ ∗
12 ∗
∗ @author J e f f r e y
14 ∗/
public c l a s s A i r p l a n e extends p s i m j a v a . P r o c e s s {
16
private Turn i t s T u r n ;
18
public A i r p l a n e (
20
S t r i n g pname ,
Turn i t s T u r n ) {
22
super ( pname ) ;
this . setItsTurn ( itsTurn ) ;
24
itsTurn . s e t I t s A i r p l a n e ( this ) ;
130
26
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” c r e a t e d a t : ” + g e t c l o c k ( ) ) ;
}
28
}
30
public void Main body ( ) {
i f ( get name ( ) . c o n t a i n s ( ” k i l l e r ” ) ) {
Gate g a t e = i t s T u r n . g e t A s s i g n e d G a t e ( ) ; // g e t t h e a s s i g n e d g a t e
i f ( ! gate . i d l e () ) {
itsTurn . enterPenaltyBox ( ) ;
d ea c ti v at e ( this ) ;
itsTurn . exitPenaltyBox () ;
}
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” j o i n s ” + g a t e . getGateQueue ( ) . get name ( ) +
” at ” + g e t c l o c k ( ) ) ;
}
g a t e . getGateQueue ( ) . i n t o ( t h i s ) ; // p u t t h i s k i l l e r p l a n e i n t o t h e
queue
/∗
∗ I f g a t e i s i d l e , r e a c t i v a t e g a t e , and t h e n d e a c t i v e a i r c r a f t .
∗ Ot h e r w i s e , d e a c t i v a t e a i r c r a f t d i r e c t l y , and l e t g a t e have
continuous
∗ s e r v i c e in the f uture .
∗/
i f ( gate . i d l e () ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” a c t i v a t i n g ” + g a t e . get name ( ) +
” a t time ” + g e t c l o c k ( ) ) ;
}
r e a c t i v a t e ( gate ) ;
Thread . y i e l d ( ) ;
}
d e a c t i v a t e ( t h i s ) ; // s u s p e n d i t s e l f u n t i l t h e g a t e becomes
available
t e r m i n a t e ( ) ; // t e r m i n a t i n g t h e k i l l e r a i r p l a n e
return ;
}
i t s T u r n . touchDownRunway ( ) ;
delay (( i n t ) GateAssignmentSimulation . g e t S i m u l a t i o n G r a n u l a r i t y () .
c o n v e r t ( 6 , TimeUnit .MINUTES) ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” r e q u e s t s e r v i c e from ” + i t s T u r n . g e t A s s i g n e d G a t e ( ) .
get name ( ) +
” at ” + g e t c l o c k ( ) ) ;
}
GateAssignmentSimulation . gateChangeHeuristic ( itsTurn ) ;
Gate g a t e = i t s T u r n . g e t A s s i g n e d G a t e ( ) ;
Squeue gateQueue = g a t e . getGateQueue ( ) ;
// d e l a y ( 0 ) ; // remove t h i s l i n e t o l e t a i r c r a f t b l o c k g a t e i m m e d i a t e l y
i f ( g a t e . i d l e ( ) == f a l s e | | gateQueue . empty ( ) == f a l s e | | ! g a t e .
isCarrierAccepted ( itsTurn . getCarrier () ) ) {
itsTurn . enterPenaltyBox ( ) ;
32
34
36
38
40
42
44
46
48
50
52
54
56 //
58
60
62
//
64
66
68
70
72
74
131
dea c ti v at e ( this ) ;
itsTurn . exitPenaltyBox () ;
} // t o be changed so t h a t a i r c r a f t g o e s t o p e n a l t y box i f g a t e i s
unavailable
g a t e = i t s T u r n . g e t A s s i g n e d G a t e ( ) ; // need t o be r e r e a d s i n c e g a t e can
be r e a s s i g n e d i n p e n a l t y box
gateQueue = g a t e . getGateQueue ( ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” j o i n s ” + gateQueue . get name ( ) +
” at ” + g e t c l o c k ( ) ) ;
}
gateQueue . i n t o ( t h i s ) ;
itsTurn . startTaxiingToFinalGate () ;
/∗
∗ I f g a t e i s i d l e , r e a c t i v a t e g a t e , and t h e n d e a c t i v e a i r c r a f t .
∗ Ot h e r w i s e , d e a c t i v a t e a i r c r a f t d i r e c t l y , and l e t g a t e have
continuous
∗ s e r v i c e in the f u t u r e .
∗/
i f ( g a t e . i d l e ( ) == true ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” a c t i v a t i n g ” + g a t e . get name ( ) +
” a t time ” + g e t c l o c k ( ) ) ;
}
r e a c t i v a t e ( gate ) ;
Thread . y i e l d ( ) ;
} else {
System . out . p r i n t l n ( ” E r r o r a t ”
+ t h i s . g e t C l a s s ( ) . getName ( )
+ ”.”
+ new E x c e p t i o n ( ) . g e t S t a c k T r a c e ( ) [ 0 ] . getMethodName ( )
+ ”! ”
+ g a t e . get name ( ) + ” i s not i d l e ! ” ) ;
} // i f n o t i d l e , a i r p l a n e s h o u l d go t o p e n a l t y box . Could be s e q u e n c e
e r r o r o f two t h r e a d s a t same time
de ac t iva t e ( this ) ;
/∗
∗ Here , g a t e r e a c t i v a t e s t h i s a i r c r a f t and l e t s t h e a i r c r a f t d e p a r t
and
∗ terminates i t s e l f .
∗/
i t s T u r n . departFromGate ( ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( ) +
” terminates at ” + g e t c l o c k ( ) ) ;
}
terminate () ;
76
78
80
82
84
86
88
90
92
94
96
98
100
102
104
106
108
110
112
114
116
118
}
120
122
public Turn g e t I t s T u r n ( ) {
return i t s T u r n ;
}
124
public void s e t I t s T u r n ( Turn i t s T u r n ) {
132
126
this . itsTurn = itsTurn ;
}
128
}
src/gateassignmentsimulation/Airplane.java
1 /∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
3 ∗ and open t h e t e m p l a t e i n t h e e d i t o r .
∗/
5
package g a t e a s s i g n m e n t s i m u l a t i o n ;
7
import j a v a . u t i l . I t e r a t o r ;
9 import j a v a . u t i l . c o n c u r r e n t . TimeUnit ;
11 /∗ ∗
∗
13 ∗ @author J e f f r e y
∗/
15 public c l a s s A r r i v a l s extends p s i m j a v a . P r o c e s s {
public A r r i v a l s ( S t r i n g name ) {
super ( name ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” c r e a t e d a t ” + g e t c l o c k ( ) ) ;
}
}
17
19
21
23
25
27
29
31
33
35 //
//
37 //
39
//
41 //
public void Main body ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” A r r i v a l s s t a r i n g main body a t ” + g e t c l o c k ( ) )
;
}
Turn [ ] turnArray = G a t e A s s i g n m e n t S i m u l a t i o n . turnArray ;
i n t numberOfTurns = turnArray . l e n g t h ;
f o r ( i n t i n d e x =0; index<numberOfTurns ; i n d e x++) {
Turn t h i s T u r n = turnArray [ i n d e x ] ;
t h i s T u r n . setWheelsOnScheduledTime ( t h i s T u r n . getGateInScheduledTime
()
− t h i s T u r n . g e t T a x i In S c he d u le d T im e ( ) ) ;
t h i s T u r n . setWheelsOnActualTime ( t h i s T u r n . getWheelsOnScheduledTime ( )
// uncomment t h e f o l l o w i n g f o r s t o c h a s t i c a r r i v a l time
+ ( i n t ) ( GateAssignmentSimulation .
getSimulationGranularity () .
c o n v e r t ( Math . round ( G a t e A s s i g n m e n t S i m u l a t i o n .
wheelOnDeviation . nextDouble () )
, TimeUnit .MINUTES) )
);
t h i s T u r n . setGroundActualTime ( t h i s T u r n . getGroundActualTime ( ) //
uncomment t h e f o l l o w i n g f o r s t o c h a s t i c s e r v i c e time
+ ( i n t ) ( GateAssignmentSimulation .
getSimulationGranularity () .
c o n v e r t ( Math . round ( G a t e A s s i g n m e n t S i m u l a t i o n .
groundDeviation . nextDouble () )
133
//
, TimeUnit .SECONDS) )
43
);
}
G a t e A s s i g n m e n t S i m u l a t i o n . turnArraySortByWheelOnActualTime ( ) ;
i n t previousWheelOnActualTime = 0 ;
i n t interWheelOnTime ;
f o r ( i n t i n d e x =0; index<numberOfTurns ; i n d e x++) {
Turn t h i s T u r n = turnArray [ i n d e x ] ;
interWheelOnTime = t h i s T u r n . getWheelsOnActualTime ( )−
previousWheelOnActualTime ;
previousWheelOnActualTime = t h i s T u r n . getWheelsOnActualTime ( ) ;
d e l a y ( interWheelOnTime ) ; // w a i t b e f o r e c r e a t i n g n e x t a i r p l a n e
A i r p l a n e a i r p l a n e O b j = new A i r p l a n e (
” a i r p l a n e ” + t h i s T u r n . getTurnIndex ( ) ,
thisTurn
);
airplaneObj . start () ;
Thread . y i e l d ( ) ;
}
/∗ Here , a l l a r r i v a l s have been c r e a t e d . ∗/
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” A r r i v a l s t e r m i n a t e s ” ) ;
}
// g e n e r a t e t h e k i l l e r t h r e a d f o r a l l t h e s e g a t e s
I t e r a t o r <Gate> i t = G a t e A s s i g n m e n t S i m u l a t i o n . g a t e A r r a y . i t e r a t o r ( ) ;
while ( i t . hasNext ( ) ) {
Gate g a t e = i t . next ( ) ;
A i r p l a n e k i l l e r a i r = new A i r p l a n e ( ” k i l l e r O f ”+g a t e . get name ( ) , new
Turn ( g a t e ) ) ;
k i l l e r a i r . start () ;
}
45
47
49
51
53
55
57
59
61
63
65
67
69
71
terminate () ;
73
}
75 }
src/gateassignmentsimulation/Arrivals.java
1 /∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
3 ∗ and open t h e t e m p l a t e i n t h e e d i t o r .
∗/
5
package g a t e a s s i g n m e n t s i m u l a t i o n ;
7
import j a v a . u t i l . Arrays ;
9 import j a v a . u t i l . L i s t ;
import p s i m j a v a . ∗ ;
11
/∗ ∗
13 ∗
∗ @author J e f f r e y
15 ∗/
public c l a s s Gate extends p s i m j a v a . P r o c e s s {
17
134
19
private A i r p l a n e c u r r e n t A i r p l a n e A t G a t e ;
private Squeue gateQueue ;
private L i s t <S t r i n g > e l i g i b l e C a r r i e r L i s t ;
21
23
25
27
29
31
33
35
37
39
public Gate ( S t r i n g name ) {
super ( name ) ;
c u r r e n t A i r p l a n e A t G a t e = null ;
gateQueue = new Squeue ( get name ( ) + ” Queue ” ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” c r e a t e d a t : ” + g e t c l o c k ( ) ) ;
}
}
public Gate ( S t r i n g name , S t r i n g e l i g i b l e C a r r i e r L i s t S t r i n g ) {
super ( name ) ;
String [ ] eligibleCarrierArray = e li g i bl e Ca r r ie r L is t St r i ng . s p l i t (” ,”) ;
e l i g i b l e C a r r i e r L i s t = Arrays . a s L i s t ( e l i g i b l e C a r r i e r A r r a y ) ;
c u r r e n t A i r p l a n e A t G a t e = null ;
gateQueue = new Squeue ( get name ( ) + ” Queue ” ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” c r e a t e d a t : ” + g e t c l o c k ( ) ) ;
}
}
41
43
45
47
49
51
53
55
57
59
61
63
65
public void Main body ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” s t a r t i n g main body a t ” +
get clock () ) ;
}
while ( true ) {
i f ( gateQueue==null ) {
System . out . p r i n t l n ( ” E r r o r a t Gate . Main body ( ) ! ” +
” Queue i s n u l l a t : ” + g e t c l o c k ( ) ) ;
} // f o r debug purpose , p r o b a b l y can be removed
/∗
∗ I f gateQueue i s empty , d e a c t i v a t e i t s e l f and
∗ w a i t t o be r e a c t i v a t e d t o s e r v i c e n e x t a i r p l a n e .
∗ Ot h e r w i s e , s e r v i c e n e x t a i r p l a n e d i r e c t l y .
∗/
i f ( gateQueue . empty ( ) ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” g o e s i d l e a t ” +
get clock () ) ;
}
G a t e A s s i g n m e n t S i m u l a t i o n . penaltyBox . r e c e i v e I d l e S i g n a l ( t h i s ) ;
d ea c ti v at e ( this ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( get name ( )+ ” r e a c t i v a t e d a t ” +
get clock () ) ;
}
}
i f ( s e r v i c e A i r p l a n e ( ) ==−1) break ;
67
69
}
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
135
System . out . p r i n t l n ( t h i s . get name ( ) + ” t e r m i n a t e s a t ” + g e t c l o c k
() ) ;
}
terminate () ;
71
73
}
75
public i n t s e r v i c e A i r p l a n e ( ) {
i f ( gateQueue . empty ( ) != true ) {
c u r r e n t A i r p l a n e A t G a t e = ( A i r p l a n e ) gateQueue . out ( ) ;
i f ( c u r r e n t A i r p l a n e A t G a t e . get name ( ) . c o n t a i n s ( ” k i l l e r ” ) ) {
r e a c t i v a t e ( currentAirplaneAtGate ) ;
terminate () ;
return −1;
}
Turn i t s T u r n = c u r r e n t A i r p l a n e A t G a t e . g e t I t s T u r n ( ) ;
i f ( t h i s != i t s T u r n . g e t A s s i g n e d G a t e ( ) ) {
System . out . p r i n t l n (
” E r r o r i n Gate . s e r v i c e A i r p l a n e ( ) ! ”
+ c u r r e n t A i r p l a n e A t G a t e . get name ( )
+ ” was f i n a l l y a s s i g n e d t o ”
+ i t s T u r n . g e t A s s i g n e d G a t e ( ) . get name ( )
+ ” , but a r r i v e s a t ” + t h i s . get name ( )
);
}
itsTurn . arriveAtGate ( ) ;
d e l a y ( i t s T u r n . getGroundActualTime ( ) ) ; // ground time
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( c u r r e n t A i r p l a n e A t G a t e . get name ( ) +
” door c l o s e d a t g a t e ” + get name ( ) +
” at ” + g e t c l o c k ( ) ) ;
}
r e a c t i v a t e ( c u r r e n t A i r p l a n e A t G a t e ) ; // l e t a i r p l a n e t e r m i n a t e
itself
} else {
System . out . p r i n t l n ( ” E r r o r a t Gate . s e r v i c e A i r p l a n e ( ) ! ” +
” Tried to s e r v i c e a i r p l a n e without a i r p l a n e . ” ) ;
return 0 ;
}
return 0 ;
77
79
81
83
85
87
89
91
93
95
97
99
101
103
105
107
}
109
111
public Squeue getGateQueue ( ) {
return gateQueue ;
}
113
115
public void setGateQueue ( Squeue gateQueue ) {
t h i s . gateQueue = gateQueue ;
}
117
119
121
123
public boolean i s C a r r i e r A c c e p t e d ( S t r i n g c a r r i e r N a m e ) {
i f ( e l i g i b l e C a r r i e r L i s t . contains ( carrierName ) ) {
return true ;
} else
return f a l s e ;
}
136
}
src/gateassignmentsimulation/Gate.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
2
6 package g a t e a s s i g n m e n t s i m u l a t i o n ;
8 import
import
10 import
import
12 import
import
14 import
import
16 import
import
18 import
java . i o . BufferedReader ;
java . io . F i l e ;
j a v a . i o . FileNotFoundException ;
java . io . FileReader ;
j a v a . i o . IOException ;
java . s q l . ∗ ;
java . u t i l . I t e r a t o r ;
java . u t i l . LinkedList ;
j a v a . u t i l . Scanner ;
psimjava . StaticSync ;
psimjava . Process ;
20 /∗ ∗
∗
22 ∗ @author J e f f r e y
∗/
24 public c l a s s GateArray implements I t e r a b l e {
private L i n k e d L i s t <Gate> g a t e A r r a y ;
26
private L i n k e d L i s t <GateCapacityofOneCarrierGroup > G a t e C a p a c i t y B y C a r r i e r ;
28
30
32
34
36
38
40
42
44
46
48
50
public GateArray ( S t r i n g f i l e N a m e ) {
g a t e A r r a y = new L i n k e d L i s t <Gate >() ;
B u f f e r e d R e a d e r inputStream = null ;
String line ;
Scanner s = null ;
try {
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r (new F i l e ( f i l e N a m e )
));
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . out . p r i n t l n ( ” E r r o r i n c l a s s GateArray ! Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
s = new Scanner ( l i n e ) ;
S t r i n g gateName = s . next ( ) ;
S t r i n g c a r r i e r I A T A = s . next ( ) ;
g a t e A r r a y . add (new Gate ( gateName , c a r r i e r I A T A ) ) ;
}
inputStream . c l o s e ( ) ;
} catch ( FileNotFoundException e ) {
System . out . p r i n t l n ( ” E r r o r : ” + e . t o S t r i n g ( ) + e . getMessa ge ( ) ) ;
// i n p u t S t r e a m . c l o s e ( ) ;
System . e x i t ( −1) ;
} catch ( IOException e ) {
137
System . out . p r i n t l n ( ” E r r o r : ” + e . t o S t r i n g ( ) + e . getMessa ge ( ) ) ;
// i n p u t S t r e a m . c l o s e ( ) ;
System . e x i t ( −1) ;
}finally {
i f ( i n p u t S t r e a m != n u l l ) {
System . o u t . p r i n t l n (” C l o s i n g B u f f e r e d R e a d e r ”) ;
// i n p u t S t r e a m . c l o s e ( ) ;
} else {
System . o u t . p r i n t l n (” B u f f e r e d R e a d e r n o t open ”) ;
}
52
54 //
//
56 //
//
58 //
//
60 //
62
64
}
}
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” g a t e A r r a y ”+ ” c r e a t e d a t : ” + S t a t i c S y n c .
get clock () ) ;
}
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
public GateArray ( S t r i n g g a t e C a p a c i t y F i l e N a m e
, double ne w Gat eCap acityF ra ction
, double g a t e A v a i l a b l e F r a c t i o n
, double commonGateFraction
, S t r i n g commonGateCarriers
, String impactedCarriers
, double o f f T e r m i n a l O v e r n i g h t P a r k i n g C a p a c i t y A s O f G a t e C a p a c i t y
) {
G a t e C a p a c i t y B y C a r r i e r = new L i n k e d L i s t <GateCapacityofOneCarrierGroup
>() ;
B u f f e r e d R e a d e r inputStream = null ;
String line ;
Scanner s = null ;
try {
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r (new F i l e (
gateCapacityFileName ) ) ) ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . out . p r i n t l n ( ” E r r o r i n c l a s s GateArray ! Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
s = new Scanner ( l i n e ) ;
S t r i n g c a r r i e r I A T A = s . next ( ) ;
i n t numGates = s . n e x t I n t ( ) ;
G a t e C a p a c i t y B y C a r r i e r . add (new GateCapacityofOneCarrierGroup (
c a r r i e r I A T A , numGates ) ) ;
}
inputStream . c l o s e ( ) ;
} catch ( FileNotFoundException e ) {
System . out . p r i n t l n ( ” E r r o r : ” + e . t o S t r i n g ( ) + e . getMessa ge ( ) ) ;
// i n p u t S t r e a m . c l o s e ( ) ;
System . e x i t ( 0 ) ;
} catch ( IOException e ) {
System . out . p r i n t l n ( ” E r r o r : ” + e . t o S t r i n g ( ) + e . getMessa ge ( ) ) ;
// i n p u t S t r e a m . c l o s e ( ) ;
System . e x i t ( 0 ) ;
}
138
// modify g a t e c a p a c i t y f o r i m p a c t e d c a r r i e r s
String [ ] impactedCarriersArray = impactedCarriers . s p l i t ( ” , ” ) ;
f o r ( S t r i n g item : i m p a c t e d C a r r i e r s A r r a y ) {
f o r ( GateCapacityofOneCarrierGroup aGroup : G a t e C a p a c i t y B y C a r r i e r )
{
i f ( aGroup . g e t E l i g i b l e C a r r i e r L i s t ( ) . c o n t a i n s ( item ) ) { //
assuming no common g a t e s a t i n i t i a l i z a t i o n , so a c t u a l l y
equal
aGroup . setNu mOf f Ter minalOvernightParkings ( ( in t ) Math . round (
aGroup . getNumGates ( ) ∗
offTerminalOvernightParkingCapacityAsOfGateCapacity ) ) ;
aGroup . setNumGates ( ( i n t ) Math . round ( aGroup . getNumGates ( ) ∗
((1+ new GateC ap acityFraction ) ∗ g a t e A v a i l a b l e F r a c t i o n )
));
}
}
}
102
104
106
108
110
112
// change some g a t e s f o r common u s e
S t r i n g [ ] commonGateCarrierGroupArray = commonGateCarriers . s p l i t ( ” ; ” ) ;
f o r ( S t r i n g item : commonGateCarrierGroupArray ) {
i n t numCommonGates = 0 ; // assuming no common g a t e s a t
initialization
S t r i n g [ ] commonGateCarrierArray = item . s p l i t ( ” , ” ) ;
f o r ( S t r i n g subItem : commonGateCarrierArray ) {
f o r ( GateCapacityofOneCarrierGroup aGroup :
GateCapacityByCarrier ) {
i f ( aGroup . g e t E l i g i b l e C a r r i e r L i s t ( ) . s i z e ( ) == 1 // f i n d
that carrier
&& aGroup . g e t E l i g i b l e C a r r i e r L i s t ( ) . c o n t a i n s (
subItem ) ) {
i n t numGatesTurnedToCommon = ( i n t ) Math . round ( aGroup .
getNumGates ( ) ∗ commonGateFraction ) ;
aGroup . setNumGates ( aGroup . getNumGates ( ) −
numGatesTurnedToCommon ) ; // d e c r e a s e number o f
gates
numCommonGates += numGatesTurnedToCommon ; // add t o
numGates ;
break ;
}
}
}
G a t e C a p a c i t y B y C a r r i e r . add (new GateCapacityofOneCarrierGroup ( item ,
numCommonGates ) ) ; // g e n e r a t e common g a t e s
}
g a t e A r r a y = new L i n k e d L i s t <Gate >() ;
f o r ( GateCapacityofOneCarrierGroup aGroup : G a t e C a p a c i t y B y C a r r i e r ) {
f o r ( i n t i = 1 ; i <= aGroup . getNumGates ( ) ; i ++) {
g a t e A r r a y . add (new Gate ( aGroup . g e t E l i g i b l e C a r r i e r L i s t S t r i n g ( )+i
, aGroup . g e t E l i g i b l e C a r r i e r L i s t S t r i n g ( ) ) ) ;
}
}
114
116
118
120
122
124
126
128
130
132
134
136
138
}
140
public Gate g e t G a t e O b j e c t ( S t r i n g gateName ) {
139
142
144
146
148
150
152
154
156
f o r ( Gate item : g a t e A r r a y ) {
i f ( item . get name ( ) . e q u a l s ( gateName ) ) {
return item ;
}
}
/∗ The f o l l o w i n g code i s t o p r i n t o u t t h e c l a s s name
and t h e method name f o r t h e e a s e o f l o c a t i n g a problem
f o r d e b u g g i n g p u r p o s e s ∗/
System . out . p r i n t l n ( ” E r r o r a t ”
+ t h i s . g e t C l a s s ( ) . getName ( )
+ ”.”
+ new E x c e p t i o n ( ) . g e t S t a c k T r a c e ( ) [ 0 ] . getMethodName ( )
+ ”! ”
+ gateName + ” not found ! ” ) ;
System . e x i t ( −1) ;
return null ;
} // c o n v e r t Gate S t r i n g t o Gate o b j e c t
158
160
public boolean i s G a t e C a r r i e r C o m p a t i b l e ( S t r i n g gateName , S t r i n g c a r r i e r N a m e
){
return g e t G a t e O b j e c t ( gateName ) . i s C a r r i e r A c c e p t e d ( c a r r i e r N a m e ) ;
}
162
164
public I t e r a t o r <Gate> i t e r a t o r ( ) {
return g a t e A r r a y . i t e r a t o r ( ) ;
}
166
168
170
public void s t a r t A l l G a t e s ( ) {
f o r ( Gate item : g a t e A r r a y ) {
item . s t a r t ( ) ; // s t a r t g a t e t o s e r v i c e a i r p l a n e once s i m u l a t i o n
starts
}
}
172
174
176
public void s t o p A l l G a t e s ( P r o c e s s g a t e A s s i g n m e n t S i m u l a t i o n ) {
f o r ( Gate item : g a t e A r r a y ) {
g a t e A s s i g n m e n t S i m u l a t i o n . r e a c t i v a t e ( item ) ;
}
}
178
180
public void c l e a r A l l ( ) {
g a t e A r r a y = null ;
}
182
184
public i n t s i z e ( ) {
return g a t e A r r a y . s i z e ( ) ;
}
186
188
190
192
194
@Override
public S t r i n g t o S t r i n g ( ) {
S t r i n g t o S t r i n g = ”” ;
f o r ( Gate item : g a t e A r r a y ) {
t o S t r i n g += item ;
}
return t o S t r i n g ;
}
140
196
198
200
202
204
206
208
public Gate g e t F i r s t ( ) {
return g a t e A r r a y . g e t F i r s t ( ) ;
}
public i n t g e t L e n g t h ( ) {
return t h i s . g a t e A r r a y . s i z e ( ) ;
}
/∗ ∗
∗ @return t h e G a t e C a p a c i t y B y C a r r i e r
∗/
public L i n k e d L i s t <GateCapacityofOneCarrierGroup > g e t G a t e C a p a c i t y B y C a r r i e r
() {
return G a t e C a p a c i t y B y C a r r i e r ;
}
210
212
214
216
/∗ ∗
∗ @param G a t e C a p a c i t y B y C a r r i e r t h e G a t e C a p a c i t y B y C a r r i e r t o s e t
∗/
public void s e t G a t e C a p a c i t y B y C a r r i e r ( L i n k e d L i s t <
GateCapacityofOneCarrierGroup > G a t e C a p a c i t y B y C a r r i e r ) {
this . GateCapacityByCarrier = GateCapacityByCarrier ;
}
218 }
src/gateassignmentsimulation/GateArray.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
2
6 package g a t e a s s i g n m e n t s i m u l a t i o n ;
8 import TurnGenerator . ∗ ;
import j a v a . i o . ∗ ;
10 import j a v a . s q l . ∗ ;
import j a v a . u t i l . ∗ ;
12 import p s i m j a v a . ∗ ;
import j a v a . u t i l . c o n c u r r e n t . TimeUnit ;
14 import umontreal . i r o . l e c u y e r . p r o b d i s t . P o i s s o n D i s t ;
import umontreal . i r o . l e c u y e r . r andv ar . ∗ ;
16 import umontreal . i r o . l e c u y e r . rng . ∗ ;
import umontreal . i r o . l e c u y e r . rng . RandomStream ;
18
/∗ ∗
20 ∗
∗ @author J e f f r e y
22 ∗/
public c l a s s G a t e A s s i g n m e n t S i m u l a t i o n extends p s i m j a v a . P r o c e s s {
24
public s t a t i c A r r i v a l s g e n A i r p l a n e ;
26
public s t a t i c G a t e A s s i g n m e n t S i m u l a t i o n g a t e A s s i g n m e n t S i m u l a t i o n ;
public s t a t i c S i m u l a t i o n sim ; // n e c e s s a r y t o s t a r t t h e s i m u l a t i o n
141
28
30
32
34
36
38
40
42
44
46
48
50
public s t a t i c GateArray g a t e A r r a y ;
public s t a t i c Turn [ ] turnArray ;
private s t a t i c TimeUnit s i m u l a t i o n G r a n u l a r i t y = TimeUnit .MINUTES; // i t
makes s i m u l a t i o n G r a n u l a r i t y f l e x i b l e
private s t a t i c i n t s i m u l a t i o n P e r i o d I n H o u r s = 4 8 ;
public s t a t i c i n t s i m u l a t i o n P e r i o d I n G r a n u l a r i t y
= ( int ) g e t S i m u l a t i o n G r a n u l a r i t y ( ) . convert ( simulationPeriodInHours
, TimeUnit .HOURS) ;
private s t a t i c i n t n u m b e r O f R e p l i c a t i o n s = 1 ;
public s t a t i c RandomStream uniformStreamForWheelOnDev = new MRG32k3a ( ) ;
public s t a t i c RandomVariateGen wheelOnDeviation = new NormalGen (
uniformStreamForWheelOnDev , 0 , 1 8 ) ; // i n minu tes
public s t a t i c RandomStream uniformStreamForGroundDev = new MRG32k3a ( ) ;
public s t a t i c RandomVariateGen g r o u n d D e v i a t i o n = new WeibullGen (
uniformStreamForGroundDev , 1 . 6 , ( double ) 1 / 8 0 8 , −724.432) ; // i n
s e c o n d s : mean 0 ; s t d : 4 5 3 . 5 8
public s t a t i c P r i n t W r i t e r t r a c e f ;
public s t a t i c P r i n t W r i t e r s t a t f ;
public s t a t i c boolean messageFla g = f a l s e ;
public s t a t i c R e p l i c a t i o n S t a t i s t i c s [ ] s t a t i s t i c s A r r a y = new
R e p l i c a t i o n S t a t i s t i c s [ numberOfReplications ] ;
public s t a t i c S t r i n g turnArrayOutput ;
public s t a t i c i n t maxWaitForOriginal = ( in t ) g e t S i m u l a t i o n G r a n u l a r i t y ( ) .
c o n v e r t ( 0 , TimeUnit .MINUTES) ;
public s t a t i c i n t maxWaitForAlternative = ( in t ) g e t S i m u l a t i o n G r a n u l a r i t y ( )
. c o n v e r t ( 0 , TimeUnit .MINUTES) ;
public s t a t i c PenaltyBox penaltyBox ;
public s t a t i c i n t g a t e H o l d T h r e s h o l d = ( in t ) g e t S i m u l a t i o n G r a n u l a r i t y ( ) .
c o n v e r t ( 0 , TimeUnit .MINUTES) ;
public s t a t i c f i n a l S t r i n g s i m u l a t e d A i r p o r t C o d e = ”CANON” ;
public s t a t i c f i n a l S t r i n g experimentMode = ”DOMN” ; //DOMN: d i s r u p t i o n one
−f a c t o r −at−a−time , m i t i g a t i o n none ; DOMF: d i s r u p t i o n one−f a c t o r −at−a−
time , m i t i g a t i o n f a c t o r i a l .
52
54
public s t a t i c TimeUnit g e t S i m u l a t i o n G r a n u l a r i t y ( ) {
return s i m u l a t i o n G r a n u l a r i t y ;
}
56
58
public G a t e A s s i g n m e n t S i m u l a t i o n ( S t r i n g pname ) {
super ( pname ) ;
}
60
62
64
66
68
70
72
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
S t r i n g t r a c e f i l e = ” gateAssignmentT . t x t ” ;
S t r i n g s t a t f i l e = ” gateAssignmentS . t x t ” ;
sim = new S i m u l a t i o n ( ” Gate Assignment S i m u l a t i o n ” ) ;
Simulation . s e t t r a c e f ( t r a c e f i l e ) ;
Simulation . s e t s t a t f ( s t a t f i l e ) ;
t r a c e f = Simulation . g e t t r a c e f i l e () ;
s t a t f = Simulation . g e t s t a t f i l e () ;
Simulation . s e t r e p o r t f ( false ) ;
g a t e A s s i g n m e n t S i m u l a t i o n = new Ga t e A s s i g n m e n t S i m u l a t i o n ( ” Gate
Assignment S i m u l a t i o n ” ) ;
gateAssignmentSimulation . s t a r t () ;
}
142
74
76
78
80
82
84
86
88
90
92
94
96
98
//
100
102
//
104
106
108
110
112
public void Main body ( ) {
System . out . p r i n t l n ( ” S i m u l a t i o n g r a n u l a r i t y i s i n ” +
getSimulationGranularity () . toString () ) ;
System . out . p r i n t l n ( ” S i m u l a t i o n p e r i o d i s ” + s i m u l a t i o n P e r i o d I n H o u r s +
” hours . ” ) ;
System . out . p r i n t l n ( ” S i m u l a t i o n p e r i o d i s ” +
simulationPeriodInGranularity
+ ” ” + getSimulationGranularity () + ” . ”) ;
LineNumberReader inputStream = null ;
P r i n t W r i t e r outputStream = null ;
try {
String line ;
Scanner s = null ;
inputStream = new LineNumberReader (new B u f f e r e d R e a d e r (new
F i l e R e a d e r (new F i l e ( ” i n p u t P a r a m e t e r s ” + s i m u l a t e d A i r p o r t C o d e
+ ” ” + experimentMode + ” . t x t ” ) ) ) ) ;
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( ” e x p a l l s t a t i s t i c s .
txt ”) ) ;
char s e p a r a t o r = ’ \ t ’ ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . out . p r i n t l n ( ” E r r o r i n c l a s s ” + t h i s . g e t C l a s s ( ) . getName
() ) ;
System . e x i t ( −1) ;
}
outputStream . p r i n t l n ( l i n e ) ;
l i n e = inputStream . r e a d L i n e ( ) ; // s k i p l i n e 1 ( t h e 2nd l i n e )
outputStream . p r i n t l n ( l i n e
+ s e p a r a t o r + ”numRep”
+ s e p a r a t o r + ” sumDailyDelay ”
+ s e p a r a t o r + ” sumSquareDailyDelay ”
);
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
i f a f i l e has n l i n e s , l i n e number s t a r t s from l i n e 0 and
ends a t l i n e n ( t h e ( n+1) t h l i n e )
i n t experimentNo = inputStream . getLineNumber ( ) −2;
System . out . p r i n t l n ( ” Experiment number : ” + experimentNo ) ;
s = new Scanner ( l i n e ) ;
s . u s e D e l i m i t e r ( ” , \ \ s ∗”) ; // f o r comma s e p a r a t e d t o k e n s
S t r i n g par7 = s . next ( ) ; // Impacted c a r r i e r ( s )
par7 = par7 . r e p l a c e ( ” \” ” , ” ” ) ;
f i n a l double par1 = s . nextDouble ( ) ; // S t a r t hour
f i n a l double par2 = s . nextDouble ( ) ; // Duration ( number o f
hours )
f i n a l double par3 = s . nextDouble ( ) ; // Average l a n d i n g d e l a y
i n min ; s h i f t e d mean o f l a n d i n g time d e v i a t i o n
f i n a l double par4 = s . nextDouble ( ) ; // Gate s e r v i c e time
extension rate
f i n a l double par5 = s . nextDouble ( ) ; // F r a c t i o n o f r e g u l a r
turns converted to ending turns
f i n a l double par6 = s . nextDouble ( ) ; // U n a v a i l a b l e g a t e
fraction
f i n a l double par9 = s . nextDouble ( ) ; // New g a t e c a p a c i t y
fraction
f i n a l double par10 = s . nextDouble ( ) ; // Common g a t e f r a c t i o n
143
114
116
118
120
122
124
126
128
130
132
134
136
138
140
142
144
146
148
150
f i n a l double par11 = s . nextDouble ( ) ; // F r a c t i o n o f s e l f −
docking gates
f i n a l double par8 = s . nextDouble ( ) ; // Ending t u r n s p a r k e d o f f
−t e r m i n a l as a f r a c t i o n o f g a t e c a p a c i t y
S t r i n g par12 = s . next ( ) ; // Common g a t e c a r r i e r s
par12 = par12 . r e p l a c e ( ” \” ” , ” ” ) ;
f o r ( i n t r e p l i c a t i o n N o = 1 ; r e p l i c a t i o n N o <=
n u m b e r O f R e p l i c a t i o n s ; r e p l i c a t i o n N o++ ) {
t r a c e f . p r i n t l n ( ” R e p l i c a t i o n number ” + r e p l i c a t i o n N o ) ;
System . out . p r i n t l n ( ” R e p l i c a t i o n number ” + r e p l i c a t i o n N o ) ;
g a t e A r r a y = new GateArray ( ” g a t e C a p a c i t y ” +
s i m u l a t e d A i r p o r t C o d e + ” . t x t ” , par9 ,1.0 −(1.0 − par11 ) ∗
par6 , par10 , par12 , par7 , par8 ) ;
//
turn input preparation
F i l e t u r n I n p u t F i l e = new F i l e ( ” b a s e l i n e A g g r e g a t e d T u r n s ” +
simulatedAirportCode + ” . csv ” ) ;
// s t e p 1 . c h e c k e x i s t a n c e o f t u r n I n p u t F i l e
i f ( ! turnInputFile . exists () ) {
System . out . p r i n t l n ( ” E r r o r ! The b a s e l i n e A g g r e g a t e d T u r n s
i n p u t f i l e d o e s not e x i s t . ” ) ;
System . e x i t ( −1) ;
}
// s t e p 2 . c o n s t r u c t AggregatedOneDayTurns u s i n g
turnInputFile
AggregatedOneDayTurns aggregatedOneDayTurns = new
AggregatedOneDayTurns ( t u r n I n p u t F i l e ) ;
System . out . p r i n t l n ( ” s i z e o f aggregatedOneDayTurns : ” +
aggregatedOneDayTurns . s i z e ( ) ) ;
// 3 . c o n s t r u c t oneDayTurns u s i n g aggregatedOneDayTurns
OneDayTurns oneDayTurns = new OneDayTurns (
aggregatedOneDayTurns ) ;
System . out . p r i n t l n ( ” s i z e o f oneDayTurns : ” + oneDayTurns .
size () ) ;
// 4 . o u t p u t oneDayTurns t o a f i l e
OneDayDisruption oneDayDisruption = new OneDayDisruption ( )
;
S t r i n g [ ] i m p a c t e d C a r r i e r A r r a y = par7 . s p l i t ( ” , ” ) ;
f o r ( S t r i n g item : i m p a c t e d C a r r i e r A r r a y ) {
on eDa yDisr uption . add (new O n e H o u r C a r r i e r D i s r u p t i o n (
( in t ) par1 ,
( in t ) ( par1 + par2 ) ,
item ,
par5 ,
par4 ,
0,
0) ) ;
}
AggregatedOneDayTurns disruptedAggregatedOneDayTurns =
aggregatedOneDayTurns ;
disruptedAggregatedOneDayTurns . t o F i l e (new F i l e ( ” e x p ” +
experimentNo + ” a g g r e g a t e d O n e D a y T u r n s B e f o r e D i s r u p t i o n
. csv ” ) ) ;
disruptedAggregatedOneDayTurns . a d d D i s r u p t i o n (
on eDayD isruptio n ) ;
144
152
154
156
158
160
162
164
166
//
168
//
disruptedAggregatedOneDayTurns . t o F i l e (new F i l e ( ” e x p ” +
experimentNo + ” a g g r e g a t e d O n e D a y T u r n s A f t e r D i s r u p t i o n .
csv ” ) ) ;
OneDayTurns disruptedOneDayTurns = new OneDayTurns (
disruptedAggregatedOneDayTurns ) ;
disruptedOneDayTurns . t o F i l e (new F i l e ( ” e x p ” + experimentNo
+ ” disruptedOneDayTurns . c s v ” ) ) ;
S t r i n g r e p l i c a t i o n S t a t i s t i c s O u t p u t = ” e x p ” + experimentNo
+ ” r e p l i c a t i o n S t a t i s t i c s O u t p u t . csv ” ;
R e p l i c a t i o n S t a t i s t i c s . printHeader (
replicationStatisticsOutput ) ;
t u r n A r r a y I n i t i a l i z a t i o n (new F i l e ( ” e x p ” + experimentNo + ”
disruptedOneDayTurns . c s v ” ) , par1 , par2 , par3 , par7 ) ;
penaltyBox = new PenaltyBox ( ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” penaltyBox c r e a t e d a t ” +
StaticSync . get clock () ) ;
}
g e n A i r p l a n e = new A r r i v a l s ( ” A r r i v a l s ” ) ;
g e n A i r p l a n e . s t a r t ( ) ; // s t a r t g e n e r a t e a i r p l a n e once
simulation starts
gateArray . s t a r t A l l G a t e s ( ) ;
Thread . y i e l d ( ) ; // n o t u n d e r s t o o d
System . out . p r i n t l n ( ” S i m u l a t i o n s t a r t s a t ” + S t a t i c S y n c .
get clock () ) ;
sim . s t a r t s i m ( s i m u l a t i o n P e r i o d I n G r a n u l a r i t y ) ; // l e t t h e
simulation start
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . m e s s a g e F l a g == t r u e ) {
System . out . p r i n t l n ( ” S i m u l a t i o n ends a t c l o c k : ” +
StaticSync . get clock () ) ;
}
170
172
174
176
178
180
turnArrayOutput = ” e x p ” + experimentNo + ”
turnArrayOutput ” + r e p l i c a t i o n N o + ” . txt ” ;
Turn . p r i n t H e a d e r ( turnArrayOutput ) ;
f o r ( Turn item : turnArray ) {
item . p r i n t T u r n ( turnArrayOutput ) ;
}
s t a t i s t i c s A r r a y [ r e p l i c a t i o n N o −1] = new
ReplicationStatistics () ;
s t a t i s t i c s A r r a y [ replicationNo −1]. c o l l e c t S t a t i s t i c s (
turnArray ) ;
s t a t i s t i c s A r r a y [ replicationNo −1]. p r i n t S t a t i t i c s (
replicationStatisticsOutput , replicationNo ) ;
StaticSync . r e s e t c l o c k () ;
uniformStreamForWheelOnDev . r e s e t N e x t S u b s t r e a m ( ) ;
uniformStreamForGroundDev . r e s e t N e x t S u b s t r e a m ( ) ;
182
184
186
188
}
// w r i t e t h i s e x p e r i m e n t r e s u l t s t o a f i l e
double sumDailyDelay = 0 ;
double sumSquareDailyDelay = 0 ;
f o r ( i n t i = 0 ; i < s t a t i s t i c s A r r a y . l e n g t h ; i ++) {
sumDailyDelay += s t a t i s t i c s A r r a y [ i ] . g e t G a t e H o l d T o t a l ( ) ;
sumSquareDailyDelay += Math . pow ( s t a t i s t i c s A r r a y [ i ] .
getGateHoldTotal ( ) ,2) ;
145
}
outputStream . p r i n t l n ( l i n e
+ separator + st ati sti cs Arr ay . length
+ s e p a r a t o r + sumDailyDelay
+ s e p a r a t o r + sumSquareDailyDelay ) ;
190
192
194
}
i f ( inputStream != null ) {
inputStream . c l o s e ( ) ;
}
} catch ( E x c e p t i o n e ) {
System . out . p r i n t l n ( ” E r r o r : ” + e . t o S t r i n g ( ) + e . getMessa ge ( ) ) ;
System . e x i t ( −1) ;
} finally {
i f ( i n p u t S t r e a m != n u l l ) {
inputStream . c l o s e () ;
} // do n o t know why t h i s b l o c k d o e s n o t p a s s
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
System . e x i t ( 0 ) ;
196
198
200
202
//
204 //
//
206
208
210
}
212
214
216
218
220
222
224
226
228
230
232
234
236
238
240
public s t a t i c void t u r n A r r a y I n i t i a l i z a t i o n ( F i l e fileName , double s t a r t H o u r
, double d u r a t i o n , double averageLandingDelayMin , S t r i n g
i m p a c t e d C a r r i e r s ) throws IOException {
String [ ] impactedCarriersArray = impactedCarriers . s p l i t ( ” , ” ) ;
L i s t <S t r i n g > i m p a c t e d C a r r i e r L i s t ;
i m p a c t e d C a r r i e r L i s t = Arrays . a s L i s t ( i m p a c t e d C a r r i e r s A r r a y ) ;
B u f f e r e d R e a d e r inputStream = null ;
String line ;
Scanner s = null ;
try {
// r e a d f i l e f o r t h e f i r s t time t o c o u n t number o f t u r n s
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r ( f i l e N a m e ) ) ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . e r r . p r i n t l n ( ” E r r o r ! Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
i n t numTurns = 0 ;
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
numTurns++;
}
turnArray = new Turn [ numTurns ] ;
inputStream . c l o s e ( ) ;
// r e a d f i l e f o r t h e s e c o n d time t o r e a d t u r n s
inputStream = new B u f f e r e d R e a d e r (new F i l e R e a d e r ( f i l e N a m e ) ) ;
i f ( ( l i n e = inputStream . r e a d L i n e ( ) ) == null ) { // a l s o s k i p t h e
header l i n e
System . e r r . p r i n t l n ( ” E r r o r ! Empty f i l e ” ) ;
System . e x i t ( −1) ;
}
i n t i n d e x =0;
while ( ( l i n e = inputStream . r e a d L i n e ( ) ) != null ) {
s = new Scanner ( l i n e ) ;
146
242
244
246
248
250
252
254
256
258
260
262
264
266
268
270
272
274
276
278
//
280 //
282
284
286
s . u s e D e l i m i t e r ( ” ,\\ s ∗” ) ;
// r e a d 5 v a l u e s
S t r i n g carrierIATACode = s . next ( ) ;
S t r i n g turnType = s . next ( ) ;
i n t actuaArrInMin = s . n e x t I n t ( ) ;
i n t actDepInMin = s . n e x t I n t ( ) ;
i n t gateOccTimeInMin = s . n e x t I n t ( ) ;
// a d d j u s t 2−3 o f t h e 5 v a l u e s b a s e d on t u r n t y p e
i f ( turnType . e q u a l s ( ” r e g u l a r T u r n ” ) ) {
i f ( actDepInMin !=−1) {
System . e r r . p r i n t l n ( ” E r r o r i n i n p u t f i l e ! actDepInMin
o f r e g u l a r T u r n i s not −1” ) ;
}
i f ( actuaArrInMin >= s t a r t H o u r ∗ 60 && actuaArrInMin < (
s t a r t H o u r + d u r a t i o n ) ∗60 && i m p a c t e d C a r r i e r L i s t .
c o n t a i n s ( carrierIATACode ) ) {
actuaArrInMin+= averageLandingDelayMin ;
}
actDepInMin = actuaArrInMin + gateOccTimeInMin ;
} e l s e i f ( turnType . e q u a l s ( ” endingTurn ” ) ) {
i f ( actDepInMin != −1 | | gateOccTimeInMin != −1) {
System . e r r . p r i n t l n ( ” E r r o r i n i n p u t f i l e ! actDepInMin
o r gateOccTimeInMin o f r e g u l a r T u r n i s not −1” ) ;
}
actDepInMin = 2 7 ∗ 6 0 ;
gateOccTimeInMin = actDepInMin − actuaArrInMin ;
f o r ( GateCapacityofOneCarrierGroup aGroup : g a t e A r r a y .
getGateCapacityByCarrier ( ) ) {
i f ( aGroup . g e t E l i g i b l e C a r r i e r L i s t ( ) . s i z e ( ) == 1
&& aGroup . g e t E l i g i b l e C a r r i e r L i s t ( ) . c o n t a i n s (
carrierIATACode )
&& aGroup . getNumOffTerminalOvernightParkings ( ) >
0) {
gateOccTimeInMin = 3 0 ;
actDepInMin = actuaArrInMin + gateOccTimeInMin ;
aGroup . setN umOffTerminalOvernightParkings ( aGroup .
getNumOffTerminalOvernightParkings ( ) −1) ;
}
}
} e l s e i f ( turnType . e q u a l s ( ” s t a r t i n g T u r n ” ) ) {
i f ( actuaArrInMin != −1) {
System . e r r . p r i n t l n ( ” E r r o r i n i n p u t f i l e ! actuaArrInMin
o f r e g u l a r T u r n i s not −1” ) ;
}
gateOccTimeInMin = 3 0 ; // tow i n
actuaArrInMin = actDepInMin − gateOccTimeInMin ;
actuaArrInMin = 3 ∗ 6 0 ; /// no tow
gateOccTimeInMin = actDepInMin − actuaArrInMin ;
} else {
System . e r r . p r i n t l n ( ” E r r o r i n i n p u t f i l e ! turnType i s not
recognized ”) ;
}
gateOccTimeInMin = actDepInMin − actuaArrInMin ;
// add new e l e m e n t
turnArray [ i n d e x ] = new Turn (
index + 1
147
288
, gateArray . g e t F i r s t ( )
, carrierIATACode
, ”B737”
,111
,222
, ” Origin ”
, ” ViaAirport ”
, ” Dest ”
, actuaArrInMin
,0
, actuaArrInMin
, actuaArrInMin
, actDepInMin
, actDepInMin
);
290
292
294
296
298
300
302
i n d e x ++;
}
} finally {
i f ( inputStream != null ) {
inputStream . c l o s e ( ) ;
}
}
s . close () ;
304
306
308
310
}
312
314
316
318
320
322
324
326
328
330
332
334
/∗
∗ The f o l l o w i n g f u n c t i o n i s c a l l e d b e f o r e c r e a t i n g a i r c r a f t i n c l a s s
Arrivals
∗ so t h a t o l d e r a i r c r a f t i s c r e a t e d e a r l i e r .
∗/
public s t a t i c void turnArraySortByWheelOnActualTime ( ) {
i n t numberOfTurns = turnArray . l e n g t h ;
f o r ( i n t i =0; i <numberOfTurns ; i ++) {
f o r ( i n t j =0; j <numberOfTurns−i −1; j ++)
i f ( turnArray [ j ] . getWheelsOnActualTime ( )>turnArray [ j + 1 ] .
getWheelsOnActualTime ( ) ) {
Turn tempTurn = turnArray [ j ] ;
turnArray [ j ] = turnArray [ j + 1 ] ;
turnArray [ j +1] = tempTurn ;
}
}
}
public s t a t i c void g a t e C h a n g e H e u r i s t i c ( Turn t h i s T u r n ) {
t h i s T u r n . s e t G a t e C h a n g e H e u r i s t i c T i m e ( ( in t ) S t a t i c S y n c . g e t c l o c k ( ) ) ;
i f ( w i l l O r i g i n a l G a t e B e A v a i l a b l e ( t h i s T u r n ) == f a l s e ) {
findAlternativeGate ( thisTurn ) ;
}
}
336
338
340
public s t a t i c boolean w i l l O r i g i n a l G a t e B e A v a i l a b l e ( Turn t h i s T u r n ) {
i f ( ! thisTurn . getAssignedGate ( ) . isCarrierAccepted ( thisTurn . g e t C a r r i e r
() ) ){
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name ( )
148
+ ” ’ s o r i g i n a l gate ”
+ t h i s T u r n . g e t A s s i g n e d G a t e ( ) . get name ( )
+ ” w i l l not be a v a i l a b l e due t o c a r r i e r
i n c o m p a t i b i l i t y , c he ck ed a t ”
+ StaticSync . get clock () ) ;
342
344
}
return f a l s e ;
346
}
f o r ( Turn item : turnArray ) {
i f ( item . g e t A s s i g n e d G a t e ( ) == t h i s T u r n . g e t A s s i g n e d G a t e ( )
&& item != t h i s T u r n // or item . g e t T u r n I n d e x ( ) != t h i s T u r n .
getTurnIndex ()
&& ( item . g e t T u r n S t a t u s ( ) == TurnStatus .INPENALTYBOX
| | item . g e t T u r n S t a t u s ( ) == TurnStatus .
TAXIINGINFROMPENALTYBOXTOGATE
| | ( item . g e t T u r n S t a t u s ( ) == TurnStatus .ATGATE
&& t h i s T u r n . getGateInEstimatedTime ( ) +
maxWaitForOriginal < item .
getGateOutEstimatedTime ( ) ) )
) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name
()
+ ” ’ s o r i g i n a l gate ”
+ t h i s T u r n . g e t A s s i g n e d G a t e ( ) . get name ( )
+ ” w i l l not be a v a i l a b l e , ch e ck ed a t ”
+ StaticSync . get clock () ) ;
}
return f a l s e ;
}
}
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name ( )
+ ” ’ s o r i g i n a l gate ”
+ t h i s T u r n . g e t A s s i g n e d G a t e ( ) . get name ( )
+ ” w i l l be a v a i l a b l e , c he ck e d a t ”
+ StaticSync . get clock () ) ;
}
return true ;
348
350
352
354
356
358
360
362
364
366
368
370
372
374
}
376
public s t a t i c void f i n d A l t e r n a t i v e G a t e ( Turn t h i s T u r n ) {
f o r ( I t e r a t o r <Gate> i t e r = g a t e A r r a y . i t e r a t o r ( ) ; i t e r . hasNext ( ) ; ) {
Gate item = i t e r . next ( ) ;
i f ( item != t h i s T u r n . g e t A s s i g n e d G a t e ( ) ) {
i f ( w i l l A l t e r n a t i v e G a t e B e A v a i l a b l e ( thisTurn , item ) == true ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” Gate change f o r ”
+ t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name ( )
+ ” from ” + t h i s T u r n . g e t A s s i g n e d G a t e ( ) .
get name ( )
+ ” t o ” + item . get name ( )
+ ” at ”
+ StaticSync . get clock () ) ;
}
t h i s T u r n . s e t A s s i g n e d G a t e ( item ) ;
378
380
382
384
386
388
149
390
return ;
}
}
}
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” A l t e r n a t i v e G a t e not found f o r ”
+ t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name ( )
+ ” ( assigned to ” + thisTurn . getAssignedGate ( ) .
get name ( )
+ ” ) at ”
+ StaticSync . get clock () ) ;
}
return ;
392
394
396
398
400
402
}
404
public s t a t i c boolean w i l l A l t e r n a t i v e G a t e B e A v a i l a b l e ( Turn thisTurn , Gate
alternativeGate ) {
i f ( ! alternativeGate . isCarrierAccepted ( thisTurn . g e t C a r r i e r ( ) ) ) {
return f a l s e ;
}
Turn p r e v i o u s T u r n = null ;
Turn nextTurn = null ;
i f ( t h i s T u r n . g e t A s s i g n e d G a t e ( ) == a l t e r n a t i v e G a t e ) {
System . out . p r i n t l n ( ” E r r o r i n G a t e A s s i g n m e n t S i m u l a t i o n ” +
” . w i l l A l t e r n a t i v e G a t e B e A v a i l a b l e ( Turn thisTurn , Gate
alternativeGate ) ! ”
+ a l t e r n a t i v e G a t e . get name ( )
+ ” i s the o r i g i n a l gate of ”
+ t h i s T u r n . g e t I t s A i r p l a n e ( ) . get name ( )
+ ” , not a l t e r n a t i v e g a t e . ” ) ;
System . e x i t ( 1 ) ;
}
f o r ( Turn item : turnArray ) {
i f ( item . g e t A s s i g n e d G a t e ( ) == a l t e r n a t i v e G a t e ) {
i f ( item . g e t T u r n S t a t u s ( ) == TurnStatus .INPENALTYBOX) {
return f a l s e ; // don ’ t a s s i g n t o a g a t e some a i r p l a n e i s
waiting for .
}
i f ( item . getGateInEstimatedTime ( ) < t h i s T u r n .
getGateInEstimatedTime ( ) ) {
i f ( p r e v i o u s T u r n == null | | p r e v i o u s T u r n .
getGateInEstimatedTime ( )
< item . getGateInEstimatedTime ( ) ) {
p r e v i o u s T u r n = item ;
}
} else {
i f ( nextTurn == null | | item . getGateInEstimatedTime ( )
< nextTurn . getGateInEstimatedTime ( ) ) {
nextTurn = item ;
}
}
}
}
i f ( ( p r e v i o u s T u r n == null | | p r e v i o u s T u r n . getGateOutEstimatedTime ( ) <
t h i s T u r n . getGateInEstimatedTime ( ) + maxWaitForAlternative )
406
408
410
412
414
416
418
420
422
424
426
428
430
432
434
436
150
438
440
442
444 }
}
&& ( nextTurn == null | | t h i s T u r n . getGateOutEstimatedTime ( ) <
nextTurn . getGateInEstimatedTime ( ) ) ) {
return true ;
} else {
return f a l s e ;
}
src/gateassignmentsimulation/GateAssignmentSimulation.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
2
6 package g a t e a s s i g n m e n t s i m u l a t i o n ;
8 import j a v a . u t i l . Arrays ;
import j a v a . u t i l . L i s t ;
10
/∗ ∗
12 ∗
∗ @author J i a n f e n g
14 ∗/
public c l a s s GateCapacityofOneCarrierGroup {
16
private S t r i n g e l i g i b l e C a r r i e r L i s t S t r i n g ;
18
private L i s t <S t r i n g > e l i g i b l e C a r r i e r L i s t ;
private i n t numGates ;
20
private i n t numOffTerminalOvernightParkings ;
22
24
26
28
30
32
34
36
38
40
public GateCapacityofOneCarrierGroup ( S t r i n g e l i g i b l e C a r r i e r L i s t S t r i n g ,
i n t numGates ) {
this . e l i g i b l e C a r r i e r L i s t S t r i n g = e l i g i b l e C a r r i e r L i s t S t r i n g ;
String [ ] eligibleCarrierArray = e li g i bl e Ca r r ie r L is t St r i ng . s p l i t (” ,”) ;
e l i g i b l e C a r r i e r L i s t = Arrays . a s L i s t ( e l i g i b l e C a r r i e r A r r a y ) ;
t h i s . numGates = numGates ;
t h i s . numOffTerminalOvernightParkings = 0 ;
}
public GateCapacityofOneCarrierGroup ( S t r i n g e l i g i b l e C a r r i e r L i s t S t r i n g ,
i n t numGates , double
offTerminalOvernightParkingCapacityAsOfGateCapacity ) {
this . e l i g i b l e C a r r i e r L i s t S t r i n g = e l i g i b l e C a r r i e r L i s t S t r i n g ;
String [ ] eligibleCarrierArray = e li g i bl e Ca r r ie r L is t St r i ng . s p l i t (” ,”) ;
e l i g i b l e C a r r i e r L i s t = Arrays . a s L i s t ( e l i g i b l e C a r r i e r A r r a y ) ;
t h i s . numGates = numGates ;
t h i s . numOffTerminalOvernightParkings = ( in t ) Math . round ( numGates ∗
offTerminalOvernightParkingCapacityAsOfGateCapacity ) ;
}
/∗ ∗
∗ @return t h e e l i g i b l e C a r r i e r L i s t
∗/
public L i s t <S t r i n g > g e t E l i g i b l e C a r r i e r L i s t ( ) {
151
42
return e l i g i b l e C a r r i e r L i s t ;
}
44
46
48
50
52
54
56
/∗ ∗
∗ @param e l i g i b l e C a r r i e r L i s t t h e e l i g i b l e C a r r i e r L i s t t o s e t
∗/
public void s e t E l i g i b l e C a r r i e r L i s t ( L i s t <S t r i n g > e l i g i b l e C a r r i e r L i s t ) {
this . e l i g i b l e C a r r i e r L i s t = e l i g i b l e C a r r i e r L i s t ;
}
/∗ ∗
∗ @return t h e numGates
∗/
public i n t getNumGates ( ) {
return numGates ;
}
58
60
62
64
66
68
70
/∗ ∗
∗ @param numGates t h e numGates t o s e t
∗/
public void setNumGates ( i n t numGates ) {
t h i s . numGates = numGates ;
}
/∗ ∗
∗ @return t h e e l i g i b l e C a r r i e r L i s t S t r i n g
∗/
public S t r i n g g e t E l i g i b l e C a r r i e r L i s t S t r i n g ( ) {
return e l i g i b l e C a r r i e r L i s t S t r i n g ;
}
72
74
76
78
80
82
84
/∗ ∗
∗ @param e l i g i b l e C a r r i e r L i s t S t r i n g t h e e l i g i b l e C a r r i e r L i s t S t r i n g t o s e t
∗/
public void s e t E l i g i b l e C a r r i e r L i s t S t r i n g ( S t r i n g e l i g i b l e C a r r i e r L i s t S t r i n g )
{
this . e l i g i b l e C a r r i e r L i s t S t r i n g = e l i g i b l e C a r r i e r L i s t S t r i n g ;
}
/∗ ∗
∗ @return t h e n u m O f f T e r m i n a l O v e r n i g h t P a r k i n g s
∗/
public i n t getNumOffTerminalOvernightParkings ( ) {
return numOffTerminalOvernightParkings ;
}
86
88
90
92
/∗ ∗
∗ @param n u m O f f T e r m i n a l O v e r n i g h t P a r k i n g s t h e
numOffTerminalOvernightParkings to s e t
∗/
public void se tN u mO f f Te rminalOv ern ightParkings ( i n t
numOffTerminalOvernightParkings ) {
t h i s . numOffTerminalOvernightParkings = numOffTerminalOvernightParkings
;
}
152
94 }
src/gateassignmentsimulation/GateCapacityofOneCarrierGroup.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
package g a t e a s s i g n m e n t s i m u l a t i o n ;
6
import j a v a . u t i l . I t e r a t o r ;
8 import j a v a . u t i l . L i n k e d L i s t ;
import p s i m j a v a . S t a t i c S y n c ;
10
/∗ ∗
12 ∗
∗ @author J e f f r e y
14 ∗/
public c l a s s PenaltyBox {
16
private L i n k e d L i s t <A i r p l a n e > a i r p l a n e L i s t = new L i n k e d L i s t ( ) ;
18
public boolean add ( A i r p l a n e a i r p l a n e ) {
20
return a i r p l a n e L i s t . add ( a i r p l a n e ) ;
}
22
public void r e c e i v e I d l e S i g n a l ( Gate g a t e ) {
24
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” penaltyBox r e c e i v e s i d l e s i g n a l from ”
26
+ g a t e . get name ( )
+ ” at ” + StaticSync . g e t c l o c k ( ) ) ;
28
}
I t e r a t o r <A i r p l a n e > i t e r = a i r p l a n e L i s t . i t e r a t o r ( ) ;
30
A i r p l a n e temp ;
while ( i t e r . hasNext ( ) ) {
32
temp = i t e r . ne xt ( ) ;
i f ( temp . get name ( ) . c o n t a i n s ( ” k i l l e r ” ) ) {
34
i f ( temp . g e t I t s T u r n ( ) . g e t A s s i g n e d G a t e ( ) == g a t e ) {
a i r p l a n e L i s t . remove ( temp ) ;
36
g a t e . r e a c t i v a t e ( temp ) ;
return ;
38
} else {
continue ;
40
}
}
42
i f ( ! g a t e . i s C a r r i e r A c c e p t e d ( temp . g e t I t s T u r n ( ) . g e t C a r r i e r ( ) ) ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
44
System . out . p r i n t l n ( temp . get name ( )
+ ” i n p e n a l t y box can not go t o open g a t e ”
46
+ g a t e . get name ( )
+ ” due t o c a r r i e r i n c o m p a t i b i l i t y , ch ec ke d a t
”
48
+ StaticSync . get clock () ) ;
}
50
continue ;
}
2
153
52
//
54
56
58
60
//
62
64 //
66
temp . g e t I t s T u r n ( ) . s e t A s s i g n e d G a t e ( g a t e ) ;
i f ( temp . g e t I t s T u r n ( ) . g e t A s s i g n e d G a t e ( ) == g a t e ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” penaltyBox r e l e a s e s ”
+ temp . get name ( )
+ ” t o ” + g a t e . get name ( )
+ ” at ” + StaticSync . g e t c l o c k ( ) ) ;
}
a i r p l a n e L i s t . remove ( temp ) ;
g a t e . getGateQueue ( ) . i n t o ( temp ) ; // a i r p l a n e w i l l e n t e r t h e
GateQueue by i t s e l f .
g a t e . r e a c t i v a t e ( temp ) ;
return ;
}
}
}
68
70
72 }
public I t e r a t o r <A i r p l a n e > i t e r a t o r ( ) {
return a i r p l a n e L i s t . i t e r a t o r ( ) ;
}
src/gateassignmentsimulation/PenaltyBox.java
/∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
4 ∗/
2
6 package g a t e a s s i g n m e n t s i m u l a t i o n ;
8 import j a v a . i o . F i l e ;
import j a v a . i o . F i l e W r i t e r ;
10 import j a v a . i o . IOException ;
import j a v a . i o . P r i n t W r i t e r ;
12
/∗ ∗
14 ∗
∗ @author J e f f r e y
16 ∗/
public c l a s s R e p l i c a t i o n S t a t i s t i c s {
18
private i n t taxiInOverUnderCount = 0 ;
20
private i n t t a x i I n O v e r U n d e r T o t a l = 0 ;
private double taxiInOverUnderAverage = 0 ;
22
private i n t gateHoldCount = 0 ;
private i n t g a t e H o l d T o t a l = 0 ;
24
private double gateHoldAverage = 0 ;
private i n t gateInOverUnderCount = 0 ;
26
private i n t gateInOverUnderTotal = 0 ;
private double gateInOverUnderAverage = 0 ;
28
private i n t gateOutOverUnderCount = 0 ;
private i n t gateOutOverUnderTotal = 0 ;
30
private double gateOutOverUnderAverage = 0 ;
154
32
34
36
38
40
42
44
46
48
50
52
54
56
public void c o l l e c t S t a t i s t i c s ( Turn [ ] turnArray ) {
f o r ( Turn item : turnArray ) {
taxiInOverUnderCount++;
t a x i I n O v e r U n d e r T o t a l += item . getTaxiInOverUnder ( ) ;
i f ( item . i s G a t e H o l d F l a g ( ) == true ) {
gateHoldCount++;
s e t G a t e H o l d T o t a l ( g e t G a t e H o l d T o t a l ( ) + item . getGateHoldTime ( ) ) ;
}
gateInOverUnderCount++;
gateInOverUnderTotal += item . getGateInOverUnder ( ) ;
gateOutOverUnderCount++;
gateOutOverUnderTotal += item . getGateOutOverUnder ( ) ;
}
i f ( taxiInOverUnderCount != 0 ) {
taxiInOverUnderAverage = ( double ) t a x i I n O v e r U n d e r T o t a l /
taxiInOverUnderCount ;
}
i f ( gateHoldCount != 0 ) {
gateHoldAverage = ( double ) g e t G a t e H o l d T o t a l ( ) / gateHoldCount ;
}
i f ( gateInOverUnderCount != 0 ) {
gateInOverUnderAverage = ( double ) gateInOverUnderTotal /
gateInOverUnderCount ;
}
i f ( gateOutOverUnderCount != 0 ) {
gateOutOverUnderAverage = ( double ) gateOutOverUnderTotal /
gateOutOverUnderCount ;
}
}
58
60
62
64
66
68
70
72
74
76
78
80
82
public s t a t i c void p r i n t H e a d e r ( S t r i n g f i l e N a m e ) throws IOException {
P r i n t W r i t e r outputStream = null ;
try {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( f i l e N a m e ) ) ;
outputStream . p r i n t l n ( ” r e p l i c a t i o n N o ”
+ ” , taxiInOverUnderCount ”
+ ” , taxiInOverUnderTotal ”
+ ” , taxiInOverUnderAverage ”
+ ” , gateHoldCount ”
+ ” , gateHoldTotal ”
+ ” , gateHoldAverage ”
+ ” , gateInOverUnderCount ”
+ ” , gateInOverUnderTotal ”
+ ” , gateInOverUnderAverage ”
+ ” , gateOutOverUnderCount ”
+ ” , gateOutOverUnderTotal ”
+ ” , gateOutOverUnderAverage ”
);
} finally {
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
}
155
84
public void p r i n t S t a t i t i c s ( S t r i n g fileName , in t r e p l i c a t i o n N o ) throws
IOException {
P r i n t W r i t e r outputStream = null ;
try {
i f (new F i l e ( f i l e N a m e ) . e x i s t s ( ) == true ) {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( fileName , true ) )
;
} else {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( fileName , f a l s e )
);
}
outputStream . p r i n t l n ( r e p l i c a t i o n N o
+ ” , ” + taxiInOverUnderCount
+ ” , ” + taxiInOverUnderTotal
+ ” , ” + taxiInOverUnderAverage
+ ” , ” + gateHoldCount
+ ” , ” + getGateHoldTotal ( )
+ ” , ” + gateHoldAverage
+ ” , ” + gateInOverUnderCount
+ ” , ” + gateInOverUnderTotal
+ ” , ” + gateInOverUnderAverage
+ ” , ” + gateOutOverUnderCount
+ ” , ” + gateOutOverUnderTotal
+ ” , ” + gateOutOverUnderAverage
86
88
90
92
94
96
98
100
102
104
106
108
110
);
} finally {
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
112
}
114
public i n t g e t G a t e H o l d T o t a l ( ) {
return g a t e H o l d T o t a l ;
}
116
118
120
}
public void s e t G a t e H o l d T o t a l ( in t g a t e H o l d T o t a l ) {
this . gateHoldTotal = gateHoldTotal ;
}
src/gateassignmentsimulation/ReplicationStatistics.java
1 /∗
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
3 ∗ and open t h e t e m p l a t e i n t h e e d i t o r .
∗/
5
package g a t e a s s i g n m e n t s i m u l a t i o n ;
7
import j a v a . i o . F i l e ;
9 import j a v a . i o . F i l e W r i t e r ;
import j a v a . i o . IOException ;
11 import j a v a . i o . P r i n t W r i t e r ;
import j a v a . s q l . Time ;
156
13 import p s i m j a v a . S t a t i c S y n c ;
15 /∗ ∗
∗
17 ∗ @author J e f f r e y
∗/
19 public c l a s s Turn{
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
private i n t t u r n I n d e x ;
private Gate a s s i g n e d G a t e ; // n o t e t h a t t y p e o f a s s i g n e d G a t e i s an o b j e c t
Gate , i n s t e a d o f S t r i n g
/∗
∗ Type o f a s s i g n e G a t e may be changed t o a l i n k e d l i s t due t o t h e f a c t
that
∗ t h e r e can be a s e r i e s o f g a t e c h a n g e s and t h e time t o change g a t e
matters .
∗ So t i me and a s s i g n e d g a t e need t o be s t o r e d t o c a l c u l a t e g a t e change
pe rf orm an c e .
∗/
private S t r i n g c a r r i e r ;
private S t r i n g equipment ;
private i n t a r r i v a l F l i g h t N u m b e r ;
private i n t d e p a r t u r e F l i g h t N u m b e r ;
private S t r i n g a r r i v a l O r i g i n a t i o n A i r p o r t ;
private S t r i n g v i a A i r p o r t ;
private S t r i n g d e p a r t u r e D e s t i n a t i o n A i r p o r t ;
private i n t wheelsOnScheduledTime ;
private i n t wheelsOnEstimatedTime ;
private i n t wheelsOnActualTime ;
private i n t wheelsOnOverUnder ;
private boolean penaltyBoxHoldFlag ;
private i n t penaltyBoxEntryTime ;
private i n t penaltyBoxExitTime ;
private i n t penaltyBoxHoldTime ;
private i n t t a x i I n S c h e d u l e d T i m e ;
private i n t t a x i I n E s t i m a t e d T i m e ;
private i n t t a x i I n A c t u a l T i m e ;
private i n t tax i In Ov e rUnder ;
private boolean g a t e H o l d F l a g ;
private i n t gateHoldTime ;
private i n t g a t e I n S c h e d u l e d T i m e ;
private i n t gateInEstimatedTime ;
private i n t g a t e I n A c t u a lT im e ;
private i n t gateInOverUnder ;
private i n t groundScheduledTime ;
private i n t groundEstimatedTime ;
private i n t groundActualTime ;
private i n t groundOverUnder ;
private i n t gateOutScheduledTime ;
private i n t gateOutEstimatedTime ;
private i n t gateOutActualTime ;
private i n t gateOutOverUnder ;
private TurnStatus t u r n S t a t u s = TurnStatus .BEFORETOUCHDOWN;
private A i r p l a n e i t s A i r p l a n e ;
private i n t g a t e C h a n g e H e u r i s t i c T i m e ;
s t a t i c private S t r i n g d e l i m i t e r = ” \ t ” ;
157
65
public Turn ( ) {
}
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
//
99
//
101
103
105
107
109
111
113
115
117
119
public Turn (
i n t tu rn In dex ,
Gate a s s i g n e d G a t e ,
String carrier ,
S t r i n g equipment ,
int arrivalFlightNumber ,
i n t departureFlightNumber ,
String arrivalOriginationAirport ,
String viaAirport ,
String departureDestinationAirport ,
i n t wheelsOnActualTime ,
int taxiInScheduledTime ,
i n t gateInScheduledTime ,
i n t gateInActualTime ,
i n t gateOutScheduledTime ,
i n t gateOutActualTime
) {
this . setTurnIndex ( turnIndex ) ;
this . setAssignedGate ( assignedGate ) ;
this . s e t C a r r i e r ( c a r r i e r ) ;
t h i s . setEquipment ( equipment ) ;
this . setArrivalFlightNumber ( arrivalFlightNumber ) ;
this . setDepartureFlightNumber ( departureFlightNumber ) ;
this . s e t A r r i v a l O r i g i n a t i o n A i r p o r t ( a r r i v a l O r i g i n a t i o n A i r p o r t ) ;
this . setViaAirport ( viaAirport ) ;
this . setDepartureDestinationAirport ( departureDestinationAirport ) ;
t h i s . setWheelsOnActualTime ( wheelsOnActualTime ) ;
this . setTaxiInScheduledTime ( taxiInScheduledTime ) ;
this . setGateInScheduledTime ( gateInScheduledTime ) ;
t h i s . setGateInActualTime ( gateInActualTime ) ;
t h i s . setGateOutScheduledTime ( gateOutScheduledTime ) ;
t h i s . setGateOutActualTime ( gateOutActualTime ) ;
t h i s . setGroundActualTime ( gateOutActualTime − gateInAc tualTime ) ;
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( ” t u r n ” + t u r n I n d e x
+ ” created at ” + StaticSync . g e t c l o c k ( ) ) ;
}
}
public Turn ( Gate a s s i g n e d G a t e ) {
this . setAssignedGate ( assignedGate ) ;
}
public void touchDownRunway ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( )
+ ” t o u c h e s down runway a t ” + S t a t i c S y n c . g e t c l o c k ( ) ) ;
}
i f ( S t a t i c S y n c . g e t c l o c k ( ) != getWheelsOnActualTime ( ) ) {
System . out . p r i n t l n ( ” E r r o r i n Turn . touchDownRunway ( ) ! ”
+ ” StaticSync . g e t c l o c k ( ) i s n ’ t equal to
getWheelOnActualTime ( ) . ” ) ;
} else {
158
setWheelsOnOverUnder ( getWheelsOnActualTime ( ) −
getWheelsOnScheduledTime ( ) ) ;
t h i s . setWheelsOnEstimatedTime ( t h i s . getWheelsOnActualTime ( ) ) ;
t h i s . s e t T a x i I n E s t i m a t e d T i m e ( t h i s . ge t T ax i I nS c he d u le d T im e ( ) ) ;
t h i s . setGateInEstimatedTime ( t h i s . getWheelsOnEstimatedTime ( )
+ t h i s . getTaxiInEstimatedTime ( ) ) ;
t h i s . setGroundEstimatedTime ( t h i s . getGroundScheduledTime ( ) ) ;
t h i s . setGateOutEstimatedTime ( t h i s . getGateInEstimatedTime ( )
+ t h i s . getGroundEstimatedTime ( ) ) ;
121
123
125
127
}
s e t T u r n S t a t u s ( TurnStatus .TAXIINGINFROMRUNWAYTOPENALTYBOX) ;
129
}
131
133
135
137
139
141
143
145
147
149
public void e n t e r P e n a l t y B o x ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( )
+ ” e n t e r s p e n a l t y box a t ” + S t a t i c S y n c . g e t c l o c k ( ) ) ;
}
t h i s . s e t P e n a l t y B o x H o l d F l a g ( true ) ;
t h i s . setPenaltyBoxEntryTime ( ( i n t ) ( S t a t i c S y n c . g e t c l o c k ( ) ) ) ;
s e t T u r n S t a t u s ( TurnStatus .INPENALTYBOX) ;
G a t e A s s i g n m e n t S i m u l a t i o n . penaltyBox . add ( i t s A i r p l a n e ) ;
}
public void e x i t P e n a l t y B o x ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( )
+ ” e x i t s p e n a l t y box a t ” + S t a t i c S y n c . g e t c l o c k ( ) ) ;
}
t h i s . setPenaltyBoxExitTime ( ( i n t ) ( S t a t i c S y n c . g e t c l o c k ( ) ) ) ;
t h i s . setPenaltyBoxHoldTime ( t h i s . getPenaltyBoxExitTime ( ) − t h i s .
getPenaltyBoxEntryTime ( ) ) ;
}
151
153
155
157
159
public void s t a r t T a x i i n g T o F i n a l G a t e ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( ) +
” s t a r t s t a x i i n g to f i n a l gate ” + getAssignedGate ( ) .
getName ( ) +
” at ” + StaticSync . g e t c l o c k ( ) ) ;
}
// u p d a t e p e n a l t y box i n f o ;
s e t T u r n S t a t u s ( TurnStatus .TAXIINGINFROMPENALTYBOXTOGATE) ;
}
161
163
165
167
169
171
public void a r r i v e A t G a t e ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( ) +
” a r r i v e s a t g a t e ” + g e t A s s i g n e d G a t e ( ) . getName ( ) +
” at ” + StaticSync . g e t c l o c k ( ) ) ;
}
s etG a t eI nA c t u al T i m e ( ( in t ) S t a t i c S y n c . g e t c l o c k ( ) ) ;
setGateInOverUnder ( getGateInActualTime ( )
− getGateInScheduledTime ( ) ) ;
t h i s . setGateInEstimatedTime ( t h i s . getGateInActualTime ( ) ) ;
159
t h i s . s e t T a x i I n A c t u a l T i m e ( t h i s . getGateInActualTime ( )−t h i s .
getWheelsOnActualTime ( ) ) ;
t h i s . setTaxiInOverUnder ( t h i s . getTaxiInActualTime ( )−t h i s .
g e t T a x i I n S c h e d u l e d Ti m e ( ) ) ;
t h i s . s e t T a x i I n E s t i m a t e d T i m e ( t h i s . getTaxiInActualTime ( ) ) ;
i f ( t h i s . getTaxiInOverUnder ( ) > Ga t e A s s i g n m e n t S i m u l a t i o n .
gateHoldThreshold ) {
t h i s . s e t G a t e H o l d F l a g ( true ) ;
t h i s . setGateHoldTime ( t h i s . getTaxiInOverUnder ( )−
GateAssignmentSimulation . gateHoldThreshold ) ;
} else {
this . setGateHoldFlag ( false ) ;
t h i s . setGateHoldTime ( 0 ) ;
}
t h i s . setGroundEstimatedTime ( t h i s . getGroundActualTime ( ) ) ;
t h i s . setGateOutEstimatedTime ( t h i s . getGateInEstimatedTime ( )+t h i s .
getGroundEstimatedTime ( ) ) ;
s e t T u r n S t a t u s ( TurnStatus .ATGATE) ;
173
175
177
179
181
183
185
}
187
public void departFromGate ( ) {
i f ( G a t e A s s i g n m e n t S i m u l a t i o n . messageFlag == true ) {
System . out . p r i n t l n ( i t s A i r p l a n e . get name ( ) +
” d e p a r t s g a t e ” + g e t A s s i g n e d G a t e ( ) . getName ( ) +
” at ” + StaticSync . g e t c l o c k ( ) ) ;
}
setGateOutActualTime ( ( in t ) S t a t i c S y n c . g e t c l o c k ( ) ) ;
setGateOutOverUnder ( getGateOutActualTime ( )
− getGateOutScheduledTime ( ) ) ;
t h i s . setGateOutEstimatedTime ( t h i s . getGateOutActualTime ( ) ) ;
t h i s . setGroundActualTime ( t h i s . getGateOutActualTime ( )−t h i s .
getGateInActualTime ( ) ) ;
t h i s . setGroundOverUnder ( t h i s . getGroundActualTime ( )−t h i s .
getGroundScheduledTime ( ) ) ;
t h i s . setGroundEstimatedTime ( t h i s . getGroundActualTime ( ) ) ;
s e t T u r n S t a t u s ( TurnStatus .AFTERGATEDEPARTURE) ;
}
189
191
193
195
197
199
201
203
205
207
209
211
213
215
217
219
public s t a t i c void p r i n t H e a d e r ( S t r i n g f i l e N a m e ) throws IOException {
P r i n t W r i t e r outputStream = null ;
try {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( f i l e N a m e ) ) ;
outputStream . p r i n t l n ( ” t u r n I n d e x ”
+ d e l i m i t e r + ” assignedGate ”
+ delimiter + ” carrier ”
+ d e l i m i t e r + ” equipment ”
+ delimiter + ” arrivalFlightNumber ”
+ d e l i m i t e r + ” departureFlightNumber ”
+ delimiter + ” arrivalOriginationAirport ”
+ delimiter + ” viaAirport ”
+ delimiter + ” departureDestinationAirport ”
+ d e l i m i t e r + ” wheelOnScheduledTime ”
+ d e l i m i t e r + ” wheelOnEstimatedTime ”
+ d e l i m i t e r + ” wheelOnActualTime ”
+ d e l i m i t e r + ” wheelOnOverUnder ”
+ d e l i m i t e r + ” gateChangeHeuristicTime ”
160
221
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
223
225
227
229
231
233
235
237
239
241
243
245
}
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
delimiter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
” taxiInScheduledTime ”
” taxiInEstimatedTime ”
” taxiInActualTime ”
” t ax iInOverUnder ”
” gateHoldFlag ”
” gateHoldTime ”
” gateInScheduledTime ”
” gateInEstimatedTime ”
” g a te I nActualTi me ”
” gateInOverUnder ”
” groundScheduledTime ”
” groundEstimatedTime ”
” groundActualTime ”
” groundOverUnder ”
” gateOutScheduledTime ”
” gateOutEstimatedTime ”
” gateOutActualTime ”
” gateOutOverUnder ”
” turnStatus ”
} finally {
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
247
249
251
253
255
257
259
261
public void p r i n t T u r n ( S t r i n g f i l e N a m e ) throws IOException {
P r i n t W r i t e r outputStream = null ;
try {
i f (new F i l e ( f i l e N a m e ) . e x i s t s ( ) == true ) {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( fileName , true ) )
;
} else {
outputStream = new P r i n t W r i t e r (new F i l e W r i t e r ( fileName , f a l s e )
);
}
outputStream . p r i n t l n ( t o S t r i n g ( ) ) ;
} finally {
i f ( outputStream != null ) {
outputStream . c l o s e ( ) ;
}
}
}
263
265
public i n t getTurnIndex ( ) {
return t u r n I n d e x ;
}
267
269
public void s e t T u r n I n d e x ( in t t u r n I n d e x ) {
this . turnIndex = turnIndex ;
}
271
273
public Gate g e t A s s i g n e d G a t e ( ) {
return a s s i g n e d G a t e ;
}
161
275
277
public void s e t A s s i g n e d G a t e ( Gate a s s i g n e d G a t e ) {
this . assignedGate = assignedGate ;
}
279
281
public S t r i n g getEquipment ( ) {
return equipment ;
}
283
285
public void setEquipment ( S t r i n g equipment ) {
t h i s . equipment = equipment ;
}
287
289
public i n t g e t A r r i v a l F l i g h t N u m b e r ( ) {
return a r r i v a l F l i g h t N u m b e r ;
}
291
293
public void s e t A r r i v a l F l i g h t N u m b e r ( i n t a r r i v a l F l i g h t N u m b e r ) {
this . arrivalFlightNumber = arrivalFlightNumber ;
}
295
297
public i n t g et D e p a r t u r e F l i g h t N u m b e r ( ) {
return d e p a r t u r e F l i g h t N u m b e r ;
}
299
301
public void s e t D e p a r t u r e F l i g h t N u m b e r ( i nt d e p a r t u r e F l i g h t N u m b e r ) {
this . departureFlightNumber = departureFlightNumber ;
}
303
305
public S t r i n g g e t A r r i v a l O r i g i n a t i o n A i r p o r t ( ) {
return a r r i v a l O r i g i n a t i o n A i r p o r t ;
}
307
309
public void s e t A r r i v a l O r i g i n a t i o n A i r p o r t ( S t r i n g a r r i v a l O r i g i n a t i o n A i r p o r t )
{
this . a r r i v a l O r i g i n a t i o n A i r p o r t = a r r i v a l O r i g i n a t i o n A i r p o r t ;
}
311
313
public S t r i n g g e t V i a A i r p o r t ( ) {
return v i a A i r p o r t ;
}
315
317
public void s e t V i a A i r p o r t ( S t r i n g v i a A i r p o r t ) {
this . viaAirport = viaAirport ;
}
319
321
public S t r i n g g e t D e p a r t u r e D e s t i n a t i o n A i r p o r t ( ) {
return d e p a r t u r e D e s t i n a t i o n A i r p o r t ;
}
323
325
public void s e t D e p a r t u r e D e s t i n a t i o n A i r p o r t ( S t r i n g
departureDestinationAirport ) {
this . departureDestinationAirport = departureDestinationAirport ;
}
327
public i n t getWheelsOnScheduledTime ( ) {
162
329
return wheelsOnScheduledTime ;
}
331
333
public void setWheelsOnScheduledTime ( i nt wheelOnScheduledTime ) {
t h i s . wheelsOnScheduledTime = wheelOnScheduledTime ;
}
335
337
public i n t getWheelsOnEstimatedTime ( ) {
return wheelsOnEstimatedTime ;
}
339
341
public void setWheelsOnEstimatedTime ( i nt wheelOnEstimatedTime ) {
t h i s . wheelsOnEstimatedTime = wheelOnEstimatedTime ;
}
343
345
public i n t getWheelsOnActualTime ( ) {
return wheelsOnActualTime ;
}
347
349
public void setWheelsOnActualTime ( i n t wheelOnActualTime ) {
t h i s . wheelsOnActualTime = wheelOnActualTime ;
}
351
353
public i n t getWheelsOnOverUnder ( ) {
return wheelsOnOverUnder ;
}
355
357
public void setWheelsOnOverUnder ( i n t wheelOnOverUnder ) {
t h i s . wheelsOnOverUnder = wheelOnOverUnder ;
}
359
361
public boolean i s P e n a l t y B o x H o l d F l a g ( ) {
return penaltyBoxHoldFlag ;
}
363
365
public void s e t P e n a l t y B o x H o l d F l a g ( boolean penaltyBoxHoldFlag ) {
t h i s . penaltyBoxHoldFlag = penaltyBoxHoldFlag ;
}
367
369
public i n t getPenaltyBoxEntryTime ( ) {
return penaltyBoxEntryTime ;
}
371
373
public void setPenaltyBoxEntryTime ( i n t penaltyBoxEntryTime ) {
t h i s . penaltyBoxEntryTime = penaltyBoxEntryTime ;
}
375
377
public i n t getPenaltyBoxExitTime ( ) {
return penaltyBoxExitTime ;
}
379
381
public void setPenaltyBoxExitTime ( i n t penaltyBoxExitTime ) {
t h i s . penaltyBoxExitTime = penaltyBoxExitTime ;
}
383
public i n t getPenaltyBoxHoldTime ( ) {
163
385
return penaltyBoxHoldTime ;
}
387
389
public void setPenaltyBoxHoldTime ( i n t penaltyBoxHoldTime ) {
t h i s . penaltyBoxHoldTime = penaltyBoxHoldTime ;
}
391
393
public i n t g e t T a x i I n S c h e d u l e d Ti m e ( ) {
return t a x i I n S c h e d u l e d T i m e ;
}
395
397
public void s e t T a x i I n S c h e d u l e d T i m e ( i n t t a x i I n S c h e d u l e d T i m e ) {
this . taxiInScheduledTime = taxiInScheduledTime ;
}
399
401
public i n t getTaxiInEstimatedTime ( ) {
return t a x i I n E s t i m a t e d T i m e ;
}
403
405
public void s e t T a x i I n E s t i m a t e d T i m e ( i n t t a x i I n E s t i m a t e d T i m e ) {
this . taxiInEstimatedTime = taxiInEstimatedTime ;
}
407
409
public i n t getTaxiInActualTime ( ) {
return t a x i I n A c t u a l T i m e ;
}
411
413
public void s e t T a x i I n A c t u a l T i m e ( i n t t a x i I n A c t u a l T i m e ) {
this . taxiInActualTime = taxiInActualTime ;
}
415
417
public i n t getTaxiInOverUnder ( ) {
return tax i In Ov e rU nder ;
}
419
421
public void setTaxiInOverUnder ( in t taxiInOverUnder ) {
t h i s . ta xiI n Ov er U nd er = taxiIn OverUnder ;
}
423
425
public boolean i s G a t e H o l d F l a g ( ) {
return g a t e H o l d F l a g ;
}
427
429
public void s e t G a t e H o l d F l a g ( boolean g a t e H o l d F l a g ) {
this . gateHoldFlag = gateHoldFlag ;
}
431
433
public i n t getGateHoldTime ( ) {
return gateHoldTime ;
}
435
437
public void setGateHoldTime ( i n t gateHoldTime ) {
t h i s . gateHoldTime = gateHoldTime ;
}
439
public i n t getGateInScheduledTime ( ) {
164
441
return g a t e I n S c h e d u l e d T i m e ;
}
443
445
public void s e t G a t e I n S c h e d u l e d T i m e ( i n t g a t e I n S c h e d u l e d T i m e ) {
this . gateInScheduledTime = gateInScheduledTime ;
}
447
449
public i n t getGateInEstimatedTime ( ) {
return gateInEstimatedTime ;
}
451
453
public void setGateInEstimatedTime ( i n t gateInEstimatedTime ) {
t h i s . gateInEstimatedTime = gateInEstimatedTime ;
}
455
457
public i n t getGateInActualTime ( ) {
return g a t e I n A c t u a l Tim e ;
}
459
461
public void se t G at e I n A ct ua lTim e ( i n t gateInAct ualTime ) {
t h i s . g a t e I n A c t u a l T i me = ga te In A ctualTime ;
}
463
465
public i n t getGateInOverUnder ( ) {
return gateInOverUnder ;
}
467
469
public void setGateInOverUnder ( i n t gateInOverUnder ) {
t h i s . gateInOverUnder = gateInOverUnder ;
}
471
473
public i n t getGroundScheduledTime ( ) {
return groundScheduledTime ;
}
475
477
public void setGroundScheduledTime ( i n t groundScheduledTime ) {
t h i s . groundScheduledTime = groundScheduledTime ;
}
479
481
public i n t getGroundEstimatedTime ( ) {
return groundEstimatedTime ;
}
483
485
public void setGroundEstimatedTime ( i n t groundEstimatedTime ) {
t h i s . groundEstimatedTime = groundEstimatedTime ;
}
487
489
public i n t getGroundActualTime ( ) {
return groundActualTime ;
}
491
493
public void setGroundActualTime ( i n t groundActualTime ) {
t h i s . groundActualTime = groundActualTime ;
}
495
public i n t getGroundOverUnder ( ) {
165
497
return groundOverUnder ;
}
499
501
public void setGroundOverUnder ( i n t groundOverUnder ) {
t h i s . groundOverUnder = groundOverUnder ;
}
503
505
public i n t getGateOutScheduledTime ( ) {
return gateOutScheduledTime ;
}
507
509
public void setGateOutScheduledTime ( i n t gateOutScheduledTime ) {
t h i s . gateOutScheduledTime = gateOutScheduledTime ;
}
511
513
public i n t getGateOutEstimatedTime ( ) {
return gateOutEstimatedTime ;
}
515
517
public void setGateOutEstimatedTime ( i n t gateOutEstimatedTime ) {
t h i s . gateOutEstimatedTime = gateOutEstimatedTime ;
}
519
521
public i n t getGateOutActualTime ( ) {
return gateOutActualTime ;
}
523
525
public void setGateOutActualTime ( i n t gateOutActualTime ) {
t h i s . gateOutActualTime = gateOutActualTime ;
}
527
529
public i n t getGateOutOverUnder ( ) {
return gateOutOverUnder ;
}
531
533
public void setGateOutOverUnder ( i n t gateOutOverUnder ) {
t h i s . gateOutOverUnder = gateOutOverUnder ;
}
535
537
public TurnStatus g e t T u r n S t a t u s ( ) {
return t u r n S t a t u s ;
}
539
541
public void s e t T u r n S t a t u s ( TurnStatus t u r n S t a t u s ) {
this . turnStatus = turnStatus ;
}
543
545
public A i r p l a n e g e t I t s A i r p l a n e ( ) {
return i t s A i r p l a n e ;
}
547
549
public void s e t I t s A i r p l a n e ( A i r p l a n e i t s A i r p l a n e ) {
this . i t s A i r p l a n e = i t s A i r p l a n e ;
}
551
public i n t g e t G a t e C h a n g e H e u r i s t i c T i m e ( ) {
166
553
return g a t e C h a n g e H e u r i s t i c T i m e ;
}
555
public void s e t G a t e C h a n g e H e u r i s t i c T i m e ( in t g a t e C h a n g e H e u r i s t i c T i m e ) {
this . gateChangeHeuristicTime = gateChangeHeuristicTime ;
}
557
559
public S t r i n g g e t C a r r i e r ( ) {
return c a r r i e r ;
}
561
563
public void s e t C a r r i e r ( S t r i n g c a r r i e r ) {
this . c a r r i e r = c a r r i e r ;
}
565
567
569
571
573
575
577
579
581
583
585
587
589
591
593
595
597
599
601
603
}
@Override
public S t r i n g t o S t r i n g ( ) {
return t u r n I n d e x
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
+ delimiter
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
a s s i g n e d G a t e . get name ( )
carrier
equipment
arrivalFlightNumber
departureFlightNumber
arrivalOriginationAirport
viaAirport
departureDestinationAirport
wheelsOnScheduledTime
wheelsOnEstimatedTime
wheelsOnActualTime
wheelsOnOverUnder
gateChangeHeuristicTime
taxiInScheduledTime
taxiInEstimatedTime
taxiInActualTime
taxiIn OverUnder
gateHoldFlag
gateHoldTime
gateInScheduledTime
gateInEstimatedTime
g a te I nA ctua lTime
gateInOverUnder
groundScheduledTime
groundEstimatedTime
groundActualTime
groundOverUnder
gateOutScheduledTime
gateOutEstimatedTime
gateOutActualTime
gateOutOverUnder
turnStatus ;
src/gateassignmentsimulation/Turn.java
/∗
167
2
4
∗ To change t h i s t e m p l a t e , c h o o s e T o o l s | Templates
∗ and open t h e t e m p l a t e i n t h e e d i t o r .
∗/
6 /∗
∗ C l a s s T u r n S t a t u s d e f i n e s t h e f o u r s t a t u s t h a t an a i r c r a f t may be a t .
8 ∗/
10 package g a t e a s s i g n m e n t s i m u l a t i o n ;
12 /∗ ∗
∗
14 ∗ @author J e f f r e y
∗/
16 public enum TurnStatus {
BEFORETOUCHDOWN, TAXIINGINFROMRUNWAYTOPENALTYBOX, INPENALTYBOX,
18
TAXIINGINFROMPENALTYBOXTOGATE, ATGATE, AFTERGATEDEPARTURE
}
src/gateassignmentsimulation/TurnStatus.java
168
Bibliography
169
Bibliography
[ASPM, 2008] ASPM, F. (2008). data reference guide.
[Bandara and Wirasinghe, 1988] Bandara, S. and Wirasinghe, S. C. (1988). Airport Gate
Position Estimation under Uncertainty. 1199. Transportation Research Board.
[Bazargan, 2004] Bazargan, M. (2004). Airline Operations And Scheduling. Ashgate Pub
Ltd.
[Belliotti, 2008] Belliotti, R. (2008). ACRP Synthesis Report 8: Common Use Facilities
and Equipment at Airports. Transportation Research Board.
[Bolat, 1999] Bolat, A. (1999). Assigning arriving flights at an airport to the available
gates. The Journal of the Operational Research Society, 50:23–34.
[Bolat, 2000] Bolat, A. (2000). Procedures for providing robust gate assignments for arriving aircrafts. European Journal of Operational Research, 120:63–80.
[Braaksma and Shortreed, 1971] Braaksma, J. P. and Shortreed, J. H. (1971). Improving
airport gate usage with critical path. Transportation Engineering Journal, 97:187–203.
[BTS, 2003] BTS (2003). Airline on-time performance and causes of flight delays.
[Chandra, 1990] Chandra, J. (1990). Optimization-based opportunistic part dispatching in
flexible manufacturing systems. Unpublished PhD. Thesis, School of Industrial Engineering, Purdue University, W. Lafayette, IN.
[de Neufville and Belin, 2002] de Neufville, R. and Belin, S. C. (2002). Airport passenger
buildings: Efficiency through shared use of facilities. Journal of Transportation Engineering, 128:201–210.
[de Neufville and Odoni, 2003] de Neufville, R. and Odoni, A. (2003). Airport Systems:
Planning, Design, and Management. McGraw-Hill Professional, 1 edition.
[Dillingham, 2005] Dillingham, G. L. (2005). Delays and enhance capacity are ongoing but
challenges remain. Technical report, United States Government Accountability Office.
[Dorndorf et al., 2007] Dorndorf, U., Jaehn, F., Lin, C., Ma, H., and Pesch, E. (2007).
Disruption management in flight gate scheduling. Statistica Neerlandica, 61(1):92–114.
[DOT, 2009a] DOT (2009a). Dot issues precedent-setting fines for rochester, mn tarmac
delay incident. http://www.dot.gov.
170
[DOT, 2009b] DOT (2009b). New dot consumer rule limits airline tarmac delays, provides
other passenger protections.
[Durbin, 2003] Durbin, M. T. (2003). The dance of the thirty-ton trucks: Demand dispatching in a dynamic environment. PhD thesis, George Mason University.
[Eckert, 2010] Eckert, B. (2010). Delta, us airways dump quest for airport gate swap.
http://washington.bizjournals.com/washington/stories/2010/06/28/daily43.html.
[Edwards and Newell, 1969] Edwards, J. W. and Newell, G. F. (1969). A study of gate use
at honolulu international airport. Transportation Science, 3:183–191.
[FAA, 2007] FAA (2007). Oep frequently asked questions - oep 35 airports.
[FAA, 2009] FAA (2009).
http://www.faa.gov.
New york/new jersey/philadelphia airspace redesign video.
[Fricke and Schultz, 2008] Fricke, H. and Schultz, M. (2008). Improving aircraft turn
around reliability. In Third International Conference on Research in Air Transportation.
[Garrett, 2005] Garrett, C. (2005). New passenger complex to handle growing airport needs.
[Garrido, 2008] Garrido, J. M. (2008). The psimj2-2 package - a library for object oriented
discrete-event simulation. Technical Report TR-CSIS-Psimj2.
[Garrido, 2009] Garrido, J. M. (2009). The psimj2 package, a library for object oriented
discrete-event simulation, technical report tr-csis-psimj2. Technical report.
[Gillen and Lall, 1997] Gillen, D. and Lall, A. (1997). Developing measures of airport productivity and performance: an application of data envelopment analysis. Transportation
research. Part E, Logistics and transportation review, 33:261–274.
[Gosling, 1993] Gosling, G. D. (1993). Development of a framework for assessing the benefits
of airportsurface traffic automation. Control Systems Technology, IEEE Transactions on,
1:155–167.
[Gross et al., 2008] Gross, D., Shortle, J. F., Thompson, J. M., and Harris, C. M. (2008).
Fundamentals of Queueing Theory. John Wiley & Sons, Inc, fourth edition.
[Gu and Chung, 1999] Gu, Y. and Chung, C. A. (1999). Genetic algorithm approach to
aircraft gate reassignment problem. Journal of Transportation Engineering, 125:384–389.
[Haghani and Chen, 1998] Haghani, A. and Chen, M.-C. (1998). Optimizing gate assignments at airport terminals. Transportation Research Part A: Policy and Practice, 32:437–
454.
[Hassounah and Steuart, 1993] Hassounah, M. I. and Steuart, G. N. (1993). Demand for
aircraft gates. Transportation Research Record, 1423:26–33.
[Horonjeff and McKelvey, 1993] Horonjeff, R. and McKelvey, F. (1993). Planning and Design of Airports. McGraw-Hill Professional.
171
[Idris, 2001] Idris, H. R. (2001). Observation and analysis of departure operations at Boston
Logan International Airport. PhD thesis, Massachusetts Institute of Technology.
[Idris et al., 1999] Idris, H. R., Anagnostakis, I., Delcaire, B., Hansman, R. J., Clarke, J.-P.,
Feron, E., and Odoni, A. R. (1999). Observations of departure processes at logan airport
to support the development of departure planning tools. Air Traffic Control Quarterly,
7:229–257.
[Idris and Hansman, 2000] Idris, H. R. and Hansman, R. J. (2000). Observation and analysis of departure operations at boston logan international airport. Technical Report
ICAT-2000-7, Massachusetts Institute of Technology.
[JPDO, 2007] JPDO (2007). Concept of operations for the next generation air transportation system, version 2.0. Technical report, Joint Planning and Development Office.
[Klein and Wang, 2006] Klein, A. and Wang, J. (2006). Laguardia airport capacity and
delay assessment for rj fleet upgauging options. 2006 INFORMS Annual Meeting Presentation, Pittsburgh, PA.
[Kondo, 2009] Kondo, A. (2009). The Derivation of the Unimpeded Taxi-out and Taxi-in
Times in the Estimation of the Taxi Time Delays. Office of Aviation Policy, Federal
Aviation Administration, technical note 2009 no. 1 edition.
[Le, 2006] Le, L. (2006). Demand Management at Congested Airports: How Far Are We
From Utopia? PhD thesis, George Mason University.
[L’Ecuyer, 2008] L’Ecuyer, P. (2008). Ssj: Stochastic simulation in java overview.
[Matt, 2005] Matt (2005).
http://www.airliners.net/.
Trip report:
Yul-yyz-yul-ord-dfw on ac and aa.
[Maynard, 2008] Maynard, M. (2008).
Jetblue twitters its new terminal.
http://thelede.blogs.nytimes.com/2008/10/22/jetblue-twitters-its-new-terminal/?hp.
[McGregor, 2004] McGregor (2004). Whenuapai air base. Technical report, McGregor and
Company.
[Mead, 2001] Mead, K. M. (2001). Flight delays and cancellations, statement before the committee on appropriations, subcommittee on transportation and related
agencies, united states house of representatives, u.s. department of transportation.
http://www.oig.dot.gov/item.jsp?id=17.
[Mueller and Chatterji, 2002] Mueller, E. R. and Chatterji, G. B. (2002). Analysis of aircraft arrival and departure delay characteristics. In AIAA’s Aircraft Technology, Integration, & Operations (ATIO) 2002 Technical Forum Online Proceedings.
[Ramos, 2007] Ramos, R. T. (2007). Airtran doesn’t control new gates, airport says. Atlanta
Business Chronicle.
[Richards, 2008] Richards, J. (2008). Self-docking saves millions, reduces gate delays at
dfw. Airport Improvement Magazine.
172
[Robyn, 2008] Robyn, D. (2008). Flight delays are an outcome of bad public policy. 2008
INFORMS Annual Meeting.
[Roling and Visser, 2007] Roling, P. C. and Visser, H. G. (2007). Optimal airport surface traffic planning using mixed-integer linear programming. International Journal of
Aerospace Engineering, 2008.
[Sherry and Donohue, 2009] Sherry, L. and Donohue, G. (2009). U.s. airline passenger trip
delay report (2008). Technical report, Center for Air Transportation Systems Research,
George Mason University.
[Simaiakis and Balakrishnan, 2009] Simaiakis, I. and Balakrishnan, H. (2009). Queuing
models of airport departure processes for emissions reduction. In AIAA Guidance, Navigation, and Control Conference Proceedings, Chicago, Illinois.
[Slater, 1999] Slater, R. E. (1999). Report on the january 1999 detroit snowstorm
submitted to the honorable john d. dingell, united states house of representatives.
http://www.dot.gov/affairs/1999/detsnowtoc.htm. accessed on July 24, 2008.
[Steuart, 1974] Steuart, G. N. (1974). Gate position requirements at metropolitan airports.
Transportation Science, 8:169–189.
[Stoller, 2009] Stoller, G. (2009). Fliers trapped on tarmac push for rules on release.
[Terreri, 2009] Terreri, J. (2009). Nextgen and the real world at atlanta-hartsfield international airport. Presentation in session 357 of TRB 2009 meeting.
[Tharpe, 2008] Tharpe, J. (2008). Passenger perks the buzz of proposed international terminal.
[USpatent, 2000] USpatent (2000). System and method of providing oooi times of an aircraft. United States Patent 6154636.
[Wang, 2007] Wang, D. (2007). Methods For Analysis Of Passenger Trip Performance In
A Complex Networked Transportation System. PhD thesis, George Mason Unversity.
[Wang et al., 2010] Wang, J., Shortle, J. F., and Sherry, L. (2010). Analysis of new york
laguardia airport gate-waiting delays. In The Transportation Research Board (TRB) 89th
Annual Meeting, Washington, D.C.
[Wang et al., 2009] Wang, J., Shortle, J. F., Wang, J., and Sherry, L. (2009). Analysis of
gate-waiting delays at major us airports. In 9th AIAA Aviation Technology, Integration,
and Operations Conference (ATIO) and AIAA/AAAF Aircraft Noise and Emissions Reduction Symposium (ANERS).
[Wu and Caves, 2003] Wu, C.-L. and Caves, R. E. (2003). Flight schedule punctuality control and management: a stochastic approach. Transportation Planning and Technology,
26:313 – 330.
[Xu, 2007] Xu, N. (2007). Method for Deriving Multi-Factor Models for Predicting Airport
Delays. PhD thesis, George Mason University.
173
[Yan and Chang, 1998] Yan, S. and Chang, C.-M. (1998). A network model for gate assignment. Journal of Advanced Transportation, 32:176–189.
[Yan and Huo, 2001] Yan, S. and Huo, C.-M. (2001). Optimization of multiple objective
gate assignments. Transportation Research Part A: Policy and Practice, 35:413–432.
[Yan et al., 2002] Yan, S., Shieh, C.-Y., and Chen, M. (2002). A simulation framework
for evaluating airport gate assignments. Transportation Research Part A: Policy and
Practice, 36:885–898.
[Yan and Tang, 2007] Yan, S. and Tang, C.-H. (2007). A heuristic approach for airport
gate assignments for stochastic flight delays. European Journal of Operational Research,
180:547567.
[Yeamans, 2001] Yeamans, D. (2001). Terminal capacity.
174
Curriculum Vitae
Jianfeng Wang received his M.S. in Operations Research from George Mason University,
Fairfax, VA, in 2007 and B.S. in Flight Vehicle Propulsion Engineering from Civil Aviation
University of China, Tianjin, P. R. China in 2002. He has been an analyst / programmer
at CSSI, Inc. since 2010. Before that, he worked as a research assistant in the Center
for Air Transportation Systems Research (CATSR) at George Mason University from 2004
to 2009 and worked as an intern at United Airlines for 6 months in 2007. He worked
on projects including oceanic flight pre-departure planner design and development, wake
vortex analysis using C++ and Google Earth, gate reassignment simulation using Arena,
LaGuardia airport upgauging study using Total Airspace and Airport Modeler (TAAM),
and MITRE runwaySimulator delay mode validation using TAAM. His research interests
include data analysis and modeling of airport systems and oceanic flight trajectories. His
permanent email is jianfengmason@gmail.com.
175