• No results found

Multi-Port Stowage Planning under Route Uncertainty

N/A
N/A
Protected

Academic year: 2021

Share "Multi-Port Stowage Planning under Route Uncertainty"

Copied!
28
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Multi-Port Stowage Planning under Route

Uncertainty

By Eelco Timmerman

Abstract

This paper considers the stowage problem of a container ship that visits a

set of seaport terminals sequentially, loading and unloading containers at each

of them.

Before departure the route within the sea port is uncertain; however,

the stowage plans must be devised before setting sail.

The goal of the problem

is to maximize the total number of containers transported and to minimize a

penalty cost for the number of re-handling operations. Such an operation occurs

when a container has to be unloaded temporarily and loaded back after.

The

uncertainty of the route makes it a complex task to find a stowage plan that limits

overstowage and maximizes the utilization of the ship.

We therefore develop

a multi-phase heuristic for both the creation of a robust starting stowage as

for the (un)loading operations at the sea terminals.

The heuristic can be seen

as an extension of the heuristic developed by Ding and Chou (2015), who did

not include stability restrictions, and shows the capability to generating good

stowage plans for realistic instances.

It outperforms a simple greedy heuristic

with an average gap of 25.4% and has a gap of slightly over 5% with the optimal

solution for small instances found by an MILP solver.

(2)

Master’s Thesis Econometrics, Operations Research and Actuarial Studies Supervisor: Dr. Ir. S. Fazi

(3)

Contents

1 Introduction 3

2 Literature Review 4

2.1 The Container Stowage Problem . . . 4

2.2 Inland Shipping . . . 5

2.3 Contribution . . . 6

3 Problem Description 6 4 Mathematical Model 9 5 A Heuristic Approach 12 5.1 Phase 1: Creating the Starting Stowage . . . 13

5.2 Phase 2: Loading Operations at the Sea Terminals . . . 15

5.2.1 Placement Rules . . . 16

5.2.2 The MVSD Algorithm . . . 17

5.3 A Basic Greedy Heuristic . . . 18

(4)

1

Introduction

In this paper, we study the container stowage problem. In the last couple of decades, globalization has greatly stimulated international trade. Since container shipping is the cheapest form of transport in most situations, the majority of international transport goes through waterways (Roso, Woxenius, and Lumsden 2009). As multinational companies increasingly adopt outsourcing- and offshoring strategies, the demand for intercontinental transport has risen accordingly (Fransoo and Lee 2013), thereby increasing the importance of efficiently shipping goods, not only from a business perspective, but also from an environmental and a regulatory perspective. Nonetheless, inefficiencies remain commonplace, especially in the field of inland shipping. In the port of Rotterdam for example, one of the reasons for these inefficiencies is an inadequate communication between terminals, resulting in delays due to peak loads. The congestion in sea ports has led to the growing importance of inland terminals that are directly connected to a sea port, which is also known as the dry port concept (Roso, Woxenius, and Lumsden 2009). Recently it has also led to the rise of Nextlogic, a company that aims to provide an integral planning connecting terminal operators, depot operators and barge operators. One can imagine that when a terminal is overloaded due to peak loads, it is sometimes better to visit a different terminal first. However, containers may be stacked sub-optimally for this other terminal, such that additional handling operations have to be carried out to unload the barge. We therefore study the effect of route changes in inland shipping in this paper.

The container stowage problem in general can be defined as the problem of how to allocate containers on a container ship (Fazi 2018). In this paper, we consider a barge sailing a round trip, starting and ending at an inland terminal. Before departure from the inland terminal, export containers are loaded. During its trip, the ship visits the given set of sea terminals to unload export containers and to load import containers destined for the inland terminal. The route is defined as the order in which the barge visits the sea terminals. However, the route is unknown until after departure from the inland terminal. This implies that we face a two-stage recourse problem. The first stage involves the allocation of the export containers at the inland terminal when the route is unknown. In the second stage, after the route has been revealed, optimal loading operations at the different sea terminals have to be determined. The core of the problem lies in the first stage especially, as this is the part that deals with uncertainty. The stochasticity of the problem at hand can lead to overstowage, which occurs when a container blocks a container that has to be unloaded. For example, if containeri is placed on top of container j, container j can only be unloaded after container i is also unloaded. Overstowage leads to time-consuming and costly re-handling operations, hence it is something we want to penalize in our model. Furthermore, since we consider inland barges, we also aim to generate stowage plans that provide stability to the barge. Finally, the goal of our study is to generate stowage plans that provide stability, maximize the number of containers transported and minimize a penalty for the containers in overstowage.

The stowage problem for inland shipping has been researched previously. For example, Li, Zhang, and Ji (2017) tackle the container stowage problem for an inland container ship on the Yangtze River. They split their problem in two parts, where the first sub-problem is to assign containers to a specific bay on board. This can reduce the number of occupied bays and balances the weight. The second sub-problem is then how to assign containers to their specific location. Also Li, Zhang, Ma, et al. (2018) aim to maximize the number of containers on an inland container ship. They do not allow any overstowage and take the uncertainty of container weights into account. Lastly, Fazi (2018) considers a problem in inland shipping, tackling the same setting proposed in this thesis, but he considers the rotation of the barges to be deterministic, with no overstowage allowed. There are no papers that study the effect of route changes in inland shipping, highlighting a clear gap in the literature. The contribution of this thesis is to extend the model of Fazi (2018) to account for unexpected route changes. This could potentially increase the number of containers transported and further decrease the amount of overstowage in real world situations.

(5)

first phase it allocates containers when the route is still uncertain, so it decides upon the first stage decision variables of the recourse problem. The second phase takes these first stage decision variables as input, and then optimizes loading operations at the seaport terminals when the route is already known. By means of an experimental framework, we first show the benefits of using a stochastic approach versus a deterministic one by analysing the value of the stochastic solution(VSS) and the expected value of perfect information(EVPI). Second, we show the potential of our methodology by finding good solutions against a practical greedy algorithm and show the gap with the optimal solution. Finally, we analyse the effects of the stochasticity on the performance of our algorithm in various scenarios, such as with a different number of routes, different probabilities attached and different barge characteristics.

This paper is structured as follows. In the next section, an overview of literature on the container stowage problem is provided. This leads to the problem description as presented in Section 3. Then, Section 4 presents the mathematical model. Section 5 describes the proposed heuristic, after which the results of the computational experiments are presented in Section 6. Finally, Section 7 provides a conclusion, and in Section 8 we present our limitations and recommendations for future research.

2

Literature Review

In this section we provide an overview of the scientific literature on the subject of the container stowage problem. We provide a classification of the studies on maritime container transport in Section 2.1, to which the largest share of the literature is devoted. Then, since our setting focuses on inland shipping, we provide an overview of the relevant studies on this topic in Section 2.2. Finally, in Section 2.3 we elaborate on the gap in the literature this paper aims to address.

2.1

The Container Stowage Problem

For maritime container vessels, the assignment of containers can generally be separated in two phases (Monaco, Sammarra, and Sorrentino 2014). In the first phase, the shipping line planner devises a stowage plan that allocates containers types to certain vessel positions. A container is classified as a type based on its weight or size. In the second phase, the terminal planners matches specific containers of the relevant type assigned in phase 1 to a vessel position, and coordinates the loading operations.

