New bounds and algorithms for the transshipment yard scheduling ...

4 downloads 2429 Views 496KB Size Report
this context, we consider the transshipment yard scheduling problem (TYSP) where trains ... scheduling procedures to assign trains to service slots. The problem, which we ...... transportation research field emerging? A review of intermodal.
J Sched DOI 10.1007/s10951-010-0200-2

New bounds and algorithms for the transshipment yard scheduling problem Nils Boysen · Florian Jaehn · Erwin Pesch

© Springer Science+Business Media, LLC 2010

Abstract In a modern rail–rail transshipment yard huge gantry cranes transship containers between different freight trains, so that hub-and-spoke railway systems are enabled. In this context, we consider the transshipment yard scheduling problem (TYSP) where trains have to be assigned to bundles, which jointly enter and leave the yard. The objective is to minimize split moves and revisits. Split moves appear whenever containers have to be exchanged between trains of different bundles, whereas revisits occur if a train has to enter the yard twice, because some container dedicated to this train was not available during its first visit. We extend the basic TYSP, so that additional real-world requirements of modern rail–rail yards, e.g., the one currently constructed in Hannover-Lehrte, are considered. We provide complexity proofs for different problem settings and present several heuristic procedures as well as one exact algorithm. The paper concludes with computational results showing the efficiency of the proposed algorithms. Keywords Railway systems · Transshipment yard · Train scheduling · Branch-and-bound · Ejection chain

N. Boysen Lehrstuhl für Allgemeine Betriebswirtschaftslehre/Operations Management, Friedrich-Schiller-Universität Jena, Carl-Zeiß-Straße 3, 07743 Jena, Germany e-mail: [email protected] F. Jaehn · E. Pesch Institut für Wirtschaftsinformatik, Universität Siegen, Hölderlinstraße 3, 57068 Siegen, Germany F. Jaehn e-mail: [email protected] E. Pesch () e-mail: [email protected]

1 Introduction With increasing traffic volume especially in the big transit nations in the center of Europe and ongoing environmental pollution the European Union (EU) aims at transferring freight traffic from road to rail (EU 2007). One starting-point is to enable hub-and-spoke railway systems, so that economies in transportation can be realized like it is exemplified by other modes of transport, i.e., ship, truck and airplane, since many years. For this purpose the EU increasingly subsidizes investment into rail–rail transshipment yards, which allow for a rapid consolidation of different freight trains. For instance, in Germany currently a highly automated transshipment yard in Hannover-Lehrte (Megahub) is constructed. Such a modern rail–rail transshipment yard consists of multiple parallel railway tracks, where successive bundles (one train per track) of freight trains are processed. Container transshipment among trains is conducted by multiple rail-borne gantry cranes spanning the railway tracks. To avoid crane interferences and to enable a container exchange between different bundles, an additional sorting system is applied, where automated guided vehicles (Bostel and Dejax 1998) or some rail-mounted vehicles (Alicke 2002) move and preposition containers. To allow containers overtaking each other within the sorter a typical system consists of separate moving and buffer lanes (see Rotter 2004). Figure 1 depicts a schematic representation of a transshipment yard. Clearly, a sophisticated operation of such complex systems assuring an efficient usage of resources, requires elaborate and computerized scheduling procedures. However, the overall scheduling task seems far too complicated to allow a simultaneous solution, so that a hierarchical decomposition of the overall problem is recommendable (Boysen and Fliedner 2010):

J Sched

train. Thus, when deciding on the service slot of a train it is to be ensured that all containers to be loaded on this train have already been delivered by trains assigned to the same or a preceding slot. If this is not possible, there are two general alternatives to cope with such a situation.

Fig. 1 Schematic representation of a rail–rail transshipment yard

(i) Schedule the succession of trains by assigning them to bundles (TYSP). (ii) Decide on the containers’ positions on trains. (iii) Determine crane areas. (iv) Decide on the trains’ vertical and horizontal parking positions. (v) Decide on the sequence of container moves per crane. This paper exclusively treats problem (i) and provides scheduling procedures to assign trains to service slots. The problem, which we label the transshipment yard scheduling problem (TYSP), can be characterized as follows: There is a given set I of trains, each of which has a predefined number of wagons and a certain load factor, defining the number of containers carried by this train. Each train is now to be assigned to a service slot t = 1, . . . , T of G simultaneously served trains. This assignment is restricted by the earliest available slot ei of train i (earliest arrival time) and its latest available slot li (latest departure time). A transshipment yard is typically operated in distinct so-called pulses (Bostel and Dejax 1998) or bundles (Alicke 2002; Rotter 2004) of trains, which means that G trains (one per track) are simultaneously served and jointly leave the system not before all container moves are processed, which are required for the respective bundle of trains. Then, another bundle of G trains enters the yard, while it is impossible for a train belonging to more than one bundle. Thus, for each train it is to be decided, in which of the successive t = 1, . . . , T service slots of size G it is to be served. This assignment decision faces two important peculiarities: Revisits/delayed containers Each train stopping at the transshipment yard carries a given set of containers, which depends on the number of wagons and a load factor. A given subset of these containers is already dedicated to the final destination of the train and, thus, remains untouched. The other part is to be unloaded at the yard to be either stacked on other trains or to leave the rail system by truck. Afterwards, vacant railway cars can be filled with other containers (for the trains destination) either delivered from the storage lanes of the sorting system or directly by another freight

1. Trains, which have not received all the containers dedicated to them, have to leave the yard, wait on holding tracks until all respective trains have been processed, and revisit the yard in a later slot. Obviously, revisits delay shipment completion and are to be reduced to a minimum. If a revisit is inevitable, it is a common policy to process it after all other trains have visited the yard at least once. This policy ensures that all containers dedicated to the revisiting train have arrived in the meantime and at most one revisit is required per train. 2. All trains leaving the yard after their first visit in all cases head to their next destination. This implies that there might remain some containers, which are not loaded onto their dedicated trains. These containers stay at the transshipment yard and are re-assigned to the next train heading to the same destination (usually on the next day). Clearly, such a delay of containers is undesirable, as they might arrive late at their customers and require space in the storage area. Furthermore, it has to be ensured that the next train has enough vacant rail waggons. However, this policy enables all trains to leave the yard on time (or needs to be applied if there are no holding tracks). Thus, delaying containers to the next day seems reasonable, whenever the length of a stay of trains is limited. This holds true, e.g., for the Megahub in Hannover-Lehrte, where trains arrive in the middle of the night and have to reach their final destinations before morning (see Rotter 2004). As a yard manager was to decide for one of both policies, we assume that either revisits or delayed containers are minimized (but not both). Split moves Picking and dropping of containers by gantry cranes is precision work and, thus, very time-consuming (typically only 20–25 moves per crane and hour can be processed, see Rotter 2004). If train i, which carries a container dedicated to another train j , is served in the same slot as train j , then, container handling can be conducted by a single crane move directly from train i to j . On the other hand, an assignment of train i to a prior slot than train j requires that the container is intermediately stocked in the sorter. The container movement is interrupted and two separated and time-consuming crane picks and drops are required, which we label as a split move. Hence, train scheduling aims at avoiding split moves to accelerate container handling.

