# A reclaimer scheduling problem arising in coal stockyard management

## Abstract

We study a number of variants of an abstract scheduling problem inspired by the scheduling of reclaimers in the stockyard of a coal export terminal. We analyze the complexity of each of the variants, providing complexity proofs for some and polynomial algorithms for others. For one, especially interesting variant, we also develop a constant factor approximation algorithm.

### Keywords

Reclaimer scheduling Stockyard management Approximation algorithm Complexity## 1 Introduction

We investigate a scheduling problem that arises in the management of a stockyard at a coal export terminal. Coal is marketed and sold to customers by brand. The brand of coal dictates its characteristics, for example, the range in which its calorific value, ash, moisture, and/or sulfur content lies. In order to deliver a brand required by a customer, coal from different mines, producing coal with different characteristics, is “mixed” in a stockpile at the stockyard of a coal terminal to obtain a blended product meeting the required brand characteristics. Stackers are used to add coal that arrives at the terminal to stockpiles in the yard and reclaimers are used to reclaim completed stockpiles for delivery to waiting ships at the berths.

We focus on the scheduling of the reclaimers. The stockyard motivating our investigation has four pads on which stockpiles are build. A stockpile takes up the entire width of a pad and a portion of its length. Each pad is served by two reclaimers that cannot pass each other and each reclaimer serves two pads, one on either side of the reclaimer. Effective reclaimer scheduling, even though only one of component of the management of the stockyard management at a coal terminal, is a critical component, because reclaimers tend to be the constraining entities in a coal terminal (reclaiming capacity, in terms of tonnes per hour, is substantially lower than stacking capacity).

In order to gain a better understanding of the challenges associated with reclaimer scheduling, we introduce an abstract model of reclaimer scheduling and study the complexity of different variants of the model as well as algorithms for the solution of these variants. Our investigation has not only resulted in insights that may be helpful in improving stockyard efficiency, but has also given rise to a new and intriguing class of scheduling problems that have proven to be surprisingly rich. One reason is that the travel time of the reclaimers, i.e., the time between the completion of the reclaiming of one stockpile and the start of the reclaiming of a subsequent stockpile, cannot be ignored. Another reason is the interaction between the two reclaimers, caused by the fact that they cannot pass each other.

The remainder of the paper is organized as follows. In Sect. 2, we provide background information on the operation of a coal export terminal and the origin of the reclaimer scheduling problem. In Sect. 3, we provide a brief literature review. In Sect. 4, we introduce the abstract model of the reclaimer scheduling problem that is the focus of our research and we introduce a graphical representation of schedules that will be used throughout the paper. In Sects. 5 and 6, we present the analysis of a number of variants of the reclaimer scheduling problem. In Sect. 7, we give some final remarks and discuss future research opportunities.

## 2 Background

The Hunter Valley Coal Chain (HVCC) refers to the inland portion of the coal export supply chain in the Hunter Valley, New South Wales, Australia, which is the largest coal export supply chain in the world in terms of volume. Most of the coal mines in the Hunter Valley are open pit mines. The coal is mined and stored either at a railway siding located at the mine or at a coal loading facility used by several mines. The coal is then transported to one of the terminals at the Port of Newcastle, almost exclusively by rail. The coal is dumped and stacked at a terminal to form stockpiles. Coal from different mines with different characteristics is “mixed” in a stockpile to form a coal blend that meets the specifications of a customer. Once a vessel arrives at a berth at the terminal, the stockpiles with coal for the vessel are reclaimed and loaded onto the vessel. The vessel then transports the coal to its destination. The coordination of the logistics in the Hunter Valley is challenging as it is a complex system involving 14 producers operating 35 coal mines, 27 coal load points, 2 rail track owners, 4 above rail operators, 3 coal loading terminals with a total of 8 berths, and 9 vessel operators. Approximately 1700 vessels are loaded at the terminals in the Port of Newcastle each year. For a more in-depth description of the HVCC see Boland et al. (2012).

An important characteristic of a coal loading terminal is whether it operates as a cargo assembly terminal or as a dedicated stockpiling terminal. When a terminal operates as a cargo assembly terminal, it operates in a “pull-based” manner, where the coal blends assembled and stockpiled are based on the demands of the arriving ships. When a terminal operates as dedicated stockpiling terminal, it operates in a “push-based” manner, where a small number of coal blends are built in dedicated stockpiles and only these coal blends can be requested by arriving vessels. We focus on cargo assembly terminals as they are more difficult to manage due to the large variety of coal blends that needs to be accommodated.

Depending on the size and the blend of a cargo, the assembly may take anywhere from 3 to 7 days. This is due, in part, to the fact that mines can be located hundreds of miles away from the port and getting a trainload of coal to the port takes a considerable amount of time. Once the assembly of a stockpile has started, it is rare that the location of the stockpile in the stockyard is changed; relocating a stockpile is time-consuming and requires resources that can be used to assemble or reclaim other stockpiles. Thus, deciding where to locate a stockpile and when to start its assembly is critical for the efficiency of the system. Ideally, the assembly of the stockpiles for a vessel completes at the time the vessel arrives at a berth (i.e., “just-in-time” assembly) and the reclaiming of the stockpiles commences immediately. Unfortunately, this does not always happen due to the limited capacities of the resources in the system, e.g., stockyard space, stackers, and reclaimers, and the complexity of the stockyard planning problem.

A seemingly small, but in fact crucial component of the planning process is the scheduling of the reclaimers, because reclaimers tend to be the constraining entities in a coal terminal (the reclaiming capacity is substantially lower than the stacking capacity).

*A*,

*B*,

*C*, and

*D*, on which cargoes are assembled. Coal arrives at the terminal by train. Upon arrival at the terminal, a train dumps its contents at one of three dump stations. The coal is then transported on a conveyor to one of the pads where it is added to a stockpile by a stacker. There are six stackers, two that serve pad

*A*, two that serve pad

*B*and pad

*C*, and two that serve pad

*D*. A single stockpile is built from several train loads over several days. After a stockpile is completely built, it dwells on its pad for some time (perhaps several days) until the vessel onto which it is to be loaded is available at one of the berths. A stockpile is reclaimed using a bucket-wheel reclaimer and the coal is transferred to the berth on a conveyor. The coal is then loaded onto the vessel by a shiploader. There are four reclaimers, two that serve pad

*A*and pad

*B*and two that serve pad

*C*and pad

*D*. Both stackers and reclaimers travel on rails at the side of a pad. Stackers and reclaimers that serve that same pads cannot pass each other.

A brief overview of the events driving the cargo assembly planning process is presented next. An incoming vessel alerts the coal chain managers of its pending arrival at the port. This announcement is referred to as the vessel’s nomination. Upon nomination, a vessel provides its estimated time of arrival (*ETA*) and a specification of the cargoes to be assembled to the coal chain managers. As coal is a blended product, the specification includes for each cargo a recipe indicating from which mines coal needs to be sourced and in what quantities. At this time, the assembly of the cargoes (stockpiles) for the vessel can commence. A vessel cannot arrive at a berth prior to its *ETA*, and often a vessel has to wait until after its *ETA* for a berth to become available. Once at a berth, and once all its cargoes have been assembled, the reclaiming of the stockpiles (the loading of the vessel) can begin. A vessel must be loaded in a way that maintains its physical balance in the water. As a consequence, for vessels with multiple cargoes, there is a predetermined sequence in which its cargoes must be reclaimed. The goal of the planning process is to maximize the throughput without causing unacceptable delays for the vessels.

For a given set of vessels arriving at the terminal, the goal is thus to assign each cargo of a vessel to a location in the stockyard, schedule the assembly of these cargoes, and schedule the reclaiming of these cargoes, so as to minimize the average delay of the vessels, where the delay of a vessel is defined to be the difference between the departure time of the vessel (or equivalently the time that the last cargo of the vessel has been reclaimed) and the earliest time the vessel could depart under ideal circumstances, i.e., the departure time if we assume the vessel arrives at its *ETA* and its stockpiles are ready to be reclaimed immediately upon its arrival.

When assigning the cargoes of a vessel to locations in the stockyard, scheduling their assembly, and scheduling their reclaiming, the limited stockyard space, stacking rates, reclaiming rates, and reclaimer movements have to be accounted for.

Since reclaimers are most likely to be the constraining entities in the system, reclaimer activities need to be modeled at a fine level of detail. That is all reclaimer activities, e.g., the reclaimer movements along its rail track and the reclaiming of a stockpile, have to be modeled in continuous time.

When deciding a stockpile location, a stockpile stacking start time, and a stockpile reclaiming start time, a number of constraints have to be taken into account: at any point in time no two stockpiles can occupy the same space on a pad, reclaimers cannot be assigned to two stockpiles at the same time, reclaimers can only be assigned to stockpiles on pads that they serve, reclaimers serving the same pad cannot pass each other, the stockpiles of a vessel have to be reclaimed in a specified reclaim order and the time between the reclaiming of consecutive stockpiles of a vessel can be no more than a prespecified limit, the so-called continuous reclaim time limit, and the reclaiming of the first stockpile of a vessel cannot start before *all* stockpiles of that vessel have been stacked. We focus on some of the aspects of real-world reclaimer scheduling as specified in Sect. 4.

