A chain of department stores uses a fleet of vans rented from different rental agencies. For the next six months period it has forecast the following needs for vans (Table10.12):
Table 10.12: Requirements for vans for six months January February March April May June
430 410 440 390 425 450
At the 1stJanuary, the chain has 200 vans, for which the rental period terminates at the end of February.
To satisfy its needs, the chain has a choice among three types of contracts that may start the first day of every month: 3-months contracts for a total cost of $1700 per van, 4-months contracts at $2200 per van, and 5-months contracts at $2600 per van. How many contracts of the different types need to be started every month in order to satisfy the company’s needs at the least cost and to have no remaining vans rented after the end of June?
rent43 rent 42 rent52 1 2 3 4 5 6 rent 51 rent 33 rent34 Month
Figure 10.4: Running contracts in month 5 (May)
10.6.1
Model formulation
Let NINIT be the number of vans already rented at the beginning of the planning period. We define integer variables rentcmto denote the number of contracts of type c (c ∈ CONTR = {3, 4, 5}) to start at the beginning of month m (m ∈ MONTHS = {1, . . . , 6}). To clarify the constraint formulation we are using, let us first look at a specific formulation. Take for example the constraint for month 5 (May) represented in Figure10.4: the running contracts may be 5-months contracts signed in January, 4 or 5-months contracts signed in February, 3 or 4-months contracts signed in March, or 3-months contracts signed in April. These contracts must satisfy the requirement of 425 vans for the month of May. Note that for instance a 5- month contract cannot be signed in March because it does not terminate at the end of June, nor can any contract be signed in May.
m = 1 : NINT + rent31+ rent41+ rent51≥430
m = 2 : NINT + rent31+ rent41+ rent51+ rent32+ rent42+ rent52≥410
m = 3 : rent31+ rent41+ rent51+ rent32+ rent42+ rent52+ rent33+ rent43≥440
m = 4 : rent41+ rent51+ rent32+ rent42+ rent52+ rent33+ rent43+ rent34≥390
m = 5 : rent51+ rent42+ rent52+ rent33+ rent43+ rent34≥425
m = 6 : rent52+ rent43+ rent34≥450
It is possible to write these constraints in a generic way. Let NM denote the number of months, COSTc the cost per van of contracts of duration c, and REQmthe requirement of vans in month m.
minimize X c∈CONTR X m∈MONTHS COSTc· rentcm (10.6.1) ∀m = 1, 2 : NINIT + X c∈CONTR min(m,NM−c+1) X n=max(1,m−c+1) rentcn≥ REQm (10.6.2) ∀m = 3, . . . , NM : X c∈CONTR min(m,NM−c+1) X n=max(1,m−c+1) rentcn ≥ REQm (10.6.3)
∀c ∈ CONTR, m ∈ MONTHS : rentcm∈IN (10.6.4)
The objective function is to minimize the total cost for all contracts that are signed (10.6.1). A contract lasts c months, therefore the requirement of vans in any month m is covered by the contracts of type c signed in the months max(1, m − c + 1) and min(m, NM − c + 1). The constraints (10.6.3) specify that starting from March the signed contracts have to cover the need for vans of the month. For January and February, the constraints (10.6.2) also include the number of vans initially available NINIT.
The constraints (10.6.4) establish the integrality constraints for the variables. From LP theory it is possible to show that this mathematical program is equivalent to a minimum cost flow problem that is known to have integer values at the (linear) optimum. It is therefore possible to replace the constraints (10.6.4) by simple non-negativity conditions.
10.6.2
Implementation
The constraints (10.6.2) and (10.6.3) of the mathematical model are combined into a single statement in the following Mosel program.
model "E-6 van rental" uses "mmxprs"
declarations NM = 6
MONTHS = 1..NM ! Months
CONTR = 3..5 ! Contract types REQ: array(MONTHS) of integer ! Monthly requirements COST: array(CONTR) of integer ! Cost of contract types
NINIT: integer ! Vans rented at beginning of plan rent: array(CONTR,MONTHS) of mpvar ! New rentals every month
end-declarations
initializations from ’e6vanrent.dat’ REQ COST NINIT
end-initializations ! Objective: total cost
Cost:= sum(c in CONTR, m in MONTHS) COST(c)*rent(c,m) ! Fulfill the monthly requirements
forall(m in MONTHS) if(m<=2, NINIT, 0) +
sum(c in CONTR, n in maxlist(1,m-c+1)..minlist(m,NM-c+1)) rent(c,n) >= REQ(m)
! Solve the problem minimize(Cost) end-model
In this implementation, we use the Mosel functionsmaxlistandminlistto calculate respectively the maximum and minimum value of a list of numbers. In this example, each time only two numbers are given as arguments to these functions, but in the general case the lists may have any finite number of entries, such asmaxlist(2,-10,A(3),B(7,-5))(whereAandBare assumed to be arrays of integers or reals). These two functions should not be confused with the aggregate operatorsmaxandminthat provide a similar functionality, but are used with set expressions, such asmax(i in ISET) A(i)(where Ais an array of integers or reals indexed byISET).
10.6.3
Results
The optimization algorithm finds a minimum total cost of $1,261,000. The table shows the new contracts signed every month and the resulting totals.
Table 10.13:Plan of van rentals
New contracts January February March April May June
3 months 230 0 0 240 0 0
4 months 0 0 210 0 0 0
5 months 0 0 0 0 0 0
Total 430 430 440 450 450 450
Note that the requirement to have no vehicles on contract at the start of July is very distorting.
10.7
References and further material
In our transport example of Section10.1(car rental), the availability is equal to the total demand. When dealing with an unbalanced case like an offer that is larger than the demand, the constraints (10.1.2) must be changed into inequalities ensuring that no origin delivers more than it has available. Before
Linear Programming was invented, transport problems had already been studied in the 1930s and 40s, in the USA by Hitchcock [Hit41], in the USSR by Kantorovitch. There are efficient specialized algorithms like the stepping stone algorithm [BJ90].
The choice of modes of transport in Section10.2is a minimum cost flow problem in a graph. Fast al- gorithms for this problem that work directly on the graph are available. An algorithm with a good simplicity/performance ratio is the one by Busacker and Gowen; a Pascal source is provided in [Pri94a]. Other algorithms are given by Ahuja et al [AMO93].
The problem of depot location (facility location problem) in Section10.3is a mixed-integer problem with continuous variables for the transported quantities and binary variables for the construction decisions. This problem is NP-hard, even with depots of infinite capacity. Tree-based methods like the one by Erlenkotter [Erl78] are able to solve problems of a certain size (100 customers). A book by Daskin describes a large number of other location problems [Das95].
The heating oil delivery problem in Section10.4is a typical case of a vehicle routing problem (VRP). The formulation given here is only suitable for small instances (20-30 customers). Some specialized tree search methods are able to solve to optimality instances with up to 100 customers [LDN84] [BMR94], even for the case that the delivery to clients needs to take place in certain time windows [DDS92]. Beyond this limit of 100 customers, it is recommended to use heuristic methods like the one by Clarke and Wright [CW64]. An overview on classical heuristics is given by Christofides [CMT79b]. Metaheuristics like tabu search find good solutions for large sized instances [GHL94].
The mathematical program for the intermodal transport problem in Section10.5uses an excessively large number of variables when the number of cities and especially the number of modes of transport grow larger. Luckily, it may be solved efficiently with a Dynamic Programming method (a kind of recursive optimization) [Kas98]. The case studied here is relatively simple because the cities form a unique path. The problem gets very hard for an arbitrary graph.
Like the problem of personnel planning for a construction site in Chapter 14, the van fleet planning problem in Section10.6belongs to a category of optimization problems in which the requirements for a period are satisfied by resources that are used during more than one period. Another problem of this type consists of assigning shifts or other tasks to persons that are available for a certain number of hours. The associated mathematical programs have a series of consecutive coefficients of value 1 in their columns. It is possible to show that they are equivalent to minimum cost flow problems [AMO93].
Chapter 11
Air transport
The domain of air transport is a fertile ground for original and difficult optimization problems. The fierce competition between airlines has led to the development of Operations Research departments at the largest ones (such as American Airlines, Delta Airlines, British Airways, and more recently, the renais- sance of such a department at Air France). This chapter illustrates the diversity of applications, involving passenger flows, flight crews, aircraft movements, location of hubs (flight connection platforms), and flight trajectories.
In the first problem (Section11.1), the incoming planes at an airport need to be assigned to the flights leaving from the airport in order to minimize the number of passengers (and hence the luggage) who have to change planes. The problem in Section11.2consists of forming flight crews according to vari- ous compatibility and performance criteria. Section11.3describes an interesting and original problem, namely scheduling the landing sequence of planes on a runway. The choice of the architecture of a net- work (location of hubs) is dealt with in Section11.4. The subject of Section11.5is a case of emergency logistics (the provision of a disaster-stricken country with fresh supplies).
11.1
Flight connections at a hub
The airline SafeFlight uses the airport Roissy-Charles-de-Gaulle as a hub to minimize the number of flight connections to European destinations. Six Fokker 100 airplanes of this airline from Bordeaux, Clermont- Ferrand, Marseille, Nantes, Nice, and Toulouse are landing between 11am and 12:30pm. These aircraft leave for Berlin, Bern, Brussels, London, Rome, and Vienna between 12:30 pm and 13:30 pm. The numbers of passengers transferring from the incoming flights to one of the outgoing flights are listed in Table11.1.
Table 11.1: Numbers of passengers transferring between the different flights Destinations
Berlin Bern Brussels London Rome Vienna
Origins Bordeaux 35 12 16 38 5 2 Clermont-Ferrand 25 8 9 24 6 8 Marseille 12 8 11 27 3 2 Nantes 38 15 14 30 2 9 Nice – 9 8 25 10 5 Toulouse – – – 14 6 7
For example, if the flight incoming from Bordeaux continues on to Berlin, 35 passengers and their lug- gage may stay on board during the stop at Paris. The flight from Nice arrives too late to be re-used on the connection to Berlin, the same is true for the flight from Toulouse that cannot be used for the destinations Berlin, Bern and Brussels (the corresponding entries in the table are marked with ‘–’). How should the arriving planes be re-used for the departing flights to minimize the number of passengers who have to change planes at Roissy?
11.1.1
Model formulation
Let PLANES be the set of aircraft (the number of which also corresponds the numbers of flight origins and flight destinations) and PASSijthe number of passengers transferring at the hub from origin i to the flight with destination j. We introduce binary variables contijthat take the value 1 if and only if the plane
coming from i continues its journey to destination j. The following LP represents the problem: maximize X i∈PLANES X j∈PLANES PASSij· contij (11.1.1) ∀j ∈ PLANES : X i∈PLANES contij= 1 (11.1.2) ∀i ∈ PLANES : X j∈PLANES contij= 1 (11.1.3)
∀i, j ∈ PLANES : contij∈ {0, 1} (11.1.4)
The initial objective was to minimize the number of passengers that change planes, but this objective is equivalent to the objective (11.1.1) that maximizes the number of passengers staying on board their plane at the hub. The constraints (11.1.2) indicate that every destination is served by exactly one flight, and the constraints (11.1.3) that one and only one flight leaves every origin. The constraints (11.1.4) specify that the variables are binaries. Note that since this problem is an instance of the well known assignment problem the optimal LP solution calculated by the simplex algorithm always takes integer values. It is therefore sufficient simply to define non-negativity constraints for these variables. The upper bound of 1 on the variables results from the constraints (11.1.2) and (11.1.3).
11.1.2
Implementation
In the data arrayPASS, that is read in from the filef1connect.datby the following Mosel implementa- tion of the mathematical model, the ‘–’ of the table are replaced by large negative coefficients (–1000). This negative cost prevents the choice of inadmissible flight connections. Another possibility would be to leave the corresponding entries of the arrayPASSundefined and to test in the definition of the variables whether a connection may be used. This formulation has the advantage of using fewer variables if not all flight connections are feasible, but it cannot be used if there are admissible flight connections that are not taken by any passengers.
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
! Solve the problem: maximize the number of passengers staying on board maximize(Transfer)
end-model
11.1.3
Results
In the optimal solution, 112 passengers stay on board their original plane. The following table lists the corresponding flight connections
Table 11.2: Optimal flight connections Plane arriving continues to Number of from destination passengers
Bordeaux London 38 Clermont-Ferrand Bern 8 Marseille Brussels 11 Nantes Berlin 38 Nice Rome 10 Toulouse Vienna 7