In the first phase, a common goal is to minimize re-handling operations. These operations occur when a container needs to be temporarily removed from the vessel, to make room for another container. Not only is this a time-consuming practice, it also leaves a dock occupied, further decreasing efficiency (Avriel et al. 1998). Consequently, research on the first phase in maritime shipping CSP has been focused on minimizing re-handling through placement heuristics. Avriel et al. (1998) developed a suitable suspensory heuristic for this, in which each container is loaded according to a single-pass placement in a sequential manner. Ding and Chou (2015) improved this model by introducing a new heuristic for the same set of assumptions. However, in both studies only standard sized containers were considered and no stability restrictions were imposed. Dubrovsky, Levitin, and Penn (2002) developed a genetic algorithm which improves an initial solution step by step, mixing elements of previous solutions to find an optimal stowage plan. While this algorithm does not take into account stability requirements or container weights, it can solve randomly created instances from 500-1000 twenty-foot equivalent units(TEU) in 30 minutes. The studies mentioned above can be classified as single model approaches, in which the algorithm immediately finds a solution for the problem.

(6)

a Tabu Search algorithm. Another decomposition model is presented by Kang and Kim (2002), using a similar process. However, other than Wilson and Roach (1999), they solve this one by one iteratively, instead of for all terminals at once. This allows the “block assignment algorithm” to pass on information to the “slot assignment algorithm” after each terminal is solved, in order to optimize the solution. This way, instances of over 4000 TEU and 8 ports were solved within 640 seconds. Evidently, both single model approaches and decomposition model approaches can deliver satisfactory results. It depends on the specific circumstances which approach yields superior results. Decomposition approaches are generally superior in studies aiming for an optimal solution, while single model approaches are general superior in studies using heuristics.

In the second phase, specific containers are matched to a vessel position of the relevant type. Here, containers should be matched in such a way that the loading sequence is optimal, with minimal re-handling required. Ambrosino, Sciomachen, and Tanfani (2004) do this by adopting a single model with an integer linear programming approach, considering 20’- and 40’-sized containers with three weight classes. Stability restrictions are dealt with indirectly by forcing heavy containers to sit below light containers. They are able to solve instances of 188 TEU in a reasonable amount of time. The downside of this model is that it only considers the current port. Ambrosino, Sciomachen, and Tanfani (2006) adopt a decomposition model consisting of three phases. In the first phase, containers with the same destination are assigned to the same bay. In the second phase, an IP-model is used to assign the containers to specific slots. In the third phase, a local search algorithm is used to swap containers, if that is needed to improve stability. Sciomachen and Tanfani (2003) were the first to investigate the similarity between the Bin Packing Problem and the CSP, and proposed a Bin Packing heuristic that includes 20-foot, 40-foot and high-cube containers. They divided the vessel in such a way that containers of similar length and destination are stacked in the same section. They considered only one port and solved instances of about 1800 TEU. Additionally, the possibility of using an exact approach has been researched. Aslidis (1990) aimed to minimize the amount of overstowage using an exact approach, but came to the conclusion that it did not lead to an optimal solution due to the high complexity of the problem when realistic instances are considered. Finally, Liu et al. (2011) combine a placement heuristic with local search. They generate an initial solution using the placement heuristic which they then iteratively improve using a Tabu Search to satisfy stability requirements. They perform a multi-objective optimization, considering in their multi-objective the number of re-handling operations, completion time of the longest crane, number of idle slots and the number of columns that exceed the weight limit.

2.2

Inland Shipping

(7)

problem in inland shipping remains scarce. Next, we present a short overview of relevant findings on the stowage problem in inland shipping.

Li, Zhang, and Ji (2017) use a two-phase model to study inland shipping on the Yangtze river with multiple inland ports. They consider uncertainties in container weights and find that the exact approach and the hybrid neighborhood search algorithm provide the best results. On a larger scale, the neighbourhood search starts to outperform the exact approach, however. Li, Zhang, Ma, et al. (2018) adopt a mathematical programming approach to address a multi-port scenario with two container sizes. While they are able to find stowage plans for up to 800 TEU vessels, details of the runtime are not provided. Fazi (2018) decomposes his problem in two parts. The first part optimizes container pick-up and -delivery problems, for which a hybrid Variable Neighborhood Search metaheuristic is developed. The second part coordinates the loading sequence at respective ports, which is iteratively solved via branch-and-cut. Such specific attention to the loading operations are useful because it allows for greater stability. This approach allowed them to solve real world instances of up to 200 TEU, without re-handling operations and within a reasonable amount of time.

2.3

Contribution

The main contribution of this paper is to study the effect of route changes in inland shipping. To the best of our knowledge, no research has been conducted on an identical problem. However, given the current congestion in for example the port of Rotterdam, a deeper understanding of this phenomenon can be seen as a clear contribution to the state of the literature. Here we describe closely related literature and differences between their setting and ours.

First of all, we adopt the setting from a case study by Fazi (2018). However, we drop their assumption of a deterministic route and we allow for the re-handling of containers: overstowage. A downside of our approach is that stability regulations are dealt with only indirectly, which is suboptimal but which would satisfy actual regulation most of the time.

For minimizing overstowage, we find inspiration in a study by Ding and Chou (2015). They too consider a container ship visiting multiple ports, loading and unloading containers at each, whilst they aim to minimize the number of re-handling operations. There exist three main distinctions between their setting and ours. The first is their assumption that every container can and must be taken on board. In our setting, however, we can decide freely which containers to take. The second is that they do not consider vertical weight restrictions, which implies that the only factor playing a role in a container’s loading position is its destination. In contrast, we require that each container is stacked upon a container that is at least equally heavy. The last is that they assume a fixed route, such that the order of unloading is always clear.

The study by Li, Zhang, Ma, et al. (2018) is the only study in the literature that considers a stochastic problem setting in inland shipping, which they solve by means of a heuristic and stochastic programming approach. However, the uncertainty in their study involves the container weights and not the route. Furthermore, they prevent overstowage by forcing containers with a similar destination in the same stack, whereas we do allow containers with different destinations in one stack.

3

Problem Description

(8)

Figure 1: A typical voyage

which can be loaded at the start of the voyage. Then for allk ∈ N \ {0}, terminal k contains a set of import containers that can be loaded, defined asIk, and has a set of export containers that can be unloaded there, defined asEk. The loading of any given container is optional, but once on board it must be unloaded at its destination. An example of a typical voyage of a barge can be seen in Figure 1, which consists of three sea terminals and two routes. Due to the unpredictable availability of the sea terminals, the route is unknown beforehand, and will be revealed right after departure from the inland terminal. LetR be the set of possible routes, where each router ∈ R is taken with a probability of p

r. A route is defined by the order in which the

terminals are visited, and it always starts and ends at the inland terminal. We define an arc as a directed segment from one terminal to another. That is, the connection from terminalj to terminal k is defined by the arc (j, k). Let all arcs included in route r be obtained in the set Ar. That is, if and only if in router, terminalk is visited rightly after terminal j, then ( j, k) ∈ Ar. Finally, if a sea terminal is the last terminal to be visited in a certain route, we denote it byk.

The route uncertainty implies that we face a two-stage recourse problem. Because the loading of the export containers at the inland terminal happens when the route is still uncertain, it constitutes the first stage. During the loading operations at the sea terminals the route is known, so those can be seen as the recourse actions. The difficulty lies especially in the creation of the starting stowage, since the uncertainty of the route prevents us from stacking containers in the order that they have to be unloaded, resulting in necessary re-handling operations at the sea terminals.

(9)

Figure 2: An overview of the flow of the heuristic

