This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

An adaptive large neighborhood search heuristic for the multi-port continuous berth allocation problem

Bernardo Martin-Iradi DTU Management, Technical University of Denmark, Akademivej Building 358, 2800 Kgs. Lyngby, Denmark [email protected] Dario Pacino [email protected] Stefan Ropke [email protected]
Abstract

In this paper, we study a problem that integrates the vessel scheduling problem with the berth allocation into a collaborative problem denoted as the multi-port continuous berth allocation problem (MCBAP). This problem optimizes the berth allocation of a set of ships simultaneously in multiple ports while also considering the sailing speed of ships between ports. Due to the highly combinatorial character of the problem, exact methods struggle to scale to large-size instances, which points to exploring heuristic methods. We present a mixed-integer problem formulation for the MCBAP and introduce an adaptive large neighborhood search (ALNS) algorithm enhanced with a local search procedure to solve it. The computational results highlight the method’s suitability for larger instances by providing high-quality solutions in short computational times. Practical insights indicate that the carriers’ and terminal operators’ operational costs are impacted in different ways by fuel prices, external ships at port, and the modeling of a continuous quay.

keywords:
OR in maritime industry , Container terminal , Berth allocation problem , Speed Optimization , Heuristics

1 Introduction

The liner shipping industry is one of the major forms of international freight transportation. According to the report by [41], seaborne trade and container throughput continued growing steadily until 2019. Despite the Covid disruption during 2020, maritime trade is projected to recover and expand by 4.3 % in 2021. The report also highlights that the world fleet is increasing, not only in the number of ships (more than 3 % in 2021) but also in size. The share of the total capacity carried by mega-vessels increased from 6 % to 40 % in the last ten years.

This increase in demand, together with IMO’s goal of reducing shipping emissions by 50 % by 2050 [22], requires container terminals to increase capacity and improve the efficiency and sustainability of their operations. The current growth of the vessel fleet and size directly impacts one of the most critical container terminal operations, namely the berth allocation [39]. Mathematically, this problem is denoted as the Berth Allocation Problem (BAP), which aims to assign incoming ships to berthing positions. The BAP can assume the quay to be discrete or continuous. In the discrete version, the quay is divided into positions where each can be occupied by one ship at a time. In the continuous BAP, ships can berth at any point in the quay while respecting a safe distance from other ships. Furthermore, the BAP can be dynamic or static. The static BAP assumes all the ships to be already at the port when the planning is done, whereas, in the dynamic version, ships can arrive at the port at different times during the planning period. It should be noted that the dynamic BAP is still a deterministic problem. The term dynamic refers to the different arrival times of each ship and not to the nature of the problem [8] like in, for example, vehicle routing problems.

Refer to caption
Figure 1: Example solution of the continuous and dynamic BAP for a port terminal with four vessels.

Figure 1 shows an example solution of the continuous and dynamic BAP.

Terminals optimize their berth allocation to minimize their operational costs and the time ships need to spend at the port, including waiting time, handling time, and any delays. Due to the fierce competition between container terminals, they do not tend to share more information than is strictly required and do the planning independently from other terminals. One potential problem is that if congestion arises in a port, the affected ships can easily propagate delays to the following ports in their routes. One way to reduce the delay is for vessels to speed up when sailing between ports. However, sailing faster results in higher fuel consumption. This type of decision-making can be addressed by shipping line companies (i.e., carriers) in the Vessel Scheduling Problem (VSP). The goal of the VSP is to optimize the sailing speeds between consecutive ports in the vessel’s route (i.e., voyage legs). Most VSP studies aim to minimize the vessels’ fuel consumption, turnaround time at the port, and the number of vessels needed to ensure a given route frequency. However, the VSP has its limitations. One of them is the simplistic way of modeling the berthing times of ships at port. Whereas some studies model a simplified version of berth allocation, most do not include it. Not integrating the BAP into the VSP can lead to an unrealistic or even infeasible berth allocation and, as a result, delays that ships can propagate.

A problem that integrates the berth allocation with the vessels’ speed optimization was first introduced by [42] as the Multi-port Berth Allocation Problem (MBAP). This problem selects a set of ships and a set of ports that are part of their routes and simultaneously optimizes the berth allocation at all the ports, together with the sailing time between ports. [42] studied the version of the problem with a discrete set of berthing positions. The problem involves the joint optimization of carrier and terminal operations and relies on the a priori agreement of the vessels and ports involved. [32] showed that this type of collaboration could generate cost savings for the players involved (i.e., shipping carriers and terminal operators) but also benefit the environment as fuel emissions can be reduced significantly.

As mentioned earlier in this section, the main difference between the continuous and the discrete BAP is the flexibility in the berthing positions. The set of berthing positions in the discrete BAP corresponds to a subset of those from the continuous BAP. Therefore, one can argue that modeling the quay as continuous can lead to a more resource-efficient plan, as the optimal solution of the continuous BAP is equal to or better than that of the discrete BAP. However, this potential increase in solution quality comes at the expense of higher complexity, as the solution space becomes considerably larger.

[31] studied the MBAP with a continuous quay (MCBAP) and highlighted the additional complexity, as the method proposed cannot scale to large instances. This scalability issue is addressed in our study, where we employ heuristic methods that can tackle large real-world instances.

This paper makes the following four contributions:

  1. 1.

    We define a new mixed-integer problem (MIP) formulation for the MCBAP.

  2. 2.

    We present an instance generator for the MCBAP based on real-world port data, and define a set of benchmark instances that are made publically available.

  3. 3.

    We implement an adaptive large neighborhood search (ALNS) method tailored to the MCBAP and enhance it with a Local Search (LS) procedure based on ejection chains.

  4. 4.

    We show the viability of the ALNS method on real-size instances where it is able to find high-quality solutions faster than baseline commercial solvers.

The remainder of this paper is structured as follows. Section 2 comprises an extensive literature review of the MBAP together with other collaborative problems that include berth allocation or vessel scheduling. Section 3 describes the MCBAP in detail and presents the MIP formulation. The solution method is described in Section 4. Section 5 includes the instance generator’s details and the computational study. The conclusions and further research is summarized in Section 6.

2 Literature review

One of the most important problems in a container terminal is the BAP, which has been studied extensively for over two decades. A survey of most of these studies is compiled in surveys by [6] and [4]. [28] presented one of the first formulations of the problem and showed that it is NP-hard. Due to the additional hardness involving the BAP variant with a continuous quay, the use of heuristic methods has been predominant in the literature. The first studies of the continuous BAP were by [25] and [21], where they presented MIP formulations to the problem and solved it using heuristic and meta-heuristic algorithms such as simulated annealing. [8] covered both the discrete and continuous BAP and solved them using a taboo search. [18] presented both a composite heuristic and a tree search exact method and showed that both outperformed commercial solvers. A hybrid variant between the continuous and discrete BAP was studied in [26], where ships can only berth in a subset of positions. Heuristic methods have been widely used when integrating the BAP with other terminal operations. One of the main problems studied is the berth allocation and quay crane assignment problem [23]. [24] present a mixed integer problem formulation with additional enhancements and implement an ALNS heuristic to solve it, whereas [7] uses a variable neighborhood search heuristic.

The VSP has also attracted significant attention in the literature. [13] present a comprehensive survey about the problem and highlight the potential of collaboration and information sharing as one of the future research directions. To the best of our knowledge, [15] presented the first formulation of the VSP. Negotiating the port calls with the terminal operator [10] indicates that carriers and terminal operators can achieve significant savings. A collaborative version of the VSP is presented by [11], where terminal operators offer different port call durations and handling rates, leading to win-win situations. [16] aim at minimizing fuel consumption by optimizing the speed in a shipping route and modeling it as a shortest path problem. The authors discretize the possible arrival times at each port to approximate the non-linear relation between fuel consumption and sailing speed. [9] and [40] integrate vessel speed optimization and berth allocation by considering ships within a certain sailing distance from the port.

In the last decade, together with the increased access to data, the study of problems that require collaboration between different stakeholders (e.g., carriers and terminal operators) has become more relevant. [43] present two collaborative mechanisms that encourage sharing accurate information between carriers and terminal operators. [27] study the discrete BAP and present a cooperative search based on a grouping strategy where group members can only share information within the group. The collaborative berth allocation problem (CBAP) was introduced by [12] where a terminal planning its berth allocation can divert excessive demand to other terminals. [20] present an ALNS heuristic for the port scheduling problem (PSP), where the aim is to schedule feeder vessels in multi-terminal ports. Collaboration has also been studied in disruption management. [29] present a formulation for re-planning the berth allocation and quay crane assignment and propose a heuristic method to solve it. [19] study the berth assignment and allocation problem, which integrates the BAP with the berth assignment and line clustering problem. The first formulation of the MBAP was first introduced by [42]. It solved a dynamic and discrete BAP in multiple ports while optimizing ships’ sailing speed between ports. [32] presented a branch-and-price method for the same problem and conducted a study of the collaboration mechanism using cooperative game theory. [31] extended the branch-and-price method to the MBAP with a continuous quay, the same problem of this study, and showed that exact methods are competitive for small and medium size instances but struggle to scale for larger instances. Recently, [44] presented a genetic algorithm to solve a problem that integrates the BAP with speed optimization and vessel service differentiation to address both vertical and horizontal collaborations.

3 Problem description

The MCBAP integrates operational aspects concerning terminal operators and shipping carriers. We consider a set of ships and a set of terminals, each of them in a different port, to optimize their operations. Each ship visits all or a subset of the ports as a part of its route. The ships may visit the ports in different orders. The aim of the problem is to determine the berthing position and time of the ships at each of the terminals visited. Each terminal has a limited berthing space, given by the length of the quay. The service time required to load and unload the vessel is denoted as handling time and depends on the berthing position. We assume that it increases linearly with the deviation from an ideal position. Similar to most BAP studies, the berthing time and positions of ships are subject to a set of restrictions. Ships have a time window to be serviced also known as a port call, this is planned in advance and helps the operator to allocate berthing capacity and avoid excessive congestion. To allow for delays, the end of the time window is not strict but delays are penalized as they require the use of unexpected resources such as more worker hours.

It is well known that the relation between sailing speed and fuel consumption is non-linear. In fact, this relation is often approximated with a cubic function as in Equation (1) [42, 32]

F(s)=(ssd)3FdF(s)=(\frac{s}{s_{d}})^{3}F_{d} (1)

where ss is the sailing speed, sds_{d} is the design speed of the ship, and FdF_{d} is the fuel consumption at the design speed. For our formulation, we discretize the set of possible sailing speeds and assume ships will sail the distance between ports at one of those speeds. Given the set of feasible sailing speeds, we can compute the corresponding set of fuel consumption rates. This assumption ensures a linear formulation of the problem.

Refer to caption
Figure 2: Example representation of a solution for the MCBAP with four ships visiting two terminals. The timeline of operations for ship 1 is defined in the top, where EST,EFTEST,EFT and LFTLFT denote the earliest start time, the expected finish time, and the latest finish time of the ship at the port.