The reclaiming of a stockpile using a bucket-wheel reclaimer is conducted in a series of long travel bench cuts. For each cut, the reclaimer moves along the whole length of the stockpile with a fixed boom position. Then the boom is adjusted for the next cut, the reclaimer turns around and moves along the stockpile in the opposite direction as indicated in Fig. 1. The reclaiming process is fully automated and a typical stockpile is reclaimed in three benches with approximately 55 cuts. In our simplified model, we assume that a stockpile is reclaimed, while a reclaimer moves along it exactly once.

## 3 Literature review

The scheduling of bucket-wheel reclaimers in a coal terminal has some similarities to the scheduling of quay and yard cranes (YCs) in container terminals. When a vessel arrives at a container terminal, import containers are taken off the vessel and mounted onto trucks by quay cranes (QCs) and then unloaded by YCs at various locations in the yard for storage. In the reverse operation, export containers are loaded onto trucks by YCs at the yard, are off-loaded at the quay, and loaded onto a vessel by QCs. Both reclaimers and cranes move along a single rail track and therefore cannot pass each other, and handle one object at a time (a stockpile in the case of a bucket-wheel reclaimer and a container in the case of quay or YCs). Furthermore, in coal terminals as well as container terminals maximizing throughput, i.e., minimizing the time it takes to load and/or unload vessels, is the primary objective, and achieving a high throughput depends strongly on effective scheduling of the equipment.

However, there are also significant differences between the scheduling of bucket-wheel reclaimers in a coal terminal and the scheduling of quay and YCs in the container terminals. The number of containers that has to be unloaded from or loaded onto a vessel in a container terminal is much larger than the number of cargoes that have to be loaded onto a vessel in a coal terminal. As a result, the sequencing of operations (e.g., respecting precedence constraints between the unloading/loading of containers) is much more challenging and a primary focus in crane scheduling problems. On the other hand, containers and holds of a vessel have fixed length, whereas stockpiles can have an arbitrary length. As a consequence, the time between the completion of one task and the start of the next task (to account for any movement of equipment) can only take on a limited number of values in crane scheduling problems at a container terminal, especially in quay crane scheduling, and can take on any value in reclaimer scheduling problem.

Below, we give a brief overview of the literature on scheduling of quay and YCs in container terminals.

Most of the literature on quay crane scheduling focuses on a static version of the problem in which the number of vessels, berth assignments, and the quay crane assignments for each vessel are known in advance for the entire planning horizon.

Daganzo (1989) studies the optimal assignment QCs to the holds of multiple vessels. In the considered setting, a task refers to the loading or unloading of a single hold of a vessel, and any precedence constraints between the containers of a single hold are not accounted for. Crane movement time between different holds is assumed to be negligible. The fact that QCs cannot pass each other is not explicitly considered. A mixed integer programming formulation minimizing the (weighted) sum of departure times of the vessels is presented. Some heuristics for a dynamic variant, in which vessel arrival times are uncertain are also proposed. Peterkofsky and Daganzo (1990) develop a branch-and-bound algorithm for the same problem that is able to solve larger problem instances.

Kim and Park (2004) study the scheduling of multiple QCs simultaneously operating on a single vessel taking into account precedence constraints between containers and no-passing constraints between QCs. In their setting, a task refers to a “cluster,” where a cluster represents a collection of adjacent slots in a hold and a set of containers to be loaded into/unloaded from these slots. The objective is to minimize a weighted combination of the load/unload completion time of the vessel and the sum of the completion times of the QCs, with higher weight for the load/unload completion time. The sum of the completion times of the QCs is included in the objective to ensure that QCs will be available to load/unload other vessels as early as possible. The problem is modeled as a parallel machine scheduling problem. A MIP formulation is presented and branch-and-bound algorithm is developed for its solution. A greedy randomized adaptive search procedure (GRASP) is developed to handle instances where the branch-and-bound algorithm takes too much time. Moccia et al. (2006) have strengthened the MIP formulation of Kim and Park (2004) by deriving sets of valid inequalities. They propose a branch-and-cut algorithm to solve the problem to optimality.

Ng and Mak (2006) also study the scheduling of multiple QCs for a single vessel with the objective of minimizing the loading/unloading time. In their setting, a task refers to the loading/unloading of a single hold, but *no-passing* constraints for the QCs are explicitly taken into account. A heuristic that partitions the holds of the vessel into non-overlapping zones and assigns a QC to each zone is proposed. The optimal zonal partition is found by dynamic programming. Zhu and Lim (2006) consider the same setting, but formulate a mixed integer programming model and propose a branch-and-bound algorithm for its solution (which outperforms CPLEX on small instances). A simulated annealing algorithm is developed to handle larger instances.

Liu et al. (2006) study a dynamic variant of the problem considered by Daganzo (1989), which accounts for movement time of QCs and that QCs cannot pass each other, and enforces a minimum separation between vessels. By limiting the movement of QCs to be unidirectional, i.e., either from “stern to bow” or from “bow to stern” when loading/unloading a vessel, it becomes relatively easy to handle the no-passing constraint and to enforce a minimum separation. The objective is to minimize the time to load/unload multiple vessels. A heuristic is proposed for the solution of the problem. Lim et al. (2007) study a static, single vessel setting and also adopt a unidirectional movement restriction for QCs to handle the no-passing constraint. When a task refers to the loading/unloading of a hold, it is shown that there always exists an optimal schedule among the unidirectional schedules. Since a unidirectional schedule can be easily obtained for a given task-to-QC assignment, a simulated annealing algorithm is proposed to explore the space of task-to-QC assignments.

For a more detailed, more comprehensive survey of crane scheduling, the reader is referred to Bierwirth and Meisel (2010).

Recently Legato et al. (2012) presented a refined version of an existing mixed integer programming formulation of the QC scheduling problem incorporating many real-life constraints, such as QC service rates, QC ready and due times, QC no-passing constraints, and precedence constraints between groups of containers. Unidirectional QC movements can be captured in the model as well. The best-known branch-and-bound algorithm [i.e., from Bierwirth and Meisel (2009)] is improved with new lower bounding and branching techniques.

YC scheduling is another critical component of the efficient operation of a container terminal. The yard is typically divided into several storage blocks, and YCs are used to transfer containers between these storage blocks and trucks (or prime movers). YCs are either rail mounted or rubber wheeled. The rubber wheeled YCs have the flexibility to move from one yard block to another, while rail mounted YCs are restricted to work on a single yard block.

Kim and Kim (1999) study the problem of minimizing the sum of the set-up times and the travel times of single YC. Their mixed integer programming model determines the optimal route for the YC as well as the containers to be picked up by the YC in each of the storage blocks. Because of the excessive solve times of the mixed integer program for large instances, two heuristics are proposed in Kim and Kim (2003).

Zhang et al. (2002) study the problem of scheduling a set of YCs covering a number of storage blocks so as to minimize the total tardiness (or delays). A mixed integer program model determines the number of YCs to be deployed in each storage block in each planning period, and a lagrangian relaxation-based heuristic algorithm is employed to find an optimal solution.

Ng and Mak (2005a, b) studied the problem of scheduling an YC that has to load/unload a given set of containers with different ready times. The objective is to minimize the sum of waiting times. The problem is formulated as mixed integer programming problem, and a branch-and-bound algorithm is developed for its solution. Ng (2005) expands the study to the scheduling of multiple YCs in order to minimize the total loading time or the sum of truck waiting times. Because more than one YC can serve a storage block, a no-passing constraint has to be enforced. A dynamic programming-based heuristic is proposed to solve the problem and a lower bound is derived to be able to assess the quality of the solutions produced by the heuristic.

Petering (2009) investigates how the width of the storage blocks affects the efficiency of the operations at a container terminal, given that the number of prime movers, the number of YCs, the service rates of the YCs remain unchanged. A simulation study indicates that the optimal storage block width ranges from 6 to 12 rows, depending on the size and shape of the terminal and the annual number of containers handled by the terminal. Their experimental results further show that restrictive YC mobility due to more storage blocks gives better performance than a system with greater YC mobility.

Only recently, researchers have started to examine the scheduling of equipment in bulk goods terminals. Hu and Yao (2012) consider the problem of scheduling the stacker and reclaiming at a terminal for iron ore. It is assumed that all tasks (stacking and reclaiming operation) are known at the start of the planning horizon. The terminal configuration is such that a single stracker/reclaimer serves two pads, so there is no need to consider a no-passing constraint. A sequence dependent set-up time, as a result of the movement of the stacker/reclaimer between two consecutive tasks, is considered. A mixed integer programming formulation is presented and a genetic algorithm is proposed. Sun and Tang (2013) study the problem of scheduling reclaimers at an iron ore import terminal serving the steel industry. Each reclaim task has a release date and due date, and the goal is to minimize the completion of a set of reclaim tasks. The terminal configuration is not specified and no mention is made of no-passing constraints. A mixed integer programming formulation is presented, and a Benders decomposition algorithm is proposed for its solution.

For the single reclaimer case, the fact that the reclaimer has to travel along every stockpile gives it a traveling salesman flavor. The basic traveling salesman problem is trivial when all nodes are on a line, but it becomes difficult when additional constraints, such as time windows, are added (Psaraftis et al. 1990; Tsitsiklis 1992). In our problem, the single reclaimer case becomes a traveling salesman problem on a line with prescribed edges: the nodes are the endpoints of the stockpiles, and for every stockpile the edge connecting its endpoints has to be traversed in the solution.

