Airline Seat Yield Management Optimization
The problem
An airline sets ticket prices across multiple booking periods before final demand is known, and separately has to decide which aircraft configuration to assign to each flight, both under fixed seat capacity. By the third and final booking period, the pricing decisions for the first two periods are already locked in and executed, only the current period's pricing and the aircraft assignment remain open decisions, and both have to be optimized jointly since seat capacity links them together.
My approach
- Architecture: a Mixed Integer Linear Program with two coupled sets of binary decisions, one price option selected per fare class per period, and one seat arrangement selected out of 18 candidates per aircraft, alongside integer variables for how many seats to actually sell under the chosen price. The two are coupled through a shared capacity constraint, the seats sold across all classes cannot exceed what the selected arrangement can physically hold.
- Modeling the rolling decision structure: rather than treating all three periods as simultaneously open, Period 1 and 2 pricing decisions were fixed as equality constraints in the Period 3 model, since by that point they had already been decided and executed. Only Period 3 pricing and the aircraft arrangement remained genuine decision variables, matching how yield management actually works in practice, past commitments are not re-optimized.
- Validation: the model was built independently twice, once as an Excel Solver spreadsheet and once as an algebraic LP-Solve formulation, specifically to cross-check that both produced the same optimal solution. Two independent implementations catching the same answer is stronger evidence of correctness than trusting one model in isolation.
- Reflection built into the model itself: a separate scenario, kept in the LP-Solve file, reruns the full three-period pricing decision against the actual known demand observed at takeoff, to evaluate after the fact how good the original pricing predictions actually were, not just whether the model solved cleanly against assumed demand.
Results
- Produced a profit-maximizing joint solution for seat pricing and aircraft assignment, validated for consistency across two independently built model formulations.
- Awarded a Grade A, 78/100, with specific written feedback praising the correctness of the models and the depth of explanation of design decisions and trade-offs.
What I would do differently
The graded feedback was specific and fair: the numeric models were correct, but the spreadsheet model lacked clear annotation connecting cells back to the algebraic formulation, and the LP-Solve file annotated its correspondence to the spreadsheet but not to the underlying algebra it was implementing. The model being right is not the same as the model being legible to someone else reading it cold. Next time, I would annotate every formulation against the compact algebraic model from the start, not just against whichever other artifact I happened to build alongside it.