Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

1 Introduction

At a refinery crude oil is separated into different components. These components are blended into oil products called grades, which are stored in tanks. From the product tanks, grades are transported via primary terminals and secondary terminals to the customer. The transport from the refinery to the primary terminals located at a harbor is often done by ship. The large scale of the transported quantities implies that a lot of money is involved. The operating cost of a ship are typically between $50,000 and $400,000 a day. The inventory cost (including working capital cost) of one grade in one harbor is typically around $1 million per year. A trade off should be made between inventory costs, operating costs of different types of ships and the risk of a stock-out. Ideally, ship routing decisions and inventory decisions should be a combined decision.

In this paper, we consider a ship routing problem with multiple products and inventory constraints. Ronen [6] presents a two-stage heuristic for the multiple product ship-scheduling problem. Al-Khayyal and Hwang [1] formulate the problem as a mixed integer linear program. They show that even small instances cannot be solved by a general purpose solver and they argue that specialized algorithms are needed. A specialized exact algorithm is presented by Christiansen [3] in the case of a single-product ship scheduling problem, and later by Brønmo et al. [2] for a ship scheduling problem with flexible cargo sizes. Christiansen [3] looks at the transportation of ammonia with production and consumption factories. In our case of oil transportation, multiple products are considered, namely several grades of oil. The different grades are transported in different compartments of a ship, and stored in different tanks at the harbor.

In Sect. 2, we give a description of the ship routing problem. We formulate the problem by extending the formulation of [4]. In Sect. 3, we discuss a Branch-and-Price method to solve the problem. We finish the paper with concluding remarks in Sect. 4.

2 Problem Description

Let \(G\) be the set of grades. Furthermore, let \(H\) be the set of harbors. Demand at harbor \(h\in H\) for grade \(g\in G\) is linear in time with rate \(d_{hg}\). Note that for a harbor \(h\) where grade \(g\) is produced \(d_{hg}<0\). The storage capacity at harbor \(h\in H\) for grade \(g\in G\) is given by \(Q_{hg}\). Note that the inventory of a grade may never exceed the capacity. A set of vessels \(V\) is available to transport grades between harbors. They are used to ensure that the inventory constraints at each harbor are never violated during a finite planning horizon of length \(T\). Each vessel \(v\in V\) consists of a set of compartments \(C_v\) that are used to store the grades. We denote the first compartment \(c\in C_v\) by \(c^1_v\). We assume that each compartment may contain every type of grade and no cleaning is required when first transporting one type of grade in a compartment and then another. Let \(Q_c\) be the capacity of compartment \(c\). For vessel \(v\in V\), travel costs between harbors \(i\in H\) and \(j\in H\) are given by \(c_{ij}\) and travel time is given by \(t_{ij}\). Furthermore, the rate of unloading/loading of grade \(g\in G\) at harbor \(h\in H\) by vessel \(v\in V\) is \(r_{vhg}\). For each harbor \(h\in H\) an ordered set of non-overlapping time windows \(W_h=\{w_1,\ldots ,w_k\}\) is available. We denote each time window \(w\in W\) as \([\underline{w},\overline{w}]\), where \(\underline{w}\) is the start of the time window and \(\overline{w}\) is the end of the time window. We allow at most one vessel to visit harbor \(h\) during one time window. Also, we allow the vessel to wait.

The ship routing problem with multiple products and inventory constraints, SRPMPIC, is the problem of scheduling the vessels to transport grades between harbors to ensure that the inventory constraints are not violated during the planning horizon, such that the total transportation costs are minimized. Before presenting a mixed integer linear programming formulation for the SRPMPIC, we discuss two underlying networks of this problem, the harbor-grade network and the compartment network. These networks are used in our formulation.

2.1 The Harbor-Grade Network

The harbor-grade network for harbor \(h\in H\) and grade \(g\in G\) is used to represent a loading or unloading schedule of grade \(g\) at harbor \(h\). For ease of exposition, we will consider loading as unloading a negative amount. During each time window \(w\in W_h\) an amount of grade \(g\) is possibly unloaded at harbor \(h\).

For harbor \(h\), we construct a set of nodes \(N\) consisting of pairs \((w,q)\) for \(w\in W_h\) and \(q\) representing the cumulative amount of grade \(g\) delivered up to and including time window \(w\). To limit the size of this set of nodes, we consider only a finite number of unloaded quantities during each time window, including the amount 0. For example, a vessel is allowed to unload exactly 0, 20 or 40 units of grade \(g\) during a single time window. Furthermore we construct a set of arcs \(A\) connecting nodes \((w,q)\in N\) and \((w',q')\in N\) if \(w\) is the direct predecessor of \(w'\) in \(W_h\) and \(q'-q\) is exactly one of the allowed unloading amounts.

The harbor-grade network is denoted as the acyclic graph \(N_{hg}=(N,A)\). An unloading schedule is defined as a pair \((P,t)\), where \(P\) is a path in \(N_{hg}\) from \((w_1,0)\) to \((w_k,q)\), for \(w_1\) the first and \(w_k\) the last time window in \(W_h\) and \(q\) such that \((w_k,q)\in N\), and \(t\) is a vector containing the time of service at each location on the path.