## 4 Problem description

The practical importance of reclaimer scheduling at a coal terminal prompted us to study a set of simplified and idealized reclaimer scheduling problems. These simplified and idealized reclaimer scheduling problems turn out to lead to intriguing and, in some cases, surprisingly challenging optimization problems.

There are two reclaimers \(R_0\) and \(R_1\) that serve two pads; one on either side of the reclaimers.

Reclaimer \(R_0\) starts at one end of the stock pads and reclaimer \(R_1\) starts at the other end of the stock pads.

Stockpiles are reclaimed by one of the two reclaimers \(R_0\) and \(R_1\) that move forward and backward along a single rail in the aisle between the two pads.

The reclaimers cannot pass each other but they can go along side by side.

The reclaimers are identical, i.e., they have the same reclaim speed and the same travel speed.

Each stockpile has a given length and a given reclaim time (derived from the stockpile’s size and the reclaim speed of the reclaimers).

When a stockpile is reclaimed, it has to be traversed along its entire length by one of the reclaimers, either from left to right or from right to left.

After reclaiming the stockpiles, the reclaimers need to return to their original position.

Both reclaimers are used for the reclaiming of stockpiles or only one reclaimer (\(R_0\)) is used to reclaim of stockpiles.

The positions of the stockpiles on the pads are given or have to be decided. If the positions on the pad are given, it is implicitly assumed that the stockpile positions are feasible, i.e., that stockpiles on the same pad do not overlap. If the positions have to be decided, then both the pad and the location on the pad have to be decided for each stockpile.

Precedence constraints between stockpiles have to be observed or not. When precedence constraints have to be observed, the reclaim sequence of the stockpiles is completely specified. That is, the precedence constraints form a chain involving all the stockpiles.

We use the following notation. When the positions of the stockpiles are given, we have two sets \(J_1 = \{1, \ldots , n_1\}\) and \(J_2 = \{n_1+1, \ldots , n\}\) of stockpiles located on the two identical and opposite pads \(P_1\) and \(P_2\). We represent a pad by segment [0, *L*], with *L* being the length of the pad. Stockpile \(j \in J_1\) occupies a segment \([l_j, r_j]\) on pad \(P_1\) (\(0 \leqslant l_j < r_j \le L\)). Similarly, stockpile \(j \in J_2\) occupies a segment \([l_j, r_j]\) on pad \(P_2\). Stockpiles cannot overlap on the same pad and we assume that \(r_j \leqslant l_{j+1}\) for \(j \in \{1, \ldots , n_1-1\}\) and for \(j \in \{n_1+1, \ldots , n-1\}\) and that \(r_j, l_j\) for \(j \in \{1, \ldots , n\}\) and *L* are integers.

Reclaimers start and finish at the two endpoints of the rail, reclaimer \(R_0\) at point 0 and reclaimer \(R_1\) at point *L*, and can reclaim stockpiles on either one of the pads (we assume there is no time required to switch from one pad to the other), but they cannot pass each other. A reclaimer can stay idle or move forward and backward at the given speed *s*. When reclaiming a stockpile the speed cannot be larger than *s*. Without loss of generality, we assume that the reclaim speed is equal to 1 and the travel speed is \(s\geqslant 1\). Thus, the time necessary to reclaim stockpile *j* is \(p_j = r_j - l_j\), the length of stockpiles is *j*.

When the positions of the stockpiles are not given but have to be decided, we are given the length \(p_j \in \mathbb {Z}\) of each stockpile *j* (\(0 < p_j \leqslant L\)) and we have to decide the pad on which to locate the stockpile (either \(P_1\) or \(P_2\)), the position \((l_j, r_j)\) of that pad that the stockpile will occupy, and the reclaimer schedules.

### 4.1 Graphical representation of a feasible schedule

0, The reclaimer is idle;

\(+s\), The reclaimer is moving to the right without processing any stockpile;

\(-s\), The reclaimer is moving to left without processing any stockpile;

\(+1\), The reclaimer is moving to right while processing a stockpile on either one of the two pads; and

\(-1\), the reclaimer is moving to left while processing a stockpile on either one of the two pads.

- 1.
The two functions \(H_0\) and \(H_1\) satisfy the inequality \(H_1(t)\geqslant H_0(t), \forall t\geqslant 0\) (the reclaimers do not pass each other);

- 2.
Each interval \([l_j,r_j]\) is traversed at least once at speed 1 (either from left to right or from right to left); and

- 3.
All other constraints are satisfied, e.g., precedence constraints between stockpiles.

## 5 Reclaimer scheduling without positioning decisions

### 5.1 No precedence constraints

#### 5.1.1 Single reclaimer

For variants with a single reclaimer, we assume that the active reclaimer is reclaimer \(R_0\) with initial position \(x_0 = 0\), and that the schedule of reclaimer \(R_1\) is \(H_1(t) = L\) for \(t \geqslant 0\).

*s*plus the additional time to process the stockpiles, i.e.,

**Forward–Backward (FB)**algorithm given in Algorithm 1, where we omit the index

*k*for the reclaimer which is understood to be 0.

**Theorem 1**

Algorithm 1 computes an optimal schedule for a single reclaimer in time *O*(*n*).

*Proof*

The schedule that is returned by Algorithm 1 is optimal because by construction its makespan equals the lower bound given by (1). The algorithm runs in time *O*(*n*). \(\square \)

#### 5.1.2 Two reclaimers

Unfortunately, optimally exploiting the additional flexibility and extra opportunities offered by a second reclaimer is not easy as we have the following theorem.

**Theorem 2**

Determining an optimal schedule for two reclaimers when the positions of the stockpiles are given and the stockpiles can be reclaimed in any order is NP-hard.

*Proof*

We provide a transformation from Partition. An instance is given by positive integers \(a_1,\ldots ,a_m\) and *B* satisfying \(a_1+\cdots +a_m=2B\) and the problem is to decide if there is an index set \(I\subseteq \{1,\ldots ,m\}\) with \(\sum _{i\in I}a_i=B\). We reduce this to the following instance of the reclaimer scheduling problem. The length of the pad is \(L=6B\), the travel speed is \(s=5B\), and we have \(n=m+2\) stockpiles which are all placed on pad \(P_1\), i.e., \(n_1=n\). The stockpile lengths are \(a_i\) (\(i = 1, \ldots , m\)) for the first *m* stockpiles and the two additional stockpiles have both length 2*B*. The positions of the stockpiles on the pad are given by \((l_{m+1}, r_{m+1}) = (0,2B)\), \((l_{m+2}, r_{m+2}) = (4B,6B)\), and \((l_i, r_i) = (2B + \sum _{j=1}^{i-1} a_i, 2B + \sum _{j=1}^i a_i)\) for \(i = 1, \ldots , m\). We claim that a makespan \(\leqslant \!\!3B+1\) can be achieved if and only if the Partition instance is a YES-instance. Clearly, if there is no *I* with \(\sum _{i\in I}a_i=B\), we cannot divide the stockpiles between the two reclaimers in such a way that the total stockpile length for both reclaimers is 3*B*, which implies that one of the reclaimers has a reclaim time of at least \(3B+1\), hence its makespan is larger than \(3B+1\) (as the reclaimer also has to travel without reclaiming a stockpile). Conversely, if there is an *I* with \(\sum _{i\in I}a_i=B\), we can achieve a makespan of less than or equal to \(3B+1\) as follows. Reclaimer \(R_0\) moves from \(x=0\) to \(x=4B\) while reclaiming (from left to right) stockpile \(m+1\) and the stockpiles with index in *I*, and then it returns to its start point at time \(3B+1\). Reclaimer \(R_1\) moves from \(x=L\) to \(x=2B\) without reclaiming anything, and then it moves back to \(x=L\), reclaiming (from left to right) the stockpiles with index in \(\{1,\ldots ,m\}\setminus I\) and stockpile \(m+2\). There is no clashing because the region that is visited by both reclaimers is the interval [2*B*, 4*B*], and reclaimer \(R_0\) enters this interval at time 2*B* and leaves it at time \(2B+3/5\), while reclaimer \(R_1\) enters at time 2 / 5 and leaves at time \(B+1\). \(\square \)

*L*] that represent occupied space on pads \(P_1\) and \(P_2\), respectively. Furthermore, let

*L*] with stockpiles on one side, with a stockpile on both sides, and with no stockpile on either side, respectively. Note that

*E*is a union of finitely many pairwise disjoint intervals, say

*X*. The set \(Q_2\) has to be traversed twice with speed 1 and the set \(Q_1\) has to be traversed once with speed 1 and once with traveling speed

*s*, hence \(C_1+C_2\geqslant 2\ell (Q_2) + \ell (Q_1)+ \ell (Q_1)/s\), which implies the lower bound

*E*. Note that at most one of the intervals in the partition (3) can contain points that are not visited by any reclaimer, because otherwise the stockpiles between two such points are not reclaimed. Now we consider two cases.