J Sched

This paper provides train scheduling procedures, which cover both peculiarities, i.e., in addition to split moves either revisits or delayed containers are minimized. For this purpose the remainder of the paper is structured as follows. Section 2 summarizes existing literature on transshipment yards. In Sect. 3, a formal problem description is given and new complexity results as well as novel bounding arguments are presented. Novel algorithms for solving this problem are proposed in Sect. 4. These algorithms are computationally evaluated and compared to existing approaches in Sect. 5. Finally, Sect. 6 summarizes our findings and contains an outlook on future research.

2 Literature review Although there is a lot of attention paid to railway optimization (see, e.g., Cordeau et al. 1998) and intermodal transportation (see Crainic and Kim 2007) in general, literature on rail–rail transshipment yards is scarce. Current research on transshipment in rail systems mainly focuses on traditional shunting yards. In these conventional yards, scheduling trains and rearranging freight trains via shunting hills and a system of track switches is covered, e.g., by Blasum et al. (1999), Dahlhaus et al. (2000), He et al. (2000), Winter and Zimmermann (2000) and Freling et al. (2005). However, modern rail–rail transshipment yards, where container transshipment is conducted by gantry cranes without rearranging the railway cars by themselves (see Sect. 1), are an emerging technology in rail systems (see the surveys by Bontekoning et al. (2004) as well as Macharis and Bontekoning (2004)) and promise a more efficient transshipment. In-depth descriptions of structural properties and different operational policies employed in rail–rail transshipment yards are provided by Ballis and Golias (2002) as well as Rotter (2004). Meyer (1999) and Wiegmans et al. (2007) specifically address the design process of an optimal terminal layout. However, only very few research papers deal with the scheduling problems perpetually arising during the daily operations of a transshipment yard. According to the hierarchical decomposition scheme of the overall scheduling problem (see Sect. 1) Bostel and Dejax (1998) as well as Corry and Kozan (2008) treat problem (ii) and provide scheduling procedures to determine the optimal positions of containers on inbound and outbound trains so that crane moves at the yard are minimized. Crane areas (problem (iii)) for processing a given train bundle are determined by Boysen and Fliedner (2010) and Boysen et al. (2010b). Here, each crane is assigned a specific yard area, which is exclusively processed by the respective crane, so that the workload is equally shared among cranes. Problem (iv), the assignment of trains to tracks (parking of trains), can be solved as a quadratic assignment problem, which is shown by Alicke and Arnold (1998) and Kellner et al. (2010). Finally,

Alicke (2002) provides a scheduling procedure, which sequences the moves of gantry cranes (problem (v)). His approach is based on constraint programming. Related problems also occur within seaport container terminals (see, e.g., Zhu and Lim 2006; Moccia et al. 2006; Lim et al. 2007; Sammarra et al. 2007). Up to now, only Boysen et al. (2010a) treat the scheduling of trains to service slots (i). In that paper, a first problem formulation of TYSP, an exact and heuristic algorithm, and a test set have been presented. It is the basis of our paper at hand. The novelty of our paper can be summarized as follows. A different problem formulation is presented, which now includes the possibility of delaying containers. An issue, which has not been considered in any model found in literature, although it bears a high practical relevance (see Rotter 2004). A new, more general complexity proof is presented, showing that the problem remains NP-hard even if some parts of the objective are not considered. Finally, bounds are derived and with the help of these bounds, more efficient algorithms are developed. The efficiency of these algorithms is shown in a comprehensive computational study. Next, we present a detailed problem statement of how to schedule arrival and processing of trains within available service slots.

3 Problem statement 3.1 Mathematical program The basic decision of the transshipment yard scheduling problem (TYSP) is to assign each train i of a given train set I to a service slot t = 1, . . . , T . To each slot t at most G trains can be assigned, because G is the number of parallel railway tracks of the transshipment yard. Note that an assignment of trains to dedicated tracks is not part of TYSP (see Sect. 1), so that the assignment decision can be recorded by binary variables xit , which receives the value one, whenever train i is assigned to slot t (0, otherwise). The overall number T of slots required to process the given set of trains I amounts to: T =  |IG| . However to ease the description, w.l.o.g. we assume that: |I | = G · T , which can be easily ensured for any problem instance by inserting empty trains carrying no containers. Furthermore, there might be additional restrictions for feasible train-slot assignments. Every train i ∈ I has an earliest arrival time slot ei , 1 ≤ ei ≤ T , which restricts an assignment of i to a period t ≥ ei . A latest departure time slot li , ei ≤ li ≤ T , prohibits any assignments of i after period li . In real life application, it is more likely that there are exact arrival and departure times defined by the rail schedule than time slot restrictions. However, as the length of each service slot is to some extend predictable, exact arrival (departure)

J Sched

times can easily be transformed to earliest arrival (departure) time slots. It requires that the service slots are executed uninterruptedly. We may assume this as otherwise the problem could be decomposed. We consider two similar problem formulations only differing by the objective function. Firstly, the (original) TYSP aims at realizing two objectives: The number of revisits of trains (objective 1) and the number of split moves of containers (objective 3) are to be minimized. To operationalize the simultaneous optimization of both objectives we assume that a linear combination of the single objectives is to be minimized and weights α1 and α3 can be assigned to the objective. In this problem setting, delayed containers (objective 2) are not considered. Secondly, TYSP2 uses a similar objective in which the number of delayed containers (objective 2) and split moves (objective 3) are minimized whereas objective 1 is omitted. Again, we suppose that suited weights α2 and α3 already exist. Using the notation summarized in Table 1, TYSP consists of objective function (1) and constraints (3) to (6) and (8) for the relevant variables, whereas TYSP2 consists of objective function (2) and constraints (3), (4), (6), (7) and (8) for the relevant variables: (TYSP) Minimize   α1 yi + α3 zij · Aij

(1)

i∈I j ∈Li

i∈I

(TYSP2) Minimize   α2 wij · Aij + α3 zij · Aij i∈I j ∈Li

(2)

i∈I j ∈Li

subject to li 

3.2 Complexity and bounds xit = 1 ∀i ∈ I,

(3)

xit ≤ G ∀t = 1, . . . , T ,

(4)

t=ei

 i∈I T 

xit · t + yi · M ≥

t=1

T 

xj t · t

 T  T      xit · t − xj t · t  ≤ zij · M    t=1

T 

T 

t=1

∀i ∈ I ; j ∈ Li ,

(5)

∀i ∈ I ; j ∈ Li ,

(6)

∀i ∈ I ; j ∈ Li ,

(7)

