Next Article in Journal
Short-Term Load Forecasting in Distribution Substation Using Autoencoder and Radial Basis Function Neural Networks: A Case Study in India
Previous Article in Journal
Non-Hydrostatic Galerkin Model with Weighted Average Pressure Profile
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Integrated Scheduling of Stacker and Reclaimer in Dry Bulk Terminals: A Hybrid Genetic Algorithm

Mechanical Department, ENSEM, Hassan II University, Route d’El Jadida, Km 7, Oasis, Casablanca P.O. Box 8118, Morocco
*
Author to whom correspondence should be addressed.
Computation 2025, 13(3), 74; https://doi.org/10.3390/computation13030074
Submission received: 7 December 2024 / Revised: 14 February 2025 / Accepted: 26 February 2025 / Published: 13 March 2025

Abstract

:
Competitive dynamics in dry bulk terminals necessitate efficient planning and scheduling to optimize operations. This study focuses on the productivity of stackers and reclaimers by developing a mathematical optimization model to enhance scheduling efficiency. A mixed-integer linear programming (MILP) model was formulated to minimize the maximum completion time (makespan) of operations while ensuring smooth material flow and resource utilization. Given the computational complexity of real-world scenarios, a novel hybrid genetic algorithm (GA) was proposed. This algorithm integrates tabu search to generate a high-quality initial population size and employs innovative chromosome designs that respect operational constraints, such as equipment availability, material flow continuity, and sequencing restrictions. This hybrid approach balances exploration and exploitation, improving solution convergence and robustness. Computational experiments using real data from a Moroccan dry bulk terminal validated the algorithm’s efficiency and effectiveness. Performance indicators such as makespan reduction, equipment utilization, and computational efficiency were analyzed. The results demonstrate that the hybrid GA significantly reduced processing times and improved resource efficiency compared to conventional methods. Additionally, the algorithm showed scalability across different operational scenarios, confirming its adaptability to dynamic terminal conditions. These findings highlight the potential of advanced optimization techniques to enhance decision making and improve operational productivity in dry bulk terminals.

1. Introduction

Bulk terminals manage substantial volumes of both liquid and dry bulk cargo, including commodities such as oil, coal, iron ore, and grain. In 2016, global dry cargo shipments reached 7.23 billion tons, with coal accounting for 1.14 billion tons. This study focuses on the scheduling challenges of a dry bulk terminal handling coal imports, a critical operation for Morocco’s energy supply.
Morocco, poised as an energy exporter to Europe, relies on coal-fired power plants for 34% of its electricity generation. The nation’s limited fossil fuel resources necessitate increased coal imports, placing significant pressure on bulk terminals to enhance operational efficiency. Optimizing stacker and reclaimer productivity is vital to meet demand while minimizing delays and costs.
Unlike container terminals, where berth allocation and quay crane scheduling are well studied, bulk terminals employ specialized equipment such as stackers and reclaimers. The productivity of these machines directly affects cargo throughput and operational efficiency. However, scheduling them is complex due to interdependencies and constraints, such as equipment collisions and limited stockyard capacity.
This paper introduces an integrated model for scheduling stackers and reclaimers, employing a hybrid genetic algorithm (GA) enhanced with tabu search (TS) to address these challenges. The proposed algorithm ensures feasible solutions by optimizing cargo-handling operations and minimizing completion times. Computational experiments using real data from a Moroccan terminal validate the algorithm’s efficiency and effectiveness.
The remainder of this paper is organized as follows: Section 2 reviews the related literature. Section 3 describes the problem and constraints. Section 4 presents a the mixed-integer linear programming model. Section 5 details the hybrid GA, and Section 6 explains the TS method. Experimental results are discussed in Section 7, followed by conclusions and future directions in Section 8.

2. Literature Review

In an effort to increase the productivity of container terminals, numerous studies have focused on the quay crane scheduling problem (QCSP). Comprehensive surveys of the QCSP literature were conducted in [1,2]. Daganzo [3] initiated the study, but Ref. [4] noted that scientific attention in QCSP increased significantly after the publication of Kim’s pioneering paper [5]. This work formulated QCSP as a mixed-integer linear model addressing container groups, non-crossing constraints, and safety margins. Kim proposed a branch-and-bound (B&B) method and heuristic algorithms to minimize the weighted sum of makespan and total completion time. Moreover, computational experiments on benchmark problems were presented, which later served as references for other researchers.
Moccia et al. [6] addressed interference between quay cranes, revising the Kim and Park [5] model to incorporate crane travel times and formulate QCSP as a vehicle routing problem. They proposed a branch-and-cut solution methodology, which outperformed Kim’s B&B approach for the same benchmark instances. Sammarra et al. [7] further enhanced the model by including precedence and non-simultaneity constraints between tasks. They introduced the TS algorithm and compared its performance with branch-and-cut and greedy randomized adaptive search procedure approaches.
Several studies have employed genetic algorithms (GAs) to solve QCSP. For instance, Ref. [8] tackled QCSP using a GA that adopted independent unidirectional crane movements. To improve GA search efficiency, they utilized an initial solution based on the S-LOAD rule [7] and developed a chromosome representation method to reduce decision variables. Their initial population was generated using S-LOAD, while the study presented here uses solutions derived from the TS algorithm. Chung and Chan [9] highlighted QCSP’s NP-hard nature and proposed a GA with fuzzy logic to adapt mutation rates and mechanisms dynamically. This differs from our GA, where mutation rates are experimentally determined, and swap mutation mechanisms are modified to align with operational rules.
Diabat and Theodorou [10] developed a GA, integrating crane assignment and scheduling, considering conditions such as end-bay positioning and non-crossing constraints. They restored chromosome feasibility during reproduction to address infeasibility issues caused by genetic operators, albeit at the cost of increased complexity. Unlike their approach, our GA ensures chromosomes remain feasible by modifying the operators’ structure. Recently, Zheng et al. [11] combined a GA with the Left-and-Right Vessel Move algorithm (LRVM), using the LRVM as an initial chromosome for integrated berth allocation and crane assignments while accommodating preventive maintenance activities within hard time windows.
To improve landside operations in container terminals, the yard crane scheduling problem (YCSP) has garnered increasing attention in recent decades. Carlo et al. [12] conducted reviews on this topic. Ng et al. [13] studied the scheduling of multiple yard cranes sharing a single bi-directional lane, where inter-crane interference due to physical blockage was a significant factor. The problem was formulated as an integer program and solved using a dynamic programming-based heuristic to derive effective schedules. In contrast, Gharehgozli et al. [8] focused on single-crane operations, avoiding interference issues. They modeled the problem as an asymmetric traveling salesman problem, proving it to be NP-hard, and developed an exact solution using a merging algorithm for optimal results.
Lee and Chao [14] proposed a neighborhood search heuristic to reposition export containers efficiently, ensuring no extra re-handles occurred during ship loading. Speer et al. [15] conducted a detailed study on real-time yard crane scheduling, considering specific crane characteristics such as movements and interference. They evaluated four automated crane systems through simulation, comparing their performance using the branch-and-bound (B&B) method and highlighting the importance of incorporating all crane cycle times. Galle et al. [16] developed a model integrating the YCSP with the container relocation problem, formulating it as binary integer programming. They proposed a heuristic local search scheme to jointly optimize crane travel time and expected relocations.
The warehouse crane scheduling problem (WCSP), related to the YCSP, has been studied in warehousing contexts. Yuan [17] addressed a similar problem in coil warehouses, focusing on storage, retrieval, and shuffling requests to minimize crane travel time. They used a time–space network flow model, with exact dynamic programming for small-to-medium instances and approximate dynamic programming for larger instances. Tang et al. [18] studied single-crane scheduling for steel coil retrieval and shuffling, proving its NP-hardness and formulating it as a mixed-integer linear program. Their research showed that integrating scheduling with shuffling decisions outperformed sequential approaches. They proposed dynamic programming and heuristic algorithms with worst-case performance guarantees.
Maschietto et al. [19] addressed unrelated parallel crane scheduling with non-interference constraints, where cranes on the same track cannot overtake each other. They aimed to minimize the total weighted completion time of trucks. To solve large-scale problems, they developed two genetic algorithms (GAs) with chromosomes represented as truck sequences, while our GA employs stockpile handling sequences. To enhance GA performance, five genetic parameters were optimized using the SPOT method [4].
The number of papers published on scheduling research in dry bulk terminals is limited compared to those focused on container port terminals and warehousing activities. Only a few studies are available in the literature [20]. Conradie et al. [21] explored coal handling scheduling, addressing multiple conflicting objectives such as blend requirements and stochastic demand. They proposed a multi-objective approach using simulated annealing to tackle scheduling challenges in coal handling environments.
Boland et al. [22] investigated stockyard management at Newcastle’s coal terminal, focusing on stockpile locations, assembly timings, and synchronization with ship schedules. The study utilized greedy algorithms combined with enumeration and integer programming to enhance throughput without delaying ships. Similarly, Thomas et al. [23] developed a Lagrangian relaxation-based approach incorporating volume and Wedelin algorithms for integrated planning and scheduling. Their model considered production planning across multiple mines and train scheduling, achieving better performance than mixed-integer linear programming models by reducing tardiness and operational costs.
Robenek et al. [24] studied integrated berth allocation and yard assignments in bulk ports. Their solution combined branch-and-price methods with metaheuristics, such as critical-shaking neighborhood search, to minimize vessel service times efficiently. Menezes et al. [20] presented a mathematical model for Brazilian bulk terminals, integrating production planning and scheduling. Their approach optimized product allocation, equipment schedules for ship loading, and product quality while minimizing operational costs and demurrage. Solutions were derived using branch-and-price algorithms.
Most studies on integrated optimization in dry bulk ports have focused on coal export supply chains from mines to ports, differing from the operational environment of coal-fired plants studied in this paper. In commercial bulk port terminals, an integrated approach to rake scheduling and stockyard planning was explored by [25]. They developed a mixed-integer linear programming model to minimize rake turnaround times. To address the complexities of real-world problems, they combined genetic algorithms with a greedy heuristic and compared this with a modified block-based evolutionary algorithm. Unlike their focus on outbound cargo rake schedules, this study emphasizes maximizing throughput by scheduling stacker and reclaimer operations while addressing capacity and operational constraints.
Closely related to this paper, Hu et al. [26] discussed the scheduling problem of stacker–reclaimers in dry bulk terminals, aiming to minimize the maximum completion time for a given set of operations. Unlike this study, which focuses on two independent machines (stacker and reclaimer) operating simultaneously in the same stockyard with collision constraints, Hu considered combined stacker–reclaimer machines without such restrictions. They adopted a traditional genetic algorithm (GA) with a greedy assignment procedure to find optimal schedules.
This study introduces new genetic operators based on cargo clearing numbers to produce feasible schedules addressing stacker and reclaimer operational conflicts. A tabu search (TS) algorithm is also developed and combined with GAs to enhance solution quality. The hybrid GA, pure GA, and TS algorithms are tested and compared for effectiveness and efficiency using real data from a dry bulk terminal.

Literature Summary