- Case 1:If every point of the set
*E*is visited, then the set*E*is traversed (at least) twice with speed*s*, so in this case the makespan*C*is at least$$\begin{aligned} K_0 = \frac{1}{2} \Big [ 2\ell (Q_2) + \ell (Q_1) + \ell (Q_1)/s + 2\ell (E)/s \Big ]. \end{aligned}$$ - Case 2:If some point in the interval \([a_i,b_i]\), \(i \in \{1, \ldots , r\}\), is not visited, then everything left of \(a_i\) is reclaimed by \(R_0\), while everything right of \(b_i\) is reclaimed by \(R_1\), so in this case the makespan
*C*is at leastwhere \(Q_2^- = Q_2 \cap [0, a_i]\), \(Q_2^+ = Q_2 \cap [b_i, L]\), and similarly for \(Q_1\) and$$\begin{aligned} K_i= & {} \max \left\{ 2\ell (Q_2^-) + \ell (Q_1^-) +\frac{\ell (Q_1^-)}{s} + 2\frac{\ell (E^-)}{s},\right. \\&\left. 2\ell (Q_2^+) + \ell (Q_1^+) +\frac{\ell (Q_1^+)}{s} + 2\frac{\ell (E^+)}{s} \right\} , \end{aligned}$$*E*.

**Theorem 3**

*Proof*

*f*(

*x*) be the return time of reclaimer \(R_0\) if it moves from 0 to

*x*, reclaiming everything on this part of pad \(P_1\), and then moves back to 0 while reclaiming everything on this part of pad \(P_2\). Similarly, let

*g*(

*x*) be the return time of reclaimer \(R_1\) if it moves from

*L*to

*x*reclaiming everything on this part of pad \(P_1\), and then moves back to

*L*, reclaiming everything on this part of pad \(P_2\). These are piecewise linear, continuous functions, which can be expressed in terms of the sets \(Q_1\), \(Q_2\), and

*E*:

*E*. Note that \(K_i=\max \{f(a_i),\,g(b_i)\}\). The functions

*f*and

*g*satisfy the following conditions:

\(f(0)=g(L)=0\) and \(f(L)=g(0)=2K_0\),

\(f(x)+g(x)=2K_0\) for all \(x\in [0,L]\), and

*f*is strictly increasing, and*g*is strictly decreasing.

- Case 1
There is at least one stockpile at position \(x^*\), i.e., \(x^*\in Q_1\cup Q_2\). In this case, for any interval \([a_i,b_i]\) in the partition (3), either \(b_i\leqslant x^*\) or \(a_i\geqslant x^*\), hence \(K_i=\max \{f(a_i),\,g(b_i)\}\geqslant K_0\), and consequently \(K^*=K_0\). This value is achieved by reclaiming everything left of \(x^*\) by reclaimer \(R_0\) and everything right of \(x^*\) by reclaimer \(R_1\) as described in the definition of the functions

*f*and*g*. - Case 2:
There is no stockpile at position \(x^*\), i.e., \(x^*\in [a_i,b_i]\) for some interval \([a_i,b_i]\) in the partition (3). Then \(K_i=\max \{f(a_i),\,g(b_i)\}\leqslant f(x^*)=K_0\). For \(j<i\), we have \(K_j\geqslant g(b_j)>g(x^*)=K_0\), and for \(j>i\), \(K_j\geqslant f(a_j)>f(x^*)=K_0\). Hence \(K^*=K_i\), and this value is achieved by reclaiming everything left of \(a_i\) by reclaimer \(R_0\) and everything right of \(b_i\) by reclaimer \(R_1\) as described in the definition of the functions

*f*and*g*.

*f*and

*g*. We can determine the values of

*f*and

*g*at these points recursively, by \(f(x_0)=0\),

*k*with \(f(x_{k-1})\leqslant K_0<f(x_k)\), and we obtain \(x^*\) by

*x*on pad

*i*is denoted by \(S^-_i(x)\) (resp. \(S^+_i(x)\)). More precisely, with \(S_1\) and \(S_2\) defined by [2],

*f*and

*g*are the functions defined in the proof of Theorem 3.