To indicate the position of a container on board we define a set of baysX, a set of rows Y, and a set of tiersZ. The x-axis is measured from the bow to the stern, the y-axis from one side to another. A slot is defined as a(x, y, z) coordinate on the barge and specifies the possible position of one specific container on board, where x ∈ X, y ∈ Y and z ∈ Z. Furthermore, in order to coordinate whether some part of the barge needs more weight, we define four regions on board. In case the barge containsn bays, with n being an even number, we define the setXA, the back of the barge, as the collections of all bays with an index in{1, . . . , (n

2 − 1)}, and the set X

P, the front of the barge, as the collections of all bays with an index

in{n

2, . . . , n}. In case n is uneven, we define the set X

A as the collections of all bays with their index in

{1, . . . ,n2}, and the set XPas the collections of all bays with their index in{(n

2



+ 1), . . . , n}. Note that the middle bay is now not obtained in either of the two, as it does not effect the balance of the barge. Similarly,

in case the barge containsm rows, with m being an even number, we define the set YL, the left side of the barge, as the collections of all rows with their index in {1, . . . , (m

2 − 1)}, and the set Y

R, the right side of

the barge, as the collections of all rows with an index in{m

2, . . . , m}. In case m is uneven, we define the set

YLas the collections of all rows with an index in{1, . . . ,m

2



}, and the set YR as the collections of all rows with an index in{(m

2



+ 1), . . . , m}. Also here the middle row is not obtained in either of the two sets. An example indicating the bays, rows and tiers of a container ship can be found in Figure 2. A similar figure can be found in the paper by Kang and Kim (2002).

We consider four types of stability restrictions, which can also be found in Ambrosino, Sciomachen, and Tanfani (2006). First of all, we require that in any stowage, the combined weight of all containers cannot exceedQ1. Cross balance requirements force the entire left and the entire right side of the barge to differ not more in weight than the pre-established value ofQ2. Horizontal balance-requirements force the stern and the bow side of the barge to differ not more thanQ3 in weight. Lastly, we require that a container is always put on top of a container which is at least as heavy, in order to force the gravitational center of the barge downwards.

(10)

On the one hand we want to maximize the number of containers transported, on the other hand could more containers on board lead to more overstowage.

The objective value which we aim to maximize is the total number of containers transported, minus the penalty costs for the containers in overstowage.

Sets

C Set of all containers

N Set of terminals

R Set of routes

Ar Set of arcs included in router

E Set of export containers

I Set of import containers

Ek Set of export containers with as destination terminalk

Ik Set of import containers with as origin terminalk

X,Y,Z Sets of bays, rows and tiers

XA Set of bays at the back of the boat

XP Set of bays at the front of the boat

YL Set of rows at the left side of the boat

YR Set of rows at the right side of the boat

Parameters

pr Probability that router is taken α Weighing factor

wi The weight of containeri k The last sea terminal of a route

Q1 Maximum total container weight in a stowage

Q2 Maximum weight difference between the front and the back

Q3 Maximum weight difference between the left and the right

Variables

Six yz Binary variable which equals 1 if and only if containeri is located in (x, y, z) in the starting stowage

δi

x yzkr Binary variable which equals 1 if and only if containeri is in location (x, y, z)

after loading, before departure, at terminalk ∈ N and route r ∈ R γi

x yzkr Binary variable which equals 1 if and only if containeri is in location (x, y, z)

after unloading, before loading, at terminalk ∈ N and route r ∈ R

Table 1: An overview of all sets, parameters and variables in the mathematical model.

4

Mathematical Model

To reflect the starting stowage plan, the stowage plan when the barge just leaves the inland terminal, we use the binary variableSi

x yz, which equals 1 if and only if containeri is stowed in slot (x, y, z). These are

the variables in the first stage of the recourse model. To specify the stowage plans at the sea terminals, we use the binary variablesγi

x yzkr andδ i

x yzkr. These are the variables that in the second stage of the recourse

model. Here γi

x yzkr equals 1 if and only if containeri is located in slot (x, y, z) at terminal k in route r,

after the unloading operations have finished, but before the loading operations take place. Similarly,δi

x yzkr

(11)

has taken place, before departing. We assume that at each terminal, all unloading operations happen prior to the loading operations, which does not necessarily reflect the order of operations in the real world. An overview of all sets, parameters and variables is provided in Table 1. We define the objective function as:

max Õ x∈X Õ y∈Y Õ z∈Z Six yz+ Er[ g(Six yz, r)] (1)

We define the optimal value from the second-stage problem,g(Six yz, r), as:

g(Six yz, r)  max Õ x∈X Õ y∈Y Õ z∈Z δi x yzkr −αÕ k∈N (Õ i∈C Õ x∈X Õ y∈Y Õ z∈Z δi x yzkr −Õ i∈C Õ x∈X Õ y∈Y Õ z∈Z γi x yzkr− Õ i∈Ik Õ x∈X Õ y∈Y Õ z∈Z δi x yzkr) (2)

The constraints are given by:

(12)

Õ x∈X Õ y∈Y Õ z∈Z δi x yz jr  Õ x∈X Õ y∈Y Õ z∈Z δi x yzkr ∀i ∈ C \ (Ek∪ Ik), j ∈ N, k ∈ N, (j,k) ∈ Ar, r ∈ R (16) δi x yz jr ≥γix yzkr ∀i ∈ C, j ∈ N, k ∈ N, (j,k) ∈ Ar, r ∈ R, x ∈ X, y ∈ Y, z ∈ Z (17) γi x yzkr≤ δ i x yzkr ∀i ∈ C, k ∈ N, r ∈ R, x ∈ X, y ∈ Y, z ∈ Z (18) Õ i∈C Õ x∈X Õ y∈Y Õ z∈Z wiSix yz ≤ Q1 (19) Õ i∈C wiSix yz ≤ Õ i∈C wiSix y,z−1x ∈ X, y ∈ Y, z ∈ Z \ {1} (20) −Q2≤ Õ i∈C Õ x∈XA Õ y∈Y Õ z∈Z wiSix yz− Õ i∈C Õ x∈XP Õ y∈Y Õ z∈Z wiSx yzi ≤ Q2 (21) −Q3≤ Õ i∈C Õ x∈X Õ y∈YL Õ z∈Z wiSx yzi − Õ i∈C Õ x∈X Õ y∈YR Õ z∈Z wiSix yz ≤ Q3 (22) Õ i∈C Õ x∈X Õ y∈Y Õ z∈Z wiδix yzkr ≤ Q1 ∀k ∈ N, r ∈ R (23) Õ i∈C wiδix yzkr ≤ Õ i∈C wiδix y,z−1,krk ∈ N, r ∈ R, x ∈ X, y ∈ Y, z ∈ Z \ {1} (24) −Q2≤ Õ i∈C Õ x∈XA Õ y∈Y Õ z∈Z wiδix yzkr− Õ i∈C Õ x∈XP Õ y∈Y Õ z∈Z wiδix yzkr ≤ Q2 ∀k ∈ N, r ∈ R (25) −Q3≤ Õ i∈C Õ x∈X Õ y∈YL Õ z∈Z wiδix yzkr− Õ i∈C Õ x∈X Õ y∈YR Õ z∈Z wiδix yzkr≤ Q3 ∀k ∈ N, r ∈ R (26)

The objective function (1) aims to maximize the sum of the loaded export containers and the expectation of the optimal value of the second stage problem. The second stage problem (2) maximizes the number of import containers transported in the first term, which can be calculated as the number of containers on board when departing from the last sea terminal, the second term aims to minimize the total number of shifts, it is multiplied by a penalty costα. The number of shifts for any terminal k is stated in brackets and is calculated as the total number of containers on board after loading, minus those containers that were on board between unloading and loading, minus the number of import containers that were picked up at that terminal.

(13)

