Initial Challenges

  • Learn to use XPress-IVE

  • Reformulate the problem - in particular, the separation constraints

  • Replace absolute value terms with linear equivalents

  • Include track changes to resolve conflicts


Mathematical Formulation

where ci(f) are cost coefficients, ri(f) are requested parameters, xi(f) are actual values, and yi(f) are the changes in values; 1 = track, 2 = level, and 3 = time. For example, r2(f) and x2(f) are the requested flight level and the actual flight level, respectively, for flight f. y2(f) is the resulting difference between the two values.

The formulation above is very typical of a linear or integer programming problem; there is a cost function that must be minimized over a feasible solution space described by the listed constraints. The first set of constraints are the upper and lower bounds for the departure level and time. With regard to the departure level, the integers 1 through 4 correspond with outbound levels (these are the even altitudes described in the "Background and Motivation" section). Similarly, the integers 5 through 8 correspond with the inbound levels (the aforementioned odd altitudes). The upper and lower bounds applied as constraints ensure that if a plane requests an inbound level, for example, it will be assigned an inbound level in the optimal schedule.

The final set of bounds apply to the departure time of every flight. Intuitively, a flight cannot take off before it has requested to take off, and by convention the scheduling algorithm will not allow a flight to be delayed by more than twenty minutes.

The second cluster of constraints define the "change" variables of the model. For example, y1(f) is the difference between flight f's requested track and the track that it was actually assigned by the algorithm. Because the difference in requests and actuality can be both positive and negative for track and level, we must employ the concept of absolute value for these two values (however, because a flight cannot take off before it requests to take off, we do not need absolute value for the final constraint of this section). HOWEVER, these instances of absolute value are very problematic, as they keep our model from being a linear model as it is written. My first task in reformulating this problem was to examine linear alternatives to absolute value for these definitions and for other instances of absolute value in the formulation above.

The final constraint is the most complex; it is the separation constraint. As mentioned previously, all flights in the same track must be separated by either a level or twenty minutes of flight time. The separation constraint enforces the idea of a safe following distance.

As is typical of linear (and more, specifically, integer) programming problems, the final set of constraints are what are known as "simple constraints." These constraints place restrictions on the decision variables. In this case, all of the variables are restricted to be nonnegative integers.

Armed with the above concept of the problem, my next task was to generate code in XPress to solve it.

Representing (and Solving) the Problem with XPress

Because I was given this problem as a continuation of work done for a masters thesis, I had a working version of the scheduling algorithm given to me at the outset. This version including a linear equivalent of absolute value for the difference in level between two flights (for the purposes of the separation constraint), but not for the difference in time necessary for the separation constraint. Nor did this original code provide for track changes as a viable alternative to resolving conflicts. I was challenged to add both of these concepts, and to try out different approaches to representing absolute value.

The use of absolute value in defining both y1(f) and y2(f) can be replaced comparatively easily. Because both values are minimized via the objective function, the equation

y1(f) = | x1(f) - r1(f) |

is equivalent to the system

y1(f) >= x1(f) – r1(f)

y1(f) >= r1(f) – x1(f)

so that, effectively,

y1(f) = max{x1(f) – r1(f), r1(f) – x1(f)}.

The same is true of the change in level for flight f, y2(f). And, as we mentioned earlier, because the change in departure time is always nonnegative, we don't need to jump through these hoops for the definition of y3(f).

Take a look at the separation constraint. It would be useful to compute values difftrack(f,ff), difflevel(f,ff), and difftime(f,ff) to use in the separation constraint. (Note that the formulation above only describes difflevel and difftime; the addition of difftrack, multiplied by the same coefficient as is multiplied by difflevel, is a simple inclusion.) Because none of these contrived values are minimized by the objective function, the replacement of their use of absolute value is much more tricky. In the original version of the code that I was given, the definition

difflevel(f,ff) = | x2(f) - x2(ff) |

was replaced by the system

difflevel(f,ff) <= lev(ff) – lev(f) + M*y(f,ff)

difflevel(f,ff) >= lev(ff) – lev(f) – M*y(f,ff)

difflevel(f,ff) <= lev(f) – lev(f) + M*(1-y(f,ff))

difflevel(f,ff) >= lev(ff) – lev(f) – M*(1-y(f,ff))

where M is a penalty larger than any possible difference in level between two conflicting flights (for our purposes, we have used M = 5), and y(f,ff) is a binary "switch" variable.

In a similar fashion, I proposed the following set of inequalities to replace the nonlinear definition of difflevel:

difflevel(f,ff) = lev1(f,ff) + lev2(f,ff)

lev1(f,ff) – lev2(f,ff) = x2(f) – x2(ff)

M*y(f,ff) >= lev1(f,ff)

M*(1-y(f,ff)) >= lev2(f,ff)

Here, both lev1(f,ff) and lev2(f,ff) are transitional variables used to capture the (positive) value of difflevel(f,ff).

By auditioning different formulations for the absolute value, and for modeling the separation constraint in different ways, I created several different versions of the scheduling algorithm over the course of the summer. Where time permitted, I ran each version several times to get a feel for the processing time necessary. Because it is important to generate an optimal schedule quickly, the processing times for the different versions were used to evaluate and compare them.

I summarized my preliminary progress at our first round of presentations. My Powerpoint document outlines the work that I have just explained. The next section outlines and summarizes my conclusions.


Next Section: Results and Conclusions

Back to Home