Very briefly, the BAP partitioning problem is to assign incoming vessels to a transshipment port to different sections of the port (for berthing) so as to minimize the cost of transshipment (which is the cost of container movement between vessels and between vessels and the port). The constraints on the assignment are that vessels must not "cross" two different sections and "there must be enough room to berth all the vessels assigned to any given section at any given time".
An instance of the BAP Partitioning Problem is specified by
Input File | Description |
info on the sections: number of sections, section lengths, and intersection distances. (Note: section 0 is a virtual section.) | |
info on the vessels: number of vessels, vessel ids, lengths, arrival times, departure times. (Note: vessel 0 is a virtual vessel.) | |
a list of container transshipments in the form
"source vessel" "destination vessel" "#containers". |
In our simplified formulation, the arrival and departure times are given as integers in the range [0..W] where W is the length of the "planning window" for the problem.
In BAP partitioning, we want to assign each vessel to a section (of the port). However, the assignment must satisfy some constraints. Therefore, we define:
A feasible BAP partitioning solution (or simply, a solution) consists of the assignment of each vessel to a section (of the port) that satisfies the following constraints:
Note that in some problem instances, there may be no feasible solution.
The objective in BAP partitioning is to find a solution that
For a more detailed explanation of these, please see the lecture notes and the MSc thesis by David Ong given in the References.
These unassigned vessels are assigned a section of -1. Note that, for the purpose of computing the transshipment cost, we assume that the unassigned vessels are put in a section that is "very far away" -- with distance of "infinity" from all other sections (including any other unassigned vessels). In this way, there is a high penalty (on the cost function) imposed by any unassigned vessel. (The real-life situation is "similar" -- the ship are left out at sea, meaning they are also very, very far away. ;-) Imposing the penalty also models the "price" we pay since the vessel has to be delayed from berthing immediately.)
For your implementations, please set "infinity=1000000".
The BAP Partitioning problem is a generalization of (a) the graph partitioning problem, and (b) the quadratic assignment problem. Both these problems are NP-complete, and so the BAP partitioning problem is also NP-complete. Thus, it is unlikely that you can find an algorithm that efficiently solves large instances. So it is natural to look for heuristic algorithms, which find good (but maybe not optimal vessel partitions). Another option is to implement an exponential algorithm, and use it to solve small instances of the problems.