An unloading schedule is feasible if (i) for every \((w,q)\) on \(P\) and corresponding arrival time \(t\) unloading of the entire quantity can be completed between \(t\) and \(\overline{w}\) and (ii) the inventory constraints are not violated at any time during the planning horizon. Note that the inventory constraints might be modelled by adjusting the time window \(w\) corresponding to node \((w,q)\in N\) to disallow unloading too early or too late resulting in a violation of the inventory constraints. We denote the set of all feasible harbor-grade schedules at harbor \(h\in H\) and grade \(g\in G\) as \(S_{hg}\).

2.2 The Compartment Network

The compartment network for compartment \(c\in C_v\) of vessel \(v\in V\) is used to represent a sailing schedule of compartment \(c\) to load and unload different grades at different harbors.

We construct a set of nodes \(\hat{N}\) consisting of tuples \((h,w,q_1,\ldots ,q_{|G|})\) for every \(h\in H\), for every \(w\in W_h\) and for \(q_1\ldots ,q_{|G|}\) representing the total load of the grades in \(G\). As in the harbor-grade network, we consider only a finite number of unloading and loading quantities including the amount 0. Also, note that we only consider tuples in which the load of at most one grade is nonzero, as a compartment may only carry one type of grade at any moment in time. Furthermore, we construct a set of arcs \(\hat{A}\) connecting nodes \({(h,w,q_1,\ldots ,q_{|G|}) \in \hat{N}}\) and \((h',w',q'_1,\ldots ,q'_{|G|})\in \hat{N}\) if harbor \(h'\) can be reached during time window \(w'\) when departing from harbor \(h\) during time window \(w\), and if the \(q'_g-q_g\) is exactly one of the allowed unloading amounts for all \(g\in G\). To each arc we associate travel time of sailing from one harbor to the other. To each arc we also assign travel costs (we elaborate on these costs later).

The compartment network is denoted as the cyclic graph \(\hat{N}_{c}=(\hat{N},\hat{A})\). A compartment schedule is defined as a pair \((P,t)\) where \(P\) is a path in \(\hat{N}_c\) and \(t\) is a vector containing the time of service at each location on the path. A compartment schedule is feasible if the time windows at each node on the path are not violated. We denote the set of all feasible compartment schedules for compartment \(c\) as \(R_{c}\).

2.3 Problem Formulation

Next, we formulate the SRPMPIC as a set partitioning problem. It is an extension of the formulation by [4] for the single product ship scheduling problem.

With each compartment schedule \(r\in R_c\) we associate the variable \(x_r\) indicating whether compartment schedule \(r\) is used. Let the costs of schedule \(r\) be given by \(p_r\). For the routes \(R_{c^1_v}\) of the first compartment of every vessel \(c^1_v\), these costs are the actual traveling costs. For all other compartments these costs are 0. In our formulation we link the routes of the different compartments of one vessel. Therefore, the traveling costs of a vessel are represented in this way. Furthermore, we associate with each compartment schedule \(r\in R_c\) the parameter \(q_{rhgw}\) representing the amount of grade \(g\) unloaded at harbor \(h\) during time window \(w\). Also, we associate with \(r\) the parameter \(t_{rhgw}\) specifying the time at which a ship commences unloading of grade \(g\) at harbor \(h\) during time window \(w\). Let \(t_{rhgw}=0\) if no unloading is performed.

We allow \(x_r\) to be any fractional value between 0 and 1, hence convex combinations of compartment schedules might be selected. However, we impose integrality on the physical route that is traveled. This way, any quantity of grade \(g\) may be unloaded at harbor \(h\) during time window \(w\), in particular not only the allowed quantities used in the construction of \(R_c\). To model this, we introduce an auxiliary variable \(z_{hwh'w'c}\) that indicates whether compartment \(c\) departs from harbor \(h\) during time window \(w\) and travels to harbor \(h'\) to arrive during time window \(w'\). Furthermore, we introduce the parameter \(a_{hwh'w'r}\) indicating whether route \(r\) departs from harbor \(h\) during time window \(w\) and travels to harbor \(h'\) to arrive during time window \(w'\).

With each harbor-grade schedule \(s\in S_{hg}\) we associate the variable \(y_s\) indicating whether schedule \(s\) is used. We associate with each harbor-grade schedule \(s\in S_{hg}\) the parameter \(q_{sw}\) representing the amount of grade \(g\) unloaded at harbor \(h\) during time window \(w\). Furthermore, we associate with \(s\) the parameter \(t_{sw}\) specifying the time at which unloading of grade \(g\) commences at harbor \(h\) during time window \(w\). Let \(t_{sw}=0\) if no unloading is performed.

Similar to \(x_r\) we allow \(y_s\) to be any fractional value between 0 and 1. However, there is no need to impose integrality conditions, as any convex combinations of harbor-grade schedules is a feasible harbor-grade schedule in which any quantity may be unloaded during every time window, while still satisfying the inventory constraints. The SRPMPIC can be formulated as follows:

$$\begin{aligned} \min \sum _{\begin{array}{c} v\in V\\ r \in R_{c^1_v} \end{array}} p_r x_r \end{aligned}$$
(1)
$$\begin{aligned} \sum _{\begin{array}{c} v\in V\\ c\in C_v\\ r\in R_c \end{array}} q_{rhgw}x_{r} - \sum _{s\in S_{hg}}q_{sw}y_{sw} = 0 \quad \forall h\in H,g\in G,w\in W_h \end{aligned}$$
(2)
$$\begin{aligned} \sum _{\begin{array}{c} v\in V\\ r\in R_{c^1_v} \end{array}} t_{rhgw}x_{r} - \sum _{s\in S_{hg}}t_{sw}y_{sw} = 0 \quad \forall h\in H,g\in G,w\in W_h \end{aligned}$$
(3)
$$\begin{aligned} \sum _{r\in R_{c^1_v}} t_{rhgw}x_{r} - \sum _{r\in R_c}t_{rhgw}x_{rhgw} = 0 \quad \forall v\in V,h\in H,g\in G,\nonumber \\ w\in W_h, c\in C_v \backslash c^1_v&\end{aligned}$$
(4)
$$\begin{aligned} \sum _{r\in R_c}x_{r} = 1 \quad \forall v\in V,c\in C_v \end{aligned}$$
(5)
$$\begin{aligned} \sum _{s\in S_{hg}}y_{s} = 1 \quad \forall h \in H,g \in G \end{aligned}$$
(6)
$$\begin{aligned} \sum _{r\in R_c} a_{hwh'w'r}x_r-z_{hwh'w'c}= 0 \quad \forall h,h'\in H,w,w'\in W_h,v\in V,c\in C_v \end{aligned}$$
(7)
$$\begin{aligned} x_{r} \in [0,1] \quad \forall r\in R_c,c\in C_v,v\in V \end{aligned}$$
(8)
$$\begin{aligned} y_{s} \in [0,1] \quad \forall s\in S_{hg},h\in H,g\in G \end{aligned}$$
(9)
$$\begin{aligned} z_{hwh'w'c} \in \{0,1\} \quad \forall h,h'\in H,w,w'\in W_h,v\in V,c\in C_v \end{aligned}$$
(10)

The objective function is represented by (1). Constraints (2) ensure that the total quantity of grade \(g\) unloaded by the vessels at harbor \(h\) during time window \(w\) is equal to the quantity as specified in the selected harbor-grade schedule. Similarly, constraints (3) ensure that the unloading of grade \(g\) by the vessels commences at harbor \(h\) during time window \(w\) as specified in the selected harbor-grade schedule. Furthermore, constraints (4) ensures that all compartments of a single vessel travel the same route. Constraints (5) and (6) ensure that for each compartment and for every harbor-grade combination, exactly one schedule is selected. Finally, integrality constraints are given by (7) and (10).

3 Branch-and-Price

We suggest solving the SRPMPIC using a branch-and-price algorithm. Lower bounds can be found by solving the LP relaxation of formulation (1)–(10). As the formulation contains many variables, we suggest using a column generation algorithm to solve the LP relaxation. Initially we consider a restricted master problem, which is the SRPMPIC including only a limited number of compartment schedules and harbor-grade schedules. We iteratively solve the restricted master problem and add new compartment schedules and harbor-grade schedules by solving a pricing problem. The restricted master problem is solved using the simplex algorithm, yielding dual multipliers corresponding to each constraint. Next the pricing problems are solved to identify schedules with negative reduced costs. If such schedules are found, they are added to the restricted master problem. If none exist, the solution to the current restricted master problem is also the optimal solution to the LP relaxation of (1)–(10).

The pricing problem decouples per harbor-grade combination and compartment. The pricing problem for generating a harbor-grade variable for harbor \(h\) and grade \(g\) is a shortest path problem in \(N_{hg}\) with time window constraints and linear node costs. It can be solved using the labeling algorithm by [5]. The pricing problem for generating a compartment variable for compartment \(c\) is an elementary shortest path problem in the cyclic graph \(\hat{N}_{c}\) with time window constraints and linear node costs. Note that in particular cyclic paths in which a harbor is visited during the same time window more than once is undesired. Nonetheless, we relax the elementarity condition, and allow cyclic schedules to be generated. This lowers the value of the LP bound while the optimal integer solution remains the same, as such schedules cannot be part of any integer solution. With this relaxation, the pricing problem is a shortest path problem with time window constraints and linear node costs. It can be solved using the same labeling algorithm by [5] as used to solve the harbor-grade pricing problem.

4 Concluding Remarks

In this paper, we discussed the ship routing problem with multiple products and inventory constraints which arises in the oil industry. Since different oil products cannot be stored in the same compartment of a ship, the capacities of the different compartments of the ship have to be taken into account as well. We have extended the formulation and branch-and-price algorithm by [4] to the case of multiple products and multiple compartments.