Figure 2 shows an example graphical representation of the problem, highlighting the main operational aspects of a ship (i.e., ship 1). The ship berths strictly after its earliest start time but, due to the long handling time associated with the berthing position, the service time concludes after the expected finish time. The service time after the expected finish time is computed as a delay. After the ship is serviced, it can depart towards the next port. At the time of arrival, the quay is occupied, and the ship needs to wait until ship number 3 finishes its berthing period. The time window this time is long enough to account for the waiting time, and the ship is able to finish without a delay.

3.1 MIP formulation

We present a new MIP formulation for the MCBAP. This formulation is based on the one for the continuous BAP from [25] and the one for the discrete MBAP from [42]:

Sets and parameters:

NN Set of all ships berthing at any of the ports.
NNN^{*}\subseteq N Set of ships that we are optimizing.
N¯N\bar{N}\subseteq N Set of external ships which are considered fixed.
PP Set of ports.
SS Set of speeds.
LpL_{p} Length of quay in port pPp\in P.
PiPP_{i}\subseteq P Set of ports planned to be visited by ship iNi\in N^{*} sorted in visiting order.
Ci={1,,ci}C_{i}=\{1,...,c_{i}\} Set of port calls for ship iNi\in N, one for each port visit. cic_{i} is the last port visit, and the value is equal to the number of port calls.
ρic\rho_{i}^{c} The port pPp\in P corresponding to port visit cCic\in C_{i} for ship iNi\in N.
NpNN_{p}\subseteq N Set of ships that visit port pPp\in P.
CipCiC_{i}^{p}\subseteq C_{i} Port call positions of ship iNi\in N visiting port pPp\in P.
x0i,cx_{0}^{i,c} The ideal berthing position for ship iNi\in N^{*} at port visit cCic\in C_{i} measured at the leftmost position of the ship.
ESTicEST_{i}^{c} The earliest start time of berthing for ship iNi\in N^{*} at port visit cCic\in C_{i}.
EFTicEFT_{i}^{c} The expected finish time of berthing for ship iNi\in N^{*} at port visit cCic\in C_{i}.
LFTicLFT_{i}^{c} The latest finish time of berthing for ship iNi\in N^{*} at port visit cCic\in C_{i}.
β\beta The relative increase in handling time per unit of distance from the ideal berthing position.
Δp,p\Delta^{p,p^{\prime}} Distance between ports p,pPp,p^{\prime}\in P.
Θs\Theta_{s} Travel time per unit of distance at speed sSs\in S.
Γsi\Gamma^{i}_{s} Fuel consumption per unit of distance at speed sSs\in S for ship iNi\in N^{*}.
lil_{i} Length of ship iNi\in N.
FF Fuel cost in USD per tonne.
HH Cost handling time in USD per hour.
DD Cost of delay time in USD per hour.
II Cost of waiting time in USD per hour.
UU Cost penalty of exceeding the latest finish time in USD.

Decision variables:

xic+x^{c}_{i}\in\mathbb{R}^{+} the leftmost position of ship iNi\in N at the quay for port visit cCic\in C_{i}.
yic+y^{c}_{i}\in\mathbb{R}^{+} the start time of berthing of ship iNi\in N at port visit cCic\in C_{i}.
vi,sc𝔹v_{i,s}^{c}\in\mathbb{B} 1 if speed sSs\in S is chosen by ship iNi\in N^{*} to sail between port visits cc and c+1c+1; cCi\{ci}c\in C_{i}\backslash\{c_{i}\}.
dic+d_{i}^{c}\in\mathbb{R}^{+} delay over EFTicEFT_{i}^{c} for ship iNi\in N^{*} at port visit cCic\in C_{i}.
uic+u_{i}^{c}\in\mathbb{R}^{+} delay over LFTicLFT_{i}^{c} for ship iNi\in N^{*} at port visit cCic\in C_{i}.

Auxiliary variables:

σi,jc,c𝔹\sigma^{c,c^{\prime}}_{i,j}\in\mathbb{B} 1 if ship ii is positioned left of vessel jj in the quay space at port visit cCipc\in C^{p}_{i} and port visit cCjpc^{\prime}\in C^{p}_{j} at port pPp\in P, 0 otherwise; i,jNp,iji,j\in N_{p},i\neq j.
δi,jc,c𝔹\delta^{c,c^{\prime}}_{i,j}\in\mathbb{B} 1 if ship ii finishes berthing before vessel jj starts berthing at port visit cCipc\in C^{p}_{i} and port visit cCjpc^{\prime}\in C^{p}_{j} at port pPp\in P, 0 otherwise; i,jNp,iji,j\in N_{p},i\neq j.
ri,c+r^{i,c}\in\mathbb{R}^{+} distance between ideal and actual berthing position of ship iNi\in N^{*} at port visit cCic\in C_{i}.

Dependent variables:

aic+a_{i}^{c}\in\mathbb{R}^{+} arrival time of ship iNi\in N^{*} at port visit cCic\in C_{i}.
hic+h_{i}^{c}\in\mathbb{R}^{+} handling time of ship iNi\in N^{*} at port visit cCic\in C_{i}.
miniN(cCiI(yicaic)+H(hic)+D(dic)+U(uic)+cCi\{ci}F(vicΓsiΔρic,ρic+1))\text{min}\sum_{i\in N^{*}}\Big{(}\sum_{c\in C_{i}}I(y_{i}^{c}-a_{i}^{c})+H(h_{i}^{c})+D(d_{i}^{c})+U(u_{i}^{c})+\sum_{c\in C_{i}\backslash\{c_{i}\}}F(v_{i}^{c}\Gamma_{s}^{i}\Delta^{\rho_{i}^{c},\rho_{i}^{c+1}})\Big{)} (2)
xic+li\displaystyle x_{i}^{c}+l_{i} Lp,iNp,cCip,pP\displaystyle\leq L^{p},\quad\forall i\in N_{p},c\in C^{p}_{i},p\in P (3)
xic+li\displaystyle x_{i}^{c}+l_{i} xjc+Lp(1σi,jc,c),pP,i,jNp,ij,cCip,cCjp\displaystyle\leq x^{c^{\prime}}_{j}+L^{p}\left(1-\sigma^{c,c^{\prime}}_{i,j}\right),\quad\forall p\in P,i,j\in N_{p},i\neq j,c\in C^{p}_{i},c^{\prime}\in C^{p}_{j} (4)
yic+hic\displaystyle y^{c}_{i}+h^{c}_{i} yjc+M(1δi,jc,c),pP,i,jNp,ij,cCip,cCjp\displaystyle\leq y^{c^{\prime}}_{j}+M\left(1-\delta^{c,c^{\prime}}_{i,j}\right),\quad\forall p\in P,i,j\in N_{p},i\neq j,c\in C^{p}_{i},c^{\prime}\in C^{p}_{j} (5)
σi,jc,c+σi,jc,c+δi,jc,c+δi,jc,c\displaystyle\sigma^{c,c^{\prime}}_{i,j}+\sigma^{c^{\prime},c}_{i,j}+\delta^{c,c^{\prime}}_{i,j}+\delta^{c^{\prime},c}_{i,j} 1,i,jNp,i<j,cCip,cCjp,c<c,pP\displaystyle\geq 1,\quad\forall i,j\in N_{p},i<j,c\in C^{p}_{i},c^{\prime}\in C^{p}_{j},c<c^{\prime},p\in P (6)
yic+hic+sSvi,scΘsΔρic,ρic+1\displaystyle y_{i}^{c}+h_{i}^{c}+\sum_{s\in S}v_{i,s}^{c}\Theta_{s}\Delta^{\rho_{i}^{c},\rho_{i}^{c+1}} =aic+1,iN,cCi\{ci}\displaystyle=a_{i}^{c+1},\quad\forall i\in N^{*},c\in C_{i}\backslash\{c_{i}\} (7)
aic\displaystyle a_{i}^{c} yic,iN,cCi\displaystyle\leq y_{i}^{c},\quad\forall i\in N^{*},c\in C_{i} (8)
ESTic\displaystyle EST_{i}^{c} yic,iN,cCi\displaystyle\leq y_{i}^{c},\quad\forall i\in N^{*},c\in C_{i} (9)
yic+hicEFTic\displaystyle y_{i}^{c}+h_{i}^{c}-EFT_{i}^{c} diciN,cCi\displaystyle\leq d_{i}^{c}\quad\forall i\in N^{*},c\in C_{i} (10)
yic+hicLFTic\displaystyle y_{i}^{c}+h_{i}^{c}-LFT_{i}^{c} uiciN,cCi\displaystyle\leq u_{i}^{c}\quad\forall i\in N^{*},c\in C_{i} (11)
(1+βri,c)h0i,c\displaystyle\Big{(}1+\beta r^{i,c}\Big{)}h_{0}^{i,c} =hic,iN,cCi\displaystyle=h_{i}^{c},\quad\forall i\in N^{*},c\in C_{i} (12)
xicx0i,c\displaystyle x_{i}^{c}-x_{0}^{i,c} ri,c,iN,cCi\displaystyle\leq r^{i,c},\quad\forall i\in N^{*},c\in C_{i} (13)
x0i,cxic\displaystyle x_{0}^{i,c}-x_{i}^{c} ri,c,iN,cCi\displaystyle\leq r^{i,c},\quad\forall i\in N^{*},c\in C_{i} (14)
sSvi,sc\displaystyle\sum_{s\in S}v_{i,s}^{c} =1,iN,cCi\{ci}\displaystyle=1,\quad\forall i\in N^{*},c\in C_{i}\backslash\{c_{i}\} (15)
yic,xic\displaystyle y_{i}^{c},x_{i}^{c} 0iN,cCi\displaystyle\geq 0\quad\forall i\in N,c\in C_{i} (16)
aic,hic,dic,uic,ri,c\displaystyle a_{i}^{c},h_{i}^{c},d_{i}^{c},u_{i}^{c},r^{i,c} 0iN,cCi\displaystyle\geq 0\quad\forall i\in N^{*},c\in C_{i} (17)
vi,sc\displaystyle v_{i,s}^{c} {0,1}iN,cCi\{ci}\displaystyle\in\{0,1\}\quad\forall i\in N^{*},c\in C_{i}\backslash\{c_{i}\} (18)
σi,jc,c,δi,jc,c\displaystyle\sigma^{c,c^{\prime}}_{i,j},\delta^{c,c^{\prime}}_{i,j} {0,1}i,jNp,ij,cCip,cCjp,pP\displaystyle\in\{0,1\}\quad\forall i,j\in N_{p},i\neq j,c\in C^{p}_{i},c^{\prime}\in C^{p}_{j},p\in P (19)

The set of external ships N¯\bar{N} is considered fixed. Therefore, the corresponding set of decision variables xic,yic,hic,ri,cx_{i}^{c},y_{i}^{c},h_{i}^{c},r^{i,c} for ships iN¯i\in\bar{N} are constant and given as input to the problem.