The scheduling and optimization of equipment in port terminals have been extensively studied, particularly in the context of the quay crane scheduling problem (QCSP) and the yard crane scheduling problem (YCSP).
QCSP research was initiated by Daganzo [3] and gained significant attention following Kim’s [5] pioneering work, which formulated it as a mixed-integer linear programming (MILP) model incorporating container groups, non-crossing constraints, and safety margins. Various approaches have been proposed to solve the QCSP, listed as follows:
  • Exact methods: Kim [5] introduced a branch-and-bound (B&B) approach to minimize makespan and total completion time.
  • Heuristic methods: Moccia et al. [6] modeled the QCSP as a vehicle routing problem and proposed a branch-and-cut approach, which outperformed B&B in computational efficiency.
  • Metaheuristic methods: Sammarra et al. [7] incorporated precedence and non-simultaneity constraints and evaluated solutions using tabu search (TS) and the greedy randomized adaptive search procedure (GRASP).
Several studies have employed genetic algorithms (GAs) to address the QCSP. For example, Diabat and Theodorou [10] integrated crane assignment and scheduling, while Zheng et al. [11] combined a GA with the Left-and-Right Vessel Move (LRVM) algorithm to optimize berth allocation and preventive maintenance scheduling.
In yard operations, the YCSP and WCSP have been widely studied, as indicated below:
  • YCSP: Carlo et al. [12] and Conradie et al. [21] explored scheduling for multiple cranes on a single bi-directional lane, proposing dynamic programming-based heuristics to mitigate interference.
  • WCSP: Yuan et al. [17] and Tang et al. [18] formulated crane scheduling as a time–space network flow problem, proving its NP-hardness and developing both exact and heuristic approaches.
Compared to container terminals, research on scheduling in dry bulk terminals remains limited, as indicated below:
  • Stockyard management: Boland et al. [22] and Thomas et al. [23] studied stockpile planning and ship synchronization, using Lagrangian relaxation and greedy algorithms combined with integer programming.
  • Integrated berth and stockyard scheduling: Robenek et al. [24] and Menezes et al. [20] optimized product allocation, stock quality, and operational costs through branch-and-price methods and metaheuristics.
Regarding the scheduling of stackers and reclaimers, very few studies exist; some are listed below:
  • Hu et al. [26] examined the scheduling of combined stacker–reclaimers but did not consider collision constraints between independent machines. Their approach relied on a traditional GA with a greedy assignment procedure.
  • This study differs by considering two independent machines (stacker and reclaimer) operating simultaneously, integrating collision constraints, and developing novel genetic operators combined with tabu search to enhance solution quality.
While existing research has extensively focused on the QCSP and YCSP in container terminals, studies on scheduling in dry bulk terminals remain scarce. This study aims to fill this gap by proposing a hybrid GA-TS model tailored for optimizing stacker and reclaimer operations, significantly improving dry bulk terminal productivity.

3. Problem Description

The scheduling problem investigated in this study is motivated by a real case, involving stacker and reclaimer scheduling in a bulk terminal that supplies coal to a coal-fired power plant in Morocco. The power plant produces an electricity capacity equal to 1400 MW, which represents 10% of Morocco’s power generation. This case study is assumed to be a representative of stacker and reclaimer scheduling for any dry bulk terminal.
At this particular terminal, the cargo (coal) is imported through various sizes of vessels, each with a capacity between 60,000 and 70,000 tons. These vessels are positioned at the anchorage, and, based on the first-in first-out (FIFO) policy, the port authorities called them for berthing into the mechanized berth. The vessel is unloaded by ship-unloaders that can serve the berth. The cargo is then transferred from the berth to the cargo storage yard where it is unloaded to stockyards by a stacker. The stacked cargo is later reclaimed and conveyed to the coal bunker house (CBH) to feed the boiler process with continuous and required volumes of coal. The challenge in this environment is four boiler processes run 24 h a day and 7 days a week to provide continuous high-pressure steam to steam turbine processes, but the shipping of the coal is not ensured continuously because of the increased traffic in the port, the berth availability, and the limited space in the cargo storage yard. However, any shortage of coal feeding to the boiler processes makes boilers run with fuel feeding systems, which decreases the efficiency of the boiler, as well as the efficiency of the steam turbine process. Consequently, this causes a loss of sales and depletion of the fuel inventory. In addition, a lower throughput of cargo may create an overstock of cargo in stockyards, and, thus, the vessel cannot be unloaded within the contracted time following its arrival, which incurs a demurrage cost associated with unloading the vessel. Therefore, the system has to work with higher throughput without causing any stoppage of coal feeding or unacceptable delays for the vessels.
Moreover, the throughput of cargo is heavily related to the productivity of the stacker and reclaimer, which are the most frequently used facilities for cargo handling. In the present study, we address the scheduling problem of stackers and reclaimers to minimize the maximum completion time at which all handling operations are completed in a planning horizon, considering all the constraints of the system described in the following section.

3.1. Detailed Cargo Handling System

The terminal under study, as mentioned, has one berth in the wharf area dealing with cargo materials. This mechanized berth is served by three units of grab-bucket-type ship-unloaders (GTSUs), each with a capacity rate of 1600 tons per hour for unloading cargo from vessels. The Wharf has a conveyor belt system through which the cargo is directly transferred to the cargo storage yard, where there are two stockyards, with each being 520,000 m long and 55,000 m wide. Each stockyard is further subdivided into smaller subarea called stockpiles, where the cargo is stored. Each cargo stockpile spans the entire width of a stockyard, so we can think of stockpiles and stockyards as effectively being one-dimensional. An area between adjacent stockpiles on a stockyard must be kept free with a minimum distance, in practice, equal to 10 m to avoid contamination of the stockpiles. In addition, the cargo storage yard is facilitated by two portal-scraper reclaimers and one stacker. Cargo arriving at a terminal is unloaded into a stockyard by a stacker machine, which can access the two stockyards at a given time and can move forward and backward along the rail line installed between the two stockyards. The rate at which a stacker can process an unloading operation depends on the stacker rate capacity, with a predefined value of 4800 tons per hour. This rate is used to calculate the total time it takes to unload the cargo from the vessel onto the stockpile. We assume that the total tonnage is evenly distributed over this cargo unloading operation, and the stockpile is sloped at an angle of repose, 38°. To perform a new unloading operation, the stacker has to be assigned to one of the available, empty stockpiles, and the setup time of the stacker required to perform this operation has to be considered. Moreover, the time required by the stacker for traveling when it moves from one stockpile to the next and slewing when the stacker boom turns from the horizontal position to the slewing angle (±95°) can be generally regarded as the setup time. The traveling time depends on the traveling speed of the stacker, which is predefined at 30 m per minute, and the distance between the two stockpiles.
The activities in the cargo handling system are driven by the need to satisfy a cargo demand pattern generated by boiler operators. In this process, boiler processes request a specific amount of cargo that has already arrived at the terminal and has been transferred to the stockyard. The amount of cargo required per hour is closer to the reclaiming capacity transferred per hour. Therefore, reclaiming operations are performed to provide the boiler processes with a continuous feed of cargo during the planning horizon. Each stockpile is reclaimed using a portal-scraper reclaimer without pauses or shifts, and the cargo is transferred to coal bunkers through the conveyor belt system. Each reclaimer can move back and forth in its rail lines to access stockpiles on different positions of the stockyard installed between its rails. We assume that the rate of reclaiming is 1200 tons per hour, and thus the time it takes to reclaim a stockpile can be calculated from the total tonnage of cargo stored in this stockpile. Furthermore, only one reclaimer can process a reclaiming operation at a given time and can be assigned to different occupied stockpiles based on the availability of cargo in the stockyard between its rail lines. The setup time required of a reclaimer to process a new reclaiming operation is assumed to be the traveling time from one stockpile to the next. The traveling speed of a reclaimer is fixed at 12 m per minute. Figure 1 provides an overview of the described cargo handling system.
The stacker and reclaimer scheduling problem determines the handling sequence of all stockpiles including the unloading and reclaiming of cargoes with the objective of minimizing the time by which the unloading of all the vessels and satisfying of all the customer demands are completed across the planning horizon. Consequently, the productivity of stacker and reclaimer machines is improved, and a higher throughput capacity of cargo in the terminal is achieved.

3.2. Cargo Handling System Constraints

Here, we explain some constraints that are specific to the terminal under study that are critical to understanding the problem. During running operation, the stacker and reclaimer can perform stacking and reclaiming operations at a given time and in the same stockyard. To prevent mutual collision between the stacker and reclaimer, a crane anti-collision control is installed for monitoring the current position value of the stacker and reclaimer. When the distance between stacker and reclaimer positions reaches 40 m, both machines run with the deceleration rate set to 10% during a deceleration position approach, and when the stacker and reclaimer approach the stop position (30 m), they stop in the current direction. Therefore, when a reclaimer travels from the current stockpile pi to the targeted stockpile pj to perform a new reclaiming operation, it is necessary to check whether there is a stacker present performing an unloading operation between pi and pj. If blocking exists between the current stockpile and the targeted stockpile as in Figure 2, the reclaimer has to wait in the stockpile just before the blocking one until the unloading operation is completed and the stacker boom slews back to a horizontal position; this is because of the safety distance that should be kept between them during operation. In this situation, the starting time for the reclaimer to perform a new reclaiming operation changes to the completion time of the last reclaiming operation plus the setup time from stockpile pi to pj, in addition to the waiting time caused by the collision constraint. In the opposite manner, if the stacker operator wants to move forward or backward, there are no restrictions for its movements because the stacker boom is always kept in a horizontal position during traveling time so that it can pass the reclaimer without any collision. In addition, after completion of the reclaiming operation, the reclaimer is practically positioned in the reclaimed stockpile. In case the stacker is assigned to the same stockpile for the unloading of cargo, the stacker has to wait until the reclaimer is moved to a closer occupied stockpile, and this waiting time will affect the starting time of this unloading operation. Another limitation of the system is that the two reclaimers operating in two different stockyards cannot operate simultaneously, as they transfer the cargo to coal bunkers through a common conveyor, as shown in Figure 1. Moreover, the spontaneous combustion of coal is a major environmental, safety, and economic concern in coal storage areas and can eventually lead to open flames and burning of the material, which causes a decrease in the calorific value of coal. In practice, to mitigate this spontaneous combustion, occupied stockpiles that have a storage period longer than 21 days take priority, needing to be reclaimed over other occupied stockpiles. Furthermore, the calculation of the operation’s starting time is affected by the precedence relationship involved for the unloading of vessels and reclaiming of stockpiles. The reclaiming of stockpiles associated with a given vessel by a clearing number cannot be performed until after the total amount of cargo contained in the vessel is stacked. That is, the starting time of reclaiming a stockpile is always greater than the completion time of unloading the associated vessel. Along with the above constraints, which are specific to the given terminal, general stacker and reclaimer scheduling and operations constraints are also applicable to this problem and are explained in the next section.

4. Mathematical Model

In this section, we describe a mixed-integer linear programming (MILP) formulation for the discussed problem. We solve the problem for a given planning horizon discretized into T periods and a fixed number of stackers and reclaimers. Each stockyard is divided into P identical stockpiles based on the volume of cargo the stockyard can support, such that each stockpile can be handled to unload one vessel completely. The flow rates of the unloading line and reclaiming line are assumed to be constant throughout the planning horizon considered; also, once stacked at a stockpile, cargo is not requested to be shifted to a different location in order to create space in the stockyard. In this paper, an operation is defined as the unloading or reclaiming of cargoes for stockyards. The input parameters of the model, which define the initial status of the stockyards, can be collected by pre-processing the information available just before starting up the model. The notations used to describe the problem are detailed below.

