Aircraft stand allocation
3rd place
Task
Assign each of a day’s flights, about 1,100 arrivals and departures, to one of 275 stands at a large international airport: 82 contact stands with jet bridges and 193 remote stands served by apron buses.
The cost adds stand occupancy, taxiing and buses, all per minute. A jet bridge can be used only when the flight’s domestic or international status and its terminal match the stand, and then it must be used. Two wide-body aircraft may not stand next to each other.
Approach
01Costs and windows computed up front
For every pair of flight and stand: whether the bridge applies, the handling time for the aircraft class and mode, the number of buses (one per 80 passengers), and the cost. The stand is busy from runway time plus taxiing through handling, so each pair gets its own occupancy window.
02Only the cheapest stands per flight
Each flight keeps its 90 cheapest stands. That leaves about 99 thousand binary variables instead of 301 thousand, and the mode (bridge or bus) is fixed by the pair, so it needs no variable of its own.
03One assignment model, conflicts only where they can occur
Every flight gets exactly one stand; a stand holds at most one aircraft per minute; neighboring stands never hold two wide-bodies at once. Rows are generated only for stand-minute pairs where at least two candidates could clash.
04From stand groups to single stands
The first version grouped identical stands into 22 groups on five-minute slots, with at most as many aircraft in a group as it has stands. That is exact for capacity, because overlapping time windows can always be spread over identical stands. The private data gave every stand its own taxi and bus times, so the final model works per stand, at one-minute resolution.
05Open-source solver, bounded time
Data preparation in SQL with window functions, the model in Pyomo, solved by CBC with a 90-minute limit and a 5% gap target.
Result
3rd place at Leaders of Digital 2021.
The plan committed with the code has no stand conflicts and puts 78% of flights at jet bridges. Against a simple lower bound, with every flight at its own cheapest stand, it is at most 5.4% above the optimum.