The objective function (2) minimizes the operational costs of the carriers and terminal operators. This is measured as a weighted sum of the waiting time cost, handling time cost, delay cost, and fuel consumption cost. Constraints (3) ensure that each ship berths within the available space. Constraints (4) and (5) define the relative position of each pair of ships in each dimension by enabling the auxiliary variables σc,c\sigma^{c,c^{\prime}} and δc,c\delta^{c,c^{\prime}}. The M value can be limited to the latest finish time of the pair of ships. Constraints (6) ensure that berthing periods do not overlap in time and space. Constraints (7) compute the arrival time to a port based on the sailing speed chosen to travel from the previous port. Constraints (8) and (9) enforce that the berthing starts strictly after arrival at port and after the time window starts, respectively. Constraints (10) compute the delay if the expected finish time is exceeded and constraints (11) define if the last finish time is respected. Constraints (12) compute the handling time for each ship and port visit while constraints (13) and (14) compute the deviation from the preferred berthing position. Finally. constraints (15) ensure that only one speed is chosen to sail between ports, and constraints (16) - (19) define the domain of the decision variables.

4 Solution method

To solve (2)-(19) we present an Adaptive Large Neighborhood Search (ALNS) algorithm. The ALNS algorithm, introduced by [36], extends the large neighborhood search method by [37]. At each iteration, the method partially destroys and reconstructs a solution to generate a new solution. In our case, to destroy part of a solution, we remove the berthing time and locations of a subset of ships at a subset of ports. The combination of a scheduled berthing time and position for a ship at one of the ports in its route is denoted as a port visit, and we will refer to this term frequently in the remainder of the paper. Additionally, in some cases, we will refer to the scheduled port visit as a rectangle, in reference to how we can depict berthing position and time in a time-space diagram (e.g., see Figure 2).

4.1 Construction heuristic

The ALNS requires an initial solution to start with. We present a construction heuristic process for this step that aims at finding a good initial solution. Note that the BAP can be seen as a two-dimensional packing problem. However, in the continuous berth setting, the BAP has the increased complexity that the length of the rectangles (i.e., port visits) vary depending on the berthing location in the quay. In the case of the MCBAP, we are solving multiple continuous BAP problems with the additional constraint that some of those berthing times depend on a sailing time. Moreover, the fact that ships follow different routes complicates the problem as greedy approaches become harder to apply. Our construction method prioritizes reducing the delay of ships at ports. We approach this by (i) trying to place port visits early in time and close to their ideal space, therefore reducing the handling time, and (ii) by reducing ”useless” space, or, in other words, placing port visits efficiently not to create empty spots in the decision space that cannot be filled by remaining port visit. Notice that any possible solution is mathematically feasible since we allow it to exceed the latest finish time, and the time horizon is not limited. However, we aim to construct solutions where none of the ships exceed the LFTLFT as those can be perceived as infeasible by the port operators and are also heavily penalized. The method acts as a greedy heuristic, where we schedule one port visit at a time. The port visit to schedule is selected as the most constrained one. To find it, we compute the set of feasible berthing positions and times for each ship and port visit. We consider a finite set of positions and times by dividing the quay into segments of a given length (e.g., 10 meters) and the planning horizon into intervals of 1 hour. For each time instant and segment, we compute if the ship can berth starting at that time and with its left-most side starting at the segment. We do not count berthing times exceeding the latest finish time to measure how constrained a ship’s port visit is. From all unscheduled port visits, we define the one with the fewest possible positions as the most constrained one. We then schedule the port visit in one of the feasible positions. In fact, we do not consider the entire set but only the subset of feasible positions, where the port visit rectangle is directly adjacent to another scheduled port visit or to the limits of the decision space (i.e., the limit of the quay or planning horizon). From this subset of positions, we select the one resulting in the minimal change to the objective function. Besides the handling and delay cost directly computed when scheduling the port visit, we need to compute fuel consumption and waiting time costs. We consider these only if the previous port visit of the ship is scheduled.

Once a port visit is scheduled, we repeat the computation and selection of the most constrained unscheduled port visit and schedule it at the least costly efficient position. The procedure is described in Algorithm 1.

Data: instinst: problem instance
Result: solsol: a solution with all port visits scheduled
1 begin
       unschinstunsch\leftarrow inst
        // initialize entire set of port visits to schedule
2       solsol\leftarrow\emptyset
3       while unschunsch\neq\emptyset do
            
              // sort unplanned port visits by increasing number of feasible positions
4             unschsort(unsch)unsch\leftarrow sort(unsch)
             toSchedulepopfirst(unsch)toSchedule\leftarrow popfirst(unsch)
              // get first port visit from the list
5             plannedfalseplanned\leftarrow false
            
              // position at the earliest start time and closest to the ideal position
6             posbestStartingPosition(toSchedule)pos\leftarrow bestStartingPosition(toSchedule)
7             while not plannedplanned do
8                   if feasible(pos, sol) then
9                         plannedtrueplanned\leftarrow true
                         solplan(toSchedule,pos)sol\leftarrow plan(toSchedule,pos)
                          // schedule the port visit
10                        
11                  else
                         posupdatePosition(pos,sol)pos\leftarrow updatePosition(pos,sol)
                          // update to next feasible position with lowest cost
12                        
13                  
14            
15      
16
Algorithm 1 Construction heuristic

4.2 Removal and insertion operators

The goal of a removal operator is to select a set of scheduled port visits to be removed from the current solution. All the operators presented in this paper select KK number of assignments to be removed, computed as a percentage ρ\rho of the total number of port visits to be scheduled. It should be noted that removing port visits that are totally unrelated does not provide any potential gain. Therefore, a removal operator should aim at removing assignments that are related.

After applying a removal operator, the partial solution has KK missing port visits that need to be scheduled. They need to be assigned efficiently while respecting the other assignments and ensuring that the solution remains feasible. This is the goal of the insertion operators.

4.2.1 Shaw removal

This operator, first introduced by [37], selects the most related pairs of assignments. To select them, we define a measure of relatedness Mi,jM_{i,j} between assignments ii and jj in equation 20, similar to the one presented in [24].

Mi,j=A|xixj|+B|yiyj|+C|(yi+hi)(yj+hj)|,M_{i,j}=A|x_{i}-x_{j}|+B|y_{i}-y_{j}|+C|(y_{i}+h_{i})-(y_{j}+h_{j})|, (20)

where xi,yix_{i},y_{i} and yi+hiy_{i}+h_{i} are the berthing positions, berthing start time, and berthing end time of assignment ii, respectively. A,BA,B, and CC are custom parameters that define the importance of each of the aspects. Observe that a lower value of Mi,jM_{i,j} translates into a higher level of relatedness. To select a total of KK assignments, we select them following a greedy randomized criterion. To introduce randomness in the selection of the assignments, we define a parameter α\alpha. We sort all the port visit pairs in increasing order of Mi,jM_{i,j} and store them in the list Ω\Omega. We then select the ii-th element of the list applying Equation (21):

i=|Ω|pα,i=\lceil|\Omega|\cdot p^{\alpha}\rceil, (21)

where pp is a random number [0,1)[0,1). Note that if α=1\alpha=1, the selection is completely random, but as the value of α\alpha increases, the resulting value has a more deterministic behavior. The element selected will consist of two port visits to be removed. The selection process continues until KK port visits are removed. Note that this method differs from the original method from [37] in that the subsequent pairs do not necessarily need to be related with the first pair selected.

4.2.2 Time and space-relatedness removal

This removal uses a different relatedness measure. We first sort all port visits by cost. The cost BicB_{i}^{c} of port visit cCic\in C_{i} for ship iNi\in N^{*} is defined in Equation (22). It is measured by the ship’s waiting, handling, and delay time at the port visit, plus half of the fueling costs from sailing from the previous port (if any) and to the next port (if any).

Bic=Hhic+Ddic+I(yicaic)+Fic2B_{i}^{c}=Hh_{i}^{c}+Dd_{i}^{c}+I(y_{i}^{c}-a_{i}^{c})+\frac{F^{c}_{i}}{2} (22)

FicF^{c}_{i} is the fuel costs associated with the previous and next port visits if any. For example, if the ship sails from a previous port visit cpc_{p} to port visit cc, and then continues to the next port visit cnc_{n}, then the fuel costs are computed as in Equation (23).

Fic=F(vicp,cΓsiΔρ(cp),ρ(c))+F(vic,cnΓsiΔρ(c),ρ(cn))F^{c}_{i}=F(v_{i}^{c_{p},c}\Gamma_{s}^{i}\Delta^{\rho(c_{p}),\rho(c)})+F(v_{i}^{c,c_{n}}\Gamma_{s}^{i}\Delta^{\rho(c),\rho(c_{n})}) (23)

In the case that port visit cc is the first or last port visit in the route for the ship, the corresponding missing sailing leg is removed from the fuel cost computation.

We then select the iith most expensive assignment applying Equation (21) and remove all neighbor assignments. We define as neighbors all the assignments that are within a distance of the assignment. We consider the distance in both time and space. If an assignment is depicted as a rectangle in a time-space diagram of the port, the neighbor area represents the one that overlaps in time or space with it. All other assignments that overlap partially or completely with the neighbor area are considered neighbors and removed. We then select the most expensive assignment and remove all neighbor assignments. We repeat the process until KK assignments are removed.

Refer to caption
(a) Time-related port visits
Refer to caption
(b) Space-related port visits
Figure 3: Neighbor port visits in time and space for a given port visit in dark grey.

Figure 3 shows an example of neighbor port visits in time and space. Depending on the dimension considered we define the two removal operators as cost-time removal and cost-space removal.

4.2.3 Random removal

We also consider a fully randomized destroy operator. It randomly selects KK assignments to be removed. The goal of this operator is not to select relevant port visits to remove but rather to help diversify the search.

4.2.4 Randomized greedy insertion

This method follows the same procedure as the construction heuristic with the addition of a randomized component when selecting the port visit to schedule at each step.

All unplanned port visits are sorted based on the number of available insertion positions. An available insertion position is one that maintains a feasible solution. For instance, the port visit needs to ensure that the previous, or following port visits, are connected through a feasible sailing speed if any of these are already scheduled. We select the port visit using a randomization parameter γ\gamma in the same way that α\alpha is used in Equation 21. This prioritizes the port visits with fewer available insertion positions. The selected port visit is scheduled in the position that increases the objective function the least (i.e., lowest cost). The process iterates by recalculating the new number of insertion positions for the remaining port visits.

4.2.5 κ\kappa-regret insertion

This insertion method is based on the regret-k heuristic presented in [34]. This method has an additional look-ahead component compared to a basic greedy heuristic. For each of the port visits, we compute the κ\kappa best scheduling positions, and we then measure the regret cost for each of them as the difference between the best and κ\kappa-best positions. The one with the highest regret cost becomes the next port visit to plan. The process is described in Algorithm 2.