t=1

t=1

xj t · t −

Objective function (1) minimizes a linear combination of objectives 1 (number of revisits) and 3 (number of split moves) weighted by α1 and α3 , respectively. Similarly, objective function (2) considers objectives 2 (number of delayed containers) and 3 (number of split moves). The number of revisits is calculated by summing binary variables yi , which record whether train i has to revisit (yi = 1) or not (yi = 0). The calculation of split moves relies on the observation, that once a train j carries a number Aij of containers dedicated to train i all of these Aij containers must be picked and dropped twice and, thus, require split moves, whenever trains i and j are not assigned to the same slot (zij = 1). The number of delayed containers and the number of split moves differ only in one point. Containers from a train j dedicated to a train i assigned to a later slot cause a split move, but not a delayed container. Thus, a container is delayed if Aij · zij > 0 and train i is assigned to an earlier slot than train j . Defining wij = zij if i’s slot is before j ’s, and zero otherwise, leads to the objective as presented in (2). Equalities (3) ensure that each train is assigned to exactly one slot in the range of its feasible slots. Constraints (4) force the number of trains per slot not to exceed the given number G of tracks. Constraints (5) force binary variable yi to receive the value 1, whenever a train j , which carries containers dedicated to train i, is assigned to a later slot than train i. In a similar fashion, constraints (6) ensure, that binary variables zij receive the value 1, whenever trains i and j are assigned to different slots (0, otherwise). Constraints (7) force wij to be 1, whenever the slot of j is later than the slot of i. Big integer M, applied in constraints (5) to (7), can be set to T − 1. Note that constraints (6) can be easily linearized, however, for conciseness we abstain from a detailed description.

xit · t ≤ wij · M

t=1

xit ; yi ; zij ; wij ∈ {0, 1} ∀i ∈ I ; t = 1, . . . , T ; j ∈ Li .

(8)

TYSP is NP-complete in the strong sense (see Boysen et al. 2010a). However, in the proposed proof it is essential that α1 and α3 are non-zero. In the following, we will show that TYSP remains strongly NP-complete, even if α1 or α3 (but not both) are zero. If S is a set and S  ⊆ S then S\S  consists of all elements of S that do not belong to S  . We will use reductions from Feedback Vertex/Arc Set (see Garey and Johnson 1979 and Tanaev et al. 1994, for a thorough introduction into the theory of computational complexity) and problem k-Partition of a graph (see Feo et al. 1992): Feedback Vertex Set An instance of the Feedback Vertex Set problem consists of a directed graph Γ = (V , A) with vertex set V and arc set A and a positive integer K ≤ |V |. Is there a subset V  ⊆ V with |V  | ≤ K such that V  contains at least one vertex from every directed cycle of Γ ?

J Sched Table 1 Notation

I

Set of trains (indices i and j ) with n := |I |

Li

Set of trains carrying containers dedicated to train i

T

Number of time slots for (un-)loading trains (index t)

G

Number of parallel tracks within transshipment yard

Aij

Number of containers train i receives from train j

ei

Earliest time slot train i may be assigned to

li

Latest time slot train i may be assigned to

M

Big integer (e.g., M = T − 1)

α1 , α2 , α3

Given weights for objectives 1, 2 and 3 with α1 , α2 , α3 ≥ 0

xit

Binary variable: 1, if train i is assigned to slot t; 0, otherwise

yi

Binary variable: 1, if train i has to revisit the yard; 0, otherwise

zij

Binary variable: 1, if trains i and j are served during different slots; 0, otherwise

wij

Binary variable: 1, if train i is served during a slot prior to the slot of train j ; 0, otherwise

k-Partition of a graph Consider a complete undirected graph Γ = (V , E) with vertex set V and edge set E and non-negative edge weights, and integers k, m, and λ such that |V | = k · m. Is there a partitioning of the vertices of Γ into k sets of m vertices each, such that the total weight of the edges having both endpoints in different sets is at most λ? The problem is NP-hard even if m = 3. Feedback Arc Set An instance of the Feedback Arc Set problem consists of a directed graph Γ = (V , A) with vertex set V and arc set A and a positive integer K ≤ |A|. Is there a subset A ⊆ A with |A | ≤ K such that A contains at least one arc from every directed cycle of Γ ? Theorem 3.1 (i) TYSP is NP-hard, even if α3 = 0 and G = 1 or if α1 = 0 and G is at least 3. (ii) TYSP2 is NP-hard, even if α3 = 0 and G = 1 or if α2 = 0 and G is at least 3. Proof (i) For a given instance I (FVS) of the Feedback Vertex Set problem we construct an instance I (TYSP) of TYSP: Define α1 = 1, α3 = 0 and G = 1. The set of trains I corresponds to the vertex set V of graph Γ and for each arc a ∈ A connecting vertex vj and vi the number Aij of containers (delivered from train j to train i) is a least 1 i.e., Aij > 0. Furthermore let ei = 1, li = T for all i ∈ I . We will show that I (FVS) has a solution with |V  | ≤ K if and only if there exists a train schedule for I (TYSP) with an objective value not exceeding K. If I (FVS) has a solution then the directed graph Γ  consisting of the vertex set V \V  , i.e. the vertices from V not belonging to V  , and of all induced arcs is acyclic. Thus an arc of Γ  is induced if it is an arc in Γ and its defining vertices belong to V \V  . Let I  be the set of trains corresponding to V  . Γ  may be topologically ordered where

the train represented by the ith vertex of the topological order is assigned to time slot t = i and any arc connecting vertex vj to vi in Γ  implies i > j . Thus, there are no revisits for the (reduced) train scheduling problem consisting of the trains I \I  , yi = 0 for all i ∈ I \I  , and the number of time slots needed to schedule all trains from I \I  is not more than T − K. As |I  | = |V  | ≤ K there is a solution of I (TYSP) with  slots, G = 1 and objective  at most T time function value i∈I \I  yi + i∈I  yi + 0 ≤ 0 + |V  | ≤ K. Consider a train schedule for I (TYSP) with an objective  value i∈I yi ≤ K. Let I  be the set of revisiting trains, i.e. i ∈ I  if yi = 1. Let V  be the set of verticesfrom I (FVS) corresponding to the set of trains in I  . As i∈I \I  yi = 0 the subgraph Γ  of Γ induced by the vertex set V \V  is acyclic. Thus, the set of vertices to be removed from Γ in order to obtain an acyclic subgraph is a subset of V  of size at most K. Consider an instance I (P ) of k-partition of a graph. Define an instance I (TYSP) as follows: α1 := 0, α3 := 1 and ei = 1, li = T for all i ∈ I . Moreover for each vertex pair vi and vj of I (P ) there are two opposite directed arcs (i, j ) and (j, i) in a I (TYSP) representing graph (trains i and j exchange containers) with arc weights Aij = Aj i of the weight of the edge connecting i and j in I (P ). Additionally define T := k and G := m. As zij = 1 if and only if trains i and j are assigned to different  time slots, we obtain a solution to I (TYSP) with i∈I j ∈Li zij · Aij ≤ 2 · λ if and only if there is a k-partition of Γ into k = T sets of m = G vertices such that the total weight of the edges having both endpoints in different sets is at most λ where λ is a nonnegative integer. (ii) We only need to prove the first part. For a given instance I (FAS) of the Feedback Arc Set problem we construct an instance I (TYSP2) of TYSP2: Define α2 = 1, α3 = 0 and G = 1. The set of trains I corresponds to the vertex set V of graph Γ and for each arc (vj , vi ) ∈ A connecting vertex vj and vi the number Aij of containers (delivered from train j to train i) is equal to 1. Furthermore let