4.1. Sets and Input Data

T The set of time steps, t = {1, 2, …, T}.
V The set of veyssels that need to be served, v = {1, 2, …, V}.
c V The set of clearing numbers of cargo associated with the set of vessels V, c v = { c 1 , c 2 , , c V } .
S The set of stackers used for stacking the cargo, s = {1, 2, …, S}.
R The set of reclaimers used for reclaiming the cargo, r = {1, 2, …, R}.
I The set of operations that need to be processed in a given planning horizon, i = {1, 2, …, I}.
Y The set of stockyards, y = {1, 2, …, Y}.
P The set of stockpiles in each stockyard, p = {1, 2, …, P}.
t v a r r Arrival time of vessel v at a berth.
L e n y Length of stockyard y.
L e n p Length of stockpile p in a stockyard.
S y m i n Minimum space that must be maintained between two stockpiles in stockyard y.
h 0 r y Initial position of reclaimer r in stockyard y at time t = 0.
h 0 s y Initial position of stacker s in stockyard y at time t = 0.
Q c v Total quantity of cargo labeled with the clearing number c v .
R i n Flow rate of cargo transferred from wharf area to stockyards.
R o u t Flow rate of cargo transferred from stockyards to bunkers.
T S P r Traveling speed at positioning of reclaimer r.
T S P s Traveling speed at positioning of stacker s.
S D s r Safety distance that must be maintained at all times to prevent collision between the stacker and reclaimer.
0 p y = 0 ,   if   stockpile   p   in   stockyard   y   at   time   t = 0   is   occupied 1 ,   if   stockpile   p   in   stockyard   y   at   time   t = 0   is   empty          
τ A large positive constant.

4.2. Decision Variables

h p y Position of stockpile p in stockyard y.
h t r y Position of reclaimer r in stockyard y at time t.
h t s y Position of stacker s in stockyard y at time t.
f i The total processing time of operation i I , an integer 0 .
n i Starting time of operation i I , an integer 0 .
C i Completion time of operation i I .
k i j s Set up time to process operation j immediately after operation i on stacker s.
z i j r Set up time to process operation j immediately after operation i on reclaimer r.
ξ t r i Quantity of cargo handled by reclaimer r in task i per period of time t.
x i y p = 0 ,   if   operation   i I   is   not   alotted   to   stockyard   y   and   stockpile   p 1 ,   if   operation   i I   is   alotted   to   stockyard   y   and   stockpile   p              
y i c v = 0 ,   if   cargo   with   clearing   number   c v   is   not   handled   in   operation   i I 1 ,   if   cargo   with   clearing   number   c v   is   handled   in   operation   i I              
ω i j s = 0 ,   if   operation   i   is   not   immediately   followed   by   operation   j   in   sequence   on   s 1 ,   if   operation   i   is   immediately   followed   by   operation   j   in   sequence   on   s              
ώ i j r = 0 ,   if   operation   i   is   not   immediately   followed   by   operation   j   in   sequence   on   r 1 ,   if   operation   i   is   immediately   followed   by   operation   j   in   sequence   on   r              
σ t s i = 0 ,   if   operation   i   is   not   processed   by   stacker   s   at   time   t         1 ,   if   operation   i   is   being   processed   by   stacker   s   at   time   t
δ t r i = 0 ,   if   operation   i   is   not   processed   by   reclaimer   r   at   time   t         1 ,   if   operation   i   is   being   processed   by   reclaimer   r   at   time   t
t p y = 0 ,   if   stockpile   p   in   stockyard   y   at   time   t   is   occupied 1 ,   if   stockpile   p   in   stockyard   y   at   time   t   is   empty          
ρ r y = 0 ,   if   stockyard   y   is   not   served   by   reclaimer   r 1 ,   if   stockyard   y   is   served   by   reclaimer   r              
μ t p y c v = 0 ,   if   cargo   with   c v   is   not   stored   in   stockpile   p   of   stockyard   y   at   time   t 1 ,   if   cargo   with   c v   is   stored   in   stockpile   p   of   stockyard   y   at   time   t              

4.3. Objective Function and Constraints

The performance schedule can depend on the completion times of the operations, striving for a higher throughput of handling facilities defined by the volume of cargo moves per hour. The objective function seeks to minimize the maximum completion time at which all operations are completed for a given planning horizon.
Min   F   =   C m a x
where
C m a x = m a x i I { C i }
subject to
h p y + L e n p L e n y             y Y ,   p P
h p y + L e n p + S y m i n h p y             y Y , p , p P , p p
    C i n i + f i             i I
f i y i c v R i n Q c v             i I , c v c V
f j y j c v R o u t Q c v             j I , c v c V
n j + τ 1 ω i j s n i + f i + k i j s           i , j I ,   s S , i j
n k + τ 1 ώ m k r n m + f m + z m k r           m , k I ,   r R , m k
t T σ t s i = C i n i             i I , s S
t + τ 1 σ t s i n i + 1 t n i + f i + τ 1 σ t s i             i I , s S , t T
t T δ t r j = C j n j             j I , r R
t + τ 1 δ t r j n j + 1 t n j + f j + τ 1 δ t r j             j I , r R , t T
r R i I ξ t r i = d e m a n d t             t T
  σ t s i y i c v + δ t r j y j c v 1             i , j I ,   s S ,   r R , t T , c v c V ,   i j
t = n i n i + f i σ t s i f i             s S , i I
t = n j n j + f j δ t r j f j             r R , j I
r R δ t r i 1             i I , t T
y Y ρ r y = 1             r R
p P σ t s i x i 1 p + p P σ t s i x i 2 p 1             i I , t T
c v c V μ t p y c v 1             y Y ,   p P , t T
σ t s i x i y p t p y             y Y , p P , i I , s S , 0 t T 1
δ t r i x i y p 1 t p y             y Y , p P , i I , r R , 0 t T 1
t + 1 p y = t p y σ t s i x i y p + δ t r i x i y p     y Y , p P , i I , s S , r R , 0 t T 1
μ t + 1 p y c v = μ t p y c v + σ t s i x i y p           y Y , p P , c v c V , t T
μ t + 1 p y c v = μ t p y c v δ t r i x i y p           y Y , p P , c v c V , t T
σ t s i x i y p 1 δ t r j x j y p 1 h p y + L e n p + M D s r h p y s S , r R , i , j I , i j , y Y , p , p P , p p
                        x i y p , y i c v ,   ω i j s , ώ i j r 0,1             y Y , p P , c v c V , s S , r R , i , j I , i j
σ t s i , δ t r i ,   ρ r y 0,1             y Y , s S , r R , i I , t T
t p y , μ t p y c v 0,1             y Y , p P , c v c V , t T
The objective function (1) minimizes the maximum completion time of handling operations for a given planning horizon, which is the latest completion time among all operations, as described in the Equation (2). Constraints (3) ensure that a stockpile must fit in its stockyard. To avoid the contamination of stockpiles, constraints (4) define a minimum distance that should always be maintained between two adjacent stockpiles in a stockyard. Constraints (5) guarantee that the completion time of operation i is greater than or equal to the sum of the start time and processing time. Constraints (6) and (7) set the minimum limit of processing time of operation i based on the total quantity of cargo that has to be handled and the flaw rate capacity of the machine used to perform operation i. Constraints (8) and (9) ensure that the order of operations for unloading or reclaiming is respected and give the relationship between the start time of an operation and that of its successor. Constraints (10) and (11) force the value of the implied decision variable σ t s i to be one when the unloading operation i is between the starting and completion times. Similarly, constraints (12) and (13) define δ t r j , such that δ t r j = 1 when the reclaiming operation j is being processed. Constraints (14) guarantee that the reclaiming quantity of cargo is equal to the quantity required to cover an assumed deterministic demand per period of time. Although, when the stacker and reclaimer are simultaneously performing unloading and reclaiming operations, constraints (15) ensure that the stacker and reclaimer cannot proceed with these two different operations with the same clearing number at the same time. Constraints (16) and (17) state that unloading and reclaiming operations should take place continuously from the starting time to the minimum time required to complete the operations. While reclaimers transfer the cargo to coal bunkers through a common conveyor, constraints (18) ensure that only one reclaimer can perform a reclaiming operation at a given time. Constraints (19) show that each stockyard is served by only one reclaimer, and, similarly, constraints (20) ensure that the stacker can access a single stockyard at a given time to process one unloading operation. Indeed, when μ t p y c v = 1 , constraints (21) guarantee that each stockpile in a stockyard can contain the cargo of a single clearing number at a given point in time. Constraints (22) to (26) update the status of the stockyard. Constraints (27) define the collision restriction. When the stacker and reclaimer are simultaneously working in the same stockyard, these constraints ensure that a minimum distance must be maintained to prevent collision between them. Constraints (28) to (30) are binary constraints on the variables.

5. The Developed Hybrid Genetic Algorithm

The scheduling problem that has been studied was shown to be NP-hard and included in combinatorial optimization problems (Diabat et al. [10]). The MILP formulated above, when solved, likely did not lead to satisfactory results, from a computing time perspective, for real-life instances of interest. Thus, it is necessary to employ a meta-heuristic approach to tackle problems of a realistic size. GAs are one of the meta-heuristic approaches known to be robust in handling scheduling problems [7]. Furthermore, a GA is an artificial intelligence search from the class of evolutionary algorithms that simulates the process of the natural biological evolution of living organisms [15]. In general, a GA applies the concept of survival of the fittest in order to let the best individuals evolve continuously through generation until they produce a near-optimal solution. At each generation, a reproduction mechanism is performed by the process of selecting individuals according to their fitness values, defined in accordance with the objective function of the problem and breeding the selected individuals together using operators derived from natural genetics, such as crossover and mutation. This process leads to the evolution of the population of individuals until the termination criterion is satisfied.
The developed approach using a hybrid GA is illustrated in Figure 3. The procedure starts with obtaining the input data, which consist of the vessel schedule, stockyard status, and machines’ initial positions. Then, hybridization of the GA is performed by a tabu search algorithm, aiming to seed the initial population with good solutions. The solutions generated by the TS algorithm with a predefined seeding frequency (sf) are considered as a set of individuals of the initial population, and the remaining ones are generated randomly. The generation procedure of the initial population is explained in Appendix A. Therefore, the hybrid GA starts with a population of individuals or solutions; each solution is encoded as strings, namely chromosomes. The length of each chromosome is equal to the number of operations to be handled in a planning horizon. Afterword, the fitness value of each chromosome in the population is set to be the reciprocal of the objective function value, and with respect to the probability distribution of chromosomes based on their fitness values, a roulette wheel approach is adopted as a selection strategy. After two chromosome parents are selected from the current population, a certain portion of chromosomes between the two parents is exchanged using a modified version of two-point crossover [1]. After exerting the modified two-point crossover, some individuals may undergo a mutation process.
The offspring solutions are then evaluated and used to evolve the population. To prevent the loss of the best individuals, an elitist strategy is applied. This procedure is continued in order to increase the number of generations until the termination criteria are satisfied.
In this study, we employ modified swap mutation, in which a random element is picked and its position is randomly exchanged with a former element such that the precedence relations are satisfied. The mutation process ensures diversity in the population, and, as a result, the hybrid GA searches in a broader area. Generally, the implementation of genetic operators to parent solutions may yield infeasible offspring solutions in the sense that some stockpiles may be handled by two successive unloading operations while some stockpiles may be handled by two successive reclaiming operations in the offspring. To avoid these infeasibilities, we modify the structure of the two-point crossover and swap mutation to guarantee feasible individuals for the next generation.