exceed the maximum capacityQ1. Constraints (20) impose that a container cannot be put on top of a lighter container. Constraints (21) impose that the front and the back of the barge cannot differ more thanQ2in weight, where constraints (22) impose that the left and the right side of the barge cannot differ more thanQ3 in weight. These stability constraints also need to hold every time the barge leaves a terminal, in every route, which is imposed in a similar manner by constraints (23), (24), (25) and (26). Note that these constraints do not need to hold for the stowage plans after unloading, since the loading operations are still in progress then.

5

A Heuristic Approach

In this section we describe the two heuristics that we have developed. A heuristic approach seems ap-propriate since a preliminary analysis showed the limitations of solving this problem with an industrial branch-and-cut solver. This is due to the high complexity of the problem at hand, as there are many different ways to create a stowage plan, especially since voluntary shifts are allowed. We use the main heuristic to provide good solutions to the problem at hand. The second heuristic is a basic greedy heuristic, which we use for benchmarking purposes. The basic greedy heuristic is explained in more detail in Section 5.3.

The flow of the processes in the main heuristic is illustrated in Figure 3, it consist of two phases. The first phase is illustrated by the light grey box on the left-hand side. It takes place entirely at the inland terminal. For this phase, the export containers are given as input, which are then allocated to the barge. The output will be the starting stowage, which subsequently functions as the starting point for every route. The exact procedures to create the starting stowage are further explained in Section 5.1. The second phase is illustrated by the dark grey box on the right-hand side. This phase of the algorithm is invoked at the sea terminals. It takes the starting stowage as input, which is the stowage upon arrival at the first sea terminal for every route. It then performs the loading operations at each sea terminal, for all routes, in such a way that each stowage plan in every possible route is calculated. Finally it calculates the objective value. The second phase is described in more detail in Section 5.2.

In general, studies aiming to find solutions for the container stowage problem can be categorized in two groups: those who use a single-model approach and those who decompose their model in multiple phases (Pacino and Jensen 2012). For example, in Li, Zhang, and Ji (2017) they tackle the container stowage problem for inland shipping in two phases, obtaining good results. Also multi-phase approaches are not uncommon, as for example in the study by Ambrosino, Sciomachen, and Tanfani (2006), which decomposes their problem into three phases. In our paper, we opt for a two-phase approach as a result of preliminary experiments. That is, experiments have shown that iteratively making small adjustments in the starting stowage, each time updating all subsequent stowage plans, does not improve the objective value. It does have a substantial effect on the calculation time, however, which is why the starting stowage is not altered anymore after the exchanging of columns. Before diving into more detail in the next subsections, we first define some necessary terminology. We define a container that has to be unloaded at terminalk as a

(14)

Figure 3: An overview of the flow of the heuristic

Skand to the starting stowage, the stowage plan when departing from the inland terminal, withS0. At every terminal we first unload all containers before we start loading new ones. Right before a loading process at any terminal starts, there exists a set of containers eligible for loading. We refer to this to set as the trying set. At the inland terminal, the trying set contains all containersi for which i ∈ E. At any sea terminal k, the trying set contains both the shifted containers and all containersi for which i ∈ Ik.

5.1

Phase 1: Creating the Starting Stowage

The first phase of the algorithm is called when the barge is at the inland terminal, at the start of its voyage, when the route is still uncertain. It takes the set of export containers as input, and aims to allocate them in such a way on the barge that it creates a good starting stowage. After completion, the starting stowage will be the stowage plan upon arrival at the first sea terminal of each route. When building the starting stowage we aim to load as many export containers as possible whilst stacking them in such a way that the expected number of shifts is minimal. In general, the latter is achieved when containers with the same destination are stacked in the same column as much as possible, which is also the intuitive strategy of the barge planners at the moment. A pseudo code for the first stage can be found in Algorithm 1, of which a description is provided below.

The first step in creating the starting stowage is to sort the export containers. We sort them based on two characteristics: first on their expected time of unloading and then on their weight. Let us consider to allocate containeri, which is a k-container. If we expect to visit terminal k near the end of the voyage, we aim to stow containeri early. To this end, we calculate the expected position in the voyage of each terminal. This position is indicated by a high number when we expect to visit a terminal closer to the end of the voyage. We denote the expected position of terminalk as fk, which can be calculated by: fkr∈Rpr∗ rk. Herepr is the probability that router is taken, and rkis the position of terminalk in route r. The k-containers for which fk ≥ fj∀j ∈ N, are stowed first. After the containers are sorted by their expected time of unloading, we sort those containers with the same destination by weight. That is, we sort them in such a way that from the containers with the same destination, the heaviest containers are loaded first. Once they are sorted, we allocate them according to three rules.

Consider we aim to stow containeri with destination k.

Rule 1. If a k-top eligible feasible column exists, load container i there, hereby prioritizing light-top columns

(15)

Rule 2. If an empty column exists, place container i there. If not, go to rule 3.

Rule 3. Allocate container i on top of a container with the furthest expected destination. That is, let K be

the set of all terminals for which an eligiblek-top column exists, where k ∈ K. Then allocate container i on top of some container j, where container j is an l-container such that fl ≥ fn∀n ∈ K, l ∈ K. If a container cannot be loaded this way, all slots on board are occupied and the container cannot be placed.

At the end of the loading process, it could occur that the total weight of all stowed containers exceeds

Algorithm 1 Creating the Starting Stowage

1: Input: Export containers 2: Sort export containers

3: while Barge is not full & Trying set is not empty do: 4: Allocate export container according to placement rules

5: end

6: while Total container weight on board exceeds Q do:

7: if Some container i in the trying set is lighter than some container j on board 8: Unload containerj

9: Load containeri

10: else

11: Unload container

12: end

13: while Balance constraints are not met 14: Swap columns

15: end

16: Output: Starting stowage (S0)

the maximum valueQ. If this is the case we have to reduce the total container weight on board. When in the process of reducing the total container weight on board, we consider two cases. In the first case there exist both a containeri in the remaining containers of the trying set and a container j on board in such a way thatwi < wj. If there are multiple containers j satisfying this requirement, we select it such that it has the same destination as containeri if possible, otherwise we select any other. We now remove container j from the barge and update the column in which it was stowed. That is, the position of some containers possibly has to be updated such that they are not located above an empty slot. More specifically, if containerk was located above containerj in the same column in position (x, y, z), the new position of container k becomes (x, y, z − 1). We now allocate container i according to the three placement rules as described earlier. In the second case we consider that there does not exist both a containeri in the remaining containers of trying set and a container j on board such that wi < wj. We now pick any containerj such that wj ≥ wk, for all containersk on board. We remove container j from the barge and update the column it was in. This process of swapping and unloading containers continues until the total weight of all containers on board is equal or less thanQ.

At this point, the horizontal and cross stability constraints might still not be satisfied. In order to satisfy these, we now sequentially call one of the three operators below until stability is reached, which are similar to those proposed in the exchange algorithm by Ambrosino, Sciomachen, and Tanfani (2006).

Bay exchange. We take the heaviest column from region XA(XP) and place it in an empty column in region

XP (XA). If an empty column does not exist, we interchange the column with the lightest column from regionXP(XA).

Row exchange. We take the heaviest column from region YL(YR) and place it in an empty column region

YR(YL). If an empty column does not exist, we interchange the column with the lightest column from region

YR(YL).

(16)

they-axis from the barge.

