In the third blog in the series on tail assignment we explore how the optimization engine unlocks the most cost efficient, sustainable and robust solution.
In this series of blogs, we explore the dynamics of Tail Assignment. After the first blog “Unlocking Efficiency in Airline Scheduling with Tail Assignment Optimization” giving an introduction to tail assignment and the second blog “Navigating Complexity: The Cost Model and Constraints Behind Tail Assignment Optimization” providing an overview of which data is provided as input to the optimization and how the cost model and constraints are defined, this third blog dives deeper into the mechanics of the optimization calculation.
The optimization process in tail assignment optimization involves finding the most cost-effective assignment of aircraft to flights, while taking into account the costs and constraints as described in the previous blog. In order to do this effectively, airlines need sophisticated algorithms and software that can quickly find the optimal solution out of an almost infinite number of possibilities.
Before we can solve the problem as a large-scale optimization problem, we first need to translate all inputs into a mathematical model. We can do this by modelling the movement of each aircraft with the help of a periodic space-time graph, i.e.
Once all flights, constraints, costs and restrictions are modelled, the graph model is translated into a large-scale constrained optimization problem and solved. For this different mathematical solvers exist on the market.
The optimization problem itself will basically try out a specific tail assignment of aircraft (which meets all constraints) and then calculate the corresponding cost function to determine the total (fictive) cost associated with the proposed tail assignment. It will then adapt certain variables in the model and repeat the above calculation. If this solution has a better cost outcome than all previous solutions, it will be the best proposal (thus far). The solver will repeat these iterations, till it has found the solution it considers as the best possible solution.
As there are almost an infinite number of combinations, it is however impossible to “try out” every possible combination, as this would take too long and would also make the compute too costly.
As such there are all kinds of special techniques required for determining:
For the first two issues, we can use mathematical functions to determine the likelihood that a specific variable in the model will have a specific value. The result of this can be used to give a first value to each variable and to determine a good evolution of the value of a variable in a next iteration step.
For the last issue, we need to ensure we do not end up in a local minimum of the cost function, but ideally that we can find the absolute minimum (i.e. optimal solution). For this also different mathematical techniques exist to determine if we are not in a local minimum.
As you can see, the quality of the proposed (optimized) tail assignment depends heavily on:
In the next and final blog post in this series, we will provide a real-live example of the results a good tail assignment can deliver.