*j*on pad \(P_1\), and all stockpiles left of (and including) \(j'\) on pad \(P_2\), then its earliest possible return time is

*j*on pad \(P_1\), and all stockpiles right of (not including) \(j'\), then its earliest possible return time is

Choose one of two options for the routing of \(R_0\): (1) first reclaim stockpiles \(1,2,\ldots ,j\) on pad \(P_1\) from left to right and then stockpiles \(j',j'-1,\ldots ,n_1+1\) on pad \(P_2\) from right to left, or (2) first reclaim stockpiles \(n_1+1,\ldots ,j'\) on pad \(P_2\) from left to right and then stockpiles \(j,j-1,\ldots ,1\) on pad \(P_1\) from right to left;

Choose one of two options for the routing of \(R_1\): (1) first reclaim stockpiles \(n_1,n_1-1,\ldots ,j+1\) on pad \(P_1\) from right to left and then stockpiles \(j'+1,\ldots ,n\) on pad \(P_2\) from left to right, or (2) first reclaim stockpiles \(n,n-1,\ldots ,j'+1\) on pad \(P_2\) from right to left and then stockpiles \(j+1,\ldots ,n_1\) on pad \(P_1\) from left to right; and

Choose which reclaimer waits.

*p*for \(R_0\), routing option

*q*for \(R_1\), and letting \(R_k\) wait if necessary. We describe the computation of \(C_{pqk}\) in detail for \(l_{j'+1}<r_j\) and \(k=1\). The cases with \(l_{j+1}<r_{j'}\) or \(k=0\) can be treated in the same way. Since \(R_1\) waits if necessary, the makespan of \(R_0\) is \(F(j,j')\), defined in (4). So \(C_{pq1}=\max \{F(j,j'),C^1_{pq1}\}\), where \(C^1_{pq1}\) is the corresponding makespan for \(R_1\) and can be computed as follows. In each case we express \(C^1_{pq1}\) as \(G(j,j')+w\) where \(G(j,j')\) is the lower bound for the makespan of \(R_1\) given in (5) and

*w*is the waiting time which is the expression in square brackets in the equations below.

- Case 1Both reclaimers start on pad \(P_1\). If \(g_1(r_j)\geqslant f_1(r_j)\), then no waiting is necessary and \(C^1_{111}=G(j,j')\). Otherwise \(R_1\) waits at \(x=r_j\) until \(R_0\) arrives there at time \(f_1(r_j)\), hence$$\begin{aligned} C^1_{111}&= g_1\big (r_j\big ) + \Big [f_1\big (r_j\big )-g_1\big (r_j\big )\Big ]\\&\quad +\big (r_j-l_{j'+1}\big )/s+g_2\big (l_{j'}\big ). \end{aligned}$$
- Case 2:\(R_0\) starts on pad \(P_1\) and \(R_1\) starts on pad \(P_2\). If \(g_2(l_{j'+1})\leqslant f_1(l_{j'+1})\), then no waiting is necessary and \(C^1_{121}=G(j,j')\). Otherwise \(R_1\) waits on its way to \(x=l_{j'+1}\) for a period of length \(f_1(r_j)-g_2(r_j)\) and the makespan is$$\begin{aligned} C^1_{121}= & {} g_2\big (l_{j'+1}\big )+\Big [f_1\big (r_j\big )-g_2\big (r_j\big )\Big ]\\&+\,\big (l_{j+1}-l_{j'+1}\big )/s+g_1\big (l_{j+1}\big ). \end{aligned}$$
- Case 3:\(R_0\) starts on pad \(P_2\) and \(R_1\) starts on pad \(P_1\). If \(g_1(r_j)\geqslant f_2(r_{j'})+(r_j-r_{j'})/s\), then \(R_1\) arrives at \(x=r_j\) when \(R_0\) is already on its way back, no waiting is necessary, and \(C^1_{211}=G(j,j')\). Otherwise \(R_1\) waits at \(x=l_{j+1}\) for a period of length \(f_2(r_{j'})+(r_j-r_{j'})/s-g_1(r_j)\) and the makespan is$$\begin{aligned} C^1_{211}= & {} g_1\big (l_{j+1}\big )+\Big [f_2\big (r_{j'}\big )+\big (r_j-r_{j'}\big )/s-g_1\big (r_j\big )\Big ]\\&+\,\big (l_{j+1}-l_{j'+1}\big )/s+g_2\big (l_{j'+1}\big ). \end{aligned}$$
- Case 4:Both reclaimers start on pad \(P_2\). If \(g_2(l_{j'+1})\leqslant f_2(l_{j'+1})\), then \(R_1\) is already on its way back when \(R_0\) arrives at \(x=l_{j'+1}\), no waiting is necessary, and \(C^1_{211}=G(j,j')\). Otherwise \(R_1\) waits to the right of \(x=r_j\) for a period of length \(f_2(r_{j'})+(r_j-r_{j'})/s+f_1(r_j)-f_1(l_{j'+1})\) to arrive at \(x=l_{j'+1}\) at the same time as \(R_0\) on its way back, and the makespan is$$\begin{aligned} C^1_{221}= & {} g_2\big (l_{j'+1}\big )+\Big [f_2\big (r_{j'}\big )+\big (r_j-r_{j'}\big )/s\\&+\,f_1\big (r_j\big )-f_1\big (l_{j'+1}\big )\Big ] +\big (l_{j+1}-l_{j'+1}\big )/s\\&+\,g_1\big (l_{j+1}\big ). \end{aligned}$$

*f*and

*g*are evaluated in the proof of Theorem 3.

Each reclaimer changes direction exactly once.

Reclaimer \(R_0\) reclaims everything between 0 and some point on one pad from left to right, and then everything from some (possibly different) point to 0 on the other pad from right to left.

Reclaimer \(R_1\) reclaims everything between

*L*and some point on one pad from right to left, and then everything from some (possibly different) point to*L*on the other pad from left to right.

*contiguous unimodal*. Since every contiguous unimodal schedule is associated with some stockpile pair, we have the following theorem.

**Theorem 4**

An optimal contiguous unimodal schedule can be computed in quadratic time. \(\square \)

*Example 1*

Consider an instance with four stockpiles of lengths \(2,\,10,\,10,\,2\) shown in Fig. 4, and let the travel speed be \(s=5\).

Unimodal routing results in \(C = 15.2\). However, when \(R_0\) first travels to \(x=10\) without processing any stockpile, then processes stockpile 3 while coming back, then travels to \(x=2\), and finally processes stockpile 1, and \(R_1\) first processes stockpile 2, then turns and processes stockpile 4 on the way back, the resulting makespan is 14.4. This shows that sometimes “zigzagging” can be beneficial.

Next, we analyze one particular schedule, which is obtained by a natural modification of the optimal preemptive schedule and therefore can be computed in linear time.

*k*be the index with \(x_{k-1}<x^*\leqslant x_k\). If \(x^*\in E\), i.e., there is no stockpile at \(x^*\), then the optimal preemptive schedule is actually non-preemptive, and yields an optimal solution with makespan \(K^*\), the optimal preemptive makespan. In general, the stockpiles are assigned according to the following rules (see Fig. 5).

- 1.
All stockpiles

*j*with \(r_j\leqslant x^*\) are assigned to \(R_0\), and all stockpiles*j*with \(l_j\geqslant x^*\) are assigned to \(R_1\). - 2.
If there is exactly one stockpile

*j*with \(l_j\leqslant x^*\leqslant r_j\) then this stockpile is assigned to \(R_0\) if \(x^*-l_j\geqslant r_j-x^*\) and to \(R_1\) otherwise. - 3.If there are two stockpiles \(j\in \{1,\ldots ,n_1\}\) and \(j'\in \{n_1+1,\ldots ,n\}\) with \(l_j\leqslant x^*\leqslant r_j\) and \(l_{j'}\leqslant x^*\leqslant r_{j'}\) then both of them are assigned to \(R_0\) ifand otherwise both stockpiles are assigned to \(R_1\).$$\begin{aligned}&\big (x^*-l_j\big )+\big (x^*-l_{j'}\big )+|l_j-l_{j'}|/s\geqslant \big (r_j-x^*\big )\\ \nonumber&\quad +\big (r_{j'}-x^*\big )+|r_j-r_{j'}|/s, \end{aligned}$$(6)

**Theorem 5**

We have \({\tilde{C}}\leqslant 2K^*\). In particular, the schedule \(({\tilde{H}}_0,\,{\tilde{H}}_1)\) provides a 2-approximation for the problem of scheduling two reclaimers when the positions of the stockpiles are given and the stockpiles can be reclaimed in any order. The factor 2 is asymptotically best possible (for \(s\rightarrow \infty \)).

*Proof*

*L*. According to our rule, both stockpiles are assigned to the left reclaimer and this yields a makespan of \({\tilde{C}}=2L\). On the other hand, assigning one stockpile to each reclaimer and reclaiming both of them from right to left yields a makespan of \(C^*=(1+2/s)L\).

If \(x^*\in S_1\triangle S_2\), then \(x^*\in S_1\setminus S_2\) and for the stockpile

*j*with \(l_j<x^*<r_j\), we have \(x^*-l_j\geqslant r_j-x^*\), so that stockpile*j*is assigned to \(R_0\).If \(x^*\in S_1\cap S_2\), then for the two stockpiles \(j\in \{1,\ldots ,n_1\}\) and \(j'\in \{n_1+1,\ldots ,n\}\) with \(l_j<x^*<r_j\) and \(l_{j'}<x^*<r_{j'}\), we have \(r_j\geqslant r_{j'}\) and (6) holds, so that both stockpiles are assigned to \(R_0\).

Example 1 shows that unimodal routing might not be optimal. Next, we examine whether contiguous assignment is always optimal, i.e., whether there always exists an optimal schedule characterized by two stockpiles \(j \in \{1,\ldots ,n_1\}\) on pad \(P_1\) and \(j' \in \{n_1+1,\ldots ,n\}\) on pad \(P_2\) and an associated assignment of stockpiles \(\{1,\ldots ,j, j',j'-1,\ldots ,n_1+1\}\) to \(R_0\) and the remaining stockpiles to \(R_1\). We call such a schedule a *contiguous* schedule. The next example shows that it is possible that no contiguous schedule is optimal.

*Example 2*

Consider the instance (illustrated in Fig. 6) with \(n=n_1=5\), i.e., all stockpiles on pad \(P_1\), and stockpile positions \((0,1) \, (1,2), \,(2,4), \, (4,5), \, (5,6)\}\). The best we can do with a contiguous schedule is to assign stockpiles 1 and 2 to \(R_0\) and the other stockpiles to \(R_1\), which yields a makespan of \(4+4/s\). But by assigning stockpiles 1, 2, and 4 to \(R_0\) and stockpiles 3 and 5 to \(R_1\) we can achieve a makespan of \(3+9/s\). The ratio \(\frac{4+4/s}{3+9/s}\) tends to 4 / 3 for \(s\rightarrow \infty \).

We conjecture that Example 2 represents the worst case for the performance of contiguous schedules.

**Conjecture 1**

An optimal contiguous schedule provides a 4 / 3-approximation for the problem of scheduling two reclaimers when the positions of the stockpiles are given and the stockpiles can be reclaimed in any order.

A natural approach for finding an optimal contiguous schedule is to determine an optimal schedule for each pair \((j,j')\in \{1,\ldots ,n_1\} \times \{n_1+1,\ldots ,n\}\) and pick the best one. Unfortunately, it is already an NP-hard problem to determine the best routing for a given contiguous assignment of stockpiles to reclaimers.

**Theorem 6**

Suppose that we are given the stockpile positions and a contiguous assignment of the stockpiles to two reclaimers. Then it is NP-hard to find an optimal schedule.

*Proof*

*B*. A corresponding instance of the reclaimer scheduling problem is constructed as follows (see Fig. 7 for an illustration). The pad length is \(L=53B\) and the travel speed is \(s=2\). On pad \(P_1\), there are \(m+3\) stockpiles with lengths \(a_1\), \(\ldots \), \(a_m\), 9

*B*, 26

*B*, and 16

*B*, and on pad \(P_2\) there are 3 stockpiles with lengths 35

*B*, 6

*B*, and 2

*B*. The positions of the first

*m*stockpiles corresponding to the integers from the Partition instance are determined by

*B*], [9

*B*, 35

*B*], [35

*B*, 51

*B*], [0, 35

*B*], [35

*B*, 41

*B*], and [41

*B*, 43

*B*]. Let stockpiles \(1,\ldots , m, m+2, m+3\), and \(m+6\) be assigned to reclaimer \(R_1\) and let stockpiles \(m+1\), \(m+4\), and \(m+5\) be assigned to reclaimer \(R_0\).

*B*, and that this makespan can be achieved if and only if the Partition instance is a YES-instance. First, suppose the instance is a YES-instance, and that \(I\subseteq \{1,\ldots ,m\}\) is an index set with \(\sum _{i\in I}a_i=B\). In this case, a makespan of 75

*B*is achieved by the following schedule (see Fig. 7).

\(R_0\) moves from \(x=0\) to \(x=35B\) without reclaiming anything, and reaches \(x=35B\) at time \(t=17.5B\). Then it reclaims stockpile \(m+5\) from left to right, moves back to \(x=35B\) (arriving at time \(t=26.5B\)), reclaims stockpile \(m+4\) from right to left, then stockpile \(m+1\) from left to right, and finally returns to its starting point at time \(t=75B\).

\(R_1\) moves from \(x=53B\) to \(x=51B\) while reclaiming the stockpiles

*j*with \(j\in I\), then it reclaims stockpile \(m+3\) from right to left, reaching \(x=35B\) at time \(t=17.5B\). It moves to \(x=43B\) without reclaiming anything, reclaims stockpile \(m+6\) from right to left, moves to \(x=35B\), where it arrives at time \(t=26.5B\). Then it reclaims stockpile \(m+2\), moves back to \(x=51B\), and finally to \(x=53B\), reclaiming the stockpiles*j*with \(j\in \{1,\ldots ,m\}\setminus I\).

*B*. We want to show that this implies that the instance is a YES-instance. For the sake of contradiction, assume that the Partition instance does not have a solution. In order to reclaim the stockpile \(m+2\), reclaimer \(R_1\) has to spend a time interval of length 39

*B*in the interval \(X=[9B,35B]\). It cannot enter this interval before time 9

*B*, and the latest possible time for leaving

*X*is \(75B-9B=66B\). This implies that \(R_1\) has to enter

*X*between \(t=9B\) and \(t=(66-39)B=27B\). Let \(I,I'\subseteq \{1,\ldots ,m\}\) be the sets of stockpiles that \(R_1\) reclaims before and after its first visit to

*X*, respectively. Note that our assumption on the Partition instance implies \(\sum _{j\in I}a_j\ne B\).

- Case 1
\(R_1\) enters

*X*at time \(t_0<26.5B\). Since \(R_0\) cannot finish reclaiming stockpile \(m+5\) and be back at \(x=35B\) before time 26.5*B*, this implies that \(R_0\) starts reclaiming stockpile \(m+5\) after \(R_1\) has left*X*. If \(R_0\) does not reclaim both stockpiles \(m+1\) and \(m+4\) before stockpile \(m+5\), then its makespan is at least \(t_0+39B+6B+16B+9B\geqslant 79B\). So we may assume that \(R_0\) reclaims stockpiles \(m+1\), \(m+4\), and \(m+5\) in this order. Its makespan is at least \(t_0+39B+6B+20.5B\), hence \(t_0\leqslant (75-65.5)B=9.5B\). This implies that before entering*X*, the maximal time that \(R_1\) can spend in the interval [51*B*, 53*B*] is \(9.5B-8B=1.5B\). Together with our assumption that \(\sum _{j\in I}a_j\ne B\), this implies \(\sum _{j\in I}a_j < B\). On the other hand, \(R_0\) does not leave the interval [35*B*, 53*B*] before time \(9B+9B/2+41B+3B=57.5B\), and this is the earliest time at which \(R_1\) can start reclaiming stockpile \(m+3\). Consequently, \(57.5B+16B+B+\frac{1}{2}\sum _{j\in I'}a_j\leqslant 75B\), i.e., \(\sum _{j\in I'}a_j<B\), which is a contradiction to the fact that \(\sum _{j \in I \cup I'} a_j = 2B\). - Case 2:\(R_1\) enters
*X*at time \(t_0\in [26.5B,\,27B]\). \(26.5B+39B+16B=81.5B>75B\) implies that stockpile \(m+3\) needs to be reclaimed before \(R_1\) enters*X*. From our assumption about the Partition instance andit follows that \(\sum _{j\in I'}a_j<B\), hence \(\sum _{j\in I}a_j>B\). Since \(26.5B+39B+6B+20.5B=92B>75B\), we deduce that \(R_0\) reclaims stockpile \(m+5\) before \(R_1\) enters$$\begin{aligned} 75B\geqslant & {} 26.5B+39B+8B+B+\frac{1}{2}\sum _{j\in I'}a_j\\= & {} 74.5B+\frac{1}{2}\sum _{j\in I'}a_j \end{aligned}$$*X*, i.e., before time 27*B*. This is only possible if \(m+5\) is the first stockpile reclaimed by \(R_0\), because \(9B+16B+6B>27.5B\). Together with the makespan bound of 75*B*, this implies that \(R_0\) enters the interval [35*B*, 53*B*] at time 17.5*B*and leaves it at time 26.5*B*. From \(\sum _{j\in I}a_j>B\) it follows that \(R_1\) cannot finish reclaiming stockpile \(m+3\) at time 17.5*B*. This leaves two possibilities.- Case 2.1:Stockpile \(m+6\) is reclaimed before \(R_1\) enters
*X*. Then the entering time is at leastwhich is the required contradiction.$$\begin{aligned} 3B/2+4B+2B+5B+16B=28.5B, \end{aligned}$$ - Case 2.2:Stockpile \(m+6\) is reclaimed after \(R_1\) enters
*X*. Then the makespan of \(R_1\) is at leastwhich is the required contradiction.$$\begin{aligned} 26.5B+39B+3B+2B+5B=75.5B, \end{aligned}$$

- Case 2.1:

### 5.2 Precedence constraints

#### 5.2.1 Single reclaimer

In this section, for sake of simplicity, we assume that the stockpiles are indexed by their position in the precedence chain, i.e., \(J = \{1, 2, \ldots , n \}\) and \(1 \rightarrow 2 \rightarrow \cdots \rightarrow n\) (where \(i \rightarrow j\) means that stockpile *i* has to be reclaimed before stockpile *j*). Furthermore, for convenience, we add two dummy stockpiles, one at the beginning of the precedence chain (stockpile 0) and one at the end of the precedence chain (stockpile \(n+1\)) with \((l_0,r_0) = (l_{n+1},r_{n+1}) = (0,0)\).

**Theorem 7**

Determining an optimal schedule for a single reclaimer when the positions of the stockpiles are given and the stockpiles have to be reclaimed in a prespecified order can be done in time *O*(*n*).

*Proof*

*j*and processing stockpiles \(j+1, \ldots , n+1\). Similarly, let \(f_l(j)\) to be the optimal makespan that can be obtained starting from the left endpoint of stockpile

*j*and processing stockpiles \(j+1, \ldots , n+1\). Naturally, we are interested to \(f_r(0) = f_l(0)\). The functions \(f_r\) and \(f_l\) can be computed as follows.

*O*(

*n*) time. \(\square \)

#### 5.2.2 Two reclaimers

Each stockpile must be processed either from left to right or from right to left by a reclaimer.

**Theorem 8**

If the travel speed *s* is an integer, then an optimal schedule for two reclaimers when the positions of the stockpiles are given and the stockpiles have to be reclaimed in a prespecified order can be determined in pseudo-polynomial time, in particular \(O(nL^3)\).

*Proof*

We consider \(n+1\) stages \(j = 0, 1, \ldots , n\) and indicate with \(x_{0}^{(j)}\) and \(x_{1}^{(j)}\) the positions of reclaimers \(R_{0}\) and \(R_{1}\) at stage *j*, respectively. At stage \(j = 0\) reclaimers \(R_{0}\) and \(R_{1}\) are located at positions \(x_{0}^{(0)} = 0\) and \(x_{1}^{(1)} = L\), respectively. At stage \(0 < j < n\) one of the reclaimers has just finished reclaiming stockpile *j* and the other reclaimer has repositioned. At stage *n*, the reclaimers \(R_{0}\) and \(R_{1}\) move back to positions 0 and *L*, respectively (taking \(|x_{0}^{(n)}-0|/s\) and \(|x_{1}^{(n)}-L|/s\), respectively).

The system evolves from stage *j* to stage \(j+1\) according to the following rules. One reclaimer, say \(R_{0}\) at position \(x_{0}^{(j)}\), is chosen to move either to point \(l_{j+1}\) and reclaim stockpile \(j+1\) ending at point \(r_{j+1}\) and taking time \(t=|x_{0}^{(j)}-l_{j+1}|/s + (r_{j+1}-l_{j+1})\) or to point \(r_{j+1}\) and reclaim stockpile \(j+1\) ending at point \(l_{j+1}\) and taking time \(t = |x_{0}^{(j)}-r_{j+1}|/s + (r_{j+1}-l_{j+1})\). In either case, the final position of \(R_{0}\) is denoted by \(x_{0}^{(j+1)}\). The other reclaimer, in this case \(R_{1}\) at position \(x_{1}^{(j)}\), will reposition to a point in the set \([x_{0}^{(j+1)}, L] \cap [ x_{1}^{(j)} - t s,\,x_{1}^{(j)} + t s]\). That is, the position \(x_{1}^{(j+1)}\) of \(R_{1}\) at stage \(j+1\) is restricted by the final position of \(R_{0}\), by the endpoint of the pad *L*, and by the maximum distance *ts* that \(R_1\) can travel.

Note that when \(x_0^{(j)}\) and \(x_1^{(j)}\) are integer points, the maximum distance *ts* that \(R_1\) can travel is integer, and thus, if \(R_1\) travels the maximum distance, it will end up at an integer point. Furthermore, if \(R_{1}\) does not travel the maximum distance, it will stop at a stockpile endpoint, and, thus, travel an integer distance as well (stockpile endpoints are integers) and end up at an integer point. Because both reclaimers start at integer points, both reclaimers will be at integer points at every stage.

Let \(f(j, x_{0}, x_{1})\) be the minimum makespan that can be obtained when the two reclaimers start from \(x_{0}\) and \(x_{1}\), respectively, to process stockpiles \(j+1, \ldots , n\). The optimal makespan *f*(0, 0, *L*) can be computed by backward dynamic programming.

*x*in time

*t*when \(R_{1}\) ends in point

*y*be denoted by

*x*in time

*t*when \(R_{0}\) stops in

*y*be denoted by

*f*(0, 0 ,

*L*) does not require more than \(O(nL^{3})\) time, which is pseudo-polynomial with respect to the instance size. \(\square \)

*Remark 1*

If the travel speed is rational, say \(s=a/b\) for integers \(a\geqslant b\), then multiplying through with *b* and repeating the proof of Theorem 8, we obtain an optimal solution in time \(O(n(bL)^3)\).

## 6 Reclaimer scheduling with positioning decisions

### 6.1 No precedence constraints

#### 6.1.1 Single reclaimer

**Theorem 9**

Positioning stockpiles and simultaneously determining an optimal schedule for a single reclaimer is NP-hard.

*Proof*

Reduction from Partition to an instance with pad length \(L=2B\). We map each element \(a_i\) to a stockpile *i* of length \(a_i\) and set \(s=1\). Partition has a solution if and only if the stockpiles can be divided over the two pads in such a way that they take up an equal amount of space, i.e., if the makespan is equal to 2*B*. \(\square \)

#### 6.1.2 Two reclaimers

**Theorem 10**

Positioning stockpiles and simultaneously determining an optimal schedule for two reclaimers is NP-hard.

*Proof*

Reduction from Partition to an instance with pad length \(L=2B\). We map each element \(a_i\) to a stockpile *i* of length \(a_i\), add two dummy stockpiles each with length *B*, and set \(s=1\). Partition has a solution if and only if the stockpiles can be divided equally over the two reclaimers and equally over the two pads in such a way that they take up an equal amount of space, i.e., if the makespan (for both reclaimers) is equal to 2*B*. \(\square \)

### 6.2 Precedence constraints

#### 6.2.1 Single reclaimer

*L*. This is clearly not sufficient, as \(p_1=p_2=p_3=6\) and \(L=10\) give an infeasible instance, and if the sum of the stockpile lengths is equal to 2

*L*then it is actually NP-hard to decide if the instance is feasible. With the stronger assumption that \(p_1+\cdots +p_n\leqslant 3L/2\) the problem is always feasible, and in fact we can find an optimal solution as follows. Let \(P =p_1+\cdots +p_n\) be the sum of all stockpile lengths, and let

*k*be the unique index with \(P^{k-1}\leqslant \overline{P}^k\) and \(P^k > \overline{P}^{k+1}\). The stockpiles are positioned as follows.

- Case 1
\(\min \{ P^k,\, \overline{P}^{k-1}\} \leqslant L\). If \(P^k < \overline{P}^{k-1}\), then place stockpiles \(1, \ldots , k\) on pad \(P_1\), one after the other starting from 0 and place stockpiles \(k+1, \ldots , n\) on pad \(P_2\), one after the other in reverse order starting from 0. If \(P^k \geqslant \overline{P}^{k-1}\), then place stockpiles \(1, \ldots , k-1\) on pad \(P_1\), one after the other starting from 0 and place stockpiles \(k, \ldots , n\) on pad \(P_2\), one after the other in reverse order starting from 0. The stockpiles on pad \(P_1\) are reclaimed from left to right and then the stockpiles on pad \(P_2\) are reclaimed from right to left.

- Case 2:
\(\min \{P^k,\,\overline{P}^{k-1}\} > L\). In this case \(p_k>\max \{L/2,\,P^{k-1},\,\overline{P}^k\}\) and \(P-p_{k} < L\) (because we have assumed that \(P\leqslant 3L/2\)). Place stockpiles \(1, \ldots ,k-1\) on pad \(P_1\), one after the other starting from 0, followed by \(k+1, \ldots , n\) also on pad \(P_1\), one after the other in reverse order starting from \(P - p_{k}\). Place stockpile

*k*on pad \(P_2\) starting from \(\max \{P - 2 p_{k}, 0 \}\). The stockpiles \(1,\ldots ,k\) are reclaimed from left to right, and the stockpiles \(k+1,\ldots ,n\) are reclaimed from right to left.

**Lemma 1**

*Proof*

By definition *k* is the index for which the minimum in (7) is obtained. In Case 1, there is exactly one time interval in which the reclaimer moves without reclaiming anything, namely when it moves from \(r_k\) to \(r_{k+1}\) or from \(r_{k-1}\) to \(r_k\) between reclaiming the stockpiles on pad \(P_1\) and the stockpiles on pad \(P_2\). This takes time \(\left|P^k-\overline{P}^k\right|/s\) and the result follows.

The next lemma states that the RHS of (7) is a lower bound on the makespan.

**Lemma 2**

*C*satisfies

*Proof*

*I*be the set of stockpiles whose reclaiming is at or before time \(t_1\) and let

*J*be the set of stockpiles whose reclaiming is finished after time \(t_1\). Clearly \(I=\{1,\ldots ,k\}\) for some

*k*, where \(k=0\) corresponds to \(I=\emptyset \). The sets

*I*and

*J*can be partitioned according to the pads on which the stockpiles are placed: \(I=I_1\cup I_2\) where \(I_1\) contains the stockpiles on pad \(P_1\), and \(I_2\) contains the stockpiles on pad \(P_2\), and similarly for \(J=J_1\cup J_2\). Let

From Algorithm 2, and Lemmas 1 and 2 we get the following theorem.

**Theorem 11**

If the sum of the stockpile lengths is at most 3*L* / 2 then the problem of finding optimal stockpile positions and a corresponding schedule for a single reclaimer can be solved in time *O*(*n*).

#### 6.2.2 Two reclaimers

**Theorem 12**

Positioning stockpiles and simultaneously determining an optimal schedule for two reclaimers when the stockpiles have to be reclaimed in a given order is NP-hard.

1,6-Partition. Given a set \(A =\{a_1, \dots , a_n\}\) of positive integers with \(\sum _{i=1}^n a_i = 7B\), can the set

*A*be partitioned into two disjoint subsets \(A_1\) and \(A_2\) such that \(\sum _{a_i \in A_1} a_{i} = B\) and \(\sum _{a_i\in A_2} a_{i} = 6B\)?

*Example 3*

Consider the following instance of 1,6-Partition: a set \(A = \{a_1, \dots , a_n\} = \{5, 1, 6, 1, 1, 7\}\) with \(\sum _{i=1}^n a_i = 7B = 21\), i.e., \(B = 3\). Create the following instance of the reclaimer scheduling problem: pad length \(L=108\), traveling speed \(s=3\), and a set of \(n+4 = 10\) stockpiles of lengths 30, 87, 3, 21, 5, 1, 6, 1, 1, 7, respectively, to be reclaimed in that order. Note that four special stockpiles have been added that have to be reclaimed first.

An obvious lower bound on the objective function value is 162, the sum of the reclaim times of the stockpiles. Next consider the stockpile placements and reclaimer assignments shown in Fig. 8, i.e., stockpiles 1 and 3 together with stockpiles 5, 7, and 10 are assigned to \(R_0\) and stockpiles 2 and 4 together with stockpiles 6, 8, and 9 are assigned to \(R_1\). Furthermore, let \(R_0\) reclaim stockpile 1 going out and stockpiles 3, 5, 7, and 10 coming back, and let \(R_1\) reclaim stockpile 2 going out and stockpiles 4, 6, 8, and 9 coming back.

Observe that \(R_1\) can complete the reclaiming of stockpile 4 at time \(30 + 87 + 3 + 21 = 141\) (the value 3 corresponds to the travel time required to go from the left-most point of stockpile 2 to the right-most point of stockpile 4). Furthermore, observe that the remaining reclaim time assigned to Reclaimer \(R_1\) is 3 and that Reclaimer \(R_1\) also has to travel \(108 - 30 - 21 - 3 = 54\) to get back to its starting position, which takes 18 for a total of \(3 + 18 = 21\). So Reclaimer \(R_1\) can return at time 162 if and only if it does not incur any waiting time, i.e., it can start reclaiming stockpiles 6, 8, and 9 as soon as it reaches their left-most point. Their positions are chosen precisely to make this happen. For example, the left-most position of stockpile 6 is 66, i.e., 15 away from 51, which implies that while \(R_0\) is reclaiming stockpile 5, which takes 5, reclaimer \(R_1\) can move from the right-most position of stockpile 4 to the left-most position of stockpile 6. While \(R_1\) reclaims stockpile 6, reclaimer \(R_0\) waits at the right-most position of stockpile 7. And so on. Finally, observe that the stockpiles 6, 8, and 9 correspond to a subset \(A_1\) with \(\sum _{a_i \in A_1} a_{i} = 1 + 1 + 1 = 3 = B\) and the stockpiles 5, 7, and 10 correspond to a subset \(A_2\) with \(\sum _{a_i \in A_2} a_{i} = 5 + 6 + 7 = 18 = 6B\).

More generally, for an instance of 1,6-Partition, we create a corresponding instance of the reclaimer scheduling problem with pad length \(L = 36B\), traveling speed \(s = 3\), and a set of \(n+4\) stockpiles of lengths \(10B, 29B, B, 7B, a_1, \ldots , a_n\), respectively, to be reclaimed in that order. We will show that the instance is a yes-instance of 1,6-Partition if and only if there exists a reclaimer schedule in which both reclaimers return to their starting positions at time 54*B*.

*Proof*

Suppose the instance of 1,6-Partition is a yes-instance, then the placements and assignments shown in Fig. 9, i.e., stockpiles 1 and 3 together with the stockpiles corresponding to the subset \(A_1\) are assigned to \(R_0\), and stockpiles 2 and 4 together with the stockpiles corresponding to the subset \(A_2\) are assigned to \(R_1\), \((l_1, r_1) =(0,10B)\), \((l_2, r_2) = (7B,36B)\), \((l_3, r_3) = (6B, 7B)\), and \((l_4, r_4) = (10B, 17B)\), the stockpiles in \(A_2\) are placed on pad \(P_2\) in the interval [0, 6*B*], and the stockpiles in \(A_1\) are placed on pad \(P_1\) in the interval [17*B*, 36*B*] in such a way that the distance between two consecutive stockpiles *i* and *j* is \(3 \sum _{k=i+1}^{j-1}a_{k}\). It can easily be verified that schedule \(S^*\) has an objective function value equal to the lower bound of 54*B*.

Next, we prove that lower bound of 54*B* is not achievable if (1) stockpiles 1, 2, 3, and 4 are placed differently or (2) the instance of 1,6-Partition is a no-instance.

First, observe that to achieve the lower bound there cannot be any time between the end of the reclaiming of one stockpile and the start of the reclaiming of the next stockpile. Furthermore, w.l.o.g., we can assume that stockpile 1 is assigned to \(R_0\) with placement \((l_1, r_1) = (0, 10B)\). \(\square \)

**Claim 1**

The lower bound of 54*B* cannot be achieved if stockpiles 1 and 2 are assigned to the same reclaimer.

This is obvious because the stockpiles cannot fit together on a single path and have different lengths. Therefore, stockpile 2 has to be assigned to \(R_1\) and placed on pad \(P_2\). It also follows that stockpile 2 has to be reclaimed from right to left.

**Claim 2**

The lower bound of 54*B* cannot be achieved if stockpile 3 is assigned to \(R_1\) or stockpile 4 to \(R_0\).

To avoid time between the end of reclaiming of stockpile 2 and the start of reclaiming of stockpile 3, stockpile 3 has to be placed on pad \(P_2\) to the left of stockpile 2. As a consequence, stockpile 4 has to be placed on pad \(P_1\), because there is not enough space left to place it on pad \(P_2\). As a result, stockpile 3 and stockpile 4 cannot be reclaimed by the same reclaimer, because the right-most position of stockpile 3 will be \(\le \!\!7B\) and the left-most position of stockpile 4 will be \(\ge \!\!10B\). Furthermore, if stockpile 4 would be assigned to Reclaimer \(R_0\), then, because Reclaimer \(R_0\) always has to be to the left of Reclaimer \(R_1\), it is unavoidable to incur travel time before the start of the reclaiming of stockpile 4. Thus, stockpile 4 has to be assigned to \(R_1\) and stockpile 3 to \(R_0\).

**Claim 3**

The lower bound of 54*B* cannot be achieved unless the travel time between \(l_2\) and \(l_4\) is exactly *B*.

Since \(l_2 \leqslant 7B\) and \(l_4 \geqslant 10B\), we have \(\frac{l_4 - l_2}{3} \geqslant B\). Since stockpile 3 has length *B* and has to be reclaimed between stockpile 2 and 4, if \(l_4 > 10B\) or \(l_2 < 7B\), then there will be travel time of at least \(\frac{l_4 - l_2 - B}{3}\) in the schedule.

From the above three claims it follows that to be able to achieve the lower bound of 54*B*, stockpiles 1 and 3 have to be assigned to \(R_0\), stockpiles 2 and 4 have to be assigned to \(R_1\), and the four stockpiles have to be placed as follows: \((l_1, r_1) = (0, 10B), \ (l_2, r_2) = (7B, 36B), (l_3, r_3) = (6B, 7B)\), and \((l_4, r_4) = (10B, 17B)\).

**Claim 4**

The lower bound of 54*B* is achievable iff the instance of 1,6-Partition is a yes-instance.

*B*and at that time will be at position 17

*B*. The remaining space of 19

*B*on pad \(P_1\) has to be allocated to stockpiles, say

*x*, and unoccupied space, say

*y*. To reach its starting position at or before time 54

*B*, the time spent on reclaiming, i.e.,

*x*, and the time spent on traveling, i.e.,

*y*/ 3 should be \(\le \!\!7B\). Thus, we have

*B*. However, given that the remaining space available for the placement of stockpiles on pad \(P_2\) is 6

*B*, this implies that the stockpiles corresponding to \(a_1, a_2, \ldots , a_n\) with \(\sum _{j=1}^n a_j = 7B\) have to be partitioned into two subsets \(A_1\) and \(A_2\) with \(\sum _{a_i \in A_1} a_{i} = B\) and \(\sum _{a_i \in A_2} a_{i} = 6B\), i.e., the instance of 1,6-Partition is a yes-instance.

## 7 Final remarks

- 1.For the following problems, we used reduction from Partition to prove that they are NP-hard, but we did not decide if they are strongly NP-hard.We conjecture that these problems are not strongly NP-hard.
Find an optimal schedule for two reclaimers with given stockpile positions and arbitrary reclaim order (Theorem 2).

Find an optimal schedule for two reclaimers with given stockpile positions and given assignment of stockpiles to reclaimers (Theorem 6).

Find optimal stockpile positions and reclaimer schedules for two reclaimers with arbitrary reclaim order (Theorem 10).

Find optimal stockpile positions and reclaimer schedules for two reclaimers with given reclaim order (Theorem 12).

- 2.
We described a pseudo-polynomial algorithm for the problem to schedule two reclaimers for given stockpile positions and given reclaim order (Theorem 8). We conjecture that this problem can actually be solved in polynomial time.

## Notes

### Acknowledgments

This research was supported by the ARC Linkage Grant nos. LP1102000524 and HVCCC P/L.

### References

- Bierwirth, C., & Meisel, F. (2009). A fast heuristic for quay crane scheduling with interference constraints.
*Journal of Scheduling*,*12*(4), 345–360.CrossRefGoogle Scholar - Bierwirth, C., & Meisel, F. (2010). A survey of berth allocation and quay crane scheduling problems in container terminals.
*European Journal of Operational Research*,*202*(3), 615–627.CrossRefGoogle Scholar - Boland, N., Gulczynski, D., & Savelsbergh, M. (2012). A stockyard planning problem.
*EURO Journal on Transportation and Logistics*,*1*(3), 197–236.CrossRefGoogle Scholar - Daganzo, C. F. (1989). The crane scheduling problem.
*Transportation Research Part B*,*23*(3), 159–175.CrossRefGoogle Scholar - Hu, D., & Yao, Z. (2012). Stacker-reclaimer scheduling in a dry bulk terminal.
*International Journal of Computer Integrated Manufacturing*,*25*(11), 1047–1058.CrossRefGoogle Scholar - Kim, K. H., & Park, Y.-M. (2004). A crane scheduling method for port container terminals.
*European Journal of Operational Research*,*156*(3), 752–768.CrossRefGoogle Scholar - Kim, K. Y., & Kim, K. H. (1999). A routing algorithm for a single straddle carrier to load export containers onto a containership.
*International Journal of Production Economics*,*59*(1), 425–433.Google Scholar - Kim, K. Y., & Kim, K. H. (2003). Heuristic algorithms for routing yard-side equipment for minimizing loading times in container terminals.
*Naval Research Logistics (NRL)*,*50*(5), 498–514.CrossRefGoogle Scholar - Legato, P., Trunfio, R., & Meisel, F. (2012). Modeling and solving rich quay crane scheduling problems.
*Computers & Operations Research*,*39*(9), 2063–2078.CrossRefGoogle Scholar - Lim, A., Rodrigues, B., & Xu, Z. (2007). A m-parallel crane scheduling problem with a non-crossing constraint.
*Naval Research Logistics (NRL)*,*54*(2), 115–127.CrossRefGoogle Scholar - Liu, J., Wan, Y.-W., & Wang, L. (2006). Quay crane scheduling at container terminals to minimize the maximum relative tardiness of vessel departures.
*Naval Research Logistics (NRL)*,*53*(1), 60–74.CrossRefGoogle Scholar - Moccia, L., Cordeau, J.-F., Gaudioso, M., & Laporte, G. (2006). A branch-and-cut algorithm for the quay crane scheduling problem in a container terminal.
*Naval Research Logistics (NRL)*,*53*(1), 45–59.CrossRefGoogle Scholar - Ng, W. (2005). Crane scheduling in container yards with inter-crane interference.
*European Journal of Operational Research*,*164*(1), 64–78.CrossRefGoogle Scholar - Ng, W. C., & Mak, K. L. (2005a). An effective heuristic for scheduling a yard crane to handle jobs with different ready times.
*Engineering Optimization*,*37*(8), 867–877.CrossRefGoogle Scholar - Ng, W. C., & Mak, K. L. (2005b). Yard crane scheduling in port container terminals.
*Applied Mathematical Modelling*,*29*(3), 263–276.CrossRefGoogle Scholar - Ng, W. C., & Mak, K. L. (2006). Quay crane scheduling in container terminals.
*Engineering Optimization*,*38*(6), 723–737.CrossRefGoogle Scholar - Petering, M. E. (2009). Effect of block width and storage yard layout on marine container terminal performance.
*Transportation Research Part E*,*45*(4), 591–610.CrossRefGoogle Scholar - Peterkofsky, R. I., & Daganzo, C. F. (1990). A branch and bound solution method for the crane scheduling problem.
*Transportation Research Part B*,*24*(3), 159–172.CrossRefGoogle Scholar - Psaraftis, H. N., Solomon, M. M., Magnanti, T. L., & Kim, T.-U. (1990). Routing and scheduling on a shoreline with release times.
*Management Science*,*36*(2), 212–223.CrossRefGoogle Scholar - D. Sun, L. Tang, Benders approach for the raw material transportation scheduling problem in steel industry, in
*2013 10th IEEE International Conference on Control and Automation (ICCA)*, pp. 481–484Google Scholar - Tsitsiklis, J. N. (1992). Special cases of traveling salesman and repairman problems with time windows.
*Networks*,*22*(3), 263–282.CrossRefGoogle Scholar - Zhang, C., Wan, Y.-W., Liu, J., & Linn, R. J. (2002). Dynamic crane deployment in container storage yards.
*Transportation Research Part B*,*36*(6), 537–555.CrossRefGoogle Scholar - Zhu, Y., & Lim, A. (2006). Crane scheduling with non-crossing constraint.
*The Journal of the Operational Research Society*,*57*(12), 1464–1471.CrossRefGoogle Scholar