If the stern and the bow differ too much in weight but the left and right side of the barge are in balance, we call the bay exchange operator. In case the left and the right side of the barge differ too much in weight but the bow and the stern are in balance, we call the row exchange operator. If both the horizontal as well as the cross balance constraints are not satisfied, we call the cross exchange operator. Finally, we repeat this process of interchanging columns until we reach stability. The starting stowage will now be passed on to the second phase and function as the starting point to generate future stowage plans at the sea terminals.

5.2

Phase 2: Loading Operations at the Sea Terminals

The second phase of the algorithm gets called after the barge departs from the inland terminal and the route is known. Given the initial stowage planS0, it generates a series of stowage plans{S1, . . . , SN} for each route. HereSkreflects the stowage plan when the barge departs from terminalk. We provide an overview of how the (un)loading operations at some terminalk are performed in the form of a pseudo code, as shown in Algorithm 2. These operations are performed for all terminals and all routes.

From the algorithm it becomes clear that each terminal receives a stowage plan as it was when the barge left the previous terminal, henceSk =Sk−1. Then, before loading any container, first all containersi, withi ∈ Ek, and those containers blocking them, are unloaded. The shifted containers need to be loaded back on and are therefore added to the setIk, which together now form the trying set. The trying set is sorted before loading. Here we prioritize heavy containers over light containers and, for containers of equal weight, further destinations over closer destinations. After sorting, the containers from the trying set are allocated one by one according to a set of placement rules. This set of placement rules is further specified in Section 5.2.1. If it happens that the number of shifted containers in the trying set equals the number of free slots available on board, we remove the import containers from the trying set. This is important because it prevents us from creating a situation where it is unfeasible to load the shifted containers back. The placement rules may not be able to load all containers from the trying set. In this case, the containers that are leftover will be handled by the MVSD algorithm, which will be further clarified in Section 5.2.2.

Algorithm 2 Generating a Stowage Plan at Sea Terminal k

1: Input: Sk−1 2: Sk=Sk−1

3: Unload all export- and blocking containers fromSk

4: Sort the trying set

5: for(Containers in trying set):

6: if(Number of free slots = number of shifted containers in trying set) 7: Remove the import containers from the trying set

8: end if

9: Allocate container using the placement rules

10: end for

11: while(Free slots available & Trying set is not empty) do: 12: Run the MVSD algorithm

(17)

5.2.1 Placement Rules

The containers from the trying set are one by one allocated by the placement rules as are described below. The aim of these rules is to allocate the containers in an efficient manner, such that the number of shifts at future terminals is minimized. They are therefore set up in such a way that they do not transform an in order column into an out of order column, and if a column is already out of order it will not further increase the blocking number. Containers that cannot be placed according to these rules are left for the MVSD algorithm.

We developed our placement rules based on those from the paper by Ding and Chou (2015). There exist a couple of differences. First of all, they do not consider containers to differ in weight, such that the destination of a container is the only factor deciding where it will be allocated. In our case, for example, the choice to allocate containeri, a j-container in an empty column rather than in a k-top in order column, with k > j, depends on wi. Furthermore they assume a feasible transportation matrix, such that all containers can always be allocated whilst in our setting, we have to make choices between containers and therefore we remove containers from the trying set at some point. Finally, they also allocate a j-container on top of a k-container, where j > k. In our study, containers are never placed in a blocking position when allocated by the placement rules. Containers that cannot be placed in a non-blocking position are allocated by the MVSD algorithm instead.

We also have similarities. For example, when we allocate a heavy exportj-container, the preference of a j-top in order column over an empty column, an empty column over a k-top in order column and a k-top in order column over ak-top out of order column are similar. Where j < k. Furthermore, we both have special rules for when a container has the final terminal as its destination. In our case this is visible in the distinction between export and import containers, as can be seen in Table 2.

Let us consider allocating containeri, with terminal k as destination. Table 2 indicates which rules apply for each container type. A column indicates bothwi and whether container i is an export- or an import container. An overview of the abbreviations is provided in the description below. The flow of the procedure is as follows. We first try to allocate containeri according to rule 1. Only if this does not succeed we continue to rule 2, etc. If we are also not able to allocate containeri according to rule 4, it remains in the trying set, and we try to allocate the next container of the trying set according to the placement rules. After we have repeated this process for all containers, we run the MVSD algortihm to allocate the remaining containers in the trying set.

Export Import

Heavy Medium Light Heavy Medium Light Rule 1 S.D. S.D. S.D. S.D. S.D. S.D. Rule 2 E. I.O I.O. E. E. E. Rule 3 I.O. O.O. O.O - - -Rule 4 O.O. E. E. - -

-Table 2: Placement rules per container type

S.D.

Stands for “same destination". Here we aim to allocate containeri on top of a container j, also a k-container, which is positioned in a feasible in order column. Furthermore we require that wj ≥ wi. When multiple containers satisfy the requirements, let those containers form the set K, and select container j such that wj ≤ wk∀k ∈ K.

E.

(18)

I.O.

Stands for “in order". Here we aim to allocate containeri on top of container j, an l-container, such that l > k and which is positioned in a feasible in order column. Furthermore we require that wj ≥ wi. When multiple containers satisfy the requirements, let those container form the setK, and select container j such thatwj ≤ wk∀k ∈ K.

O.O.

Stands for “out of order". Here we aim to allocate containeri on top of a container j, an l-container, such thatl ≥ k and which is positioned in a feasible out of order column. Furthermore we require that wj ≥ wi. When multiple containers satisfy the requirements, let those container form the setK, and select container j such that wj ≤ wk∀k ∈ K.

5.2.2 The MVSD Algorithm

Once only those containers that could not be placed according to the placement rules remain in the trying set, we call the Myopic Voluntary Shifting Determination (MVSD) algorithm to allocate them. Each of these containers will now increase the blocking number of the column where it will be allocated, for any eligible column on board. Instead of allocating a container on top of the upper container in an eligible column, the MVSD algorithm also considers to allocate a container somewhere in the middle. In this case, containers need to be shifted before they can be allocated. Such voluntary shifts can be useful to reduce the number of shifts at future terminals. Their value becomes clearly visible when one for example wants to load three import containers into a column which now contains only one export container. It would be preferable to shift the export container and put it on top of the import containers after.

The MVSD algorithm was originally developed by Ding and Chou (2015). We extend this model by differentiating between containers from different weight classes, where containers can only be allocated on a heavier or equally heavy container. Before running the MVSD, we first sort the remaining containers of the trying set. The heaviest containers are loaded first, and for those of equal weight, the containers with the furthest destination go first. The MVSD then selects an eligible feasible column, decides the number of containers to shift voluntarily from this column, and decides how many from the remaining containers of trying set will be loaded in that column. This process is repeated until the trying set is empty.

Let the set of all eligible feasible columns be denoted byJ and let the first container to be allocated be containeri. We first reduce the number of columns in J, based on the weight of the top container of each column j, with j ∈ J. That is, if there exist columns j, j ∈ J such that column j has a top container k for whichwk wi, then we remove all other columns. If such columns do not exist, we keep all columnsj, with j ∈ J, for which the top container k satisfies wk ≤ wl,∀l ∈ J, and remove the rest. In other words, we give

preference to columns of which the top container is equally heavy as the first container from the trying set. Otherwise we give preference to the columns with the lightest top container. The reasoning is as follows. Let containerk be the top container of the column where we want to allocate container i. If wk> wi, it can never be useful to shift containerk from the barge , since container k has to be below container i. Hence, there is only one possible location for containeri, which is on top. If wk < wi, the upper container(s) from the column have to be shifted in any case, since they have to satisfy the weight restrictions. Hence there are less opportunities to stack the column in order.