5.1. Chromosome Representation

As explained previously, each chromosome is a candidate solution to the problem, consisting of genes that represent the decision variables. The number of genes in each chromosome is equal to the number of operations. It should be noted that in this study a handling operation is characterized by the stockpile number, operation type, and clearing number. Thus, we define a chromosome as having three parts. In the first part, from left to right, genes represent the stockpiles and their handling sequence, whereas in the second part, they represent the type of operation performed in each stockpile of the first part. The genes in the second part can only take “U” or “R” as their value. The gene equal to “U” means an unloading operation will be performed in the stockpile presented in the first part, and the gene equal to “R” means a reclaiming operation. The last part represents the clearing number of cargo quantities that will be handled in each stockpile, which is essential for relating each handling operation to the corresponding vessel.
Figure 4 shows an example of chromosome encoding. This chromosome represents a solution for the stacker and reclaimer scheduling problem in a cargo storage yard with eight stockpiles, one stacker, and two reclaimers. There are 10 vessels to be unloaded; each has a clearing number c v for labeling the quantity of cargo contained in each vessel. Each clearing number can be handled by unloading and reclaiming operations, which means that, in this planning horizon, we have 20 handling operations. It is assumed that in the beginning of the planning horizon all the stockpiles are empty and the machines are positioned in the initial position. As indicated in the first part of the chromosome, there are eight stockpiles (numbered P1P8), and the order in which the stockpiles are placed in the chromosome defines the sequence in which they are handled at a cargo storage yard. The second part of the chromosome indicates which type of operation is being handled in each stockpile, and the third part of the chromosome indicates the clearing number associated with each operation. The work assignment of the machine to the stockpile is according to the handling sequence of stockpiles in the chromosome, as long as the handling operation is completely performed. From the example above, the assignment of machines to the stockpiles is stacker-01 = {P6, P7, P5, P1, P2, P7, P8, P5, P2, P4}, reclaimer-01 = {P1, P2, P3, P4}, and reclaimer-02 = {P6, P7, P5, P7, P8, P5}.

5.2. Population Initialization

One promising approach for improving the convergence speed of GAs towards the global optimum is population diversity [1]. This indicates that while the initial population is formed, it is important to generate as many disparate individuals as possible. For this purpose, we propose a hybridization of GAs, which is realized by applying the solution obtained by the TS algorithm into the randomly generated, initial population. The TS algorithm is used to generate initial solutions by a seeding frequency sf, which is defined based on an experiment, and its result is discussed in Section 7. The proposed TS algorithm is explained in Section 6. In the case of stacker and reclaimer scheduling problems, it is not possible to generate populations in a random manner, since the existence of precedence relations among unloading and reclaiming operations and collision constraints between the machines leads to infeasible solutions. Elimination of these infeasible solutions and replacing them with new generated chromosomes is time-consuming. Thus, in the current study, we propose a new method that satisfies the system constraints to only produce feasible individuals. Thereby, the schedule of all the vessels expected to arrive at the terminal is generated by the port authorities, and the stockyard status is updated based on the availability of the cargo. The order in which the handling operations are performed is decided by the following four cases. In the first case, when the list of vessels that need to be served is not empty and the number of occupied stockpiles in the stockyards are less or equal to a minimum limit number, which is assumed in this study to be two stockpiles, the unloading operation is given priority over a reclaiming operation to prevent stockouts of cargo. In the second case, when the stockyards are fully stored with cargo, only the reclaiming operation can be processed. The third case depends on the arrival time of the vessels; when this time is reached, the cargo starts to be transferred from the vessel to one of the empty stockpiles. Otherwise, the reclaiming operations take place successively. The handling sequence in which the stockpiles are handled is also decided during the treatment of the selected case. Then, we calculate the starting time, setup time, and completion time for handling the cargo using the proposed method. Next, we calculate the maximum completion time required to perform all handling operations during the given planning horizon. Therefore, the fitness value for each of the generated schedules is calculated. The initialization procedure of the developed hybrid GA is presented by three algorithms in Appendix A.

5.3. Fitness Evaluation and Selection

After generating the initial population, a fitness function is used to evaluate the quality of each chromosome. Chromosomes with a higher fitness value have a greater chance of passing on their good characteristics to offspring. Furthermore, the objective of our scheduling problem is to minimize the maximum completion time, which is always positive. Hence, the fitness value of its corresponding chromosome is set to be the reciprocal of its objective function value, as defined in Equation (1).
In this paper, a roulette wheel approach is adopted as the selection procedure to probabilistically select individuals based on a certain measure of their performance. It is assumed that the fitness value is the chosen measure of performance. The roulette wheel procedure implemented in this study was adapted from [1].

5.4. Crossover

In the present study, a two-point crossover is employed to create offspring by combining and exchanging a certain portion of chromosomes between two parent individuals. For the studied problem, the two-point crossover is modified to ensure that feasibility will be maintained throughout the evolution process and prevent the need for a repair procedure to resolve the illegality of offspring. To demonstrate how the modified two-point crossover is performed, the following steps are presented:
Step 1. The parent individuals are selected to be combined using a roulette wheel procedure.
Step 2. Generate two random numbers that cut the first parent into three parts.
Step 3. Copy the substrings of the first part from the first parent into offspring.
Step 4. Copy the clearing number substring of the second part from the first parent into offspring.
Step 5. Reorder the stockpile handling sequence of unloading operations of the second part into the offspring according to the sequence in which they are contained in the second parent, and which satisfy the precedence relationship.
Step 6. Reorder the stockpile handling sequence of reclaiming operations according to the new order of their corresponding unloading operations.
Step 7. Place the missing genes into the unfixed positions of the offspring from left to right according to the order of the first parent.
Figure 5 illustrates an example of a modified two-point crossover in which two genes are selected randomly. When the stockpile handling sequence of the second part is reordered in offspring, according to the order in which the stockpiles are sequenced in the second parent without satisfying the precedence relationship, the offspring become infeasible. The infeasibilities arising in the offspring are in the form of repeated unloading operations and reclaiming operations in stockpile P3 successively. That means, after unloading cargo c 3 in stockpile P3, the unloading of cargo c 5 in P3 is not possible until the completion of cargo c 3 reclaiming from P3. Moreover, the reclaiming operation of empty stockpile P2 is performed before unloading the cargo in it. Another infeasibility is presented in the offspring in the sense that the unloading of stockpile P7 is performed with cargo c 8 , while the reclaiming of the same stockpile is performed sequentially with different cargo c 6 . To resolve the illegitimacy of offspring, a detailed, modified two-point crossover procedure is given in Appendix B.

5.5. Mutation

Mutation plays a key role in preserving the diversity of the population, which can force the GA to search in new areas and helps it to avoid premature convergence [14]. In the developed hybrid GA, we apply swap mutation, which basically means the shuffling of genes within the chromosome. Picking two genes at random and shuffling them, i.e., changing their positions in the chromosome, may lead to an infeasible schedule. Regarding the primary concern for feasibility in the studied problem, the concept of swap mutation is modified. However, the modified swap mutation is performed between four genes, as this still maintains the feasibility of the schedule, and it works as follows:
Step 1. Select the chromosome randomly in terms of the probability of the mutation.
Step 2. Pick one unloading operation, 1U, from the selected chromosome at random.
Step 3. Find the position of reclaiming operation 1R corresponding to the chosen unloading operation.
Step 4. From the position of 1R to the end of chromosome, pick one unloading operation 2U, which satisfies the precedence relationship, randomly.
Step 5. Find the position of reclaiming operation 2R corresponding to the unloading operation 2U.
Step 6. Interchange the position of 1U and 2U, and the position of 1R and 2R.
Appendix C details the procedure for modified swap mutation, which is used for the shuffling of genes within the chromosome, as illustrated in Figure 6.

5.6. Creation of the Next Generation and Termination Criteria

This elitist strategy ensures that the individuals with the highest fitness value in the current generation can pass into the next generation, which prevents a possible inadvertent loss of high-quality chromosomes during propagation into future generations. The following mechanism, which is similar to [1] with a few changes, describes the elitist strategy used:
Step 1. Sort the chromosomes of the current population in ascending order of fitness value.
Step 2. Fill the first 25% of the next population from the ordered list (the best chromosomes).
Step 3. From the rest of the 75% of the current population, two chromosomes are selected randomly.
Step 4. Replace the two newly generated offspring with the two selected chromosomes in the next generation.
The termination criteria are determined after a given number of generations, which is decided after extensive experimentation.

6. Tabu Search Algorithm

In this section, we propose a tabu search algorithm for the stacker and reclaimer scheduling problem. The tabu search approach was originally proposed by Glover [27], and it has successfully been implemented to solve various combinatorial problems. See, for example, Glover et al. [28], Pardalos el al. [29], It was developed to allow the well-known hill-climbing to overcome local optima. The basic principle of TS is to perform moves away whenever a local optimum is encountered in the hope that it will eventually identify a better solution. To prevent the search from cycling back to previously visited solutions, the TS keeps a record of its recent search history in memories, called tabu lists.

6.1. Solution Representation

A candidate solution for the neighborhood structure can be represented by vector representation adapted from Chen [30]. A complete schedule, SQ, can be decomposed into subsets SQs and SQr, in which SQs and SQr correspond to a sequence of stockpiles that are handled by stacker s and reclaimer r, respectively. Let p u = S Q s ; SQs can be defined by a permutation vector π s = ( π s p 1 ,   ,   π s p u ) , where π s x denotes the xth stockpile that can be handled in π s . Similarly, let p r = S Q r ; SQr can be defined by a permutation vector π r = ( π r p 1 ,   ,   π r p r ) , where π r x denotes the xth stockpile that can be handled in π r . Therefore, the solution can be represented as follows:
π = s = 1 S π s r = 1 R π r
Now, let us consider an illustrative instance to show how we developed the solution.
Instance: In the handling system illustrated in Figure 4, there are two stockyards; each one is divided into four stockpiles. These two stockyards are facilitated by one stacker and two reclaimers used for unloading and reclaiming the cargo.
Vessel arrival with their cargo quantity and the processing time of handling operations for each type of machine are given in Table 1. We assume that the setup time of the unloading operation is equal to the traveling time of the stacker machine plus slewing movement time. Moreover, the setup time of the reclaiming operation is regarded as the traveling time of the reclaimer machine.
Example 1.
We process the handling operations in the planning horizon considered in the sequences given by π s = {P6, P7, P5, P1, P2, P7, P8, P5, P2, P4}, π r 1 = {P1, P2, P3, P4}, and π r 2 = {P6, P7, P5, P7, P8, P5}. A feasible schedule for the instance could be represented as π = ( π s ,   π r 1 ,   π r 2 ) . Then, the maximum completion time of the schedule is equal to the maximum completion time of the handling machine set. Thus, C m a x π = 41,518 min.