Data: sol,unsch,κsol,unsch,\kappa: partially destroyed solution, set of port visits to schedule, and the parameter κ\kappa
Result: solsol: repaired solution with all port visits scheduled.
1 begin
2      
3      while unschunsch\neq\emptyset do
             orderorder\leftarrow\emptyset
              // initialize empty list
4             for portVisitunschportVisit\in unsch do
                   [pos]findBestPositions(κ)[pos]\leftarrow findBestPositions(\kappa)
                    // compute κ\kappa best insert positions
                   regretCostc(pos[κ]pos[1])regretCost\leftarrow c(pos[\kappa]-pos[1])
                    // compute regret cost
                   ordersortList(portVisit,regretCost)order\leftarrow sortList(portVisit,regretCost)
                    // update list by regret cost
5                  
            solplan(order[1])sol\leftarrow plan(order[1])
              // plan selected port visit
             unschpop(order[1])unsch\leftarrow pop(order[1])
              // update set of unplanned port visits
6            
7      
8
Algorithm 2 κ\kappa-regret insertion

4.2.6 Packing greedy insertion

This insertion method is similar to the randomized greedy insertion described in Section 4.2.4. The main difference is the position where the port visits are planned. Scheduling the port visits in a position with lower objective value can lead to the creation of empty spaces and, therefore, to inefficient use of the decision space. This method restricts the set of possible insertion positions to the ones strictly adjacent to other scheduled ships, or to the limits of the quay or planning horizon.

Refer to caption
Figure 4: Graphical representation of example positions (continuous line) strictly adjacent to the grey ship or the quay space. The position represented with a dashed line is not part of the set of positions as it is not adjacent to another planned ship or the boundaries of the decision space.

By strictly adjacent, we mean that the port visit to schedule needs to berth strictly next to another ship during at least one interval of time (e.g., one hour) or berth strictly before (or after) another ship with at least one quay segment in common. Also, we consider berthing positions where one of the sides is at one end of the quay, or if the berthing period starts or ends at the earliest and latest possible berthing time, respectively. Figure 4 shows some example positions considered.

4.2.7 Arrival greedy insertion

This method is identical to the one presented in Section 4.2.4 with the only difference that instead of sorting the unplanned port visits by increasing the number of feasible insertion positions, we sort the unplanned port visits by the earliest possible arrival time. One of the main goals of this method is to schedule port visits earlier, at the expense of a potentially higher cost, in order to increase the number of possible insertion positions for the remaining unplanned port visits.

4.3 Acceptance criterion

Once a new solution is reconstructed, we either accept it as the new current solution or reject it and reuse the previous one. We use a simulated annealing (SA) based criterion to take this decision. Such an acceptance criterion has been widely used for ALNS studies (see e.g.[36] and [24]). We accept the new solution xx^{\prime} over the current one xx if it is better (f(x)<f(x)f(x^{\prime})<f(x)), or if it is worse with a probability e(f(x)f(x))Te^{\frac{-(f(x^{\prime})-f(x))}{T}}, where TT is the current temperature at a particular iteration, and f(x)f(x) is the objective function. We define an starting an ending temperature, TstartT_{start} and TendT_{end} respectively, and the cooling time tcoolt_{cool} that defines the duration of going from TstartT_{start} to TendT_{end}. Based on these parameters, we can define the cooling factor τ\tau (0<τ<10<\tau<1), by isolating it from the formula Tend=TstartτtcoolT_{end}=T_{start}\tau^{t_{cool}}. This cooling factor allows us to compute the temperature at any given instant. Given temperature TT at iteration ii, we find the temperature TT^{\prime} to be used at iteration i+1i+1 by computing T=TτtitT^{\prime}=T\tau^{t_{it}}, where titt_{it} is the duration of the iteration ii. Following the strategy used in [24], we compute TstartT_{start} and TendT_{end} based on the cost of the initial solution f(x0)f(x_{0}) described in Section 4.1, where ξ\xi and ϕ\phi define the percentage of the cost used to compute Tstart=ξf(x0)T_{start}=\xi f(x_{0}) and Tend=ϕf(x0)T_{end}=\phi f(x_{0}).

4.4 Adaptive weight adjustment

One of the main differences between the ALNS method and the standard Large Neighborhood Search (LNS) is the adaptive component of the former. The performance of the employed removal and insertion operators is measured at each iteration. These measures are then used to update the weight and, therefore, the probability of choosing the respective methods. The most common way of measuring the performance of a method is to give it a different score depending on the quality of the solution. In our case, we define four reward categories as shown in Table 1.

Category Parameter
Current best solution ψ1\psi_{1}
Better than current solution ψ2\psi_{2}
Not better but accepted solution ψ3\psi_{3}
Rejected solution ψ4\psi_{4}
Table 1: Method reward categories

Let RR and DD denote the set of insertion and removal operators. Each removal and insertion method has a probability πiR,πiD\pi^{R}_{i},\pi^{D}_{i} respectively of being selected at each iteration. Throughout the algorithm run, the probability of selecting these methods gets updated depending on their performance. In our study, we update the probabilities after a Δupdate\Delta_{update} time interval. During these iterations we accumulate the sum of ψiR,ψiD\psi^{R}_{i},\psi^{D}_{i} rewards for each method, and update the weight ωiR,ωiD\omega^{R}_{i},\omega^{D}_{i} of each method as indicated in Equation 24

ωiR=(1λ)ωiR+λψiR,ωiD=(1λ)ωiD+λψiD\omega^{R}_{i}=(1-\lambda)\omega^{R}_{i}+\lambda\psi^{R}_{i},\quad\omega^{D}_{i}=(1-\lambda)\omega^{D}_{i}+\lambda\psi^{D}_{i} (24)

where λ\lambda is a parameter between 0 and 1 that denotes the degree of adaptability of the method. If λ=0\lambda=0, the weight remains equal to the previous one. This means that each method would have the same probability throughout the entire algorithm run, behaving like an LNS with multiple neighborhoods. If λ=1\lambda=1, the new operator’s probability solely depends on the score achieved during the last Δupdate\Delta_{update} and not on previous scores. It is common to use an intermediate value for λ\lambda strictly between 0 and 1. Once the weights are updated, the probability of each repair method πiR\pi_{i}^{R} and destroy method πiD\pi_{i}^{D} can be computed as indicated in Equation (25).

πiR=ωiiRωi,πiD=ωiiDωi\pi^{R}_{i}=\frac{\omega_{i}}{\sum_{i\in R}\omega_{i}},\quad\pi^{D}_{i}=\frac{\omega_{i}}{\sum_{i\in D}\omega_{i}} (25)

4.5 Local search

An extension of the method is implemented where we perform a local search procedure after reconstructing a new solution. This step aims to incrementally improve the solution by testing small adjustments to the port visits.

Refer to caption
(a) The direction of move for ship 1 is defined.
Refer to caption
(b) The move generates conflicts with ships 2 and 3.
Refer to caption
(c) Moving ships 2 and 3 in the same direction generates a new conflict with ship 4.
Refer to caption
(d) Moving ship 4 in the same direction ends the ejection chain by finding a new feasible solution.
Figure 5: Example representation of a local search step. The chain of moves originates from ship 1 being moved one step xx towards its ideal berthing position. The port visit in grey depicts the first ship to move, and the dark grey indicates an overlapping area. The dashed rectangles represent the original position of the ship before the move.

The procedure is based on the ejection chains strategy used in many routing and network-based problems (see [17, 35, 5]). The idea, in our case, is to perturbate the solution by re-planning a port visit to a better position (i.e., lower operational cost) and iteratively re-plan any port visits that conflict with the change. The chain of perturbations is limited to a maximum number of port visits to re-plan KchainK_{chain}, and it terminates if this limit is reached or if a conflict-free solution is achieved. Figure 5 shows an example of this move. Note that the handling time (i.e., the vertical dimension of the port visitsships) is reduced or increased for the ships as their position changes with respect to their ideal position. A pseudo-code of the procedure is described in Algorithm 3.

Data: sol,Kchainsol,K_{chain}: current solution, and the length of the ejection chain (i.e., the maximum number of port visit moves)
Result: solsol: resulting solution
1 begin
       donefalsedone\leftarrow false
        // initialize termination criterion
2       while not donedone do
             nextSolsolnextSol\leftarrow sol
              // initialize current best solution
             Δ0\Delta\leftarrow 0
              // initialize delta cost variation
3             for pp\inP do
4                   for nNpn\in N_{p} do
                         toMove=[(p,n)]toMove=[(p,n)]
                          // track the port visits to re-plan
                         solsolsol^{\prime}\leftarrow sol
                          // initialize copy of current solution
5                         while kKchaink\leq K_{chain} and toMovetoMove\neq\emptyset do
                               (p,n)pop(toMove)(p,n)\leftarrow pop(toMove)
                                // get port visit to re-plan
                               solmovePortVisit(p,n,sol)sol^{\prime}\leftarrow movePortVisit(p,n,sol^{\prime})
                                // move port visit
                               toMovecomputeConflicts(sol)toMove\leftarrow computeConflicts(sol^{\prime})
                                // check for conflicts
                               kk+|toMove|k\leftarrow k+|toMove|
                                // update the ejection chain length
6                              
7                        if toMove=toMove=\emptyset then
                               δcomputeDeltaCost(sol,sol)\delta\leftarrow computeDeltaCost(sol,sol^{\prime})
                                // compute cost variation
8                               if δ<Δ\delta<\Delta then
                                     Δδ\Delta\leftarrow\delta
                                      // update best delta cost
                                     nextSolsolnextSol\leftarrow sol^{\prime}
                                      // update current best solution
9                                    
10                              
11                        
12                  
13            if Δ<0\Delta<0 then
                   solnextSolsol\leftarrow nextSol
                    // update solution to return
14                  
15             else
                   donetruedone\leftarrow true
                    // no improving neighbor solution
16                  
17            
18      
19
Algorithm 3 Local search procedure

The function movePortVisit(p,n)movePortVisit(p,n) performs the perturbation for a given port visit (i.e., ship nn at port pp). It should be noted that the direction is given by the first perturbation made. To find the direction of the first perturbation, we compute the cost variation of moving the port visit in three directions: (i) one segment length towards the ideal position along the spatial axis, and (ii) one time instant earlier and (iii) one time instant later along the temporal axis. The direction in the spatial axis is checked if the port visit is not scheduled already at its ideal position. Once the perturbation is performed in the chosen direction, the following port visits in conflict are perturbed in the same direction.

A high value of KchainK_{chain} increases the probability of finding a better solution and the number of operations to compute. The parameter KchainK_{chain} should leverage both solution quality and low computational complexity. Therefore, we define the value of KchainK_{chain} to depend on the number of instances ships and equal to Kchain=2|N|K_{chain}=2\cdot|N|. The reason for Kchain>|N|K_{chain}>|N| is that for some movements, a conflicting port visit may require multiple perturbations to achieve a feasible new position, and selecting a lower KchainK_{chain} value may be too restrictive.

4.6 Algorithm overview