J Sched

ei = 1, li = T for all i ∈ I . We will show that I (FAS) has a solution with |A | ≤ K if and only if there exists a train schedule for I (TYSP2) with an objective value not exceeding K. If I (FAS) has a solution then the directed graph Γ  consisting of the arc set A\A , i.e. the arcs from A not belonging to A , is acyclic. Let Li ⊆ Li ,i ∈ I , be the set of trains j such that Aij = 1 and (vj , vi ) ∈ A . Γ  may be topologically ordered where the train represented by the ith vertex of the topological order is assigned to time slot t = i and any arc connecting vertex vj to vi in Γ  implies i > j . Thus, there are no revisits and therefore no delayed containers for the (reduced) train scheduling problem consisting of the trains I , wij = 0 for all containers corresponding to arcs (vj , vi ) ∈ A\A . As |A | ≤ K there is a solution of I (TYSP) with atmostT time slots, G = 1and  objective function value i∈I j ∈Li \L wij · Aij + i∈I j ∈L wij · Aij + i i   0 = i∈I j ∈L wij · Aij ≤ |A | ≤ K. i Consider a train schedule for I (TYSP) with an objective value of at most K. Let Li be the set of trains with delayed containers dedicated to i, i.e. j ∈ Li if wij = 1. Let A be the set of arcs (vj , vi ) from I (FAS) corresponding to the  set of train pairs j, i where j ∈ Li for all i ∈ I . As   i∈I j ∈Li \Li wij · Aij = 0 the subgraph Γ of Γ consist ing of the vertex set V and the arc set A\A is acyclic. Thus, the set of arcs to be removed from Γ in order to obtain an acyclic subgraph is a subset of A of size at most K.  For α1 = 0 and G = 2, TYSP is equivalent to maximum weight perfect matching, for which an O(T 3 ) time algorithm exists (see Papadimitriou and Steiglitz 1982). The theorem shows that TYSP and TYSP2 remain hard to solve, even if only one objective is considered. This is a relevant result for practical applications, as some transshipment yards (almost) exclusively try to minimize the number of revisits or the number of delayed containers. In order to derive efficient algorithms for solving TYSP and TYSP2, let us record some more facts. Theorem 3.2 Given an instance of TYSP. A lower bound for the number of revisits (objective 1) is given by   max |It | − G · (T − t) t∈{1,...,T −1}

with It := {i ∈ I | |Li | ≥ t · G}. Proof Obviously, it is sufficient to show that |It | − G · (T − t) is a lower bound for any t = 1, . . . , T − 1. It contains all trains, which receive containers from at least t · G other trains. Thus, each element of It has to be assigned to slot t + 1 or later in order not to cause a revisit. However, at most G·(T −t) trains can be assigned no earlier than t + 1. If It contains more trains, each extra train causes a revisit. 

This lower bound can similarly be applied for objective 2 of minimizing delayed containers. If It contains more elements than G · (T − t), some elements of It will cause delayed containers, because they cannot be assigned to slot t + 1 or later. It is possible to check, which elements will cause the least delayed containers, if they are assigned to slot t or earlier. For the next theorem, consider the (n − 1)–tuple A(i) := (i) (i) (i) (i) (i) (i) (a1 , a2 , . . . , ai−1 , ai+1 , . . . an ) with aj := Aij + Aj i , which describes all container exchanges from or to train i. Let us assume, w.l.o.g., that the values of A(i) are sorted in (i) (i) descending order, i.e. a1 ≥ a2 ≥ · · · . Theorem 3.3 Given an instance of TYSP or TYSP2. Each of the following is a lower bound for the number of split moves (objective 3): T ·G 

(i)

∀i ∈ I,

aj

(9)

j =G



i∈I

T ·G

(i)  j =G aj

2

,

(10)

Proof Each train i is assigned to a slot with G − 1 other trains. If i exchanges containers with more than G−1 trains, (i) this leads to split moves, i.e. each aj with j > G − 1 describes inevitable split moves. Thus, (9) holds. The result of (9) cannot be simply summed up in order to obtain a lower bound. The value (Aij + Aj i ) of two trains i and j could appear twice in this sum. However, they certainly can appear at most two times. Thus, dividing this sum by two delivers the lower bound. 

4 Algorithms In the following, we will present algorithms for solving TYSP and TYSP2. For the simplicity of the descriptions of the algorithms, we do not consider the earliest and latest slot ei and li of a train i. H owever, all the presented algorithms can easily be adapted such that these kinds of constraints are satisfied. In our computational study, we have tested our algorithms on instances with earliest and latest slot constraints. Note that it can be easily checked whether a feasible solution for TYSP or TYSP2 exists. The following algorithm delivers a feasible solution, if there exists one. Algorithm 1 (Feasible solution) 0. Initialization: Set t = 1, IA := ∅ (set of assigned trains) 1. Assignment: Do G times: 1. Set xi ∗ t = 1 with i ∗ = argmin{i∈I |ei ≤t;i∈I \IA } li ,

J Sched

2. If there is no such i ∗ or if li ∗ < t: Stop, there is no feasible solution. 3. IA = IA ∪ {i ∗ } 2. Iteration: If t = T : Stop, the solution is feasible. Else, t = t + 1 and go to 1. Obviously, this algorithm can easily be implemented in O(n2 ). 4.1 Heuristic algorithms Firstly, let us present a quick but efficient procedure for obtaining a start solution. The idea of this procedure is to split the set I into T clusters, each consisting of G elements. Afterwards, each cluster is assigned to one slot. If these clusters are chosen homogeneously, i.e. if trains exchanging a high number of containers are put together, this is favorable for all three objectives. The ordering of these clusters is irrelevant for the split moves, but it should be chosen in such way that revisits or delayed containers are minimized. Algorithm 2 (Cluster based start procedure, CBSP) 1.0 Initialization Clustering: Set c = 1, I (1) := · · · := I (T ) := ∅ (T clusters), IA := ∅ 1.1 Train Assignment: 1. For an arbitrary element i ∈ I \IA : I (c) = I (c) ∪ {i}, IA = IA ∪ {i}. 

