Input: A solution representation; |
Output: The berthing position and the processing start time for each vessel ; |
(1) Initialize ; // Set of berthed vessels; |
(2) for do |
(3) Let be the index of the vessel whose berthing order in the solution representation is ; |
(4) Initialize ; // is the earliest time for vessel to |
enter the approach channel; |
(5) if vessel then |
(6) Let be the earliest time step in high water time windows, which is greater than |
or equal to ; |
(7) else |
(8) ; |
(9) end |
(10) ; |
(11) ; // is the rectangle in the time-wharf plan, which |
represents the schedule of vessel ; |
(12) Search the possible locations for and sort them in the ascending order using the |
time-coordinate as the primary key and the wharf-coordinate as the secondary key; |
(13) while do |
(14) if (, and does not overlap with any rectangle in and is within |
the boundary of the time-wharf plan) or (, the time-coordinate of the |
bottom-left corner of is in high water time window, and does not overlap |
with any rectangle in and is within the boundary of the time-wharf plan) |
then |
(15) ; |
(16) ; |
(17) ; |
(18) break; |
(19) else |
(20) Move to the next possible location and update and ; |
(21) if there is no more candidate for possible location of then |
(22) ; |
(23) let where is the first time step in the next high water time window; |
(24) ; |
(25) ; |
(26) end |
(27) end |
(28) end |
(29) end |