The overview of the solution method is summarized in Algorithm 4. Due to the additional computational effort of the local search procedure, we do not execute it at each iteration. Instead, we only perform it if the reconstructed solution is better than the current one. This reduces the number of times that the local search is performed, allowing the algorithm to perform more iterations while at the same time filtering the times the local search is performed to those where we already have promising solutions.

Data: inst,paraminst,param: a problem instance and a parameter setting for the algorithm
Result: bestSolbestSol: best found solution
1 begin
       ψ,πinitialize(inst)\psi,\pi\leftarrow initialize(inst)
        // initialize operator selection parameters
       solconstructHeuristic(inst)sol\leftarrow constructHeuristic(inst)
        // construct initial solution
2       bestSolsolbestSol\leftarrow sol
3       while timelimit not reached  do
4             currSolsolcurrSol\leftarrow sol
             removal,insertionselectOperator(π)removal,insertion\leftarrow selectOperator(\pi)
              // select operators
             solinsertion(removal(currSol))sol\leftarrow insertion(removal(currSol))
              // get new solution
5             if c(sol)<c(currSol)c(sol)<c(currSol) then
6                   sollocalSearch(sol)sol\leftarrow localSearch(sol)
7            if isAccepted(sol) then
8                   if c(sol)<c(bestSol)c(sol)<c(bestSol) then
9                         bestSolsolbestSol\leftarrow sol
10                  currSolsolcurrSol\leftarrow sol
11            πupdateOperatorParams(ψ)\pi\leftarrow updateOperatorParams(\psi)
12      
13
Algorithm 4 Adaptive large neighborhood search procedure

5 Computational results

In this section, we first describe the generation process for the set of benchmark instances, and we then perform a computational study where we cover both the performance of the method and practical insights of the problem.

5.1 Instance generation

To the best of our knowledge, [31] is the only study on the MCBAP. The instances presented in the study are rather small and limited. Therefore, we develop a more comprehensive set of benchmark instances. In the absence of real-life data, one could extend current benchmarks instances of the continuous BAP to multiple ports. Instead, we decided to use the public access to port data [30], and we validated it with additional data from an industrial research partner to create an instance generator for the MBAP with a continuous quay.

We consider three different ship types: (i) feeders or small vessels with a length of up to 200 meters, (ii) medium-size vessels with a length between 200 and 300 meters, and (iii) large vessels longer than 300 meters. Each ship type has a different speed-fuel consumption relation. Moreover, we consider three terminals at the three main ports in the north sea: (i) Rotterdam APMT with a quay length of 1600 meters [3], (ii) Bremerhaven NTB, with a quay length of 1800 meters [2], and Hamburg EGH, with a quay measuring 2100 meters [14]. These three ports are relatively close to each other, and large, medium, and small vessels visit them in different sequences as part of their routes.

The duration of the vessel time window is based on the planned port call duration. The planned duration of a vessel’s port call can often be updated the days previous to the arrival time. Therefore, we establish a fixed point in time for each ship two weeks before the actual arrival time and retrieve the planned port call duration as the time difference between the estimated time of arrival (ETA) and the estimated time of departure (ETD). We compute this by averaging the planned port call duration for each port and ship type berthing in a period of three months (January-March 2021). This value is also used to define the minimum handling time h0h_{0} (see Table 2). Port service times that exceed 48, 72, and 96 hours for small, medium, and large ship types, respectively, are categorized as outliers and removed from the dataset. The reason for this is that such long service times usually involve maintenance or fueling operations that are not usually performed on a regular basis. Thus, they are not part of the problem.

Table 2: Minimum handling type in hours per ship type and terminal. These values define h0i,ch^{i,c}_{0}.
Ship type \Terminal DEHAM DEBRV NLRTM
Feeder 10.1 12.1 10.4
Medium 18.0 21.8 18.4
Large 41.0 33.7 26.7

We define six different ship patterns, each with a given route, type of ship, and length. All ships visit two or three ports in different orders. The NN ships for a given instance are sampled from the six patterns.

For each ship, we randomize the (i) desired berthing position at each port visited and (ii) the earliest start time ESTicEST_{i}^{c}, following parameters ensuring that feasible sailing times between ports exist. The estimated finish time EFTicEFT_{i}^{c} is computed by adding the corresponding value from Table 2 to ESTicEST_{i}^{c} (EFTic=ESTic+h0i,cEFT_{i}^{c}=EST_{i}^{c}+h_{0}^{i,c}). In addition, we compute the latest finish time LFTicLFT_{i}^{c} by adding half of the difference between the minimum h0i,ch_{0}^{i,c} and maximum hmaxi,ch_{max}^{i,c} handling time that the ship can take at the port to EFTicEFT_{i}^{c} (LFTic=EFTic+hmaxi,ch0i,c2LFT_{i}^{c}=EFT_{i}^{c}+\frac{h_{max}^{i,c}-h_{0}^{i,c}}{2}).

As input to the instance generator, we define the number of external ships at each port NoutNout that are considered fixed. For each external ship, we randomly define: (i) the berthing position and time, (ii) the length (comprised between 180 and 330 meters), and (iii) the handling time, adapted to be proportional to the length of the vessel.

We assume the entire quay is available for berthing unless an external ship is occupying it. We also consider 10 different speed levels, ranging uniformly between 17-21.5 knots. The ALNS heuristic we present can handle any continuous value of the speed but not the MIP formulation we present. To ensure a fair comparison of the methods we employ a discretized set of speed levels in both the formulation and the solution method. Furthermore, the distance between ports is computed based on the actual sea distance of the routes.

5.1.1 Handling time

It is a general practice, especially on the discrete version of the BAP, to define a different handling time depending on the berthing position. For the continuous version implemented in this paper, we follow the handling time definition presented in [33] where deviations from a preferred berthing position are penalized using a deviation factor β0\beta\geq 0 (relative increase in handling time per unit of distance, i.e., meters). Given the minimum handling time h0i,ch^{i,c}_{0} at the preferred berthing position and the actual deviation from the chosen position Δb\Delta b (measured in meters), the handling time is computed as follows:

hic=(1+βΔb)h0i,ch^{c}_{i}=(1+\beta\Delta b)h^{i,c}_{0} (26)

As a reference, the handling time ranges between 20 and 60 hours for medium vessels and between 30 and 110 hours for large ones. This is given by berthing at the best and worst places, respectively.

5.1.2 Time windows

In the MCBAP, there are two types of time windows:

  • 1.

    The time window for each ship at each visited port. This is given by the port call duration. The time window start must be respected, but the end can be exceeded. The berthing period can, therefore, exceed the end of the time window counting the additional time as a delay.

    We also consider a time window end that defines the latest finish time (LFT). Ideally, this time window must be respected. However, we allow violating this time window by adding a very high penalty cost.

  • 2.

    The time window of the berthing positions. This time window can be seen as the operational hours of a given berthing position or segment of the quay. We assume that all berthing positions are available at any time. It should be noted that potential maintenance windows or partial closures of the quay can be modeled in the same way as an external ship occupying the given positions and time period.

5.1.3 Benchmark instances

Using the instance generator described in this section, we create a set of benchmark instances. The entire set comprises 240 instances. Each instance is a combination of the parameter values listed in Table 3: (i) a randomized seed, (ii) the number of ships to optimize, (iii) and the number of external fixed port visits per port, and (iv) the length of the quay segment used to define possible berthing positions.

Table 3: Parameter settings of the benchmark instance set.
Parameter Seed
Number
of ships
Number of external
ships per port
Distance between
positions
Values 1-10 30, 50, 70 5, 10 10, 20, 40, 80

5.2 Parameter tuning

The ALNS algorithm has a total of 18 algorithm parameters. These include parameters used to calibrate the operators, the selection and acceptance criteria, and the weight of the scores for new solutions (see Table 4). To select the best value setting for the algorithm parameters we conducted a parameter tuning. We selected a subset of 12 instances that are representative of the entire set. For the tuning, we run the automatic algorithm configurator Pydgga [1] for the 30 generations with a time limit of 5 minutes for each ALNS run. The configurator allows to parallelize the process, and the entire parameter tuning lasted 8 hours. In Table 4, we define the domain of each algorithm parameter used for tuning and the found setting. The models and solution methods are written in Julia and run in a 2.90 GHz Intel Xeon Gold 6226R using one thread and 16 GB of RAM.

Table 4: Studied range and chosen setting of algorithm parameters after the parameter tuning.
Symbol Description Min val Max val Tuned setting
ϵ\epsilon value used to compute the cooling ratio 0.005 0.2 0.157
φ\varphi
pct of initial solution obj used to
define start temperature (when reheated)
0.01 0.05 0.0246
ξ\xi
pct of initial solution obj used to
define end temperature (to be reheated)
0.00005 0.001 0.000269
ρ\rho
degree of destruction, pct of total port
visits to be removed by the removal methods
0.3 0.6 0.326
AA weight for position deviation in shaw removal 0.5 2 0.55
BB
weight for berthing start time deviation
in shaw removal
0.5 2 1.36
CC
weight for berthing end time deviation in
shaw removal
0.5 2 0.89
α\alpha
randomness parameter for shaw removal
method
1 3 2.66
γ\gamma
randomness parameter for random greedy
repair method
1 3 2.85
μ\mu
randomness parameter for arrival greedy
repair method
1 3 2.6
κ\kappa k-regret parameter 2 4 2
Δ\Delta
number of iterations between updating the
weights of each method
0.01 0.05 0.017
η\eta
parameter to adjust the importance of
recent scores vs. previous weight
0.3 0.7 0.456
ψ1\psi_{1} score when finding a current best solution 10 20 11
ψ2\psi_{2}
score when finding a solution better than
the current solution
4 8 4
ψ3\psi_{3} score when the solution is accepted 1 3 2
ψ4\psi_{4} score when the solution is rejected - - 0
β\beta
parameter that defines the position
bounds for ship (times the length)
2 5 4.02

5.3 Method performance

To measure the quality of the method, we compare the presented method with its variants and with a baseline commercial solvers; CPLEX v12.10.

Table 5 compares the results between CPLEX and the ALNS method. We compute the objective gap for each instance run as zobjzbestzbest\frac{z_{obj}-z_{best}}{z_{best}} where zobjz_{obj} is the objective value of the best solution of the run, and zbestz_{best} is the best-known solution across all experiments. We have grouped all instances per number of ships, external ships, and distance between berthing positions. Each group contains 10 instances and is named X-Y-Z according to their common characteristics. X is the number of ships, Y is the number of external ships per port, and Z is the distance between consecutive positions considered in meters (i.e., segment length). Therefore, each row in the table corresponds to the average value across instances with different seed values. The ALNS is tested by running each instance 10 times and computing the average, best and worst run.

Table 5: Gap for the MIP formulation solved by CPLEX and the ALNS method with a time limit of 5 minutes and 1 hour. We also report the average gap between the best and worst runs of the ALNS. Each row corresponds to an instance group (i.e., the average results across 10 instances of the same size).
5 minutes 1 hour
Instance
group
MIP
gap (%)
ALNS
gap (%)
Best ALNS
gap (%)
Worst ALNS
gap (%)
MIP
gap (%)
ALNS
gap (%)
Best ALNS
gap (%)
Worst ALNS
gap (%)
30_5_10 10.1 11.9 7.3 17.4 1.5 4.8 1.8 8.4
30_5_20 7.4 9.4 4.6 14.9 1.7 3.3 0.9 6.0
30_5_40 10.2 6.9 3.6 10.2 1.2 3.4 1.2 5.5
30_5_80 15.3 7.5 4.3 10.5 2.1 3.4 0.9 5.5
30_10_10 15.1 10.0 6.1 14.5 2.7 3.6 0.8 6.8
30_10_20 16.5 8.1 4.7 11.9 5.8 2.9 0.5 5.2
30_10_40 13.3 5.9 3.3 8.4 3.5 2.3 0.2 4.3
30_10_80 16.9 5.2 3.3 7.6 5.7 2.3 0.5 4.5
50_5_10 22.5 14.4 8.6 19.3 2.2 4.3 0.7 9.6
50_5_20 45.7 11.4 6.1 18.2 6.4 3.6 0.8 6.9
50_5_40 59.1 8.8 4.3 13.1 11.1 2.9 0.0 6.2
50_5_80 82.7 7.2 4.3 10.6 14.3 2.9 0.5 5.3
50_10_10 66.5 10.3 5.2 14.6 8.1 2.9 0.6 5.9
50_10_20 61.4 8.3 4.4 13.0 9.2 2.2 0.0 4.6
50_10_40 74.6 7.0 3.9 11.3 13.4 2.7 0.0 5.5
50_10_80 92.3 6.2 3.5 9.3 16.7 2.2 0.0 4.3
70_5_10 139.5 13.8 7.2 18.9 8.7 3.9 0.8 8.2
70_5_20 103.4 10.9 5.6 16.3 9.3 2.4 0.0 5.9
70_5_40 141.3 7.8 4.2 13.4 14.7 2.4 0.0 4.8
70_5_80 136.5 5.8 2.9 9.0 17.9 2.3 0.0 4.5
70_10_10 95.2 11.7 7.6 16.0 15.5 2.7 0.0 5.5
70_10_20 90.8 8.8 4.2 13.0 16.8 2.3 0.0 5.1
70_10_40 122.0 7.3 3.9 11.1 29.5 2.3 0.0 4.7
70_10_80 141.0 5.5 3.3 8.4 28.2 2.1 0.0 3.9
Average 65.8 8.7 4.8 13.0 10.3 2.9 0.4 5.7

We observe that CPLEX scales poorly, especially in instances with more than 30 ships. The gap is better for the smallest instances but quickly worsens. On average, the ALNS method outperforms the commercial solver by achieving tighter gaps in most instances. The gap is an indicator of the method performance relative to each other but does not provide an optimality guarantee. The lower bounds obtained with CPLEX indicate a high optimality gap. This could be due to a low-quality solution or a poor lower bound. [32] indicated that the relaxation of the MIP formulation for the MBAP with a discrete quay could be poor and showed that a network-flow reformulation could tighten the relaxation significantly. As indicated in [31], network-flow formulations for the MCBAP can suffer from scalability but show that the relaxation is stronger. We compare the results from the branch-and-price method presented in [31] with the ALNS method. The formulation presented in [31] is slightly different from the one addressed in this paper. The formulation from [31] defines the latest finish time for each ship berthing at a port that must be satisfied. We have adapted the method from [31] to the formulation of this study. The branch-and-price method is based on a graph representation, and therefore, we need to establish the latest possible berthing time. This is set to 50 % more than the latest finish time. This allows the method to exceed the latest finish time while maintaining the graph at a reasonable size. This is a generous bound, and our empirical studies show that this bound does not affect the optimal solution. For that, we have also generated a new set of instances of similar size to the ones presented in [31] using the instance generator defined in Section 5.1.

Table 6: Parameter settings of the instance set based on the ones from [31].
Parameter Seed
Number
of ships
Number of external
ships per port
Distance between
positions
Values 1-5 4-15 3-5 10, 20, 40, 80

The input parameters for the instance set are defined in Table 6. The entire set comprises 720 instances, one for each combination of input parameters. The results are shown in Table 7, where we have grouped the instances in batches of 60 according to the number of ships. We compare the branch-and-price method with the ALNS and MIP formulation presented in this study. For both the branch-and-price and CPLEX we compute their optimality gap, where we observe that the branch-and-price method achieves a better gap due to the tighter lower bound in most cases. We also compute the gap to the best-known solution for all three methods. In this case, we observe that CPLEX provides the best performance, showing that despite its poorer relaxation, the upper bounds found are near-optimal. The branch-and-price method still shows a robust performance but for short computational times and larger instances, the ALNS method is able to provide better solutions.

Table 7: Performance comparison across 720 instances between the MIP formulation solved by CPLEX, the adapted branch-and-price method from [31], and the ALNS method, with a time limit of 5 minutes and 1 hour. Each row shows the average gap values across all instances with same number of ships.
Number of ships
CPLEX
Opt. gap (%)
Branch-and-price
Opt. gap (%)
CPLEX
Gap (%)
Branch-and-price
Gap (%)
ALNS+LS
Gap (%)
5 min. 1 hour 5 min. 1 hour 5 min. 1 hour 5 min. 1 hour 5 min. 1 hour
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0
5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.1
7 0.0 0.0 0.2 0.0 0.0 0.0 0.0 0.0 0.3 0.2
8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.2
9 0.0 0.0 0.3 0.1 0.0 0.0 0.2 0.0 0.3 0.2
10 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.5 0.3
11 1.0 0.2 0.3 0.1 0.1 0.0 0.1 0.0 0.3 0.2
12 1.1 0.6 0.8 0.2 0.1 0.0 0.4 0.0 0.2 0.1
13 4.0 2.7 1.1 0.6 0.1 0.1 0.4 0.2 0.4 0.2
14 3.5 2.0 1.2 0.4 0.1 0.1 0.6 0.1 0.7 0.4
15 7.3 4.8 1.7 1.0 0.3 0.1 0.7 0.2 0.5 0.3
Average 1.41 0.86 0.49 0.20 0.06 0.02 0.20 0.05 0.30 0.19
Table 8: Performance comparison between variants of the proposed ALNS method.
5 minutes 1 hour
Instance
group
ALNS + LS
gap (%)
ALNS (no LS)
gap (%)
LNS + LS
gap (%)
LNS (no LS)
gap (%)
ALNS + LS
gap (%)
ALNS (no LS)
gap (%)
LNS + LS
gap (%)
LNS (no LS)
gap (%)
30_5_10 11.9 11.8 12.0 13.6 4.8 4.9 5.5 5.9
30_5_20 9.4 9.6 8.8 10.6 3.3 3.6 3.4 4.0
30_5_40 6.9 7.3 7.3 7.8 3.4 3.3 2.1 2.5
30_5_80 7.5 7.5 6.4 7.0 3.4 3.7 2.1 2.3
30_10_10 10.0 10.9 10.6 11.8 3.6 3.7 4.2 4.7
30_10_20 8.1 8.2 8.6 9.6 2.9 2.8 3.1 3.3
30_10_40 5.9 6.3 5.6 6.3 2.3 2.4 1.4 1.7
30_10_80 5.2 5.4 4.5 5.3 2.3 2.3 0.8 1.0
50_5_10 14.4 15.5 15.1 18.2 4.3 5.1 7.1 9.4
50_5_20 11.4 12.2 12.8 16.3 3.6 4.4 5.1 7.7
50_5_40 8.8 10.2 11.0 13.2 2.9 3.9 3.8 6.2
50_5_80 7.2 8.3 8.2 10.6 2.9 3.0 3.4 4.6
50_10_10 10.3 11.4 12.0 14.4 2.9 3.9 5.1 7.1
50_10_20 8.3 9.2 9.9 12.5 2.2 3.3 3.6 5.7
50_10_40 7.0 8.1 8.1 10.9 2.7 3.5 3.1 4.9
50_10_80 6.2 6.6 6.6 8.7 2.2 2.6 2.6 3.1
70_5_10 13.8 14.7 14.6 17.4 3.9 5.4 6.7 10.9
70_5_20 10.9 11.4 11.4 14.4 2.4 4.6 5.1 8.5
70_5_40 7.8 10.1 9.4 13.1 2.4 3.9 3.9 7.1
70_5_80 5.8 7.8 7.6 11.0 2.3 3.5 3.2 5.5
70_10_10 11.7 12.6 11.8 14.8 2.7 4.3 5.2 8.3
70_10_20 8.8 10.3 9.6 13.3 2.3 4.2 4.6 7.6
70_10_40 7.3 9.2 8.4 11.9 2.3 3.8 3.9 6.2
70_10_80 5.5 6.8 6.6 9.4 2.1 3.0 3.0 4.5
Average 8.7 9.7 9.4 11.8 2.9 3.7 3.8 5.5

The ALNS method has two main components that differentiate it from other heuristics: (i) the adaptive procedure that guides the operator selection and (ii) the local search procedure that is performed when promising solutions are found. To quantify the impact of these two procedures, we compare the proposed method to its variants with and without each of the components. One variant is the method without its adaptive component (i.e., large neighborhood search (LNS)), meaning that each removal and insertion operator has an equal probability of being selected throughout the algorithm run. Another variant is the ALNS method without the local search (LS). The objective gap across the methods is compared in Table 8, with a time limit of 5 minutes, and 1 hour. For the short time limit, we see that the ALNS without the local search performs the best in most instances. Once the time limit is increased, the value of the local search is more apparent, and it provides the best results in most instances.

Table 9: Algorithm comparison with different frequencies for the local search procedure with a time limit of one hour.
Local search
every iteration
Local search
every 2 iterations
Local search
every 4 iterations
Local search every iteration where
the solution is better than the incumbent
Instance
group
Gap
(%)
Iterations
x1000
Gap
(%)
Iterations
x1000
Gap
(%)
Iterations
x1000
Gap
(%)
Iterations
x1000
% of iterations
with local search
30_5_10 5.3 5.2 5.3 7.3 5.3 7.8 4.8 12.7 1.3
30_5_20 4.2 8.0 4.1 11.1 4.2 12.8 3.3 18.6 1.5
30_5_40 3.8 11.0 3.4 16.5 3.6 21.1 3.4 27.4 2.5
30_5_80 4.3 15.7 3.9 25.7 3.8 36.0 3.4 60.4 2.7
30_10_10 3.9 5.6 4.0 7.1 4.0 7.8 3.6 10.9 1.6
30_10_20 3.1 8.8 3.1 12.3 3.5 13.3 2.9 20.0 1.7
30_10_40 2.5 12.4 2.3 18.2 2.2 23.9 2.3 30.4 2.9
30_10_80 2.7 17.6 2.5 28.9 2.5 39.4 2.3 63.4 3.0
50_5_10 3.9 2.0 4.4 3.2 4.9 3.8 4.3 8.5 0.4
50_5_20 4.2 2.6 4.5 4.3 4.6 6.2 3.6 16.2 0.4
50_5_40 3.4 3.4 2.9 5.3 3.4 7.8 2.9 13.8 0.8
50_5_80 4.1 4.5 3.9 7.6 3.7 11.6 2.9 24.8 1.1
50_10_10 2.9 2.3 2.9 3.5 3.7 4.6 2.9 8.8 0.7
50_10_20 2.6 3.1 2.8 5.1 2.9 6.3 2.2 15.4 0.6
50_10_40 3.1 4.2 3.1 6.4 3.1 9.1 2.7 14.3 1.2
50_10_80 2.9 5.5 2.8 9.2 3.0 13.4 2.2 26.8 1.6
70_5_10 3.4 1.2 3.7 1.9 4.6 2.5 3.9 5.0 0.5
70_5_20 2.9 1.5 3.4 2.5 4.0 3.3 2.4 10.0 0.5
70_5_40 3.4 1.7 3.5 2.9 3.6 4.6 2.4 11.4 0.5
70_5_80 3.7 2.0 3.5 3.7 3.5 6.0 2.3 17.7 0.7
70_10_10 2.8 1.3 3.1 2.1 3.6 2.6 2.7 5.0 0.8
70_10_20 2.5 1.8 2.7 2.8 3.1 4.0 2.3 9.2 0.7
70_10_40 3.3 2.1 3.2 3.5 3.5 5.2 2.3 10.0 0.8
70_10_80 3.5 2.3 3.5 4.1 3.1 6.9 2.1 18.9 0.9
Average 3.4 5.2 3.4 8.1 3.6 10.8 2.9 19.1 1.2

To measure the impact of the local search procedure, we compare different strategies that differ in the frequency of execution of the local search procedure. We test three other variants of the algorithm in which the local search is called every 1, 2, and 4 iterations. The results are summarized in Table 9 where we can observe the increased computational complexity that the local search can add to each iteration. Performing the local search procedure very frequently can lead to good solutions in fewer iterations, but it also results in longer computational times. The proposed strategy performs the local search at iterations where the reconstructed solution is better than the incumbent one, and we show that this strategy performs the best. This method allows us to perform the local search in a fewer number of iterations, but at the same time, has the potential to result in promising and better solutions.

Table 10: Performance summary of the four removal operators. The instances are grouped per number of ships.
Number of ships Cost-berth removal Cost-time removal Shaw removal Random removal
% its
% new
best
% better
than current
% its
% new
best
% better
than current
% its
% new
best
% better
than current
% its
% new
best
% better
than current
30 6 4 2 17 21 13 28 20 24 50 55 62
50 6 4 1 47 50 38 12 8 8 35 38 52
70 6 4 2 69 81 84 6 2 1 19 12 13
Table 11: Performance summary of the four insertion operators. The instances are grouped per number of ships.
Number of ships Efficient packing insertion Random greedy insertion Arrival greedy insertion κ\kappa-regret insertion
% its
% of
time
% new
best
% better
than current
% its
% of
time
% new
best
% better
than current
% its
% of
time
% new
best
% better
than current
% its
% of
time
% new
best
% better
than current
30 5 2 4 1 17 10 24 7 10 5 13 3 68 83 60 89
50 5 3 3 1 37 33 34 22 8 6 6 2 49 58 57 75
70 6 3 3 1 47 39 51 46 9 6 6 3 38 52 39 50

Tables 10 and 11 summarized the performance of the different removal and insertion operators used within the ALNS method. For each removal operator, we compute three metrics: (i) the percentage of iterations in which the operator was selected % its, (ii) the percentage of current best solutions found using the operator % new best, and (iii) the percentage of times that the resulting solution was better than the current one using the operator % better than current. For the insertion methods, we also display a fourth column % of time, which indicates the percentage of time each operator has consumed from the total time spent repairing solutions. The time spent in removal methods is significantly lower than in insertion operators; therefore, we do not compute this metric for the removal operators. We observe that the random removal is the better-performing removal method when the number of ships is 30. However, for larger instances, the cost-time removal performs better. This suggests that when the number of port visits increases, the probability of removing port visits that are not related at all also increases, making pure random methods less efficient. Furthermore, removing port visits that overlap in time is more effective than removing the ones that overlap in berthing space. While ships can berth at multiple positions along the quay without major delays and disruptions in their schedule, berthing earlier or later can negatively impact the sailing in the rest of the voyage legs. Therefore, their flexibility comes at a larger cost. We also notice that the Shaw removal becomes less useful in larger instances. This operator removes pairs of port visits at a time. These pairs can be highly unrelated between them, worsening the effects of the overall operator. Similarly to the random removal, this inter-relatedness issue increases with the number of port visits.

Regarding the repair methods, the κ\kappa-regret insertion method shows the best and more robust performance. Even if, in some cases, it is not the most frequently used operator, it is clearly computationally intensive, and more than half of the time is spent computing the insertions related to this method. The randomized greedy insertion is also relevant and becomes more effective in larger instances. The remaining two insertion operators, packing and arrival greedy, show a modest performance. Still, they also proved to help achieve some of the best-found solutions during the algorithm run.

Refer to caption
Figure 6: Usage of each removal operator during an algorithm run of 1 hour for an instance from group 30_10_1030\_10\_10.
Refer to caption
Figure 7: Usage of each insertion operator during an algorithm run of 1 hour for an instance from group 30_10_1030\_10\_10.

To better understand the algorithm’s behavior and when the operators are used, we tracked the use of each operator during the algorithm run. Figures 6 and 7 show an example run of one hour for an instance with 30 ships, 10 external ships per port, and a quay segment length of 10 meters. We observe that the cost-berth removal is only used at the beginning of the run when each operator has a more balanced probability of being chosen. The packing greedy heuristic shows a similar behavior and correlates with the low usage of these two operators as shown in Table 10 and 11. Nonetheless, the rest of the operators are used for most algorithm runs. Some operators show an oscillating behavior, such as the cost-time removal operator. This behavior correlates with the temperature of the acceptance criterion, which is reheated periodically and suggests that the operator has a higher probability of being selected when the temperature is higher.

Additionally, for both removal and insertion operators, we tested the algorithm removing the worst performing operators, one at a time, but the performance of the method worsened in all cases, indicating that all operators are to some extent useful and combine well together.

5.4 Practical impact

This problem involves two main stakeholders, namely, the terminal operators and the shipping carriers. The objective function covers the operational costs of both of them. This section disaggregates and analyzes the different operational costs by performing various sensitivity analyses.

Table 12: Average operational costs and cost variation across instances with different quay segment lengths. All instances are run for one hour. The costs are in thousands of USD.
Segment length Waiting Handling Delay Fuel Total Penalty Iterations x1000
10 390 537 3210 1274 5411 0.04 8
20 368 537 3246 1275 5426 0.05 15
40 242 541 3449 1276 5509 0.09 18
80 241 542 3910 1275 5968 0.14 35

In Table 12, we group the instances per quay segment length. We observe a natural trade-off here. A shorter segment length allows a more granular set of berthing positions and, therefore, a potentially better solution quality. However, this increases the complexity of the problem, and in the case of our method, it results in fewer iterations per hour. Despite performing less than a quarter of the iterations of the instances with 80 meters segments, the method finds better solutions for the shorter-segment instances. The improvement in objective value mainly translates into shorter delays and increased waiting time. The handling and fuel costs remain similar. The vessel time windows or port calls are already pre-planned, considering a low sailing speed. This, together with the fact that fuel costs account for a large part of the total costs, results in that ships already sailing at the slowest speed in most of the solutions (see Table 14).

Table 13: Operational costs for instances grouped by different amounts of external ships per port.
External ships
per port
Waiting Handling Delay Fuel Total Penalty
0 451 538 2365 1278 4632 0.06
5 287 538 3022 1275 5122 0.04
10 301 538 3227 1275 5341 0.05
20 461 538 2718 1278 8300 0.11

Another operational aspect we inspect is the impact of the external ships in the planning process. We solve the problem for instances with a different number of external ships per port, from none to twenty ships per port. The results are summarized in Table 13. The results support the rationale that an increased number of external ships per port results in a more congested berth allocation and, as a result, higher operational costs. In this case, the port congestion is reflected in the Penalty column, which indicates the average number of port visits per instance exceeding the latest finish time. Since this type of delay is heavily penalized, improvements in this aspect significantly impact the objective value. These results also indicate that the level of impact of this type of collaborative problem can increase significantly when more ships are involved. When more ships collaborate, their potential joint savings increase and the terminal has more planning flexibility.

As mentioned previously, fuel consumption is the main cost driver for carriers. Fuel prices have fluctuated significantly in the last two years due to the global socio-economical and political situation. We consider that ships use a very low sulfur fuel oil (VLSFO) with an estimated price of 500 USD per metric ton. However, the prices of this fuel have ranged between 200 and 1100 USD per metric ton in the last two years. Therefore, we have also tested our method using a fuel price of 200 and 1100 USD per metric ton [38]

Table 14: Average fuel consumption per ship and sailing speed based on different fuel prices
Number of ships Fuel price (USD/metric tonne)
200 500 1100
average fuel consumption
(metric tonne per ship)
average
speed (knots)
average fuel consumption
(metric tonne per ship)
average
speed (knots)
average fuel consumption
(metric tonne per ship)
average
speed (knots)
30 51.04 17.12 50.53 17.04 50.37 17.01
50 51.50 17.10 51.11 17.04 50.99 17.02
70 52.14 17.19 51.35 17.08 51.07 17.03
Average 51.56 17.14 51.00 17.05 50.81 17.02

Table 14 shows the average fuel consumption per ship and sailing speed, grouped by instances with the same number of ships. We observe that the average consumption can increase by more than half a metric tonne when the fuel price decreases from 500 USD per tonne to 200 USD per tonne. This difference is more prominent in instances with a large number of ships, where more ships sail marginally faster to arrive earlier at the next port to get a better service. However, when the fuel price increases above 500 USD per metric tonne, the reductions in fuel consumption are relatively small. The main explanation for this is due to the low sailing speeds in general. The fuel costs already account for a large part of the operational costs, and the solutions indicate that ships sail close to the slowest speed of 17 knots in most cases. We observe a slight increase in average sailing speed when the fuel price is low, but the size of the instance does not have an impact on the speed. A similar sensitivity analysis performed by [42] indicated a similar behavior.

6 Conclusions

In this work, we address an emerging problem in maritime collaborative logistics that integrates the operations of both shipping carriers and terminal operators. We present both a new MIP formulation for the multi-port continuous berth allocation problem with speed optimization, and an ALNS algorithm to solve it. The ALNS algorithm takes advantage of a diverse set of tailored insertion and removal methods. It guides the algorithm by prioritizing the better-performing methods. The modular characteristic of the algorithm could be exploited to develop a decision support tool for terminal operators, where the operators’ experience can lead to new tailored operators. Furthermore, in terms of computational performance, the heuristic method is able to find high-quality solutions to larger instances than the ones studied in the literature and outperforms commercial solvers such as CPLEX. We also study the practical impact of the problem in terms of operational costs for the carriers and terminal operators and analyze the resulting quality of the berth plans and sailing speeds. We conclude that engaging in this type of collaboration can result in overall cost reductions for the stakeholders and also benefits to the environment due to the potential lower fuel consumption.