6.2. Initial Solution Generation

In this section, we use the same heuristic employed to generate a random initial population in Section 5.2 to produce an initial schedule for the TS algorithm. The main idea of the heuristic method is to schedule all handling operations for a given planning horizon, based on four cases, as shown in Appendix A (Algorithm A1). When scheduling the unloading operation, we select one of the available empty stockpiles contained in the stockyard status randomly, as described in Appendix A (Algorithm A2). The First-Come-First-Served (FCFS) rule is applied when building the stockpile handling sequences for reclaiming operations; then, the procedure described in Appendix A (Algorithm A3) is followed. The updated stockyard status is considered before selecting a stockpile and applying the FCFS rule, so as to ensure that a feasible schedule can be obtained.

6.3. Neighborhood Structure

Due to the existence of some operational constraints that are specific to the problem under consideration, the search space explored by the TS algorithm may include the possibility of considering an unfeasible solution. In the proposed neighborhood structure Ns, the search is limited to only consider the feasible space of the constrained problem, where each point in the search space corresponds to the set of schedules that satisfies all the operational constraints. In practice, the chosen neighborhood structure should make sure that the moves that seem to intuitively drive the search in the right direction should be the ones that are likely to be selected by Gendreau et al. [31]. In the proposed approach, a neighbor of a solution is obtained by performing the swapping moves explained in Section 5.5.
In the example illustrated in Figure 6, we consider a schedule π = ( π s ,   π r 1 ,   π r 2 ) . If we perform all possible swaps on π , we may obtain some swapping moves that lead to infeasible solutions, which appear in the form that two successive unloading operations are performed in the same stockpile. However, we identify here a restricted subset of moves that are feasible and can lead to improvement. For the unloading schedule, we associate a sextuple notation (px, c v 1 , U, py, c v 2 , U) with each swapping move, which defines the handling sequence of stockpiles π s p x and π s p y as swapped on π s . This means that stacker s changes the position for unloading the cargo c v 1 to the stockpile p y . Likewise, the position for unloading the cargo c v 2 is changed to the stockpile p x .
We start the search for the collection of neighbor solutions by applying the swapping move to the unloading operations associated with the vector π s . This vector π s represents the processing order in which the given set of stockpiles is handled by the stacker machine. Applying a swapping move to such a vector by itself does not ensure that a feasible schedule can be found because of the preceding relationships between unloading and reclaiming operations. Thus, we need to construct a complete feasible schedule by performing necessary moves on reclaiming operations that are associated with the vector π r . For each new processing order obtained from π s , by applying the swapping move SMs(px, c v 1 , U, py, c v 2 , U), we obtain a new processing order from π r by swapping two stockpiles that are related to the same clearing number of swapped stockpiles on π s . The movement is denoted SMr(px, c v 1 , R, py, c v 2 , R). For better understanding, the swapping move is performed in the following steps:
Step 1. Create an initial feasible solution π using the procedure explained in Section 6.2.
Step 2. Pick one triplet (px, c v 1 , U) from the initial chromosome.
Step 3. Find the position of the triplet (px, c v 1 , R) corresponding to the chosen triplet (px, c v 1 , U).
Step 4. From the position of the triplet (px, c v 1 , R) to the end of chromosome, identify all possible swaps that lead to feasible solutions.
Step 5. For each triplet (py, c v 2 , U) identified in step 4, we apply swapping move SMs(px, c v 1 , U, py, c v 2 , U).
Step 6. Find the position of the triplet (py, c v 2 , R) corresponding to the chosen triplet (py, c v 2 , U).
Step 7. Apply swapping move SMr(px, c v 1 , R, py, c v 2 , R).
Based on the previous description that gives the necessary condition for moving a handling sequence of stockpile, a feasible schedule π can be transformed at each iteration by applying the described moves to obtain a set of neighbor schedules. This set of neighbor solutions in the search space defines the neighborhood of π , denoted Ns( π ).

6.4. Tabu List and Search Mechanism

The tabu status of a solution is stored in the short-term memory of the search, which is called tabu list T. This tabu action is applied to prevent the recent moves from cycling back to previously visited solutions. To describe the search strategy of our TS algorithm, it is necessary to introduce an additional notation. Equation (31) describes how a solution π can be presented by a union of permutation vectors. Thereby, the permutation vector π s can be associated with a set of attributes.
A π s = π s p x ,   π s p y p x ,   p y P ,   s S
where π s p x ,   π s p y means that the stockpiles p x and p y are consecutively handled by stacker machine s. In our case, once a handling sequence of stockpiles py1 and py2 are swapped on the stacker schedule, we obtain a neighbor solution by removing two attributes, π s p x 1 ,   π s p y 1 and π s p x 2 ,   π s p y 2 , from A π s and replacing it with two other attributes, π s p x 1 ,   π s p y 2 and π s p x 2 ,   π s p y 1 , where p y 1 p y 2 . Then, the attributes π s p x 1 ,   π s p y 1 and π s p x 2 ,   π s p y 2 are declared tabu for a certain number of iterations, θ . Let β p x p y s denote the iteration number for which an attribute remains forbidden. Therefore, we do not allow a swapping move that involves returning attributes which they have assigned by tabu status. Similarity to A π s , let A π r denotes the set of attributes which are associated with the schedule π r . Removing an attribute π r 1 p x ,   π r 1 p y from A π r 1 consists of removing the handling sequence of stockpile py from π r 1 and replacing it with another stockpile pz. If pz cannot be handled by reclaimer r1, the handling sequence of stockpile py will be removed from π r 1 , and stockpile pz will be assigned to the adjacent one, π r 2 , so that the attribute π r 2 p x ,   π r 2 p z can be added to A π r 2 .
However, tabus may sometimes prohibit attractive moves, or they may lead to the overall stagnation of the search process [31]. In this case, it is necessary to overrule the tabu status of a solution by using algorithmic devices, which are called aspiration criteria. In our algorithm, we allow a tabu move if the aspiration criterion is satisfied; i.e., the move leads to a neighborhood solution that results in a smaller C m a x than that of the current best-known solution C m a x .
One of the main limitations of the traditional tabu search approach is that it tends to spend most of its time in a restricted portion of the search space. To overcome this local optimality, a diversification mechanism is applied to perform wider exploration by leading the search into unexplored regions of the solution space. This mechanism is based on a frequency memory, in which we record the number of times an attribute π s p x ,   π s p y has been added to the solution during the search. We let ρ p x p y s be the frequency of the attribute π s p x ,   π s p y , and λ represents the current iteration number. If a non-improving solution π ^ is obtained by applying the swapping move to the current solution π , a penalty weight p π ^ is added to C m a x π ^ when evaluating the maximum completion time of π ^ . In the applied swapping move, four attributes can be added to the neighbor solution π ^ . Therefore, the penalty p π ^ is formulated as follows:
p π ^ = γ C m a x π ^ I   ( S + R ) ( ρ p x 1 p x 2 s + ρ p x 3 p x 4 s + ρ p y 1 p y 2 r + ρ p y 3 p y 4 r ) / λ
The scaling factor C m a x π ^ I   ( S + R ) defines a correction that adjusts the penalty weight with respect to the maximum completion time and problem size. The constant factor γ is used to control the intensity of diversification.

6.5. Overall Description of TS Algorithm

We are now in a position to give an overall procedure for the TS algorithm, integrating the elements that we have described above. We start with an initial handling sequence π with the value of maximum completion time C m a x and primary empty tabu list T. At each iteration, we apply the local transformation to the schedule π and find out the neighborhood Ns( π ). Let N ^ s ( π ) be the set of schedules obtained by performing non-tabu moves; i.e., at least one attribute β p x p y s is less than λ or satisfies the aspiration criterion. To implement the diversification process, any solution π ^ N ^ s ( π ) , such that C m a x π ^ C m a x π , is penalized by a penalty weight p π ^ . Thereby, we select the best feasible schedule π ¯ from the set N ^ s ( π ) . Then, the tabu list T is updated, and the frequency of each attribute added to describe π ¯ is increased by one unit. The schedule π ¯ is set to be the primal one for the next iteration. The algorithm is repeated for a predetermined iteration number λ m a x . Therefore, the best-known schedule π encountered during the search is identified. The proposed TS algorithm for the stacker and reclaimer scheduling problem is given in Appendix D.

7. Computational Results and Analysis

In this section, we compare the performance of different methods developed in previous sections through a real case study. Moreover, we use real data from a cargo terminal alongside the Atlantic coast of Morocco in order to show the potential gain of using our hybrid GA compared to the TS algorithm and pure Gas, which are not able to find a high-quality approximate solution. The aim of this study is to find an optimal handling sequence of stockpiles for the unloading and reclaiming of cargoes during a given planning horizon. This study is performed on one processor (2.50 GHz Intel core i5–2520 M CPU) of a HP EliteBook 8460p with 4 GB of RAM. The programming language is C # 6.0 visual studios 2013.

7.1. Data Processing

A parametric analysis of the proposed techniques was carried out considering 20 instances inspired by real terminal data to gauge their efficiency. The instances are characterized by the number of vessels arriving at the port during a planning horizon, the number of stockpiles contained at the cargo storage yard, the number of operations to be handled in a planning horizon, and the number of machines. We summarize the main figures of this instance, set in Appendix E (Table A1).
Furthermore, the parameter setting for the GA and TS algorithm is adopted based on experiments applied to instance 4. The data processing of instance 4, such as the sequence of the berthing of vessels at the port, the initial status of each stockyard, and the specification of each machine, are presented in Appendix E (Table A2).

7.2. Parameter Settings

Usually, there is no combination of parameter settings proper for every GA, and determining the appropriate settings of these parameters is not a trivial task. Thus, the number of control parameters and the many possible choices make the determination of perfect settings almost impossible. In this section, we have conducted careful experimentation with different settings to determine the proper settings for the GA’s control parameters. Each experiment is run 10 times using the GA, and the average values of the maximum completion time and CPU time are reported. The following four control parameters are used within the developed hybrid GA: the population size (PZ), the crossover rate (CR), the mutation rate (MR), and the maximum number of generations (GN). Firstly, an initial sensitivity analysis was conducted on the population size and the number of iterations. For a fixed number of 100 generations of the algorithm, the CPU time and maximum completion time of the generated solution were reported for instance 4. Figure 7 demonstrates the results, which indicate the increase in CPU time and reduction in maximum completion time with the increase in population size. A reasonable trade-off between CPU time and optimal maximum completion time is noted for a population size of 100. Choosing this population size, experiments are carried out for a range of generations, and the results are presented in Figure 8. The chosen number of generations for tests was set to be 200.
Figure 9 provides a graphical representation of the average maximum completion time obtained by the GA to solve instance 4 with different probability values of crossover and mutation. From this analysis, the best value of maximum completion time is found with CR = 0.7 and MR = 0.1. Given that the sensitivity analysis for CR and MR was conducted on instance 4, the results are expected to be suitable for all instances.
In addition, our TS algorithm uses three parameters: the maximum iteration number λ m a x , the length of tabu list θ , and the constant factor γ of the diversification process. The fine tuning of the λ m a x parameter is carried out to find the value that appears to be proper for the TS algorithm. Figure 10 illustrates the convergence speed of the proposed TS algorithm in solving instance 4. It is shown that the algorithm almost converges in the first 200 iterations.
Following the sensitivity analyses performed by Sammarra et al. [7], parameter θ and γ are set to 12 and 0.02, respectively. The value of θ seems to be suitable for all instances and does not affect the number of iterations, while the value of γ seems to provide a proper diversification effect during the search.
Thereby, in our experiments, the parameter settings that achieved a satisfactory solution quality in an acceptable time span for the GA and TS algorithm are summarized in Appendix E.

