Air transport
Description
Problem name and type, features | Difficulty | Related examples |
F‑1 | Flight connections at a hub: Assignment problem | * | assignment_graph.mos, i1assign.mos, c6assign.mos |
| |
F‑2 | Composing flight crews: Bipartite matching | **** | matching_graph.mos |
| 2 problems, data preprocessing, incremental definition of data array, encoding of arcs, logical or (cumulative version) and and, procedure for printing solution, forall-do, max, finalize |
F‑3 | Scheduling flight landings: Scheduling problem with time windows | *** | |
| generalization of model to arbitrary time windows; calculation of specific BigM, forall-do |
F‑4 | Airline hub location: Hub location problem | *** | |
| quadruple indices; improved (re)formulation (first model not usable with student version), union of index (range) sets |
F‑5 | Planning a flight tour: Symmetric traveling salesman problem | ***** | tsp_graph.mos |
| loop over problem solving, TSP subtour elimination algorithm; procedure for generating additional constraints, recursive subroutine calls, working with sets, forall-do, repeat-until, getsize, not |
Further explanation of this example:
'Applications of optimization with Xpress-MP', Chapter 11: Air transport
Source Files
By clicking on a file name, a preview is opened at the bottom of this page. Data Files
f1connect.mos
(!******************************************************
Mosel Example Problems
======================
file f1connect.mos
``````````````````
Planning flight connections at a hub
An airline has 6 planes landing within 90 minutes. During
the following hour, these planes must travel to 6 new
destinations. How should the incoming planes be used for
the new departures to minimize the number of passengers who
must change planes during the connection?
For infeasible departure assignments, we assign a large negative
number for how many passengers will remain on the plane during
the connection. By maximizing the number of passengers who stay
on the plane, this eliminates these infeasible departures.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Mar. 2002
*******************************************************!)
model "F-1 Flight connections"
uses "mmxprs"
declarations
PLANES = 1..6 ! Set of airplanes
PASS: array(PLANES,PLANES) of integer ! Passengers with flight connections
cont: array(PLANES,PLANES) of mpvar ! 1 if flight i continues to j
end-declarations
initializations from 'f1connect.dat'
PASS
end-initializations
! Objective: number of passengers on connecting flights
Transfer:= sum(i,j in PLANES) PASS(i,j)*cont(i,j)
! One incoming and one outgoing flight per plane
forall(i in PLANES) sum(j in PLANES) cont(i,j) = 1
forall(j in PLANES) sum(i in PLANES) cont(i,j) = 1
forall(i,j in PLANES) cont(i,j) is_binary
! Solve the problem: maximize the number of passengers staying on board
maximize(Transfer)
! Solution printing
writeln("Passengers staying on board: ", getobjval)
forall(i in PLANES)
writeln(i, " -> ", getsol(sum(j in PLANES) j*cont(i,j)), " (",
getsol(sum(j in PLANES) PASS(i,j)*cont(i,j)), ")")
end-model
|