LetL be the set of eligible columns after the first selection based on the weight of the top container has taken place. Each columnj, j ∈ L, receives a score, denoted by gj. The columnj for which gj ≥ gk∀k ∈ L, will be selected to load containers. The scoregjis calculated by: gj max

m hj(m)+ bj,0− bj(m) − m, for each

columnj, where j ∈ L. Now m equals the number of containers that are shifted from a column. Then, hj(m) is the number of containers that will be loaded in columnj if m containers are shifted from it.

(19)

fully stow a column if enough containers are available with the same weight as the first top container of the eligible column. Then, bj,0denotes the number of blocking containers in column j before we shift or load any container in it. Finally, bj(m) is the number of blocking containers in column j after all shifting and loading operations have taken place, form number of shifts.

Figure 4: MVSD Procedure

We provide an example of the MVSD in Fig-ure 4. The remaining containers from the trying set are illustrated by the horizontal squares in the top, while three eligible columns are represented by the vertically stacked containers. The letter indicates the weight: heavy, medium or light. The number indicates the destination. These three columns to-gether form the setJ. The containers waiting to be allocated are ordered from left to right, such that the left container will be loaded first. Note that none of the containers from the trying set could be loaded without blocking another container. Since the first container in the trying set is a heavyweight, the first column to be selected is column (2), because the top container is equally heavy as the first container in the trying set. We can immediately see thatb2,0is 0 andh2(m) is 2, independent of m. Then, if m is 0, b2(m) becomes 2. If m is 1, b2(m) becomes 0 and if m

is 2,b2(m) becomes 0. The score of column 2 there-fore becomes 2+0-0-1 = 1. It will unload the heavy 4-container, then loads the two heavy containers in order and finally loads the heavy 4-container back. Then, the medium 4-container is the next con-tainer to be allocated. After removing column 2 from the set of eligible columns, since the top con-tainer is heavier than the medium 4-concon-tainer, two eligible columns remain, column 1 and column 3. Let us first consider column 1. Note that m can vary between 0 and 2 and thath(m) will always equal one, since that is the number of free slots. Then b1,0 0, since it contains no blocking containers. b1(0) 1, b1(1) 0 and b1(2) 1. It receives a score of 0, obtained from not performing voluntary shifts at all. Then for column 3, b3,0 is 1, since the medium-3 container blocks the medium-2 container. Then,b(0) 3, b(1)  2, b(2)  0 and h(m) = 2 for all m. Its score becomes 1, obtained by performing two voluntary shifts. Column 4 will therefore be selected, the medium 2- and medium 3-containers are shifted, the two medium 4-containers are loaded and then the medium 2- and medium 3-containers are loaded back in order. Lastly, no voluntary shifts are feasible to allocate the light 5-container, it will therefore be assigned to the first feasible column, in this case column 1.

5.3

A Basic Greedy Heuristic

The basic greedy heuristic is developed in order to benchmark the results of our main heuristic. It is meant to be a simpler version of the main heuristic, in such a way that it can measure the actual effects of the placement rules and the MVSD procedure. It therefore takes our main heuristic as a starting point, also approaching the problem in two phases, but both phases follow a different procedure.

(20)

heuristic. Then, instead of applying the placement rules and the MVSD algorithm, it allocates containers to one single rule. That is, it allocates containers to the first feasible slot it can find. Here it merely considers feasible columns, such that the stowage plans generated by the basic greedy heuristic also satisfy the stability restrictions.

6

Computational Experiments

In our numerical section, we first describe the setting as proposed in the case study by Fazi (2018). We then show the value of taking a stochastic approach rather than a deterministic one by calculating VSS and EVPI values in Section 6.2. In Section 6.3 we show the performance of our algorithm against a practical greedy algorithm and against the optimal solution found in CPLEX. In Section 6.4 we aim to obtain more insights into the problem, by providing an interpretation for the results found in Section 6.3. Finally, in Section 6.5, we analyze the robustness of our model and the effects of stochasticity.

6.1

Setting

Our setting matches the one from the inland terminal in Veghel, in the Netherlands. Every week, barges depart to- and arrive from the port of Rotterdam here. The barge we focus on is the one named “Moskitia", which consists of 12 bays, 3 rows and 3 tiers. It has a TEU capacity of 108 and a freight capacity of 2000 tons. We set the maximum difference in weight from the left to the right side of the barge equal to 160 tons, the maximum between the bow and the stern to 320 tons. Hence we setQ1 = 2000,Q2 = 320, Q3 = 160. This way, weight differences are allowed identical margins as in the paper by Ambrosino, Sciomachen, and Tanfani (2004). We set the penalty for a re-handling operation equal to 0.2, which implies that we have to shift a container 5 times before it is no longer profitable to include it in the voyage. The parameters we can tune are: the number of terminals, the number of routes, number of containers, the ratio of export- and import containers, the container weights and the destinations of the containers. We generate our instances to resemble the situation in Veghel as much as possible, hence we let the parameters be drawn from the follow-ing distributions. Similar instances can be found in the paper by (Fazi 2018). Let the number of terminal beT.

• Number of terminals: unif [3,5] • Number of containers: unif [50,110] • Number of routes: unif [2,5] • Export probability: norm[0.6,0.05] • Container weight: 10 * unif [1,3]

• Corresponding sea terminal: unif [1, T-1] • Probability route r: 1/(T-1)

(21)

6.2

Stochasticity Analysis

In this section, we analyse the effects of stochasticity on our problem. We therefore explain and present the value of the stochastic solution(VSS) and the expected value of perfect information(EVPI).

In our study, we define the EVPI as the value of knowing with certainty which route will be taken (Higle 2005). That is, we define the value of perfect information as the percentage increase from the original objective value, by knowing which route will be taken. We chose to reflect this as a percentage since it seems more informative than the potential gain as an absolute value. Let us now define the objective value reached when knowing that router is taken with certainty as v

rand the value of the original objective value

asv. Then the value of perfect information is calculated by: EVPIÕ r∈R prv ∗ r v − 1.

This definition implies that when the EVPI is 1 percent, having perfect information would improve the objective value by 1 percent on average.

We define the VSS as the added value of taking a stochastic approach rather than a deterministic one. In this case a deterministic approach would be to assume that the most likely route will be chosen, and all stowage plans are generated based on that assumption. More formally, let us defineS0

r as the initial

stowage plan that is generated when we assume that router is chosen. Subsequently, we define vq(S0

r) as

the objective value that we reach when we assume router, and the actual route turns out to be q, where r andq could possibly be equal to each other. The expected objective value when assuming route r can now be calculated as follows.

v(r)Õ

q∈R

pq∗ vq(S0r).

Finally, in order to calculate the VSS, we compare the objective found by the deterministic with our objective value from the stochastic solution as follows.

VSS v v(r)− 1.

This definition implies that when the VSS is 1 percent, we improve the deterministic solution with 1 percent by taking a stochastic approach, on average. In Table 3 we show that the EVPI and VSS for some small instances. The instances are kept small, all consisting of 10 containers, such that CPLEX is able to obtain the optimal solution in a reasonable amount of time. We created the instances using 3, 4 and 5 sea terminals. They all consist of 2 routes, that either have a probability of 80 percent or 50 percent. We see that when there are 5 terminals, both the EVPI as the VSS tend to be the highest. However, the differences in EVPI and VSS values under different number of terminals and different route probabilities are small. For all these instances, the EVPI is between 0 and 3.1 percent, which indicates that one can expect to prevent between 0 and 3 re-handling operations per trip. The VSS is between 0 and 2.3 percent, which indicates that one can expect to prevent between 0 and 2 re-handling operations per trip by taking a stochastic approach.