7.3. Computational Results

The seeding frequency sf mentioned in Section 5.2 represents the number of repeating occurrences that the TS algorithm needs to generate an individual to seed the initial population of the GA until the maximum iteration number of the TS algorithm is reached. The seeding interval s I is the number of iterations of one cycle in a repeated seeding solution to the initial population by the TS algorithm. The relation between the seeding frequency and the seeding interval s I is given as follows:
s f = 1 s I × P Z
To evaluate the impact of the parameter sf on the performance of the hybrid GA, we tested s f 50 ,   20 ,   10 ,   5 ,   2 ,   0 to solve different sizes of optimization problems, such as the following: instance 1, instance 4, instance 8, instance 11, instance 13, instance 15, instance 17, and instance 20. Table 2 shows the average value of the maximum completion time and standard deviation (s. d.) obtained by running the hybrid GA with different values of sf for each instance. As shown in Table 2, the bold values represent the best results obtained by the hybrid GA with s f = 10 . Therefore, this benefit is captured by seeding the initial population of the GA with solutions at a frequency of 10 times for all instances. As the diversification of the initial population has a significant role of improving the searching ability of the GA, when s f = 50 , the TS algorithm starts to frequently seed the solution to the initial population ( s I = 2 ), which increases redundant individuals in the population and thus leads to premature convergence. However, 100% of random individuals generated in the initial population ( s f = 0 ) may contain individuals from the same region and thereby leads GA searches around a local optimal.
Furthermore, our experiment is performed to test the effectiveness and efficiency of the proposed hybrid GA, referring to the quality of solutions generated by the solution approach and its computational times. After underlining the main features of each published paper in Section 2, it is pointed out that the operative manageable environment with the proposed approaches is different from each existing published work. Thereby, for overall instances, we compare the obtained performance of the hybrid GA and those of the TS algorithm and pure GA, and we also compare the CPU time that each algorithm costs to solve the instance. The pure GA applies the same control parameters, as well as the same genetic operators, throughout the experiments as the hybrid GA. As the proposed model considers minimizing the maximum completion time, Cmax could be utilized as a powerful criterion for evaluating the performance of existing approaches. All the approaches are individually run 10 times with the same parameters, and the comparison results are listed in Table 3.
Based on the results obtained for instances 1–4, the pure GA provides a better performance than the TS algorithm within almost 100 s, while the TS algorithm takes less CPU time than the pure GA. As the instance size increases, the TS algorithm could obtain much better solutions than the pure GA. However, the CPU time required by the TS algorithm rapidly increases, with the longest average CPU time exceeding 1000 s, while the pure GA could still reach feasible solutions in a short time. As also shown in Table 3, the hybrid GA outperforms the TS algorithm and the pure GA in terms of solution quality for all instances. From the viewpoint of computational efficiency, we let the TS algorithm run for a limited number of iterations to seed the initial population of the hybrid GA in order for its CPU time to be approximately equal to the computation time required to create the initial population. It can be seen that the computation of the hybrid GA is dramatically faster than the TS algorithm, especially for solving large-sized instances. Therefore, the hybrid GA is much more effective and efficient than the TS algorithm and pure GA. This reveals the fact that seeding the initial population with rich solutions generated by the TS algorithm improves the performance of GA.

8. Conclusions

In this article, we addressed the stacker and reclaimer scheduling problem that determines unloading and reclaiming decisions in a coal terminal situated along the Atlantic coast of Morocco. We developed an MILP model to represent the system, and, due to the inherent complexity of the problem, the GA and TS algorithm were used to solve it. To the best of our knowledge, our paper is the first work that combines the GA and TS algorithm with a proper seeding frequency, sf, for optimizing the scheduling problem of two independent machines that are constrained by capacities and operational rules relating to their use in coal terminals. Computational experiments on randomly generated data from a real terminal were conducted to show the efficiency and effectiveness of the proposed hybrid GA compared to the TS algorithm and pure GA. Thus, this study resulted in significant reduction in maximum completion time, which in turn led to a higher throughput capacity of cargo.
In the present study, we considered the system to be deterministic in terms of the arrival times of vessels and the availability of handling facilities. The model will be extended to deal with uncertain parameters like the stochastic arrival time of vessels and breakdowns of handling equipment. Important future work could consider the hybridization of the GA, which would be more interesting if the branch-and-bound algorithm and the TS algorithm were used with more computational efficiency.

Author Contributions

Conceptualization, I.T.; methodology, I.T. and M.M.; software, S.A.; validation, M.M., I.B.; formal analysis, I.T.; investigation, I.T.; resources, I.T. and M.M.; data curation, I.T.; writing—review and editing, I.T.; visualization, I.B.; supervision, M.M. All authors have read and agreed to the published version of the manuscript.

Funding

This research received no external funding.

Data Availability Statement

Conflicts of Interest

The authors declare no conflict of interest.

Appendix A

Algorithm A1
1INPUT: vessel schedule, stockyard status, stacker_initial_position, reclaimer_initial_position, total_stockpile_number, total_operation_number, population_size;
2OUTPUT: Initial population P(0);
3Set: current_unloading_time = 0, current_reclaiming_time = 0, current_stacker_position = stacker_initial_position, current_reclaimer_position = reclaimer_initial_position, min_occupied_stockpile = 2,
max_completion_time = 0, [individual] = “ ”;
4for chrom = 1 to population_size do
5for i = 1 to total_operation_number do
6while (vessel schedule is not completed or quantity of cargo in stockyard status ≠ 0) do
7if (vessels to be served list ≠ 0) then
8Select vessel to be served based on vessel schedule;
9Identify clearing number cv of the selected vessel;
10Get arrival_time_vessel from vessel schedule;
11Get quantity of cargo labeled with clearing number Qcv from vessel schedule;
12Else
13arrival_time_vessel = ∞;
14end if
15if (quantity of cargo in stockyard status ≠ 0) then
16Calculate the number of occupied_stockpile;
17end if
18if (vessels to be served list ≠ 0 && occupied_stockpile <= min_occupied_stockpile) then
19Call Unloading_Method (handling_stockpile, current_unloading_time);
20Set [individual] = [individual] + [“handling_stockpile” + “U” + “cv”];
21Set max_completion_time = current_unloading_time;
22Set current_reclaiming_time = current_unloading_time;
23Update vessel schedule and stockyard status;
24elseif (occupied_stockpile = total_stockpile_number) then
25Call Reclaiming_Method (handling_stockpile, current_reclaiming_time);
26Set [individual] = [individual] + [“handling_stockpile” + “R” + “cv”];
27Set max_completion_time = current_reclaiming_time;
28if (current_reclaiming_time > arrival_time_vessel) then
29Set arrival_time_vessel = current_reclaiming_time in vessel schedule;
30end if
31Set current_unloading_time = current_reclaiming_time;
32Update stockyard status;
33elseif (current_unloading_time >= arrival_time_vessel) then
34Call Unloading_Method (handling_stockpile, current_unloading_time);
35Set [individual] = [individual] + [“handling_stockpile” + “U” + “cv”];
36Set max_completion_time = current_unloading_time;
37Update vessel schedule and stockyard status;
38elseif (quantity of cargo in stockyard status ≠ 0) then
39Call Reclaiming_Method (handling_stockpile, current_reclaiming_time);
40Set [individual] = [individual] + [“handling_stockpile” + “R” + “cv”];
41Set max_completion_time = current_reclaiming_time;
42Set current_unloading_time = current_reclaiming_time;
43Update stockyard status;
44end if
45end while
46end for
47return individual;
48end for
49return Initial population P(0);
Algorithm A2
1INPUT: operation number i, current_stacker_position, current_reclaimer_position, arrival_time_vessel, slewing_time, Qcv, Rin, limit_storage_period;
2OUTPUT: handling_stockpile, current_unloading_time;
3Set start_time = 0, travelling_time = 0, setup_time = 0, collision_time = 0, processing_time = 0,
completion_time_i = 0, expiry_time_cv = 0;
4Identify the total number of empty_stockpile from stockyard status;
5for p = 1 to empty_stockpile do
6Select handling_stockpile randomly;
7end for
8Identify targeted_stockpile_position;
9Set start_time = arrival_time_vessel;
10Calculatetravelling_time of stacker between current_stacker_position and targeted_stockpile_position;
11if (current_reclaimer_position = targeted_stockpile_position) then
12CalculateR_ travelling_time of reclaimer to move from current position to the closer occupied
stockpile;
13Set collision_time = R_ travelling_time;
14Else
15Set collision_time = 0;
16end if
17Set setup_time = travelling_time + collision_time + slewing_time;
18Set processing_time = Qcv/Rin;
19Set completion_time_i = start_time + setup_time + processing_time + slewing_time;
20Set current_unloading_time = completion_time_i;
21Assign clearing number of stored cargo cv to handling_stockpile;
22Set current_stacker_position = targeted_stockpile_position;
23Set expiry_time_cv = current_unloading_time + limit_storage_period;
24return handling_stockpile and current_unloading_time;
Algorithm A3
1INPUT: operation number i, current_stacker_position, current_reclaimer_position, occupied_stockpile, current_reclaiming_time, current_unloading_time, Rout;
2OUTPUT: handling_stockpile, current_reclaiming_time;
3Set start_time = 0, travelling_time = 0, setup_time = 0, collision_time = 0, processing_time = 0,
completion_time_i = 0;
4if (current_reclaiming_time = 0) then
5Set current_reclaiming_time = current_unloading_time;
6end if
7for p = 1 to occupied_stockpile do
8Get expiry_time_cv from stockyard status;
9if (expiry_time_cv <= current_reclaiming_time) then
10Set handling_stockpile = p;
11Else
12Select handling_stockpile randomly;
13end if
14end for
15Get Qcv stored in handling_stockpile from stockyard status;
16Identify targeted_stockpile_position;
17Set start_time = current_reclaiming_time;
18Calculate travelling_time of reclaimer between current_reclaimer_position and targeted_stockpile_position;
19if (start_time < current_unloading_time) then
20if (there is conflict between stacker and reclaimer in the same stockyard) then
21Set collision_time = current_unloading_timestart_time;
22enf if
23enf if
24Set setup_time = travelling_time + collision_time;
25Set processing_time = Qcv/Rout;
26Set completion_time_i = start_time + setup_time + processing_time;
27Set current_reclaiming_time = completion_time_i;
28Set current_reclaimer_position = targeted_stockpile_position;
29return handling_stockpile and current_reclaiming_time;

Appendix B