2. Determine i ∗ := argmax (Ai ∗ j + Aj i ∗ ) . i∈I \IA

j ∈I (c)

3. I (c) = I (c) ∪ {i ∗ }, IA = IA ∪ {i ∗ }. 1.2 Iteration: If |I (c)| < G, go to Step 1.1.2. Else, if c < T , set c = c + 1 and go to step 1.1. Else, go to Step 2.0. 2.0 Initialization Sequencing: Set t = 1, C = {1, . . . , T } (set of cluster indices), CA := ∅ (indices of assigned clusters). 2.1 Cluster Assignment: Determine      ⎧ argminc∈C\CA i∈I (c) min 1, c ∈C\CA j ∈I (c ) Aij ⎪ ⎪  ⎪ c =c ⎪ ⎨ if TYSP is considered, ∗   c =   ⎪ argminc∈C\CA ⎪ i∈I (c) c ∈C\CA j ∈I (c ) Aij ⎪ ⎪ c =c ⎩ if TYSP2 is considered

and assign c∗ to the time slot t. CA = CA ∪ {c∗ }. 2.2 Iteration: If t < T , set t = t + 1 and go to step 2.1. Else, stop. The first part of the algorithm runs in O(n2 ), the second as well. Thus, the overall runtime is O(n2 ). Based on an initial solution as obtained in Algorithm 2, we now want to improve this solution. Let us define a neighborhood, in which two solutions are called neighbors, if the assignment of trains to slots is the same in both solutions for all trains except for two of them.

Algorithm 3 (Hillclimber, HC) 0. Initialization: Determine an initial solution x using Algorithm 2. 1. Neighbor solution: For all pairs of trains (i, j ) ∈ I × I , there is a (unique) pair of slots (t, t  ) such that xit = xj t  = 1. Determine for each such pair a solution x  (i, j ) defined by ⎧ if (k = i ∧ l = t  ) ∨ (k = j ∧ l = t), ⎪ ⎨1  xkl (i, j ) := 0 if (k = i ∧ l = t) ∨ (k = j ∧ l = t  ), ⎪ ⎩ xkl else. 2. Improvement: If the objective function value (either TYSP or TYSP2) of x is better than the one of x  (i, j ) for any (i, j ), then stop. Else, determine the best objective function value of x  , obtained by (i ∗ , j ∗ ). Set x = x  (i ∗ , j ∗ ) and go to Step 1. Each recursion of the algorithm, in which the solution is improved, has runtime O(n2 ). In the following, we will call the transfer from one solution to a neighboring solution, which was described in Step 1 of Algorithm 3, a “move”. Although Algorithm 3 delivers good results within a very short amount of time (see Sect. 5), the algorithm might be trapped in a local optimum. Thus, we propose an Ejection Chain Algorithm (see e.g. Pesch and Glover 1997), which can escape local optima. Starting from a feasible solution, our algorithm greedily searches for a sequence of at most n/2 moves. Each move minimizes the objective function value (TYSP or TYSP2) under the restriction that a train must not be moved more than once in this sequence. Practically this means that every train is moved from its current slot to another slot. However, to reach an improved feasible solution for the next iteration, only the subsequence is performed, which raises the objective most. If there is no such subsequence, the algorithm will stop. Algorithm 4 (Ejection Chain, EC1) 0. Initialization: Determine an initial (incumbent) solution x using Algorithm 3. 1. Finding a sequence of at most n2 moves: Copy the incumbent solution and obtain an interim solution. Denote all n trains of the interim solution as non-taboo. 1.1 Finding a best move: Among all moves of nontaboo trains of the interim solution, find the one, which minimizes the objective function. Perform this move to the interim solution, mark the moved trains i ∗ and j ∗ as taboo. Repeat 1.1 to the interim solution until all trains are marked taboo or until no feasible move is found. Determine r ∈ {0, . . . , n/2} so that the interim’s objective is minimized after performing the first r moves.

J Sched Fig. 2 Illustration of Algorithm 4 and 5

2. Improving the solution: If r > 0 perform the first r moves to the incumbent solution and go to step 1. If r = 0 then stop and return the current (incumbent) solution. The procedure of the algorithm is also illustrated in Fig. 2. Each horizontal arrow denotes a move. As the best move in step 1.1 can be determined in O(n2 ) and as each sequence consists of n2 best moves, the complexity of a whole iteration is O(n3 ). Besides Algorithm 4, we have tested a very similar ejection chain algorithm, which uses a different taboo list. In Algorithm 5, each train may be assigned to different slots more than once in a sequence, but a pair of trains must not be exchanged more than once. Algorithm 5 (Ejection Chain, EC2) 0. Initialization: Determine an initial (incumbent) solution x using Algorithm 3. 2 1. Finding a sequence of at most n 2−n moves: Copy the incumbent solution and obtain an interim solution. Denote all pairs (i, j ) ∈ I × I, i = j of trains of the interim solution as non-taboo. 1.1 Finding a best move: Among all moves of non-taboo pairs of trains of the interim solution, find the one, which minimizes the objective function. Perform this move to the interim solution, mark the moved pair of trains (i ∗ , j ∗ ) and (j ∗ , i ∗ ) as taboo. Repeat 1.1 to the interim solution until all pairs are marked taboo or until no feasible move is found. Determine r ∈ {0, . . . , n(n − 1)/2} so that the interim’s objective is minimized after performing the first r moves. 2. Improving the solution: If r > 0 perform the first r moves to the incumbent solution and go to step 1.

If r = 0 then stop and return the current (incumbent) solution. Each iteration of this algorithm has a complexity of O(n4 ). 4.2 An exact algorithm Motivated by the good performance of the heuristic algorithms and by the results of Sect. 3, we have developed a branch and bound algorithm. The branching is done by assigning G trains to the last available slot. Thus, each node  has up to G·T branches, at which T  denotes the remainG ing available slots. We have implemented this procedure in such a way that the algorithm invokes itself whenever a new node is to be fathomed. We therefore present the algorithm in the same way. Algorithm 6 (Branch and Bound, BB) 0. Initialization: Determine a (global) upper bound UB of the objective function score using the solution of Algorithm 5. Go to Step 1 and pass over (I, T , ∅, 0). 1. Fetch: Input: I (current train set), T (number of slots remaining), IR ⊆ I (trains that have to revisit), LB (lower bound) Determine a (local) lower bound LB using Theorem 3.2 and (10). If LB + LB ≥ UB, then return. Else go to Step 2. 2. Branching: For any subset IT ⊆ I with |IT | = G do the following: 1. Assign each element of IT to slot T . Set IR = IR and LB = LB. 2. For each pair (i, j ) with i ∈ / IT and j ∈ IT do: (a) LB = LB + α3 · (Aij + Aj i ) (only TYSP2) (b) LB = LB + α2 · Aij

J Sched

(c) If i ∈ / IR and Aij > 0: LB = LB + α1 , IR = IR ∪ {i} (only TYSP) 3. If LB ≥ UB, then return. 4. If T = 1 and UB > LB , then UB = LB and return. Else, go to Step 1 and pass over (I \IT , (T − 1), IR , LB ). The algorithm uses depth first search. Thus, Step 1 may be started many times, but at most T threads can be active, i.e. not fathomed. Note that if this algorithm is used for TYSP2, the set of trains surely revisiting (IR ) need not be considered. It would also be possible to always fill the first slot instead of the last one in Step 2.1. However, it turned out that this is unfavorable, as the lower bounds in 2.2(b) and 2.2(c) are weaker. This is caused by the fact, that in the latter case, only elements of IT can tighten the bound, whereas in Algorithm 6 all elements of I \IT can tighten the bound.

5 Computational study All methods presented in the previous section have been implemented in Java 2 and run on an Intel® Core™2 Duo, 2.53 GHz PC, with 2.96 GB of memory. There is one test bed available for the train scheduling problem, which has been presented by Boysen et al. (2010a). The instances are randomly generated according to the following attributes: • • • •

The number of tracks G The set of trains I The matrix (Aij )i,j ∈I For each train, the earliest and latest slot.

In each instance, there are between 12 and 48 trains to be assigned to 2–8 tracks. These instances also differ with regard to matrix (Aij )i,j ∈I , being either very sparse, or with only few zeros, or somewhere in-between. Furthermore, either no time restrictions, only arrival time restrictions, or arrival and departure time restrictions are considered. In total, the test bed consists of 30,240 instances. In Boysen et al. (2010a), a heuristic Beam Search Procedure (BS) and an exact Dynamic Programming Approach (DP) have been presented and tested. Furthermore, they present results of a first-come-first-serve heuristic (FCFS) as it is applied at many real-world transshipment yards. Only results for TYSP are presented as TYSP2 has not been considered. Thus, we restrict our comparison to TYSP. The objective weights were set to α1 = 24 and α3 = 1. This is based on the observation that a revisit takes on average 60 minutes whereas a split move on average causes 2.5 minutes extra operational time, leading to a ratio of 24:1 (Boysen et al. 2010a).

First, solution performance of heuristic approaches is evaluated (see Table 2). The results are differentiated according to time restrictions with aggregated results being presented, as well. For each algorithm, the number of revisits, split moves, the objective function score, and CPU time (in seconds) aggregated over all respective instances are listed. As one might expect, the results of CBSP (Algorithm 2) are improved by the ones of HC (Algorithm 3), which again are outperformed by EC1 and EC2 (Algorithms 4 and 5). Except for the start procedure, all these algorithms deliver better results than Beam Search in a much shorter time span. Beam Search required over 24 hours to solve all 30,240 instances. Additionally, its results are on average almost 10% above the ones of Algorithm 5, which required only 2 hours and 5 minutes solving all instances. Clearly, the results reveal FCFS being the least efficient procedure. The existence of time restrictions obviously leads to worse objective function scores. However, as the restrictions reduce the search space of all algorithms (except the starting procedures), run times are lower compared to the unrestricted case. The branch and bound algorithm was tested on 17,280 instances, for which optimal solutions are known. Again, aggregated results as well as results differing with respect to time restrictions are shown (see Table 3). Additionally, heuristic results (especially the average relative gap to the optimal solution values) are presented. Interestingly, the second ejection chain algorithm delivers solutions that are only 0.6% above optimal ones. This is a very promising result as the algorithm obtains its solutions in a very short amount of time, even for big instances. The second ejection chain algorithm gets even closer to the optimal solutions, if time restrictions are considered. Otherwise, its results are on average 1.1% above optimal solution value. The branch and bound algorithm solves instances with time restrictions much faster than those without. On average, the branch and bound algorithm requires 165 seconds for solving one of the 17,280 instances with a maximum runtime up to 3 hours. Using dynamic programming, many instances could not be solved within our time limit of 8 hours, even in cases in which branch and bound needed less than a minute. Thus, dynamic programming and branch and bound can only be compared using small instances. We obtained 8,640 instances being solved by both algorithms. Although BB and DP do not always find the same solution, they always find solutions with the same objective function score. Clearly, branch and bound finds solutions much faster (53 seconds in total) than dynamic programming (142 seconds). Furthermore, we have modeled TYSP in GAMS and applied CPLEX 10 for solving the instances presented in Table 3. Unfortunately, we had to stop the test run after 40 (easy) instances, as the total runtime reached almost 2.5 hours. On average it took 218 seconds solving each instance,

J Sched Table 2 Comparison of the heuristics on 3 · 10080 instances

Time restrictions none CBSP

HC

EC1

EC2

FCFS

BS

Sum arrival

Rev.

184418

190013

189751

564182

18.66

Split

7686552

8389445

8189710

24265707

Obj.

12112584

12949757

12743734

37806075

802.44 1250.20

CPU

0.59

8.30

7.24

16.13

0.00

Rev.

138801

163161

153894

455856

15.07

Split

7711839

8300733

8138036

24150608

Obj.

11043063

12216597

11831492

35091152

798.63 1160.42

CPU

29.29

18.08

19.01

66.38

0.00

Rev.

133289

160026

149332

442647

14.64

Split

7707789

8285839

8119785

24113413

Obj.

10906725

12126463

11703753

34736941

797.40 1148.71

CPU

78.07

34.02

38.72

150.81

0.00

Rev.

115960

150072

134386

400418

13.24

Split

7647103

8236861

8062679

23946643

Obj.

10430143

11838589

11287943

33556675

791.89 1109.68

CPU

4663.42

1089.69

1714.40

7467.51

0.25

Rev.

196079

195871

196148

588098

19.45

Split

9966648

9957081

9960165

29883894

Obj.

14672544

14657985

14667717

43998246

988.22 1454.97

CPU

0.22

0.09

0.19

0.50

0.00

Rev.

145025

172752

164075

481852

15.93

Split

8082932

8648282

8606588

25337802

Obj.

11563532

12794330

12544388

36902250

837.89 1220.31

CPU

51942.65

13018.82

23550.51

88511.98

2.93

Table 3 Comparison of the methods on 3 · 5760 exactly solved instances

Time restrictions none BB

EC2

FCFS

BS

Mean

arr. & dep.

Sum

arrival

Mean

Gap

arr. & dep.

Rev.

43765

56990

51871

152626

8.83

Split

2593064

2903676

2814119

8310859

Obj.

3643424

4271436

4059023

11973883

480.95 692.93

CPU

2058683

384133

402927

2845743

164.68

Rev.

45228

57415

52708

155351

8.99

Split

2599496

2904491

2815654

8319641

Obj.

3684968

4282451

4080646

12048065

481.46 697.23

CPU

157

31

46

234

0.01

Rev.

69203

69083

69194

207480

12.01

Split

3448510

3440928

3442394

10331832

Obj.

5109382

5098920

5103050

15311352

597.91 886.07

CPU

0

0

0

0

0.00

Rev.

51921

61956

59223

173100

10.02

Split

2716207

2992442

2943189

8651838

Obj.

3962311

4479386

4364541

12806238

500.69 741.10

CPU

2002

580

1011

3593

0.21

0.00

0.62

27.87

6.95

J Sched

with the fastest requiring 21 seconds. On the other hand, DP and BB consumed only 2.56 and 0.21 seconds, respectively, for solving these 40 instances. Thus, it can be concluded that off-the-shelf solvers are not applicable for solving realworld TYSP instances. Let us now consider the influence of the number of trains. This parameter seems to be the most important determinant on whether the branch and bound algorithm delivers optimal results in reasonable time. All instances with up to 24 trains have been solved to optimality by BB, whereas many instances with 36 trains could not be solved within several hours. In order to extract the influence of the train number on solution quality, we consider a fixed number of tracks. Thus, in Table 4 only instances with four tracks are summarized. With increasing train number objective values seem to increase in linear fashion. Runtime of heuristics increases polynomially, so that even an instance with 48 trains requires merely several seconds to be solved by the second ejection chain algorithm. On the other hand runtime increase is much worse if branch and bound is considered. It takes only fractions of a second solving an instance with 12 trains, but on average almost 25 minutes are required if an instance with 24 trains is to be solved. Furthermore, we consider the influence of a varying number of tracks. In Table 5, results of heuristic procedures (with a variable number of tracks) are listed. Note that there only exist instances with up to 36 trains having more than 4 tracks, so that we omit instances with more than 36 trains. Clearly, for a given set of trains, the number of revisits and split moves decreases with an increasing number of tracks, as more trains can be jointly served in a bundle. Thus, for an increasing number of tracks objective vales decrease no matter, which algorithm is chosen. As an increasing track number leads to fewer slots, the neighborhood used by the hillclimber and ejection chain procedures gets smaller. Therefore, these procedures show a lower runtime for instances with higher track number. Contrarily, beam search shows an increasing runtime with fewer tracks. This is caused by the fact that the number of edges of the underlying graph (representing the search space) is positively correlated with the number of tracks. For different track numbers results of all 17,280 instances solved to optimality are listed in Table 6. As in Table 5, EC2 has decreasing and BS increasing runtime for an increasing number of tracks. Branch and bound shows its largest runtime for instances with 4 and 6 tracks. Clearly, the runtime of branch and bound should be positively correlated with the number of feasible solutions. If there are no time restrictions, the number of solutions can be described using the binomial coefficient as follows (with n trains, G tracks, and T = n/G time slots):  T   n − iG i=0

G

.

Table 4 Results of 4 · 720 instances with 4 tracks Number of trains 12 CBSP

HC

EC1

EC2

FCFS

BS

BB

Rev.

24

36

48

15557

35871

55403

75122

Split

678062

1512209

2350699

3176902

Obj.

1051430

2373113

3680371

4979830

CPU

0.10

0.51

1.63

3.76

Rev.

14360

29531

44419

58771

Split

662095

1498896

2346833

3189794

Obj.

1006735

2207640

3412889

4600298

CPU

0.14

1.45

6.12

17.48

Rev.

14153

28631

43003

56804

Split

661152

1496362

2345874

3190157

Obj.

1000824

2183506

3377946

4553453

CPU

0.21

2.90

13.37

43.33

Rev.

13742

26107

38288

49506

Split

659363

1482733

2322476

3163026

Obj.

989171

2109301

3241388

4351170

CPU

1.22

62.77

535.30

2538.94

Rev.

16092

37503

58254

78845

Split

787124

1895873

2987373

4076468

Obj.

1173332

2795945

4385469

5968748

CPU

0.03

0.03

0.03

0.09

Rev.

14200

30610

46882

62884

Split

670494

1572481

2507385

3430519

Obj.

1011294

2307121

3632553

4939735

CPU

1.86

109.46

1290.41

7283.23

Rev.

13653

25512

Split

659493

1478719

Obj.

987165

2091007

CPU

5.01

1072930

Thus, the binomial coefficient is comparatively small, if G is either small or large, so that the number of solutions is the highest if there exists a medium track number (of 4 or 6 tracks). Furthermore, it seems noteworthy that results of the second ejection chain algorithm and beam search are closer to the optimal solutions for a higher number of tracks. In case of only 2 tracks, EC2 delivers results, which are on average 1.1% above optimum (BS 9.4%), whereas the results for 8 tracks are only 0.2% above optimum (BS 3.4%).

6 Conclusions The paper on hand considers the transshipment yard scheduling problem (TYSP), which perpetually arises during the daily operations of rail–rail transshipment yards. Trains have

J Sched Table 5 Heuristic results of 4 · 6480 instances with up to 36 trains

Table 6 Results of 4 · 4320 instances with up to 24 trains

Number of tracks 2 CBSP

HC

EC1

EC2

FCFS

BS

Number of tracks

4

6

8

2 BB

4

6

8

Rev.

118326

106831

96556

87544

Rev.

39481

39165

35715

38265

Split

5311158

4540970

4011126

3632877

Split

2666446

2138212

1749892

1756309

Obj.

8150982

7104914

6328470

5733933

Obj.

3613990

3078172

2607052

2674669

CPU

2.10

2.24

2.41

1.99

CPU

83608

1072935

1043072

646129

Rev.

91792

88310

81575

76388

Rev.

41086

39849

35981

38435

Split

6608903

4507824

3909811

3488347

EC2

Split

2667802

2142096

1752650

1757093

Obj.

9332524

6627264

5867611

5321659

Obj.

3653866

3098472

2616194

2679533

CPU

9.03

7.70

7.01

4.89

CPU

78.34

64.00

51.02

41.15

Rev.

89139

85787

79209

74556

Rev.

59747

53595

46873

47265

Split

5397654

4503388

3894751

3464998

Split

3067601

2682997

2294297

2286937

Obj.

7536990

6562276

5795767

5254342

Obj.

4501529

3969277

3419249

3421297

CPU

18.64

16.48

15.41

9.80

CPU

0.02

0.06

0.03

0.00

Rev.

78854

78137

73534

71369

Rev.

50456

44810

38563

39271

Split

5397527

4464572

3841360

3422306

Split

2744474

2242975

1841599

1822790

Obj.

7290023

6339860

5606176

5135162

Obj.

3955418

3318415

2767111

2765294

CPU

723.41

599.30

520.62

255.06

CPU

12.48

111.31

707.19

2761.89

Rev.

120613

111849

102434

93034

Split

6241312

5670370

5094681

4538864

Obj.

9136024

8354746

7553097

6771680

CPU

0.05

0.10

0.14

0.05

Rev.

100913