6.3

Performance Analysis

(22)

# TEU Terminals Prob route 1 EVPI VSS 1 10 3 80% 0.0% 0.0% 2 10 3 50% 1.3% 1.1% 3 10 3 50% 2.1% 1.3% 4 10 4 80% 0.0% 2.3% 5 10 4 50% 0.0% 0.0% 6 10 5 80% 3.1% 1.3% 7 10 5 50% 1.4% 1.8%

Table 3: EVPI and VSS values.

terminals. The second column indicates the number of sea terminals visited. Then, the sections indicated with “CPLEX" and “Heuristic" indicate their objective values and the runtime that was needed to solve the instance, respectively. Finally, in the last column, the gap between the heuristic performance and the optimal solution is represented. Here a gap of 10 percent means that the objective value obtained by CPLEX is a factor of 1.1 times higher than the objective value obtained by the heuristic.

For our second analysis, we increase the number of containers transported to realistic quantities as those explained in Section 6.1, and compare the results with a simple greedy heuristic and again with CPLEX. The results are presented in Table 5. The first four columns provide information about the instances and the main heuristic. Here, the column “TEU" indicates the total number of containers, the column “stops" indicates the number of sea terminals and the objective value obtained by the main heuristic is shown the column “Heur. Obj". The next three columns are about the performance of CPLEX. This time we do not let CPLEX run until optimality, but until a fixed time limit of 20 minutes is reached. The “Best Integer" column indicates the best objective value reached by CPLEX. The “Best Node" column indicates an upper bound, CPLEX always recognizes that this equals the number of containers in our scenario. Finally, the column “Gap" from CPLEX indicates the gap between the best solution found by CPLEX and the objective value that was reached with our algorithm. A gap of 10 percent means that that the heuristic achieves an objective value that is a factor of 1.1 times the objective value obtained by the heuristic. On average the gap between the objective value from the CPLEX run and the objective value of our algorithm is 22.8 percent. The last two columns correspond to the results of the greedy heuristic, of which the objective values can be seen in the “Obj" column. The greedy heuristic calculates these within an instance. The last column indicates the gap between the objective reached by the greedy heuristic and our own algorithm, which is 25.4 percent on average. This means that that the main heuristic achieves an objective which is 1.254 times higher than the objective value obtained by the basic greedy heuristic. For the realistic instances, the heuristic is able to transport all containers in all scenarios with a little number of shifts, and does this within a second.

We noticed that in the second analysis the barge was never completely full, which makes it easy to obtain high objective values. For this reason we perform a third analysis, by which we mean to test more the boundaries of our algorithm. To this end, we increase the number of containers, varying from 196 until 234. Furthermore, we vary more the number of export containers, which can range from about 40 percent until 80 percent of the total number of containers. The results are shown in Table 6, for which the column names are similar to those of Table 5.

6.4

Performance Insights

(23)

CPLEX Heuristic

# TEU Terminals Obj Runtime(sec) Obj Runtime(sec) Gap 1 10 5 9.3 1362 8.8 1 5.7% 2 10 5 9.3 1243 8.3 1 12.0% 3 10 4 9.8 1042 9.1 1 7.7% 4 10 4 9.3 1153 8.9 1 4.5% 5 10 3 10 997 10 1 0% 6 10 3 9.3 1028 8.5 1 9.4% 7 10 3 10 1104 10 1 0% 8 10 4 9.6 1228 9.6 1 0% 9 10 5 9.6 1379 9.0 1 6.7% 10 10 3 9.8 1156 9.0 1 5.5% 11 10 5 9.7 1345 8.8 1 10.7% 12 10 4 10 1281 9.2 1 8.7% 13 10 3 9.8 1156 9.4 1 4.3% 14 10 4 9.3 1203 9.3 1 0% 15 10 4 9.3 1088 8.9 1 4.5% 16 10 4 9.8 1295 9.1 1 7.8% 17 10 5 10 1300 9.3 1 7.5% 18 10 3 9.6 1068 9.4 1 2.1% 19 10 3 9.3 1023 8.8 1 5.7% 20 10 5 9.3 1388 8.9 1 4.5%

Table 4: Main heuristic vs the optimal solution for small instances

CPLEX Basic Greedy # TEU Stops Heur. Obj Best Integer Best Node Gap Obj Gap 1 50 3 50 41.5 50 20.4% 40.0 25.0% 2 50 3 50 42.4 50 17.9 % 34.2 46.1% 3 51 5 51 42.2 51 20.9% 37.8 34.9% 4 61 5 61 48.7 61 25.3% 47.3 29.0% 5 62 5 62 49.1 62 26.3% 45.8 35.4% 6 64 3 64 52.3 64 22.4% 51.4 24.5% 7 67 5 67 54.5 67 22.9% 57.5 16.5% 8 75 3 75 60.9 75 23.2% 70.2 6.8% 9 80 5 80 65.9 80 21.4% 72.3 10.7% 10 82 4 82 66.0 82 24.2% 66.2 23.9% 11 85 3 85 68.4 85 24.3% 67.7 25.6% 12 90 4 90 74.2 90 21.3 % 68.4 31.6% 13 92 4 92 73.8 92 24.7% 80.2 14.7% 14 92 4 92 73.1 92 25.9% 71.3 29.0% 15 95 3 95 75.4 95 26.0% 77.9 22.0% 16 96 4 96 80.3 96 19.6% 78.3 22.6% 17 97 4 97 81.8 97 18.6% 85.7 13.2% 18 100 5 100 80.9 100 23.6% 74.2 34.8% 19 107 4 107 87.9 107 21.7% 88.2 21.3% 20 110 5 110 88.2 110 24.7 % 78.8 39.6%

(24)

Main Heur. Basic Greedy

# TEU Stops Export Obj Time(sec) Obj Time(sec) Gap 1 196 3 80 188.0 1 166.0 1 13.3% 2 198 4 100 198.0 1 128.5 1 54.1% 3 200 5 121 185.8 1 119.3 1 55.7% 4 202 3 142 168.0 1 111.0 1 51.4% 5 204 4 164 147.8 1 91.8 1 61.0% 6 206 5 83 189.5 1 147.5 1 28.5% 7 208 3 105 204.5 1 137.5 1 48.7% 8 210 4 127 190.0 1 116.3 1 63.4% 9 212 5 149 169.3 1 105.0 1 61.2% 10 214 3 172 149.8 1 90.0 1 66.4% 11 216 4 87 194.5 1 159.8 1 21.7% 12 218 5 110 215.0 1 140.5 1 53.0% 13 220 3 133 194.0 1 128.8 1 50.6% 14 222 4 156 173.3 1 106.3 1 63.0% 15 224 5 180 152.0 1 88.3 1 72.1% 16 226 3 91 199.0 1 149.3 1 33.6% 17 228 4 115 215.8 1 140.8 1 53.3% 18 230 5 139 193.8 1 130.8 1 48.2% 19 232 3 163 176.5 1 111.3 1 58.6% 20 234 4 188 153.8 1 96.8 1 58.9%

Table 6: Main heuristic vs Basic Greedy for large instances

increase the size of these instances, we expect this gap to decrease. The gap with the optimal solution exists because in the optimal solution, less containers are shifted than in the solution found by the heuristic. When we then look at Table 5 and Table 6, we see that the number of shifts as a percentage of the total number of containers decreases as instances get larger. Hence with larger instances we expect to obtain objective values which are relatively closer to the optimal solution.

When we look at Table 5, we see that the objective value obtained by the heuristic is equal to the number of containers in the instance, for every instance. This means that for the setting as described in Section 6.1, which is set up to resemble the real-world situation in our case study, the heuristic is able to transport all containers in each route, without the need for shifts. This can be explained by noting that the total number of containers varies between 50 and 110, resulting in a rather low utilisation rate of the barge. With such a low utilisation rate, there is enough space to allocate containers on top of a container with a similar destination. From this we can conclude that in this particular case study, the effect of route changes on the number of shifts is limited. On the other hand, we can also see that solving the problem with a basic greedy heuristic or a limited CPLEX run is not sufficient, as both score significantly worse than the main heuristic. Finally, the CPLEX runs seem rather stable, compared to the more fluctuating objective values obtained by the basic greedy heuristic.

As the instances as drawn from the setting in Section 6.1 do not demand the fullest of our heuristic, we have also performed an additional analysis, which can be found in Table 6. Here we increase the number of containers of the instances, which now vary between 196 and 234. Note that the barge can carry 108 containers in total. Furthermore, we add more variation to the share of export- and import containers, where the share of export containers now varies between about 40- and 80 percent of the total number of containers. The first thing we see is that the objective values are now lower relative to the total number of containers as not all containers fit on the barge anymore.

(25)

container can be on board. Hence it happens that the barge is only half full with export containers when starting its voyage, while there are also import containers that cannot be taken because they do not fit. In this case, the number of containers transported would increase if export- and import containers would be divided equally. Furthermore, we see that the performance of the main heuristic compared to the perfor-mance of the basic greedy heuristic improves. This can can be explained by the fact that the main heuristic has the tendency to allocate containers of the same weight on top of each other. The basic greedy does not do this and does not apply the MVSD, which has as a result that some containers get rejected because they are too heavy and cannot find a feasible location. When the barge gets more full, there are less slots available, resulting in more rejected containers by the basic greedy heuristic. Finally, we see that in Table 6, shifts are needed to be able to transport the containers. When the barge gets more full there are less slots available to allocate a container. As a result of this, the algorithm is sometimes forced to allocate a container in a blocking position, or voluntary shift other containers to be able to allocate it. What we also see, however, is that there are still instances that do not require shifts, even when there are enough containers such that the capacity of the barge is almost fully used. An example is the very first instance, which allocates 80 export containers and 108 import containers. It plays a role here that all containers that need to be loaded at sea terminals are import containers and thus have the same destination.

6.5

Sensitivity Analysis

To analyse the robustness of our algorithm we extensively test its performance in different scenarios, first varying with the number of containers and then analysing the EVPI. As we saw in the performance analysis, the heuristic is capable of allocating realistic instances without the need for shifts. This is due to the relatively small number of tiers and low utilisation rate, because that means they leave enough space to stack containers from an identical destination on top of each other. For this reason, there is little value in knowing the route with certainty. However, this may not be the case anymore when the heuristic is applied to a fully loaded barge with different characteristics. For example, when the number of containers stacked on top of each other become higher, a route change will have a greater effect on the number of re-handling operations required. We therefore analyse the value of perfect information in three different scenarios: as a function of the number of tiers, the number of routes and as a function of the probability of those routes, respectively.

In Figure 5 we portray the calculation times (y-axis) when we increase the total number of containers (x-axis). We show that for relatively small number of about a 1000 containers in total, stowage plans can be calculated in a split second. The runtime is a convex function of the number of containers, where it takes slightly over 60 seconds to allocate 10000 containers. These calculations were performed for a scenario with 3 sea terminals and 3 routes. The number of routes plays the largest role here, since it has the greatest effect on the number of containers that have to be allocated. Finally, from Figure 5 we can conclude that the heuristic could be scaled to larger instances than currently under consideration.

In Figure 6, we present the analysis of the effects that different route probabilities have on the EVPI. We assume there are two eligible routes and plot EVPI as a function of the probability that the first route is taken. At thex-values where the probability for route one is either 100 percent or zero, the EVPI is logically zero. This is because we already know with certainty which route will be taken. In the middle of the graph, where both routes have a probability of 50 percent, the uncertainty is the largest. We therefore also observe the highest EVPI at this place. Note that for the stowage plans these specific probabilities will not make a difference, as the stowage plans are generated based on the order of the likeliness of each route. That is, in a scenario with two routes, the proportion 60-40 will generate the same stowage plans as 70-30. Hence, we can conclude that route probabilities matter, even when we do not see a difference in the generated stowage plans.

(26)

Figure 5: The number of containers transported versus the runtime

Figure 6: The EVPI versus the probability that the first of two routes is taken

Figure 7: The EVPI as a function of the number of tiers

Figure 8: The number of routes versus the value of perfect information

percent, when we increase the number of tiers from 3 until 10. This can be explained by noting that as the number columns decreases, less opportunities exist to stack containers on another container from the same size. This way, with more tiers, more potential blocking containers arise. With more tiers, the number of potential containers that need to be shifted to reach a container below also increases, resulting in a lower objective value for the least likely route. From Figure 7 we can thus conclude that the EVPI rises when the number of tiers goes up.

Finally, in Figure 8 we analyse the effect of the number of routes on the EVPI. We plot the number of routes on thex-axis and the EVPI on the y-axis, where we attach equal probabilities to each route. We see that as the number of routes goes up, the EVPI increases. This can be explained first by noting that the most likely route will generally have the most added value to the objective. Since we attach equal probabilities to each route, the share of the most likely route shrinks as the number of routes goes up, while there arise more possibilities for routes to emerge with a potentially bad objective value. All in all, this leads to a deterioration in the objective values and an increase in the value of perfect information.

(27)

7

Concluding Remarks

In this paper, we analyzed the effects of route uncertainty in the container stowage problem for inland shipping. To this end, we have modelled our problem both mathematically and have developed a heuristic. The mathematical model appeared to be too complex to solve to optimality. Our heuristic approach, however, has shown the attainability of generating good stowage plans when a particular route is uncertain beforehand. In realistic scenarios, there are no re-handling operations needed in any route. This can be explained by noting that in our specific case study, the barges are not using their full capacity, such that there is generally enough space to stack containers with the same destination on top of each other. When a barge is stowed more closely to its capacity, the effects of route uncertainty are larger but still limited. Finally, when the number of tiers in a barge goes up, the effects of route uncertainty also increase.

Referenties

GERELATEERDE DOCUMENTEN

Sommige bezoekers laten weten dat zij een oplossing kunnen bieden voor een bepaald probleem. Zo is er een bedrijf dat zegt een alternatief voor de kokos te kunnen bieden waar de

The stowage planning problem considered in this paper is to stow containers into available locations within a containership, considering the uncertainty of the weight of

Daar is bepaal dat die inisiatief van Fondsdag uitsluitlik lê by die vrou, maar ten spyte hiervan “is die heelhartige steun en samewerking van die mans

In order to research hegemony and the influence of states and multinational corporations in global cyber governance, the UN GGEs were analysed in accordance with the fundamentals

22 Waar dus aan de ene kant bij de overheid de inten- tie bestaat draagvlak te creëren voor het behoud en de ontwikkeling voor de waardevolle cultuurhistorie van de daaraan

+32 (0)498 56 39 08 e-mail: info@triharch.be ARCHEOLOGISCHE PROSPECTIE MET INGREEP IN DE BODEM - DIEST / BEKKEVOORT / HALEN - WINDMOLENPARK SPORENPLAN D-01 WP01-02 Werkputten

Publisher’s PDF, also known as Version of Record (includes final page, issue and volume numbers) Please check the document version of this publication:.. • A submitted manuscript is