Algorithm A4
1INPUT: Parent_1, Parent_2, length of parent 1 L1, length of parent 2 L2;
2OUTPUT: Offspring;
3Set Offspring = ∅, [element] = “ ”, length of offspring Loff = 0, random_number_1 = 0, random_number_2
= 0, clearing_N = “ ”, handling_stockpile = “ ”
4while (random_number_1 >= random_number_2do
5Generate random_number_1 between 0 and L1;
6Generate random_number_2 between 0 and L1;
7end while
8for i = 1 to random_number_1 do
9Set [offspring] = [offspring] + [i];
10Set Loff = Loff + 1;
11end for
12for j = random_number_1 to random_number_2 do
14if (operation type of element j is “U”) then
15Identify clearing number of element j and put clearing_N = “cv”;
16for k = 1 to L2 do
17if (operation type of element k is “U”) then
18for m = random_number_1 to random_number_2 do
19if ([“handling_stockpile” + “U”] of element k exist between random_number_1 to random_number_2then
20Set handling_stockpile = handling_stockpile_k;
21for n = Loff to 1 do
22if (precedence constraint of [“handling_stockpile” + “U”] is satisfied in [offspring]) then
23Set [element] = [“handling_stockpile” + “U” + clearing_N];
24Set [offspring] = [offspring] + [element];
25Set [element] = “ ”;
26Set Loff = Loff + 1;
27for h = j to L1 do
28Find reclaiming operation with the same clearing_N;
29Set [element] = [“handling_stockpile” + “R” + clearing_N];
30Set [offspring] = [offspring] + [element];
31Set [element] = “ ”;
32Set Loff = Loff + 1;
33end for
34Else
35Set handling_stockpile = “ ”;
36end if
37end for
38end if
39end for
40end if
41end for
42elseif (operation type of unassigned element j is “R”) then
43Set [element] = [j];
44end if
45end for
46for x = random_number_2 to L1 do
47Copy all unassigned elements from Parent_1 to offspring;
48end for
49return offspring;

Appendix C

Algorithm A5
1INPUT: offspring, length of offspring L1, swaped_chrom;
2OUTPUT: swaped_chromosome;
3Set swaped_chromosome = ∅, length of swaped offspring L2 = 0, feasible_list = ∅, length of feasible list
Lf = 0, random_number = 0, R_position = 0, [swap1U] = “ ”, [swap1R] = “ ”, [swap2U] = “ ”, [swap2R] = “ ”, clearing_N = “ ”, handling_stockpile = “ ”, operation_type = “ ”, [temp_U] = “ ”, [temp_R] = “ ”;
4while (operation_type (random_number) ≠ U) do
5Generate random_number between 0 and L1/2;
6end while
7for i = 1 to random_number do
8Set [swaped_chromosome] = [swaped_chromosome] + [i];
9Set L2 = L2 + 1;
10end for
11Set clearing_N = clearing_N (random_number);
12Set [swap1U] = [handling_stockpile (random_number) + “U”];
13for j = random_number + 1 to L1 do
14if (clearing_N (j) = clearing_N) then
15Set [swap1R] = [handling_stockpile (j) + “R”];
16Set R_position = j;
17Set clearing_N = “ ”;
18end if
19end for
20for k = R_position to L1 do
21if ([handling_stockpile (k) + “U”] ≠ [swap1U]) then
22if (operation_type (k) = U) then
23Set clearing_N = clearing_N (k);
24for m = k to L1 do
25if ([handling_stockpile (m) + “U”] ≠ [swap1U]) then
26if (clearing_N (m) = clearing_N) then
27Set [feasible_list] = [feasible_list] + [k] + [m];
28Set Lf = Lf + 1;
29Set clearing_N = “ ”;
30end if
31Else
32Set clearing_N = “ ”;
33end if
34end for
35end if
36Else
37Set clearing_N = clearing_N (k);
38for n = k + 1 to L1 do
39if (clearing_N (m) = clearing_N) then
40Set clearing_N = “ ”;
41for x = k + n to L1 do
42if (operation_type (x) = U) then
43Set clearing_N = clearing_N (x);
44for y = x to L1 do
45if (clearing_N (y) = clearing_N (x)) then
46Set [feasible_list] = [feasible_list] + [x] + [y];
47Set Lf = Lf + 1;
48Set clearing_N = “ ”;
49end if
50end for
51end if
52end for
53end if
54end for
55end if
56end for
57for l = 1 to Lf do
58if (operation_type (l) = U) then
59for h = L2 to 1 do
60if (precedence constraint of element l is not satisfied in [swaped_chromosome]) then
61Delete element l from feasible_list;
62Set Lf = Lf − 1;
63end if
64end for
65end if
66end for
67if (swaped_chrom = “All”) then
68for z = 1 to Lf do
69if (operation_type (z) = U) then
70Set [swap2U] = [z];
71Select [swap2R] which has the same clearing_N of [swap2U] from feasible_list;
72Set [temp_U] = offspring [swap1U];
73Set offspring [swap1U] = offspring [swap2U];
74Set offspring [swap2U] = [temp_U];
75Set [temp_R] = offspring [swap1R];
76Set offspring [swap1R] = offspring [swap2R];
77Set offspring [swap2R] = [temp_R];
78for w = random_number to L1 do
79Set [swaped_chromosome] = [swaped_chromosome] + [w];
80Set L2 = L2 + 1;
81end for
82return swaped_chromosome;
83end if
84end for
85elseif (swaped_chrom = “One”) then
86Select [swap2U] from feasible_list randomly;
87Select [swap2R] which has the same clearing_N of [swap2U] from feasible_list;
88Set [temp_U] = offspring [swap1U];
89Set offspring [swap1U] = offspring [swap2U];
90Set offspring [swap2U] = [temp_U];
91Set [temp_R] = offspring [swap1R];
92Set offspring [swap1R] = offspring [swap2R];
93Set offspring [swap2R] = [temp_R];
94for z = random_number to L1 do
95Set [swaped_chromosome] = [swaped_chromosome] + [z];
96Set L2 = L2 + 1;
97end for
98return swaped_chromosome;
99end if

Appendix D

Algorithm A6
1INPUT: maximum iteration λmax, constant factor γ, number of iteration θ;
2OUTPUT: best-known π
3Set population_size = 1, t = 0, π = “ “, Cmax(π) = 0, T = ∅, λ = 0;
4Generate initial solution π = Initialisation (population_size, P(t));
5Set π = π and Cmax(π) = Cmax(π);
6for λ = 1 to λmax do
7Set  N ^ s ( π ) = ∅;
8Set swaped_chrom = “All”;
9Generate the neighbourhood Ns(π) = modified_swap_mutation (swaped_chrom, π);
10Set  N ^ s ( π ) = Ns(π);
11for each π ^ N ^ s ( π )  do
12if ((βs  ≥ λ) & (βs  ≥ λ) & (βr  ≥ λ) & (βr  ≥ λ) & (C  ( π ^ ) ≥ C  (π)))
px1px2px3px4py1py2py3py4maxmax
Then
13Delete  π ^ from N ^ s ( π ) ;
14end if
15end for
16for each π ^ N ^ s ( π )  do
17if (Cmax( π ^ ) ≥ Cmax(π)) then
18Set Cmax( π ^ ) = Cmax( π ^ ) + p( π ^ );
19end if
20end for
21Find the best feasible schedule π ¯ from N ^ s ( π ) with the minimum Cmax( π ¯ );
22Identify the attributes removed from the current schedule π;
23Set βs  = λ + θ;
px1px2
24Set βs  = λ + θ;
px3px4
25Set βr  = λ + θ;
py1py2
26Set βr  = λ + θ;
py3py4
27Update the tabu list T;
28Identify the attributes added to the best schedule π ¯ ;
29Set ρs  = ρs  + 1;
px1px2    px1px2
30Set ρs  = ρs  + 1;
px3px4    px3px4
31Set ρr  = ρr  + 1;
py1py2py1py2
32Set ρr  = ρr  + 1;
py3py4py3py4
33if (Cmax( π ¯ ) < Cmax(π)) then
34Set π = π ¯ and Cmax(π) = Cmax( π ¯ );
35end if
36Update π = π ¯ and Cmax(π) = Cmax( π ¯ );
37end for
38return best-known π;

Appendix E

Table A1. Data summary for instance Sets inspired from a real terminal.
Table A1. Data summary for instance Sets inspired from a real terminal.
Instance SetPlanning
Horizon (Days)
Number
of Vessels
Number of
Stockpiles
Number of
Operations
Number of
Stacker
Number of
Reclaimer
Instance 1271062012
Instance 2401563012
Instance 3532064012
Instance 4401583012
Instance 5532084012
Instance 6662585012
Instance 74015103012
Instance 85320104012
Instance 96625105012
Instance 105320124012
Instance 116625125012
Instance 128030126012
Instance 135320144012
Instance 146625145012
Instance 158030146012
Instance 169235147012
Instance 176625165012
Instance 188030166012
Instance 199235167012
Instance 2010640168012
Table A2. Initial stockyard status.
Table A2. Initial stockyard status.
Stockyard
Number
Stockpile
Number
Starting
Coordinate (m)
Ending
Coordinate (m)
Quantity
(Tons)
Clearing
No
Expiry Time
(min)
01P10122.5000
01P2132.5255000
01P3265387.5000
01P4397.5520000
02P50122.5000
02P6132.5255000
02P7265387.5000
02P8397.5520000

References

  1. Belassiria, I.; Mazouzi, M.; Elfezazi, S.; Cherrafi, A.; Elmaskaoui, Z. An integrated model for assembly line re-balancing problem. Int. J. Prod. Res. 2018, 56, 5324–5344. [Google Scholar] [CrossRef]
  2. Bierwirth, C.; Meisel, F. A survey of berth allocation and quay crane scheduling problems in container terminals. Eur. J. Oper. Res. 2010, 202, 615–627. [Google Scholar] [CrossRef]
  3. Daganzo, C.F. The crane scheduling problem. Transp. Res. Part B Methodol. 1989, 23, 159–175. [Google Scholar] [CrossRef]
  4. Bartz-Beielstein, T. SPOT: An R Package for Automatic and Interactive Tuning of Optimization Algorithms by Sequential Parameter Optimization. arXiv 2010, arXiv:1006.4645. [Google Scholar]
  5. Kim, K.H.; Park, Y.M. A crane scheduling method for port container terminals. Eur. J. Oper. Res. 2004, 156, 752–768. [Google Scholar] [CrossRef]
  6. Moccia, L.; Cordeau, J.F.; Gaudioso, M.; Laporte, G. A branch-and-cut algorithm for the quay crane scheduling problem in a container terminal. Nav. Res. Logist. 2006, 53, 45–59. [Google Scholar] [CrossRef]
  7. Sammarra, M.; Cordeau, J.F.; Laporte, G.; Monaco, M.F. A tabu search heuristic for the quay crane scheduling problem. J. Sched. 2007, 10, 327–336. [Google Scholar] [CrossRef]
  8. Gharehgozli, A.H.; Roy, D.; de Koster, R. Sea container terminals: New technologies and OR models. Marit. Econ. Logist. 2016, 18, 103–140. [Google Scholar] [CrossRef]
  9. Chung, S.H.; Chan, F.T.S. A workload balancing genetic algorithm for the quay crane scheduling problem. Int. J. Prod. Res. 2013, 51, 4820–4834. [Google Scholar] [CrossRef]
  10. Diabat, A.; Theodorou, E. An integrated quay crane assignment and scheduling problem. Comput. Ind. Eng. 2014, 73, 115–123. [Google Scholar] [CrossRef]
  11. Zheng, F.; Li, Y.; Chu, F.; Liu, M.; Xu, Y. Integrated berth allocation and quay crane assignment with maintenance activities. Int. J. Prod. Res. 2018, 57, 3478–3503. [Google Scholar] [CrossRef]
  12. Carlo, H.J.; Vis, I.F.; Roodbergen, K.J. Storage yard operations in container terminals: Literature overview, trends, and research directions. Eur. J. Oper. Res. 2014, 235, 412–430. [Google Scholar] [CrossRef]
  13. Ng, W.C. Crane scheduling in container yards with inter-crane interference. Eur. J. Oper. Res. 2005, 164, 64–78. [Google Scholar] [CrossRef]
  14. Lee, Y.; Chao, S. A neighborhood search heuristic for pre-marshalling export containers. Eur. J. Oper. Res. 2009, 196, 468–475. [Google Scholar] [CrossRef]
  15. Speer, U.; Fischer, K. Scheduling of different automated yard crane systems at container terminals. Transp. Sci. 2017, 51, 305–324. [Google Scholar] [CrossRef]
  16. Galle, V.; Barnhart, C.; Jaillet, P. Yard Crane Scheduling for container storage, retrieval, and relocation. Eur. J. Oper. Res. 2018, 271, 288–316. [Google Scholar] [CrossRef]
  17. Yuan, Y.; Tang, L. Novel time-space network flow formulation and approximate dynamic programming approach for the crane scheduling in a coil warehouse. Eur. J. Oper. Res. 2017, 262, 424–437. [Google Scholar] [CrossRef]
  18. Tang, L.; Xie, X.; Liu, J. Crane scheduling in a warehouse storing steel coils. IIE Trans. 2014, 46, 267–282. [Google Scholar] [CrossRef]
  19. Maschietto, G.N.; Ouazene, Y.; Ravetti, M.G.; de Souza, M.C.; Yalaoui, F. Crane scheduling problem with non-interference constraints in a steel coil distribution centre. Int. J. Prod. Res. 2017, 55, 1607–1622. [Google Scholar] [CrossRef]
  20. Menezes, G.C.; Mateus, G.R.; Ravetti, M.G. A branch and price algorithm to solve the integrated production planning and scheduling in bulk ports. Eur. J. Oper. Res. 2017, 258, 926–937. [Google Scholar] [CrossRef]
  21. Conradie, D.; Morison, L.E.; Joubert, J.W. Scheduling at coal handling facilities using simulated annealing. Math. Methods Oper. Res. 2008, 68, 277–293. [Google Scholar] [CrossRef]
  22. Boland, N.; Gulczynski, D.; Savelsbergh, M. A stockyard planning problem. EURO J. Transp. Logist. 2012, 1, 197–236. [Google Scholar] [CrossRef]
  23. Thomas, A.; Singh, G.; Krishnamoorthy, M.; Venkateswaran, J. Distributed optimisation method for multi-resource constrained scheduling in coal supply chains. Int. J. Prod. Res. 2013, 51, 2740–2759. [Google Scholar] [CrossRef]
  24. Robenek, T.; Umang, N.; Bierlaire, M. A branch-and-price algorithm to solve the integrated berth allocation and yard assignment problem in bulk ports. Eur. J. Oper. Res. 2014, 235, 399–411. [Google Scholar] [CrossRef]
  25. Pratap, S.; Kumar, B.M.; Saxena, D.; Tiwari, M.K. Integrated scheduling of rake and stockyard management with ship berthing: A block based evolutionary algorithm. Int. J. Prod. Res. 2016, 54, 4182–4204. [Google Scholar] [CrossRef]
  26. Hu, D.; Yao, Z. Stacker-reclaimer scheduling in a dry bulk terminal. Int. J. Comput. Integr. Manuf. 2012, 25, 1047–1058. [Google Scholar] [CrossRef]
  27. Glover, F. Future Paths for Integer Programming and Links to Artificial Intelligence. Comp. Oper. Res. 1986, 13, 533–549. [Google Scholar] [CrossRef]
  28. Glover, F.; Laguna, Z. TABU-SEARCH, Version 11.0, Annotated Experimental Computer Code for Traveling Salesman Problems. ORSA J. Comput. 1997, 1, 190–206. [Google Scholar] [CrossRef]
  29. Pardalos, P.M.; Resende, M.G.C. Handbook of Applied Optimization; Oxford University Press: Oxford, UK, 2002. [Google Scholar]
  30. Chen, F. Sensitivity of goodness of fit indexes to lack of measurement invariance. Struct. Equ. Model. Multidiscip. J. 2007, 14, 464–504. [Google Scholar] [CrossRef]
  31. Gendreau, M.; Laporte, G.; Potvin, J.-Y. Metaheuristics for the Capacitated VRP. In The Vehicle Routing Problem; Toth, P., Vigo, D., Eds.; SIAM: Philadelphia, PA, USA, 2002; pp. 129–154. [Google Scholar]
Figure 1. Schematic representation of the cargo handling system under consideration.
Figure 1. Schematic representation of the cargo handling system under consideration.
Computation 13 00074 g001
Figure 2. Example of collision constraints between stackers and reclaimers during running operation.
Figure 2. Example of collision constraints between stackers and reclaimers during running operation.
Computation 13 00074 g002
Figure 3. Flowchart of the developed hybrid GA.
Figure 3. Flowchart of the developed hybrid GA.
Computation 13 00074 g003
Figure 4. Illustration of chromosome structure for the stacker and reclaimer scheduling problem.
Figure 4. Illustration of chromosome structure for the stacker and reclaimer scheduling problem.
Computation 13 00074 g004
Figure 5. Illustration of modified two-point crossover.
Figure 5. Illustration of modified two-point crossover.
Computation 13 00074 g005
Figure 6. Illustration of modified swap mutation.
Figure 6. Illustration of modified swap mutation.
Computation 13 00074 g006
Figure 7. Sensitivity analysis of CPU time and maximum completion time with a range of population size.
Figure 7. Sensitivity analysis of CPU time and maximum completion time with a range of population size.
Computation 13 00074 g007
Figure 8. Sensitivity analysis of CPU time and maximum completion time with a range of generations.
Figure 8. Sensitivity analysis of CPU time and maximum completion time with a range of generations.
Computation 13 00074 g008
Figure 9. Sensitivity analysis of maximum completion time with different parameters of CR and MR.
Figure 9. Sensitivity analysis of maximum completion time with different parameters of CR and MR.
Computation 13 00074 g009
Figure 10. TS algorithm convergence curve for the evolution of instance 4.
Figure 10. TS algorithm convergence curve for the evolution of instance 4.
Computation 13 00074 g010
Table 1. Vessel arrival and operation processing time.
Table 1. Vessel arrival and operation processing time.
Vessel IDArrival Time (min)Clearing NoQuantity (Tons)Processing Time of Unloading (min)Processing Time of Reclaiming (min)
10010 c 1 66,0008253300
10023780 c 2 62,0007753100
10037560 c 3 68,0008503400
100411,340 c 4 64,0008003200
100515,120 c 5 70,0008753500
100618,900 c 6 62,0007753100
100722,680 c 7 68,0008503400
100826,460 c 8 70,0008753500
100930,240 c 9 66,0008253300
101034,020 c 10 64,0008003200
Table 2. Estimated statistical results with different values of seeding frequency, sf.
Table 2. Estimated statistical results with different values of seeding frequency, sf.
Instancesf = 50sf = 20sf = 10sf = 5sf = 2sf = 0
Means. d.Means. d.Means. d.Means. d.Means. d.Means. d.
Instance 141,44212.0341,43818.9641,43911.2841,4469.6941,4426.3641,44010.97
Instance 457,91926.4057,91734.6957,91518.0557,93514.1857,93210.0657,92024.46
Instance 874,46227.3174,42730.6074,42640.1274,48146.3274,50826.0674,50127.30
Instance 1190,782132.990,692135.990,65657.5890,78462.3790,72933.6390,75550.18
Instance 1374,59028.7774,52126.9674,45034.2374,53447.0174,55630.4674,59258.39
Instance 15107,35086.31107,29366.42107,28478.55107,48088.69107,42182.72107,61047.34
Instance 1790,71539.8190,69336.3490,66055.6690,67852.5790,83781.8290,85274.72
Instance 20140,5861265140,508307.9140,493363.1140,5701727140,5861648140,786695
Table 3. Performance comparison between the hybrid GA, TS algorithm, and pure GA for tested instances.
Table 3. Performance comparison between the hybrid GA, TS algorithm, and pure GA for tested instances.
Instance SetTS AlgorithmPure GAHybrid GA
Avg. Cmax (min)Avg. CPU Time (s)Avg. Cmax (min)Avg. CPU Time (s)Avg. Cmax (min)Avg. CPU Time (s)
Instance 141,4791941,4366341,43760
Instance 257,9304157,8819257,87286
Instance 374,4039374,36211774,393115
Instance 457,9435257,91810757,915100
Instance 574,40313474,43514274,401142
Instance 690,53542290,58016390,517170
Instance 757,92810157,95210657,927102
Instance 874,44124274,49414074,434141
Instance 990,56354990,66916890,550170
Instance 1074,42638474,51916574,417161
Instance 1190,58860090,71920490,565204
Instance 12107,3011000 {*}107,446241107,299241
Instance 1374,47537574,57220874,434208
Instance 1490,63285090,78725090,612245
Instance 15107,3011000 {*}107,544329107,266318
Instance 16123,7981000 {*}124,730337123,789349
Instance 1790,64887990,88526090,609252
Instance 18107,3081000 {*}107,696458107,266415
Instance 19123,9041000 {*}124,233487123,855460
Instance 20140,5191000 {*}140,842544140,440492
{*} The instance that was not optimally solved within 1000 s.
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Torbi, I.; Belassiria, I.; Mazouzi, M.; Aidi, S. Integrated Scheduling of Stacker and Reclaimer in Dry Bulk Terminals: A Hybrid Genetic Algorithm. Computation 2025, 13, 74. https://doi.org/10.3390/computation13030074

AMA Style

Torbi I, Belassiria I, Mazouzi M, Aidi S. Integrated Scheduling of Stacker and Reclaimer in Dry Bulk Terminals: A Hybrid Genetic Algorithm. Computation. 2025; 13(3):74. https://doi.org/10.3390/computation13030074

Chicago/Turabian Style

Torbi, Imane, Imad Belassiria, Mohamed Mazouzi, and Sanaa Aidi. 2025. "Integrated Scheduling of Stacker and Reclaimer in Dry Bulk Terminals: A Hybrid Genetic Algorithm" Computation 13, no. 3: 74. https://doi.org/10.3390/computation13030074

APA Style

Torbi, I., Belassiria, I., Mazouzi, M., & Aidi, S. (2025). Integrated Scheduling of Stacker and Reclaimer in Dry Bulk Terminals: A Hybrid Genetic Algorithm. Computation, 13(3), 74. https://doi.org/10.3390/computation13030074

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop