The objective is to find a route with a desired time window width. This is done by traversing the safe time intervals while taking into account the ship speed and the expected current speed and direction.
Pseudo code
desired route width = 8 x time location granularity (2 hours)
while no route found and desired route width >= minimal route width (15 minutes)
find most critical kilometer point and first safe time
//first try to reach berth starting at this point:
while berth not reached
if time is not safe for at least desired route width
get next safe time for this kilometer point
find next time location point with the given speed
//next try to reach start of the channel:
while start channel is not reached
if time is not safe for at least desired route width
get next safe time for this kilometer point
find previous time location point with the given speed
if route is found
calculate bottom touch probability and save route
else
half desired route width
Algorithm visualization
The visualization shows the (orange) traversal from the most critical (narrow) safe time interval up to the start of the channel. Each time the next step in the traversal was not feasible, the algorithm shifts to the first available safe time (with the desired width). If a traversal is possible from start channel to berth, without shifts, then this is the tidal window advise.
