Transportation Research Part E 131 (2019) 292–307
Contents lists available at ScienceDirect
Transportation Research Part E journal homepage: www.elsevier.com/locate/tre
A multistage stochastic programming model for the network air cargo allocation under capacity uncertainty
T
Felipe Delgadoa, , Ricardo Trincadoa, Bernardo K. Pagnoncellib ⁎
a
Department of Transport and Logistics, Pontificia Universidad Católica de Chile, Vicuña Mackenna 4860, Macul, Casilla 306, Correo 22, Santiago, Chile Escuela de Negocios, Universidad Adolfo Ibáñez, Diagonal las Torres 2640 Peñalolén, oficina 533-C, Chile
b
ARTICLE INFO
ABSTRACT
Keywords: Air cargo Revenue management Stochastic programming Decomposition algorithms
We propose a multistage stochastic programming model to optimally allocate cargo to the passengers network in order to maximize profit, taking into account incomes, costs and penalties for not delivering cargo that was previously accepted. Flights have a discrete number of possible capacity outcomes, with known probabilities, and uncertainty is represented by a scenario tree. The resulting problem is a large-scale linear program, and we use decomposition techniques to solve it, leveraging on the problem structure in order to be able to find good quality solutions. Our numerical experiments are based on a real network of a major commercial airline.
1. Introduction In the recent years the use of belly cargo has increased significantly, and in parallel air-cargo freighters observed very competitive market conditions that damaged their bottom line. Traditional companies such as Cargolux reported decline in profits, mostly because of the competition with belly cargo (Air Cargo News, 2015; Lennane, 2012). Evergreen International Airlines Inc. suspended operations, and Atlas Air Worldwide Holdings, Inc. initiated a bankruptcy-protection process. The market share of air freighters dipped below 50%, and some experts claim that it may fall to 30% in the coming years. The market is currently dominated by giant companies such as FedEx, UPS and DHL, which own very dense and highly efficient service networks that allow for attractive margins. Still, even those companies make use of belly cargo for part of their loads. Fig. 1, from Anjaparidze (2016), shows a sharp decrease in the capacity added for freighter together with a steady increase in the cargo capacity added in the belly space of passenger aircrafts. Several factors contribute to this shift in importance from traditional air cargo freighters to belly cargo. In the last 10 years, many commercial airlines have upgraded their fleet with Boeing 777 or Airbus 350 aircraft, which have significant belly capacity. According to Bowman (2014), the available belly capacity of the Chicago-Frankfurt route is equivalent to more than twenty 747 freighter loads. For airlines with large networks, as is our commercial partner in this work, significant belly cargo capacity adds enormous flexibility to the transportation network. When cargo demand is low, air freighters sometimes have to leave air planes on the ground, while belly cargo can still be used to transport smaller loads since passenger routes fly regularly, irrespective of the cargo demand. In the case of belly cargo one may say that operation costs are alleviated by the paying passengers, decreasing the need for exclusive air freighters. Airline companies such as China Southwest and LATAM are parking—or leasing—part of their cargo fleet due to the availability of more belly cargo space (Bowman, 2014; Ball, 2015). Another significant factor is the relatively small size of
⁎
Corresponding author. E-mail addresses:
[email protected] (F. Delgado),
[email protected] (R. Trincado),
[email protected] (B.K. Pagnoncelli).
https://doi.org/10.1016/j.tre.2019.09.011 Received 24 April 2019; Received in revised form 16 September 2019; Accepted 23 September 2019 1366-5545/ © 2019 Elsevier Ltd. All rights reserved.
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 1. Comparison between the two transportation modes.
technological products that has been demanded lately, for which belly cargo is a perfect alternative of transportation (Johnsson, 2014). We are not claiming that air freighters are going to disappear, or to become irrelevant in the air cargo business. Advantages such as large doors, and very flexible schedules still give those companies an important edge. But the emergence of large wide-body airplanes and airlines with networks spread all over the globe definitely increases the importance of belly cargo mode, and motivates the development of models that incorporate air cargo within the passenger network. One fundamental difference with freighters is related to the uncertainty in cargo capacity, which is only revealed shortly before the flight takes off. Weather conditions and changes in the air density due either to airports located at high altitudes, or in cities with high temperatures can have a significant impact on cargo capacity. Moreover, the number of passengers and total luggage on-board, especially in flights with a large proportion of connecting passengers, are also relevant sources of capacity uncertainty (Morrell, 2011; Kasilingam, 1997). This study focus on the allocation of the booked capacity to different legs using belly cargo as the sole transportation mode. We propose a multistage stochastic programming model for this problem which includes uncertainty in the belly capacity and demand. We model demand as a chance constraint, enforcing that with high probability there should be no shortages. Capacity uncertainty is represented using a scenario tree. With the inclusion of uncertain capacity, the computational burden of solving the problem directly is significant, and we use a decomposition scheme to efficiently solve realistic instances of the problem. The rest of the paper is organized as follows. Section 2 reviews the related literature. In Section 3 we describe our model and the notation we use, and cast the multistage stochastic programming formulation for the air cargo problem. In Section 4 we solve a toy instance of the problem that illustrates unique features of the solution due to the presence of capacity uncertainty. Section 5 details the decomposition scheme employed to solve the problem, and in Section 6 we perform extensive numerical experiments for a constructed instance, and study how the solution changes with variations in the problem’s parameters. We also present the results of our case study using real data, including some managerial insights. Finally, Section 7 concludes the paper. 2. Literature review Most of the work in air cargo transportation studies the airline schedule planning sub-problems and the optimization of revenue management strategies to maximize profits for the company. In the first group, Marsten and Muller (1980) study the service network design and fleet assignment problem for an all-cargo airline. Yan et al. (2006) propose an integrated scheduling model combining airport selection, fleet routing and timetable setting. The problem is formulated as a mixed integer programming model and the authors develop different heuristics to solve the problem. Tang et al. (2008) extend the previous work by considering the integrated scheduling that combines passenger, cargo and combi flights (that combine the transport of passengers and cargo on one aircraft at the same time). In Derigs et al. (2009), the authors develop an integrated model for the freighter network planning by simultaneously considering flight selection, aircraft rotation planning, and cargo routing. They used an incremental approach to improving schedules through flight selection from a list of mandatory and optional flights, and use the column generation technique with shortest path algorithms for solving the sub-problems. Although the literature presented above addresses different airline planning sub-problems, the focus is on freighter airlines. Capacity uncertainty is not considered in any of the works since it is a peculiarity of belly cargo. In the second group, Kasilingam (1997) divide the cargo revenue management process into four steps: (1) forecast the cargo capacity for sale in terms of weight, volume and positions, (2) allocate space for allotment contracts (examples include (Amaruchkul et al., 2011; Levin et al., 2012; Moussawi-Haidar, 2014; Wada et al., 2017)), (3) overbooking of the remaining capacity (see the works (Kasilingam, 1997; Luo et al., 2009; Moussawi-Haidar and Cakanyildirim, 2012)) (4) capacity allocation to different markets. Our work directly relates with the operational decisions regarding capacity allocation. The majority of the literature in capacity allocation has focused on the single-leg flight case. For this problem, Zhuang et al. (2012) propose a dynamic programming model for the spot capacity allocation problem. The authors consider that each cargo is characterized by a one-dimension random demand (e.g. 293
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
weight) following a normal distribution, while capacity is considered to be deterministic. The work by Han et al. (2010) proposes a markovian model and extend the previous work by considering that each spot cargo demand is stochastic in its two-dimensions of weight and volume. The proposed model does not consider the possibility of cancellations or no-shows. For a similar problem formulation, Amaruchkul et al. (2007) include an oversale penalty for cargo that needs to be off-loaded. Moussawi-Haidar (2014) develops two interrelated problems: the first model determines the allotment contracts, while the second is a dynamic problem for accepting spot bookings which takes into account that the decisions in each time period depend on the total weight and volume of the allotment and spot show-ups. All the above studies consider that capacity is a deterministic value. The complexity of the problem increases when it is analyzed in a network, as the capacity of a flight leg is now shared by multiple products that have different origin–destination pairs. Levin et al. (2012) consider parallel flights to transport a set of cargo from an specific origin–destination pair in order to model the consumer choice in the spot market. The aim of the model is to select the allotments contracts and bookings in the spot market with the objective of maximizing profits, taking into account a penalty factor for allotment or spot cargo off-loaded. Sandhu and Klabjan (2006) propose an integrated fleeting model that considers passenger and cargo revenue. To do so, the authors consider an integer programming formulation that includes cargo routing. The proposed model is static and does not consider the inherent stochasticity in the cargo demand and capacity. The closest paper to our study is the one by Huang and Lu (2015) which focuses on the network RM short-term space control and consider that weight, volume, and rate of the shipments can be stochastic. They formulate their problem as a multi-dimensional dynamic programming model which is not directly solved. Instead, the authors present two deterministic linear programming models to estimate the opportunity cost of the resources consumed by a booking request. Finally, the authors introduce a dynamic adjustment factor to alleviate the inaccuracy problem of the static LP models in estimating resource opportunity cost. The proposed method is tested in a small four-leg network. Despite the innovations proposed in theses studies on cargo allocation, none has considered capacity uncertainty in its formulation. This paper studies the capacity allocation problem from an operational perspective. Our aim is deciding which spot requests to accept (and the corresponding routing from its origin to destination) considering the whole airline network. We propose a multistage (sequential and dynamic) problem, with several sources of uncertainty. Specifically, we consider multiple request types, where each spot request has a weight and volume which can be stochastic, and each flight leg capacity can also be uncertain. To the best of our knowledge, the current work is the first to consider capacity uncertainty in a network, which we believe is necessary in order to have realistic cargo models. The number of rerouting possibilities in this network are vast, which allows for multiple possibilities of delivering a cargo on time. We work with a realistic network from our commercial partner, and the flow is done by legs rather than paths, allowing for maximum flexibility in terms of possible routes. Our model can be seen as a Stochastic Multicommodity Flow Problem (SMPF), as described in Glockner and Nemhauser (2000) and Soroush and Mirchandani (1990). The model differs from the ones in the network reliability literature, which typically consider random arcs and nodes that may not be present in the network with some probability (see Lin, 2007 and Barrera et al., 2016). Our second contribution is algorithmic. Instead of solving the resulting formulation directly, we adapt a decomposition scheme called Nested Decomposition (ND) to efficiently solve realistic instances (see Birge and Louveaux, 2011). The ND is based on the generation of sequential linear approximations to the value function, called cuts, and in this work we derive recursive closed-formulas for those cuts. Similar decomposition algorithms have been used in Energy Planning and Transportation Problems (e.g. Fhoula, 2013; Santos and Diniz, 2009), and the technique can find excellent quality solutions with optimality bounds, which is not always the case with heuristic approaches. Our model lacks Markovian properties, that is, it is necessary to store past decisions from several stages in order to make a decision at the present. 3. Model description The problem is formulated as a variation of a Multi-Commodity Flow Problem considering uncertainty in flight capacity. We consider a time–space network that resembles the passenger flight network of an airline carrier. In this network, each node represents a specific airport at a point in time, while each arc v represents a flight. Each flight v has an associated cost c v and a capacity both in terms of weight and volume, which are uncertain and will be defined later. At the beginning of the first stage, the airline has to decide how much of each request k to accept, and at every stage t the amount of each request that will be transported via belly cargo for flights departing at t. Our model can be easily extended to allow the acceptance of requests at every stage. If we were to add this flexibility, the formulation would be the same but the notation would be too cumbersome. Interestingly, the model would be easier to solve because we would not need to carry the information of all accepted requests for many stages, as is the case when all requests appear in the first stage. A request k is defined by its node of origin and destination, its potential random demand Dk in kilograms, density k [kg./pallets] and tariff pk charged by the airline, in $/kg. In this study, we assume that allotment contracts have already been signed and they show up in the day of the booked flight. An allotment is a long term agreement between a customer and an airline specifying the weight of the load to be transported, for instance on a weekly basis (Gupta, 2008). Therefore, the capacity of each flight should be regarded as the capacity that is available for free contracts. Payments for transporting the load are received in the first period, where loads are accepted. Thus, the model allows to accept a request, transport it partway and then abandoned if the capacity realization is lower than expected. However, the model discourages this situation since a linear penalty Lk is incurred for units not delivered on time. 3.1. Formulation Our problem is better described in discrete time, and given the availability of data we decided to use the multistage stochastic programming framework. In such models, the first step is to represent the uncertainty, which is usually done using scenario trees (Xu 294
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 2. An example of a scenario tree.
et al., 2015; Heitsch and Römisch, 2009; Heitsch and Römischeitsch, 2005; Pflug, 2001). In some cases the scenario tree is constructed as an approximation of an underlying continuous process, e.g. a geometric Brownian motion for assets returns, and the tree is defined as the closest representation of such a process according to some metric (Pflug and Pichler, 2015; Kovacevic and Pichler, 2015). For our model no tree representation or underlying process was available, and we built the tree based on the data provided by our commercial partner. Although the real problem has several sources of uncertainty, we believe the most relevant ones are capacity and demand. The tree represents outcomes for each possible capacity realization in a given flight. We model demand as a chance constraint, enforcing that with high probability there should be no shortages. Following Kasilingam (1997) we will assume demand follows a normal distribution, and therefore it can be integrated and converted into a deterministic constraint. An important aspect of our model, which is one of the contributions of the paper, is how to define the stages, which amounts to defining the information structure of the problem. Some flights will have no variability, and they do not constitute a new stage. For example if a flight fa with no capacity uncertainty departs, say, 1 h after a flight f1 with random capacity, but 2 h before another flight f2 with uncertain capacity, flight fa belongs to the same stage of flight f1. In other words, stages are defined based on the order in which information is revealed. In Fig. 2 we consider a tree for a problem with five flights whose capacities have two possible outcomes (high and low), with the exception of flight four, which has known capacity. In this case flights three and four belong to the third stage and the fifth flight belongs to the fourth stage, for a total of 24 = 16 scenarios. Highlighted in dashed line is scenario five consisting of f1 with high capacity, f2 with low, while f3 and f5 have high capacity. More formally, a tree starts at a root node in which decisions must be taken and no information is revealed. To the root node are connected children nodes associated to stage 1. Each of those children nodes represents one possible realization of the random variable associated with capacities of flights belonging to this stage. To each of those nodes additional children nodes are connected, defining the nodes on stage 2, and so on until the last stage is reached. Note that in this construction each node has only one parent node. A scenario is a path from the root node to a node that belongs to the last stage. The formulation per scenario (which is the one we adopt), as opposed to a formulation per node, scales better as the tree grows and it is simpler to write. However, it requires imposing nonanticipativity constraints, which state that for a given stage t, the decision taken under scenarios s1 and s2 must be the same if those scenarios are indistinguishable up to stage t. In our example on Fig. 2, for stage 2 we are going to have four different decisions because decisions for scenarios (1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12) and (13, 14, 15, 16) must coincide. We show the explicit optimization formulation of the problem, and the notation is shown on Table 1.
295
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Table 1 Notation used in the model. Sets K V S Vv
All potential requests. All flights in the network. All scenarios. All flights that arrive at vs origin with enough connection time to move load to flight v, or depart from vs origin before v departs. Scenarios that are indistinguishable up to stage t.
St Parameters
Density of request k [kg./pallets]. normal demand for request k [kg.] confidence level for request k average demand for request k [kg.] standard deviation for demand k [kg.] probability that scenario s occurs. penalty factor for unit of request k not delivered [$/kg.]. Amount charged by the airline to transport request k [$/kg.]. unit cost of request transported per flight v [$/kg.]. random weight capacity of flight v under scenario s [kg.]. random volume capacity, of flight v under scenario s [pallets]. 1 if flight v has the same origin as request k, 0 otherwise.
k
Dk k
mk k
Ps Lk pk cv Q w (v , s ) Qo (v, s) v k v k g v
Min
µkv
1 if the destination of flight g coincides with the origin of flight v, −1 if flight g has the same origin as flight v, and 0 otherwise. 0 if the origin of flight v coincide with the destination of request k,
Decision variables x (k, v, s ) Y (k , s ) w (k , s )
flow of request k on flight v under scenario s [kg.]. total amount of request k accepted under scenario s [kg.]. amount of request k not delivered under scenario s [kg.].
Ps
and 1 otherwise.
pk · Y k , s
s S
s.t.
1 if flight v has the same destination as request k, 0 otherwise.
c v· x k , v , s
k K
Y (k , s )
mk +
x k, v , s
Lk ·w k , s
(1)
v V 1(
k
k)
k
K, s
Q w v, s
v
V, s
S,
Qo v, s
v
V, s
S,
(2)
S,
(3)
k K
x (k , v , s )
(4)
k
k K
x k, v , s
v k ·x
v k ·Y
g v ·x
k, s +
k, g, s
k
K, v
K, s
S,
V, s
g Vv
k, v , s + w k, s = Y k, s
k
x (k , v , si ) = x (k, v, sj ) Y (k, si ) = Y (k, sj ) x (k , v , s )
µkv ·(mk
si, sj si, sj
+
1(
k
x (k , v , s ), Y (k, s ), w (k , s )
St , k
v
V, k
(5)
(6)
v V
St,
S,
(7)
K,
(8)
K,
k ))
k
K, v
V, s
S,
(9)
0
k
K, v
V, s
S,
(10)
where (·) is the cumulative distribution function of a standard normal random variable. The objective (1) maximizes the expected profits of the network (minimizes the negative of profits), taking into account the incomes obtained by each request, the operational cost of each flight, and a penalty for those cargo that were accepted but not delivered. Constraint (2) is the deterministic equivalent of the chance constraint
P (Y (k , s )
Dk )
1
k.
Flight capacity both in terms of weight and volume are enforced by constraints (3) and (4), while the constraints in (5) are the flow 296
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 3. Network for small example.
balance constraints. Constraint (6) determines the penalty for not flying an accepted request; (7) and (8) are the nonanticipativity constraints (see Birge and Louveaux (2011) for details). These constraints guarantee that a decision cannot anticipate which scenario may occur when two or more scenarios are indistinguishable up to some node. Constraint (9) enforces that an accepted request can not be moved when it arrives at its destination. Finally constraints (10) impose that all variables must be greater or equal to zero. 4. An illustrative example We present a simple example that illustrates the problem we are dealing with and shows that when capacity is random, fundamentally different policies appear when compared to the deterministic case. Let us consider the network shown in Fig. 3, with 4 flights serving three different airports A, B and C. Data is described in Table 2, and O-D stands for origin–destination. For the stochastic case we have two equally likely outcomes for each flight, a pessimistic and an optimistic, leading to a fourth stage stochastic program. For the deterministic version of the problem we assume that the values for weight and volume are the averages of the values in Table 2. For example, for flight 2 the maximum weight for the deterministic version will be (6.4 + 16)/2 = 11.2, and the maximum volume transported equals (8 + 20)/2 = 14. There are three requests that can be accepted, and for simplicity we assume that the demand is deterministic. The data corresponding to the requests is displayed in Table 3. The solutions for the deterministic and stochastic problem are in Table 4. For the stochastic case we are reporting the first stage solution, which has to be the same for all scenarios, so we define Y (k ) Y (k, s ) in this case. For the deterministic case, since the second request has the higher tariff, one would like to accept the highest possible load through the cheapest route (flights 1 and 2), which in this case is 9100 kgs (9100/650 = 14) due to the volume limitation for flight 2. The remaining volume for flight 1 should be filled with request 1, which will be delivered at destination B. Finally, the remaining amount of request 2 should be sent through flight 4, which is more expensive but still lucrative. For the stochastic case, when the capacity for flight 1 is optimistic, 7800 kg. of request 1 are sent to destination B. When a pessimistic scenario occurs for flight 2, only 5200 kg. reach destination C through flight 2. The remaining 2600 kg. are then sent back to A on flight 3, and reach C via flight 4. It is important to remember that unlike passengers, cargo does not complain of many connections and of long layovers. Fig. 4 shows the routing of each request and the amount transported in each leg for the deterministic solution and for the scenario described above for the stochastic case. This example illustrates the importance of considering random capacity in air cargo problems. In particular, low capacity outcomes in some flights can generate rerouting of cargo through the network, and in general such effect is not present in a deterministic Table 2 Data for the small example. Capacity Flight
1 2 3 4
Pair
Cost
Pessimist
O-D
(USD/kg.)
Weight (Tons)
Volume (Pallets)
Weight (Tons)
Volume (Pallets)
A-B B-C B-A A-C
0.20 0.22 0.15 1.30
12.8 6.40 10.4 16.0
16 8 13 20
16.0 16.0 14.4 19.2
20 20 18 24
297
Optimist
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Table 3 Data for loads. Request
Pair O-D
Max load (Ton)
Tariff (USD/kg.)
Penalty (USD/kg.)
Density (kg/pallet)
1 2 3
A-B A-C B-C
12 25 16
2.5 4.0 1.5
6.25 10.00 3.75
500 650 800
Table 4 Deterministic and stochastic objective function values (OFV) and solutions. Version
OFV
Y (1)
Y (2)
Y (3)
Deterministic Stochastic
-$75788 -$63428
2000 4000
23400 18200
0 3200
setting. We believe rerouting is a key feature of air cargo models in the sense that it is a way to hedge against low capacity flights. In the next section we will show how we adapted an existing decomposition scheme to our problem in order to solve large instances. 5. Methodology Stochastic programming problems are very challenging to solve, and aside from special cases, one cannot find the optimal solution by solving the problem directly. Efficient algorithms exist for two-stage stochastic programming problems, but multistage problems are significantly more challenging. Trying to solve the problem directly, writing down all nonanticipativity constraints is not tractable. Several algorithms are available in the literature, but the choice of the best one is problem-dependent. In this work we will apply the Nested Decomposition (Donohue and Birge, 2006) to our air cargo transportation problem. The Nested Decomposition (ND), which can be seen as an extension of the L-Shaped method to multistage problems, has been applied to problems in energy (Finardi et al., 2013) and finance (Parpas and Rustem, 2007), and uses cutting planes to generate lower bounds for the value function at each stage. 5.1. Dynamic programming equations The first step is to write dynamic programming equations for each stage based on formulation (1)–(10). For the last stage T we have
JT (Y (k ), x[1, T
1] (k ,
Min
c v x (k , v ) +
x (k , v ), v VT
s.t.
g ), QwT (v , s ), QoT (v , s ))=
k K v VT
x k, v
k Lk w (k )
(11)
k K
QwT v , s
v
VT ,
(12)
k K
x (k , v ) k K
k
QoT v, s
v
VT ,
(13)
Fig. 4. Routing of each request under a) the deterministic solution and b) stochastic scenario with f1 = O, f2 = P, f3 = O or P f4 = O. Note: O stands for optimistic and P for pessimistic. 298
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al. g v ·x (k ,
x (k , v )
v ^ k · Y (k )
g)
g VT g k ·x (k ,
x (k , v ) +
g ^ v · x (k ,
+
g ) + w (k ) = Y^ (k )
g VT
k
K,
v
VT
( 1 (k , v , s )),
g ^ k · x (k ,
g)
{k v
v k
VT
= 1}
( 2 (k , v , s )),
g Ap
µkv ·(mk +
x (k , v )
g)
g Ap
k
1(
k ))
v
(14) (15) (16)
VT ,
where Vt represents all flights that belong to stage t , t = 1, …, T , and Ap represents all flights that came before the first flight of the current stage. We define k = h VT kh where the parameter kv equals 1 if flight v is the last flight that can transport request k, and 0 otherwise. Note that if flight v is not able to transport that fraction of the order that has not yet been sent to destination by previous flights, then a penalty must be paid for each unit w (k , s ) that did not reach its destination on time. The notation x[1, T 1] represents all past flows relevant to the current stage, belonging to stages prior to T. As is standard in stochastic programming, we suppress the dependence of x (k , v ) and Y (k ) on s since it is implicit that its value changes as the argument of JT changes. The first state variable contains the information of demands that were accepted. The second tells in which airports the loads transported are located at the current stage. The third and fourth variables simply fix capacity realizations, for volume and weight, in the flights belonging to the current stage. The only decisions in the period are related to routing for flights belonging to the current stage. At every stage the optimal value represents the cost incurred with a given routing decision. The Lagrange multipliers 1 (k, v , s ) and 2 (k, v , s ) for constraints (14) and (15) will be used later to construct the cuts. Note that constraint (15) only appears in those cases where flight v is the last flight able to transport request k. For stages t = 1…T 1 we have1
Jt (Y (k ), x[1, t
1] (k ,
g ), Qwt (v , s ), Qot (v, s )) = Minx (k, v ), v +
s.t.
Qwt (v , s )
x (k , v )
v
Vt
c v x (k , v ) + k K v Vt
k Lk w (k ) k K
[Jt + 1 (Y (k ), x[1, t ] (k, g ), Qwt+ 1 (v ), Qot+ 1 (v )) Qt ]
Vt ,
(18)
k K
x (k , v ) k K
k
Qot v, s g v ·x (k ,
x (k , v )
v
g k ·x (k ,
x (k , v ) +
Vt ,
(19)
v ^ k · Y (k )
g)
g Vt
g ^ v · x (k ,
+
µkv ·(mk +
g)
k
K,
v
Vt
{k v
Vt
( 1 (k, v, s )),
g Ap
g ) + w (k ) = Y^ (k )
g Vt
x (k , v )
g ^ k · x (k ,
g)
v k
= 1}
g Ap
k
1(
k ))
(17)
v
(20)
( 2 (k, v , s )), (21) (22)
Vt .
By the optimality principle, when t = 1 the formulation described in (17)–(22) represents an equivalent description of problem (1)–(10). At first sight one could directly apply the ND algorithm to the dynamic programming formulation (17)–(22). However, unlike the hydrothermal scheduling problem (HSP), in which the level of the reservoir summarizes all the information at a given stage, the value functions Jt in our problem depend on decisions from period t 1, but also from previous stages. For the air cargo transportation problem this Markovian property does not hold. At every stage it is relevant to know how much cargo was already sent from previous flights in order to know how much can be sent using future flights. Moreover, the first stage variable Y (k ), which defines how much of each request was accepted, is present at every stage, which clearly destroys the Markovian property aforementioned. In order to apply ND for the air cargo problem we developed a specialized version of the algorithm that, up to our knowledge, has not appeared in the literature before. 5.2. The Nested Decomposition for non-Markovian problems It is not our intention to described the ND in detail, since it is a well-established procedure to solve multistage stochastic programs. We refer the reader to (Birge and Louveaux, 2011) for a description of the algorithm in the form of pseudo-code, and (Finardi et al., 2013) for a numerical illustration on a simple HSP.
1
For t = 1 we need to include the term
k K
pk Y (k , s ) in the objective and add constraint (2). 299
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
From a theoretical viewpoint, a proof of convergence for the non-Markovian is unnecessary. Even when function J (·) depends on the whole past history of decisions, it does not change the fact that the cut construction generates an outer approximation of the value function via Lagrange multipliers. Moreover, finite convergence still holds since the finiteness of the tree is not related to the Markovian property, and the decision variables in our problem are all bounded (see Birge and Louveaux, 2011, Chapter 7, Theorem 1). In our problem infeasibility is not an issue since we have relatively complete recourse: setting the x variables to zero and incurring penalty costs for all requests is a feasible solution. What needs to be analyzed in detail are the algorithmic implications of the application of ND in a non-Markovian setting. The ND starts with a forward procedure that serves two purposes: to generate an upper bound on the optimal value, and to serve as anchor points for the cuts that will be generated. Such procedure is carried out unaltered when applying ND in the non-Markovian context. Following the forward procedure is a backward step that generates cuts to improve the approximations of the value functions at each stage. Following Pereira and Pinto (1985), equation (A20), a valid cut is given by
z
z + ¯ E (x
(23)
x)
where z is the approximation of the future cost function, x represents the solution obtained in the forward procedure, z ( ¯ ) is the average of the optimal values (Lagrange multipliers) obtained for the future cost function in the forward pass across all scenarios descending from a given node, respectively, and matrix E multiplies the state variables in the problem formulation. Starting with problem (11)–(16), the first step is to identify matrix ET that multiplies state variables (Y (k ), x[1, T 1] (k, g ), QwT (v, s ), QoT (v , s )) :
The labels in the rows represent the corresponding Lagrange multipliers for each constraint, and the labels for the columns refer to the state variables of the value function. Using (23), the cut for stage T 1 can be written as follows: K
zT
zT* +
h k ¯1 (k ,
( k=1
h VT
h)
h k ¯2 (k ,
h)) (Y^ (k )
K
+
( k = 1 g Ap
h VT
g h ¯1 (k ,
h) +
h g k k ¯2 (k ,
Y (k ))
h)) (x^ (k , g )
x (k, g )).
(24)
In expression (24) we observe that the whole history of decisions is needed to construct the cut. In particular, due to the nature of the problem, the amount Y (k ) accepted of each request k, which was decided in the first stage, needs to be stored. Moreover, a larger state space implies that larger amounts of information need to be stored, and that the hyperplane defined by the cut will have a larger dimension, potentially slowing down the executing of the algorithm. In the next session we show how to accelerate the construction of cuts by leveraging on the problem’s structure. 5.3. Closed-form expressions for the cuts In Markovian problems, only the multipliers of the structural constraints, such as (20) and (21) are used to construct the cuts. A fundamental difference in the non-Markovian setting is that the cuts and their multipliers at stage t are also used to build the cuts at stage t 1. In order to better understand how the multipliers of the cuts are combined with multipliers of the structural constraints, let us assume we are in an arbitrary stage t, but now j cuts have already been generated. The matrix Et in this case can be written
300
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
where 3 (j, t ) represents the multiplier associated with the j-th cut, (k, t , j) is the coefficient of Y (k ) in the cut on stage t and iteration j, and (k, g , t , j) is the coefficient of x (k , g ) in the cut at stage t and iteration j. The following proposition describes how to construct the cuts recursively. Proposition 1. For t = 1…T , the cuts in the j-th iteration of the ND are given by
zt j +
zt
k, t , j
Y (k )
Y (k ) +
k K
k, g , t , j k K
x k, g
x k, g
,
g Ap
(25)
and the coefficients satisfy the following recursion scheme: h j k ¯1
k, t , j =
k, h
h j k ¯2
j
k, h
h Ap
(k, F + 1, i ) = 0
k , i, g j h ¯1
h Ap
(k , g , F + 1, i ) = 0 3 (·)
t ) (k , t + 1, i ),
i=1
k, g , t , j =
where
j 3 (i ,
+
(·) is the average of
k, h +
h g k k
¯ 2j k , h
j
+
j 3 (i ,
t ) (k, g , t + 1, i ),
i=1
(26)
k , i. 3 (·)
(·) obtained in the forward pass across all scenarios descending from a given node.
Proof. We proceed by backward induction on t. For t = T , we already showed that the cut is given by expression (24). Assuming the result is valid for t, let us construct the cut for t 1. Using matrix Et 1, we see that the structural constraints on Y (k ) have coefficients t 1 and 1t 1. By induction, we know that the coefficients for Y (k ) in the cuts are given by vector ( (1, t , 1), …, (K , 1, 1)) . Collecting 1 terms, the coefficient of Y (k ), k = 1…K in the cut at stage t 1 is
301
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 5. Network for numerical experiments.
h j k ¯1
k, h
h j k ¯2
k, h
+
j 3 (1,
t ) (k , t , 1)
(27)
h Ap
when one cut is present at time t. The exact same approach can be used to derive the coefficients for x (k , g ) . When more cuts are present the last term in (27) simply becomes a summation over number of cuts already generated. Using equation (A.20) of Pereira and Pinto (1985) we obtain the cut given by (25), which concludes the proof. □ As shown by Proposition 1, for the non-Markovian case the coefficients (k, t , j) and (k, g , t , j) depend on all previous iterations and stages. Thus, to generate the cut in (25), it is necessary to store all (k, t , j) and (k, g , t , j) generated in previous iterations and stages for all requests and also for all flights previous to the first one in the current stage in the case of (k, g , t , j) . In the next section we will present our case study and solve the problem using the methodology described in this section. 6. Numerical experiments 6.1. Results for medium size problems Our first experiment is performed in a fictitious network composed of 40 flights, 5 of which present variability. The network has 10 airports and the flights depart at different times of the day, as shown in Fig. 5. The departure time of the flights with variability are distributed along the day and depart at different airports. A total of 70 requests are represented in the model, and a total of 25 OD pairs are considered. The weight of each request follows a normal distribution with a mean (mk ) ranging between 1.5 and 25 tons and variance (CVk mk )2 , where CVk is the coefficient of variation ranging between 0.1 and 0.3. The confidence level for each request k was set to k = 5%. The unitary costs were randomly defined as samples from a normal random variable with mean 6 and variance 4, and the total cost per flight (c v ) was obtained by multiplying the unitary value by the distance in kilometers. The tariff was obtained similarly, using a different normal distribution for each request. For the capacities of each flight, we sample from a normal distribution with mean = 20000 and standard deviation = 3500 . For the ones with variability, the pessimistic and optimistic states and + respectively. In the base case = 0.15, and we will show results for different values of . We were defined as consider 5 flights with variability, and since each can be in 3 different states our scenario tree has a total of 243 scenarios. A file with all the detailed information about the instance is available from the authors upon request. We first compare our model against solving the explicit optimization formulation presented in (1)–(10). The resulting model has 26.5 million constraints, where more than 25 millions are nonanticipativity constraints. The total time to construct the instance was above 9 h and the solution time was 790 s. This fact demonstrates that solving the explicit formulation directly could be impractical for larger instances. In what follows, we will show results for different experiments, constructed by changing some of the parameters of the model, and discussing the insights obtained in each case. When appropriate we will also compare the total time against the explicit formulation. The stopping criteria of the algorithm was defined as
(Upper bound Lower bound) Lower bound
tolerance.
(28)
In all experiments of this section we used a tolerance value of 0.1% . In our first experiment, we change the penalty factor Lk relative to the base case tariff. If the factor is 1, then the penalty is equal to the regular tariff, a value of 2 means it is twice as large as the base case, and so on. Results are shown in Table 5. When the penalty factor is 1, the solution accepts almost all requests since there is no significant loss in not delivering the products. As a result, the average demand that is not met is high. By increasing the multiplicative factor to 1.5, the demand not met decreases by more than 96%, evidencing the incentive to deliver the accepted products when the penalty increases. By increasing the multiplicative factor beyond 3 all demand accepted is delivered on time. 302
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Table 5 Results for increasing penalty factors. Penalty factor
1
1.5
2.0
2.5
3.0
Avg. Demand not met Total time (seconds) Solution time (seconds) Number of Iterations
26942 415 7 23
924 1490 21 56
551 2477 40 74
462 2242 36 71
53 3253 65 82
From an algorithmic perspective, the problem seems to become harder as the penalty factor increases, as both the time and number of iterations increase from the base case. By examining the solution we concluded that since the penalty factor is higher, the model explores more alternative routes in order to deliver the requests on time, and the cuts take more time to assimilate this information, which implies more iterations to solve the problem. In terms of total time, the proposed model never exceeds one hour, and solution times for all five experiments is on average near thirty seconds with just experiment 5 exceeding one minute. Compared to the explicit formulation, the proposed model is more than 14 times faster considering the total time, and more than 22 times faster when solution time is compared. We now consider changes in the variability of the random capacity. We fix the multiplier for the penalty at 2.5 and the number of possible capacity values to three but now with increasing variability. The results are in Table 6. With more variability, there is a possibility of having extra capacity, but also of having much less space than planned. We can see that as we increase the demand not met tends to increase, although not monotonically. Since our objective criterion does not change, that is, our decision maker is risk neutral, he suffers from the impact of higher variability. From an algorithmic viewpoint, the number of iterations remains relatively constant. Our interpretation is that the model gambles against uncertainty until the last minute, that is, if the capacity realization is low there are no additional routes that can deliver the request. Our final experiment deals with variations on the cost of transportation. We again start with our base case, and vary the cost by multiplying its value by = 1, 2 and 3. For each case, we examine 3 possible scenarios for the variability. The complete results are in Table 7. The most striking feature in Table 7 is the decrease in the demand accepted as cost increases. From the first to the last case, the decrease is on average 30%, showing that higher costs inhibit demand acceptance and profits much more significantly than increases in penalties do. As we observed before, if less demand is accepted the problem is greatly simplified, and the number of iterations decreases sharply for the second and third cases, essentially reducing to one third the number from the base case. Let us now analyze the effect of the variability in the solution, focusing on the demand not met. As cost increases, the demand not met sharply decreases, even reaching zero for the last two set of parameters. As we observed previously, the demand not met has a tendency of increasing with variability, for most cases. For values of greater than 3 the demand not met is zero since less demand is accepted due to the fact that the cost of transportation becomes larger than the tariffs paid. 6.2. Results for large-size problem The proposed model was applied to a case study on the Monday flight schedule of a high demanded week of the year 2014, involving the northbound network of our commercial partner. The company operates mainly in South America, but also serve cities in North America, Europe, Oceania, and Asia. The northbound network is composed of 103 requests and 52 flights, and seven of them have random capacity. The data used was provided by our commercial partner and comprise 11 days of flight for the whole airline’s network, encompassing around 1250 flights, 1300 requests overall from which we extracted the information for the northbound network. For confidentiality reasons the detailed information cannot be disclosed. The demand data contains, for each request, the date and time of arrival, the request origin and destination airport, its average potential demand, tariffs and densities. We assume for each request k that the coefficient of variation ranges between 0.1 and 0.3 and consider a confidence level k = 5%. In the network under study, different commodities are transported, including perishable products, fruit, vegetables, fish and general cargo. These commodities present significant differences in terms of potential demand, densities and tariffs. On the supply side the database includes specific details for each flight: associated number, aircraft type, departure (arrival) airport with its associated time, distance, operating costs and flight capacity both in terms of volume and weight. Four different fleet types operate in the network, each of which with its own characteristics. From the data we observe that for certain flights (i.e. a flight that connects the same O-D pair and departs every day at the same time) its capacity varies considerably among days. In our northbound network, Table 6 Results for increasing variability. (%)
0
5
10
15
20
25
30
Avg. Demand not met Number of iterations
0 56a
301.6 66
271.7 83
462.1 71
624.9 77
683.4 82
803.6 72
a
For the sake of comparison, we used our algorithm in this case by forcing all scenarios to be equal. 303
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Table 7 Results for changes in cost. 1
(%) Number of Iterations Demand not met Accepted demand
2
3
10
15
20
10
15
20
10
15
20
83
71
77
29
34
41
25
26
36
272
462
625
265
405
608
1
0
0
238447
239773
238747
195624
196261
195535
167960
167577
167744
the majority of the flights has low variability, with the coefficient of variation below 5%. However, 7 of them show a coefficient of variation greater than 10%. For our model, we consider these flights as the ones with random capacity. 6.2.1. Algorithmic performance The code was written in Python, and all computations were made in machines running Linux 2.6.32 under x86_64 architecture, with two quad-core Intel Xeon E5-2650 processors and 146 Gb of RAM. The solver used was Gurobi version 8.0. We set the tolerance parameter in (28) equal to 0.5%. The algorithm took 224 iterations, that is, it performed 224 complete forward and backward iterations in total, and the bounds obtained in the last iteration were
lower bound= 435757.01, upper bound= 433895.60, which means that a solution was found within 0.5% of the true optimal value. It is interesting to see how the algorithm evolved through iterations. In Fig. 6 we plot the upper and lower bound values obtained at each iteration. The lower bound is theoretically guaranteed to increase at every step, while for the upper bound we always choose the best candidate obtained so far. As is typical in cutting plane schemes, after the first iterations the gap decreases dramatically, and then it takes several steps to achieve the desired tolerance. In 30 iterations the solution was within 10% of the optimal value, on iteration 50 it was within 3%, and it reached the 1% on iteration 149. To halve the 1% level, the algorithm took an additional 75 iterations to reach the desire tolerance. On the one hand, trying even to code the explicit formulation of the problem directly is not possible due to a large number of nonanticipativity constraints which exceeds 1.5 billion. On the other hand, for the proposed model, the total time it takes to solve, construct and update cuts was 16 h and 26 min while the solution time was only 9 min. 6.2.2. Managerial insights It is cumbersome to show the full multistage solution obtained by the algorithm given the number of stages and flights considered
Fig. 6. Iterative process of the Nested Decomposition algorithm. 304
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 7. Sub-network under analysis.
in the problem. Instead, we will show a subset of the full solution corresponding to a sub-network of the problem, composed by four airports, and derive some insights. The sub-network is shown in Fig. 7, and flights 1 through 4 have random capacity while flight 5 has deterministic capacity. Table 8 shows that in the final solution, each flight transports different number of requests and that such requests travel between distinct markets. Let us focus our analysis on requests c1 and c2 . These requests share the same OD pair A and D, and request c2 has a tariff that is roughly 1.7 times higher than c1, and a potential demand approximately five times smaller. Given the structure of the network, these requests can be transported through three different routes: r1: A C D; r2: A B D; r3: A D . In the first stage, the model decides how much to accept of the different requests, a decision that affects all scenarios. In this case, the solution is to accept Y (c1) = 12798 and Y (c2) = 24929 respectively. After this decision is made, determining how much to transport in each flight will depend on the capacity realization of the flights with uncertainty that are relevant for each request. Fig. 8 shows the routing for this particular case. In Fig. 8 we analyze the behavior of the solution for different capacity realizations. The realizations can be optimistic (O), pessimist (P), average (A), or any of the 3 cases (∗). For instance (P,A,∗,O-A) shows the solution for flight 1 with pessimistic capacity, flight 2 with average capacity, flight 3 with any capacity realization, and flight 4 with optimistic or average realization. The numbers next to the flights represent the amount transported of requests 1 and 2 on that flight. Several insights regarding the solution can be derived from this small subnetwork. We observe that c2 tend to use the three different routes simultaneously in order to deliver the load at destination D, independent of the state of each flight. On the other hand, c1 uses at most two routes simultaneously, r2 and r3 . In this case, r2 is used to transport the vast majority of the accepted load, while r3 is used to transport the remaining load if there is capacity left. Let us take a closer look to the case (P,P,∗,P). In Fig. 8 the model sends 11694 kg. of c1 through r3 , while the three routes are used to transport the complete load of c2 . The remaining 1104 kg. of c1 that where accepted in the first stage cannot reach their destination because of the unfavourable scenario, and therefore has to pay a penalty. From this solution we can observe that the solution favours to take c2 through flight 1 (part of r1) to the detriment of c1, given the higher tariff it pays. Regarding flight capacity, in the solution flight 1 always reaches maximum capacity independent of its state. However, under the pessimistic and average states the volume capacity constraint is binding, while in the optimistic state it is the weight which is equal to its upper limit. In the case (P,P,∗,O) no penalty is paid, because if flight 4 is in the O states, the remaining 1104 kg. can be accommodated in this flight. The routing of both requests changes in the case (P,A,∗,O-A). When the capacity of flight 2 is A, all demand of request one can be transported using r2 . However, c2 continue to use the three routes but the majority of the load is transported through r3 instead of r2 . Our analysis highlights the extreme interdependency of the solution on the capacity realization of each flight. Changes in the available capacity of a single flight can affect the routing of several requests in the network. These interdependencies are particularly complex due to the lack of Markovian properties on the states, generating the need to store previous decisions in order to properly choose the current ones. Moreover, the analysis on the sub-network and the different policies obtained show that solving the problem considering only the average case greatly misrepresents the complexity in a situation of random capacity. 7. Conclusions Given several factors such as the increase of wide-body airplanes and the vast passenger network that some airlines have, belly cargo transportation significantly increased in importance in the latest years. The first contribution of the paper is to propose a network capacity allocation model for such transportation mode, using data from our commercial partner. We identified two sources of uncertainty: demand and capacity, with the latter being of primary importance since the exact amount that can be transported in the belly of the airplane is only known moments before take-off. Our model is a multistage stochastic programming problem (sequential and dynamic) in which the stages are represented by Table 8 Number of different requests and markets served by each flight. Flight
1
2
3
4
5
Number of requests O-D pairs
5 5
5 2
11 4
9 3
11 3
305
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Fig. 8. Routing solution for requests c1 and c2 for different capacity realizations.
flights with variability. Uncertainty is modelled as a scenario tree, constructed based on the data available. We model demand as a chance constraint, enforcing that with high probability there should be no shortages. We applied the Nested Decomposition algorithm to solve the problem, adapting the construction of cuts to the particularities of the problem. Unlike hydrothermal scheduling problems, the belly cargo transportation problem lacks Markovian properties on the states, and the dependence on the value function is much more involved. We developed closed-form expressions for the cuts in this situation, and generated recursive formulas for the calculation of the coefficients associated with the cuts at every stage. We performed a series of numerical experiments in medium and large instances, and studied the changes in the solutions as we vary several parameters of the problem. Furthermore, we applied our methodology to a 1-day operation of our commercial partner. We were able to solve the proposed instance, and found a candidate solution within 0.5% of the optimal. Future work includes improving our decomposition schemes in order to solve larger instances, using for example cut selection routines that discard less useful cuts and keep the ones contributing to real improvements in the solution. Other aspect we want to explore is the inclusion of a show-up rate for allotment contracts to account for the actual realized demand, which may be different from the booked one. We also plan to incorporate risk measures in the objective function, aiming at understanding the effects on the optimal policy in this situation. Acknowledgements We acknowledge the support of the Chilean Fund for Scientific and Technological Development (FONDECYT) through Project 11140436. Felipe Delgado would like to acknowledge the award of a Visiting Fellowship by UNSW Australia where this paper was partially funded for the author’s visit during July 2015 and June 2016. The authors thank Vitor de Matos for insightful suggestions regarding the construction of the cuts in non-Markovian contexts. Appendix A. Supplementary material Supplementary data associated with this article can be found, in the online version, at https://doi.org/10.1016/j.tre.2019.09.011. References Air Cargo News, 2015. Cargolux reports 2014 profit decline. http://www.aircargonews.net/news/single-view/news/cargolux-reports-2014-profit-decline.html (Accessed: 2015-03-08). Amaruchkul, K., Cooper, W.L., Gupta, D., 2007. Single-leg air-cargo revenue management. Transport. Sci. 41 (4), 457–469. Amaruchkul, K., Cooper, W.L., Gupta, D., 2011. A note on air-cargo capacity contracts. Prod. Oper. Manage. 20 (1), 152–162. Anjaparidze, G., 2016. Cargo Chartbook (Report). IATA. Ball, L., 2015. Latam shifts focus from freighters to belly cargo. http://aircargoworld.com/latam-shifts-focus-from-freighters-to-belly-cargo/ (Accessed: 2015-03-08). Barrera, J., et al., 2016. Chance-constrained problems and rare events: an importance sampling approach. Math. Program. 157 (1), 153–189. Birge, J., Louveaux, F., 2011. Introduction to Stochastic Programming. Springer Science & Business Media.
306
Transportation Research Part E 131 (2019) 292–307
F. Delgado, et al.
Bowman, R., 2014. The air-cargo freighter as endangered species. http://www.supplychainbrain.com/content/blogs/think-tank/blog/article/the-air-cargo-freighteras-endangered-species/ (Accessed: 2015-03-08). Derigs, U., Friederichs, S., Schäfer, S., 2009. A new approach for air cargo network planning. Transport. Sci. 43 (3), 370–380. Donohue, C., Birge, J., 2006. The abridged nested decomposition method for multistage stochastic linear programs with relatively complete recourse. Algorithmic Oper. Res. 1 (1). Fhoula, B., et al., 2013. Stochastic dual dynamic programming for transportation planning under demand uncertainty. In: 2013 International Conference on Advanced Logistics and Transport (ICALT), pp. 550–555. Finardi, E., Decker, B., de Matos, V., 2013. An introductory tutorial on stochastic programming using a long-term hydrothermal scheduling problem. J. Control, Automat. Electr. Syst. 24 (3), 361–376. Glockner, G., Nemhauser, G., 2000. A dynamic network flow problem with uncertain arc capacities: formulation and problem structure. Oper. Res. 48 (2), 233–242. Gupta, D., 2008. Flexible carrier–forwarder contracts for air cargo business. J. Revenue Pricing Manage. 7 (4), 341–356. Han, D.L., Tang, L.C., Huang, H.C., 2010. A markov model for single-leg air cargo revenue management under a bid-price policy. Eur. J. Oper. Res. 200 (3), 800–811. Heitsch, H., Römisch, W., 2005. Generation of multivariate scenario trees to model stochasticity in power management. In: Power tech, 2005 IEEE Russia, pp. 1–7. Heitsch, H., Römisch, W., 2009. Scenario tree modeling for multistage stochastic programs. Math. Program. 118 (2), 371–406. Huang, K., Lu, H., 2015. A linear programming-based method for the network revenue management problem of air cargo. Transport. Res. Part C: Emerg. Technol. 59, 248–259. Johnsson, J., 2014. Fewer cargo planes, more cargo in passenger planes. http://www.bloomberg.com/bw/articles/2014-07-03/boeing-cargo-planes-lose-to-boeingpassenger-planes (Accessed: 2015-03-08). Kasilingam, R., 1997. Air cargo revenue management: Characteristics and complexities. Eur. J. Oper. Res. 96 (1), 36–44. Kasilingam, R.G., 1997. An economic model for air cargo overbooking under stochastic capacity. Comput. Ind. Eng. 32 (1), 221–226. Kovacevic, R., Pichler, A., 2015. Tree approximation for discrete time stochastic processes: a process distance approach. Ann. Oper. Res. 235 (1), 395–421. Lennane, A., 2012. Shift happens. http://www.airlinecargomanagement.com/feature/all-cargo-future-cargolux-airbridge-polar?session_id= 03trscbjm5iif25klb1ba9vc46 (Accessed: 2015-03-08). Levin, Y., Nediak, M., Topaloglu, H., 2012. Cargo capacity management with allotments and spot market demand. Oper. Res. 60 (2), 351–365. Lin, Y.-K., 2007. On a multicommodity stochastic-flow network with unreliable nodes subject to budget constraint. Eur. J. Oper. Res. 176 (1), 347–360. Luo, S., Çakanyıldırım, M., Kasilingam, R.G., 2009. Two-dimensional cargo overbooking models. Eur. J. Oper. Res. 197 (3), 862–883. Marsten, R.E., Muller, M.R., 1980. A mixed-integer programming approach to air cargo fleet planning. Manage. Sci. 26 (11), 1096–1107. Morrell, P., 2011. Moving Boxes by Air: The Economics of International Air Cargo. Ashgate Publishing Ltd. Moussawi-Haidar, L., 2014. Optimal solution for a cargo revenue management problem with allotment and spot arrivals. Transport. Res. Part E: Logist. Transport. Rev. 72, 173–191. Moussawi-Haidar, L., Cakanyildirim, M., 2012. Optimal overbooking limits of a two-dimensional cargo problem: A profit maximization approach. J. Revenue Pricing Manage. 11 (4), 453–476. Parpas, P., Rustem, B., 2007. Computational assessment of nested benders and augmented lagrangian decomposition for mean-variance multistage stochastic problems. INFORMS J. Comput. 19 (2), 239–247. Pereira, M., Pinto, L., 1985. Stochastic optimization of a multireservoir hydroelectric system: a decomposition approach. Water Resourc. Res. 21 (6), 779–792. Pflug, G., 2001. Scenario tree generation for multiperiod financial optimization by optimal discretization. Mathe. Program. 89 (2), 251–271. Pflug, G., Pichler, A., 2015. Dynamic generation of scenario trees. Comput. Optim. Appl. 62 (3), 641–668. Sandhu, R., Klabjan, D., 2006. Fleeting with passenger and cargo origin-destination booking control. Transport. Sci. 40 (4), 517–528. dos Santos, T., Diniz, A., 2009. A new multiperiod stage definition for the multistage benders decomposition approach applied to hydrothermal scheduling. IEEE Trans. Power Syst. 24 (3), 1383–1392. Soroush, H., Mirchandani, P.B., 1990. The stochastic multicommodity flow problem. Networks 20 (2), 121–155. Tang, C.-H., Yan, S., Chen, Y.-H., 2008. An integrated model and solution algorithms for passenger, cargo, and combi flight scheduling. Transport. Res. Part E: Logist. Transport. Rev. 44 (6), 1004–1024. Wada, M., Delgado, F., Pagnoncelli, B.K., 2017. A risk averse approach to the capacity allocation problem in the airline cargo industry. J. Oper. Res. Soc. 68 (6), 643–651. Xu, B., et al., 2015. Scenario tree reduction in stochastic programming with recourse for hydropower operations. Water Resour. Res. 51 (8), 6359–6380. Yan, S., Chen, S.-C., Chen, C.-H., 2006. Air cargo fleet routing and timetable setting with multiple on-time demands. Transport. Res. Part E: Logist. Transport. Rev. 42 (5), 409–430. Zhuang, W., Gumus, M., Zhang, D., 2012. A single-resource revenue management problem with random resource consumptions. J. Oper. Res. Soc. 63 (9), 1213–1227.
307