Source.
In (1) and (2) an interesting problem is described: the aircraft landing problem. We have an airport with m runways, where we want to schedule aircrafts to land. Each aircraft has a target landing time and some allowed time window (it can land a bit earlier or somewhat later; typically the window is not symmetric around the target landing time). There is a required time between two landings (separation time) depending on the type of aircraft and the assigned runway. If two planes are scheduled on the same runway the separation time is longer than if they land on different runways.
The MIP model shown in (2) is as follows:
As usual I have some comments on the equations. Below I discuss each equations in turn (the numbers correspond to the equation number).
- The objective shows we have different costs for landing before or after the target landing time.
- This equation is just really a set of bounds that form the time-window. Usually I write these explicitly as bounds instead of constraints, even if presolvers will typically do this for you. When I specify them as bounds, I just want to convey in the model I know these restrictions are just bounds and paid attention.
- This constraint looks a bit unfamiliar, but actually is just a variable splitting constraint. Only one of ai, bi will be nonzero due to the objective (if both are nonzero the LP solution of the current relaxation is not optimal).
- This constraint puts some limits on ai, but does not look like we need it. The first part: ai≥Ti−xi follows from (3) while the bound ai≤Ti−Ei follows from (2).
- This is similar and also looks redundant to me.
- This is a main constraint in the model. It says: if aircraft j is after i then there should be 1 or si,j minutes in between, depending on whether they land at the same runway. This equation gives rise to the thought we can make use of symmetry in the variables δi,j (landing on same runway) and yi,j (ordering). We know that δj,i=δi,j and that yj,i=1−yi,j. So we can save on these variables by exploiting that. Let’s say that we only have δi,j and yi,j for i<j (i.e. both are strictly upper triangular matrices) then we need to split constraint (6) into two parts:
xj−xi≥si,jδi,j+(1–δi,j)–M(1−yi,j)∀i<jxj−xi≥si,jδj,i+(1–δj,i)–Myj,i∀i>j
I am not sure if presolvers are so smart they can do this also. Even if they did, I would prefer to add this logic myself to show I have thought about this. We could do the same thing for si,j as the data seems to indicate si,j is symmetric. Saving on binary variables is more important that saving a few bytes on data, so we skip that. In addition, in practice si,j may not be symmetric (consider a Cessna before or after an A380).
Of course we need to use a good value for M that is as small as possible. Probably we should use Mi,j instead (i.e. use several constants). Finally we note that if for a combination i,j the time windows are far away from each other we can even drop this equation altogether. I ignore this for now because the data sets I am looking at now do not have such combinations. - We can drop this constraint if we only consider yi,j for i<j. Of course we need to be careful when we use yi,j in the model (see the discussion of the previous constraint).
- This constraint can be considered as a linearization of δi,j=maxrγi,rγj,r. This is a multiplication of two binary variables. We can get rid of the max and linearize by
δi,j≥γi,r+γj,r−1∀r,i≠j
Note that we let δi,j float when aircraft i and j do not share a runway. The objective will drive it to zero when needed. Forcing δi,j=0 in that case is not so easy: we would need some intermediate variables for that.
When we exploit symmetry we can reduce the number of constraints for equation (8). In our case it would become
δi,j≥γi,r+γj,r−1∀r,i<j - Each aircraft has to land on exactly one runway.
- This equation can be deleted when we exploit symmetry ourselves. Note that the given domain: i,j=1,..,n,i≠j for this equation seems a bit generous. I guess they mean i<j.
- Here I would note that I would restrict the domains of δi,j and yi,j to i<j.
- When using a variable splitting technique I usually do not create two variables with different names (like ai and bi) but would rather create a single variable di,k (‘d’ for deviation from target landing time), where k={early,late}. This is largely a matter of taste.
In summary, here is my version of the model:
The performance of the new formulation looks good at least on one small data set using 2 runways:
Some of the larger problems (n=44,n=50) are actually even easier to solve.
I am not sure how to depict the solution. Here is an attempt:
The dots indicate when a landing is scheduled and on which runway.
Conclusion
As usual: there is always a lot to think about, even for a small model like this.
References
(1) J. E. BEASLEY e.a., “Scheduling Aircraft Landings— The Static Case”, Transportation Science,Vol. 34, No. 2, May 2000
(2) Amir Salehipour, “Solving Large Aircraft Landing Problems on Multiple Runways by Applying a Constraint Programming Approach”, Report, The University of Newcastle, Australia, 2016
No comments:
Post a Comment