91692

82881

75884

Split

5591398

4750360

4112250

3621791

Obj.

8013310

6950968

6101394

5443007

CPU

60.23

1401.72

20669.57

58960.09

to be assigned to time slots, so that in each slot a given number of G trains jointly enter and leave the yard while arrival and departure time restrictions are observed. The objective is to minimize split moves and either revisits or delayed containers. We show that the problem remains NP-hard, even if only one of the objectives is considered. Furthermore, we derive lower bound arguments, which are applied in an exact branch and bound procedure. Several heuristic algorithms are introduced and shown to be superior to previous approaches in a comprehensive computational study. Within a fraction of a second, a novel ejection chain heuristic delivers results being very close to optimal solution values. Further research should focus on two areas. The promising performance of the procedures introduced in this paper might allow for a combined solution approach of interdependent problems arising at transshipment yards. For instance, it seems reasonable to solve TYSP (or TYSP2) and to simultaneously determine the rail track for each train (problems (i) and (iv) as defined in Sect. 1). In such a setting, two trains with a large number of containers to be exchanged should

FCFS

BS

not only be assigned to the same bundle but also to neighboring tracks. Additionally, future research should concentrate on the fact that time tables of trains are often subject to changes. Containers arriving late on delayed trains obstruct train processing within the yard, which potentially leads to even more delays of other trains. Therefore, it seems reasonable to integrate some kind of robustness measure into TYSP making the assignment of trains to slots unassailable to small changes in input data. Acknowledgement This work has been supported by the German Science Foundation (DFG) through the grant “Optimierung der Containerabfertigung in Umschlagbahnhöfen” (BO 3148/1-1 and PE 514/16-1).

References Alicke, K. (2002). Modeling and optimization of the intermodal terminal mega hub. OR Spectrum, 24, 1–17. Alicke, K., & Arnold, D. (1998). Modellierung und Optimierung von mehrstufigen Umschlagsystemen. Fördern und Heben, 8, 769– 772. Ballis, A., & Golias, J. (2002). Comparative evaluation of existing and innovative rail–road freight transport terminals. Transportation Research Part A: Policy and Practice, 36, 593–611. Blasum, U., Bussieck, M., Hochstättler, W., Moll, C., Scheel, H.-H., & Winter, T. (1999). Scheduling trams in the morning. Mathematical Methods of Operations Research, 49, 137–148. Bontekoning, Y., Macharis, C., & Trip, J. (2004). Is a new applied transportation research field emerging? A review of intermodal rail-truck freight transport literature. Transportation Research Part A: Policy and Practice, 38, 1–24.

J Sched Bostel, N., & Dejax, P. (1998). Models and algorithms for container allocation problems on trains in a rapid transshipment shunting yard. Transportation Science, 32, 370–379. Boysen, N., & Fliedner, M. (2010). Determining crane areas in intermodal transshipment yards: The yard partition problem. European Journal of Operational Research, 204, 336–342. Boysen, N., Jaehn, F., & Pesch, E. (2010a). Scheduling freight trains in rail–rail transshipment yards, Transportation Science, to apppear Boysen, N., Fliedner, M., & Kellner, M. (2010b). Determining fixed crane areas in rail–rail transshipment yards. Transportation Research Part E, 46, 1005–1016. Cordeau, J.-F., Toth, P., & Vigo, D. (1998). A survey of optimization models for train routing and scheduling. Transportation Science, 32, 380–404. Corry, P., & Kozan, E. (2008). Optimised loading patterns for intermodal trains. OR Spectrum, 30, 721–750. Crainic, T., & Kim, K. (2007). Intermodal transport. In C. Barnhart & G. Laporte (Eds.), Transportation: Vol. 14. Handbooks in operations research and management science (pp. 467–538). Amsterdam: North-Holland. Dahlhaus, E., Horak, P., Miller, M., & Ryan, J. (2000). Optimised loading patterns for intermodal trains. Discrete Applied Mathematics, 103, 41–54. EU (2007). Mitteilung der Kommission an den Rat und das europäische Parlament: Aufbau eines vorrangig für den Güterverkehr bestimmten Schienennetzes. Feo, T., Goldschmidt, O., & Khellaf, M. (1992). One-half approximation algorithms for the k-partition problem. Operations Research, 40, 170–173. Freling, R., Lentink, R., Kroon, L., & Huisman, D. (2005). Shunting of passenger train units in a railway station. Transportation Science, 39, 261–272. Garey, M., & Johnson, D. (1979). Computers and intractability: A guide to the theory of NP-completeness. New York: Freeman. He, S., Song, R., & Chaudhry, S. (2000). Fuzzy dispatching model and genetic algorithms for railyards operations. European Journal of Operational Research, 124, 307–331.

Kellner, M., Boysen, N., & Fliedner, M. (2010). How to park freight trains on rail–rail transshipment yards: The train location problem, submitted. Lim, A., Rodrigues, B., & Xu, Z. (2007). A m-parallel crane scheduling problem with a non-crossing constraint. Naval Research Logistics, 54, 115–127. Macharis, C., & Bontekoning, Y. (2004). Opportunities for or in intermodal freight transport research: A review. European Journal of Operational Research, 153, 400–416. Meyer, P. (1999). Entwicklung eines Simulationsprogramms für Umschlagterminals des Kombinierten Verkehrs. Aachen: Shaker Verlag. Moccia, L., Cordeau, J., Gaudioso, M., & Laporte, G. (2006). A branch-and-cut algorithm for the quay crane scheduling problem in a container terminal. Naval Research Logistics, 53, 45–59. Papadimitriou, C., & Steiglitz, K. (1982). Combinatorial optimization: Algorithms and Complexity. Prentice-Hall: Englewood Cliffs. Pesch, E., & Glover, F. (1997). TSP ejection chains. Discrete Applied Mathematics, 76, 165–181. Rotter, H. (2004). New operating concepts for intermodal transport: The mega hub in Hanover/Lehrte in Germany. Transportation Planning and Technology, 27, 347–365. Sammarra, M., Cordeau, J., Laporte, G., & Monaco, M. (2007). A tabu search heuristic for the quay crane scheduling problem. Journal of Scheduling, 10, 327–336. Tanaev, V. S., Gordon, V. S., & Shafransky, Y. M. (1994). Scheduling theory. Single-stage systems. Kluwer: Dordrecht. Wiegmans, B., Stekelenburg, D., Versteegt, C., & Bontekoning, Y. (2007). Modeling rail–rail exchange operations: An analysis of conventional and new-generation terminals. Transportation Journal, 46, 5–20. Winter, T., & Zimmermann, U. (2000). Real-time dispatch of trams in storage yards. Annals of Operations Research, 96, 287–315. Zhu, Y., & Lim, A. (2006). Crane scheduling with non-crossing constraints. Journal of Operational Research Society, 57, 1464– 1471.

Suggest Documents