Some aspects of this study remain as future work or research direction. Regarding the solution method, the insertion operators are the main bottleneck in terms of computational complexity. One could explore simpler insertion operators or other heuristic variants. Studying the scalability of the method in more detail could be relevant. There is no doubt that the heuristic method scales better than CPLEX, and results in small instances indicate that the ALNS achieves near-optimal solutions. For larger instances, the optimality gap of CPLEX increases significantly, and the lower bound becomes impractical. Finally, incorporating practical aspects such as transhipments or disruptions management is an attractive research direction. We envision the use of frameworks such as stochastic programming to tackle this type of problem. All in all, this type of study highlights the potential impact of collaborative logistics and the value of integration in the transportation sector. Acknowledgements: The authors thank the Danish Maritime Fund for supporting this work.

References

  • Ansótegui et al. [2021] Ansótegui, C., Pon, J., Sellmann, M., 2021. Boosting evolutionary algorithm configuration. Annals of Mathematics and Artificial Intelligence.
    URL https://doi.org/10.1007/s10472-020-09726-y
  • APM Terminals [2022a] APM Terminals, 2022a. APM Terminals Bremerhaven NTB. https://www.apmterminals.com/en/bremerhaven/practical-information/practical-information, accessed: 2022-11-4.
  • APM Terminals [2022b] APM Terminals, 2022b. APM Terminals Maasvlakte II. https://www.apmterminals.com/en/maasvlakte/about/our-terminal, accessed: 2022-09-15.
  • Bierwirth and Meisel [2015] Bierwirth, C., Meisel, F., 2015. A follow-up survey of berth allocation and quay crane scheduling problems in container terminals. European Journal of Operational Research 244 (3), 12689, 675–689.
  • Bräysy [2003] Bräysy, O., 2003. A reactive variable neighborhood search for the vehicle-routing problem with time windows. Informs Journal on Computing 15 (4), 347–368.
  • Carlo et al. [2014] Carlo, H. J., Vis, I. F., Roodbergen, K. J., 2014. Transport operations in container terminals: Literature overview, trends, research directions and classification scheme. European Journal of Operational Research 236 (1), 1–13.
  • Cheimanoff et al. [2022] Cheimanoff, N., Fontane, F., Kitri, M. N., Tchernev, N., 2022. Exact and heuristic methods for the integrated berth allocation and specific time-invariant quay crane assignment problems. Computers and Operations Research 141, 105695.
  • Cordeau et al. [2005] Cordeau, J. F., Laporte, G., Legato, P., Moccia, L., 2005. Models and tabu search heuristics for the berth-allocation problem. Transportation Science 39 (4), 526–538.
  • Du et al. [2011] Du, Y., Chen, Q., Quan, X., Long, L., Fung, R. Y., 2011. Berth allocation considering fuel consumption and vessel emissions. Transportation Research Part E: Logistics and Transportation Review 47 (6), 1021–1037.
  • Dulebenets [2018] Dulebenets, M. A., 2018. A comprehensive multi-objective optimization model for the vessel scheduling problem in liner shipping. International Journal of Production Economics 196, 293–318.
  • Dulebenets [2019] Dulebenets, M. A., 2019. Minimizing the total liner shipping route service costs via application of an efficient collaborative agreement. Ieee Transactions on Intelligent Transportation Systems 20 (1), 8315131.
  • Dulebenets et al. [2018] Dulebenets, M. A., Golias, M. M., Mishra, S., 2018. A collaborative agreement for berth allocation under excessive demand. Engineering Applications of Artificial Intelligence 69, 76–92.
  • Dulebenets et al. [2019] Dulebenets, M. A., Pasha, J., Abioye, O. F., Kavoosi, M., 2019. Vessel scheduling in liner shipping: a critical literature review and future research needs. Flexible Services and Manufacturing Journal 33 (1), 43–106.
  • Eurogate [2022] Eurogate, 2022. Eurogate Hamburg. http://www1.eurogate.de/en/EUROGATE/Terminals/Hamburg, accessed: 2022-11-4.
  • Fagerholt [2001] Fagerholt, K., 2001. Ship scheduling with soft time windows: An optimisation based approach. European Journal of Operational Research 131 (3), 559–571.
  • Fagerholt et al. [2010] Fagerholt, K., Laporte, G., Norstad, I., 2010. Reducing fuel emissions by optimizing speed on shipping routes. Journal of the Operational Research Society 61 (3), 523–529.
  • Glover [1992] Glover, F., 1992. New ejection chain and alternating path methods for traveling salesman problems. Computer Science and Operations Research. New Developments in Their Interfaces, 491–508.
  • Guan and Cheung [2005] Guan, Y., Cheung, R. K., 2005. The berth allocation problem: Models and solution methods. Container Terminals and Automated Transport Systems: Logistics Control Issues and Quantitative Decision Support, 141–158.
  • Guo et al. [2022] Guo, L., Zheng, J., Du, H., Du, J., Zhu, Z., 2022. The berth assignment and allocation problem considering cooperative liner carriers. Transportation Research Part E: Logistics and Transportation Review 164, 102793.
  • Hellsten et al. [2020] Hellsten, E. O., Sacramento Lechado, D., Pisinger, D., 2020. An adaptive large neighbourhood search heuristic for routing and scheduling feeder vessels in multi-terminal ports. European Journal of Operational Research 287 (2), 682–698.
  • Imai et al. [2005] Imai, A., Sun, X., Nishimura, E., Papadimitriou, S., 2005. Berth allocation in a container port: using a continuous location space approach. Transportation Research Part B-methodological 39 (3), 199–221.
  • IMO [2018] IMO, April 2018. Initial IMO strategy on reduction of GHG emissions from ships. Tech. Rep. MEPC.304(72), International Maritime Organization, (Accessed on 04.05.2020).
    URL http://www.imo.org/en/OurWork/Environment/PollutionPrevention/AirPollution/Pages/GHG-Emissions.aspx
  • Iris and Lam [2018] Iris, C., Lam, J. S. L., 2018. Models for continuous berth allocation and quay crane assignment: Computational comparison. Ieee International Conference on Industrial Engineering and Engineering Management 2017-, 374–378.
  • Iris et al. [2017] Iris, C., Pacino, D., Røpke, S., 2017. Improved formulations and an adaptive large neighborhood search heuristic for the integrated berth allocation and quay crane assignment problem. Transportation Research. Part E: Logistics and Transportation Review 105, 123–147.
  • Kim and Moon [2003] Kim, K. H., Moon, K. C., 2003. Berth scheduling by simulated annealing. Transportation Research Part B: Methodological 37 (6), 541–560.
  • Kordić et al. [2016] Kordić, S., Davidović, T., Kovač, N., Dragović, B., 2016. Combinatorial approach to exactly solving discrete and hybrid berth allocation problem. Applied Mathematical Modelling 40 (21-22), 8952–8973.
  • Lalla-Ruiz et al. [2016] Lalla-Ruiz, E., Melián-Batista, B., Moreno-Vega, J. M., 2016. A cooperative search for berth scheduling. Knowledge Engineering Review 31 (05), 498–507.
  • Lim [1998] Lim, A., 1998. The berth planning problem. Operations Research Letters 22 (2-3), 105–110.
  • Lyu et al. [2022] Lyu, X., Negenborn, R. R., Shi, X., Schulte, F., 2022. A collaborative berth planning approach for disruption recovery. Ieee Open Journal of Intelligent Transportation Systems 3, 153–164.
  • Marine Traffic [2023] Marine Traffic, 2023. Port Calls Data. https://www.marinetraffic.com/en/data/, accessed: 2023-01-14.
  • Martin-Iradi et al. [2022a] Martin-Iradi, B., Pacino, D., Ropke, S., 2022a. The multi-port continuous berth allocation problem with speed optimization. In: de Armas, J., Ramalhinho, H., Voß, S. (Eds.), Computational Logistics. Springer International Publishing, Cham, pp. 31–43.
  • Martin-Iradi et al. [2022b] Martin-Iradi, B., Pacino, D., Ropke, S., 2022b. The multiport berth allocation problem with speed optimization: Exact methods and a cooperative game analysis. Transportation Science 56 (4), 972–999.
  • Meisel and Bierwirth [2009] Meisel, F., Bierwirth, C., 2009. Heuristics for the integration of crane productivity in the berth allocation problem. Transportation Research Part E: Logistics and Transportation Review 45 (1), 196–209.
  • Potvin and Rousseau [1993] Potvin, J., Rousseau, J., 1993. A parallel route building algorithm for the vehicle-routing and scheduling problem with time windows. European Journal of Operational Research 66 (3), 331–340.
  • Rego [1998] Rego, C., 1998. A subpath ejection method for the vehicle routing problem. Management Science 44 (10), 1447–1459.
  • Ropke and Pisinger [2006] Ropke, S., Pisinger, D., 2006. An adaptive large neighborhood search heuristic for the pickup and delivery problem with time windows. Transportation Science 40 (4), 455–472.
  • Shaw [1998] Shaw, P., 1998. Using constraint programming and local search methods to solve vehicle routing problems. Lecture Notes in Computer Science 1520, 417–431.
  • Ship & Bunker [2022] Ship & Bunker, 2022. Global Average Bunker Price - VLSFO. https://shipandbunker.com/prices/av/global/av-g20-global-20-ports-average, accessed: 2022-12-18.
  • Steenken et al. [2004] Steenken, D., Voß, S., Stahlbock, R., 2004. Container terminal operation and operations research - a classification and literature review. Or Spectrum 26 (1), 3–49.
  • Sun et al. [2018] Sun, B., Niu, B., Xu, H., Ying, W., 2018. Cooperative optimization for port and shipping line with unpredictable disturbance consideration. Icnc-fskd 2018 - 14th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery, 8686901, 113–118.
  • UNCTAD [2020] UNCTAD, 2020. Review of maritime transport 2020. Tech. rep., UNCTAD.
  • Venturini et al. [2017] Venturini, G., Iris, C., Kontovas, C. A., Larsen, A., 2017. The multi-port berth allocation problem with speed optimization and emission considerations. Transportation Research. Part D: Transport and Environment 54, 142–159.
  • Wang et al. [2015] Wang, S., Liu, Z., Qu, X., 2015. Collaborative mechanisms for berth allocation. Advanced Engineering Informatics 29 (3), 572, 332–338.
  • Yu et al. [2022] Yu, J., Tang, G., Song, X., 2022. Collaboration of vessel speed optimization with berth allocation and quay crane assignment considering vessel service differentiation. Transportation Research Part E: Logistics and Transportation Review 160, 102651.