Skip to content
SuperScheduler

Ports and logistics

Berth, crane and terminal planning

A berth plan is a handful of long events with expensive consequences. Vessel calls span hours or days, cranes are shared between them, and a late arrival moves the window of every call behind it. The planner needs the whole quay in view and the detail of a single shift one gesture away.

Long windows, shared equipment, moving arrivals

Each vessel call occupies a berth from berthing to departure, and it needs a berth long and deep enough for the ship. Within that window, quay cranes and other equipment are assigned to work the cargo, often moving between vessels as one finishes and the next begins.

Arrival times are estimates that keep changing. A vessel delayed by weather arrives into a window that now overlaps the next call. Some ports add tide windows that limit when deep-draft ships can enter or leave, and pilots, tugs and labor gangs have their own availability.

Waiting is costly for everyone involved. A ship at anchor, a berth held empty or cargo that misses its connection raises the risk of demurrage and disputes, so planners look for the change that disrupts least, not merely one that fits.

Decisions on the berth plan

  1. 01

    Which berth takes the call

    Matching vessel length, draft and cargo type to berth length, depth and equipment, while respecting any windows agreed with shipping lines.

  2. 02

    How many cranes, and when

    More cranes shorten a stay but take them from other vessels. The crane split decides how long the berth stays occupied.

  3. 03

    What a late arrival displaces

    A delayed call can keep its berth and push the next one, move to another berth or wait at anchor. Each choice ripples differently through the plan.

  4. 04

    Fitting tide windows

    Deep-draft arrivals and departures may only be possible around high water, which constrains the start and end of a call but not the hours in between.

Modeling the quay

Rows are berths and equipment, events are calls and the work inside them, and the time axis spans days with hours one zoom level away.

Resources
Group berths by terminal in a resource tree, with columns for length and maximum draft. Cranes and other equipment can live in a second pane of SchedulerPanes, sharing the time axis and zoom while scrolling vertically on its own.
Events
A vessel call is a multi-day half-open interval from berthing to departure, with vessel name, ETA and status as custom fields. Crane assignments are events on crane rows, linked to their call so the relationship stays visible as either one moves.
Time scale
Hourly cells with day headers cover the next few days; zoom out to days and weeks for the season. Load long horizons on demand with createRangeLoader, which requests chunks as the view moves and cancels requests that leave it.
Rules
In onEventMoving, refuse a berth that is too short or too shallow, using the resource’s attributes, with a message naming the constraint. Shade tide windows and validate that start and end fall inside them, and feed the minimap with berth occupancy or crane hours per bucket so busy days stand out.

Planning view and terminal systems

  • Long events spanning days, with hourly detail on zoom
  • Grouped berth rows and a separate equipment pane on one time axis
  • Links between calls and crane work
  • A minimap of the occupancy series your application computes
  • Range loading with cancellation, and virtualized rendering for long horizons
  • ETA feeds, vessel data and integration with your terminal operating system
  • Berth allocation and crane split optimization, if any: the library does not optimize
  • Tide tables and the windows derived from them
  • Rescheduling downstream calls after a delay
  • Demurrage, billing and contractual windows
  • Coordination between planners, persistence and audit

Working examples

Traps in berth planning

Tide windows as disabled cells

Disabled cells refuse any event that spans them, but a vessel can lie alongside through low water. Shade the windows instead and validate only arrival and departure times.

Passing zoned timestamps directly

A string with an offset, such as 10:00:00+02:00, is converted to UTC wall-clock time. Convert feeds to the port’s local civil time in your application and pass plain date-times.

Assuming a delay propagates

Linked crane work does not move when its call moves. Decide in your handlers whether to shift it, and group the change so it can be undone in one step.

Loading the whole season at once

Months of calls and equipment assignments are better loaded by range as the planner scrolls, with a server that honors half-open [start, end) requests.

Questions

Can SuperScheduler optimize berth allocation?

No. It has no allocation or optimization engine. It displays the plan produced by your planners or your solver, lets planners change it, and reports each change for your system to validate.

How do I show tide windows on a berth plan?

Color the relevant cells in onBeforeCellRender with a background or CSS class, or draw separators at the window edges. Then check in onEventMoving that the call’s start and end fall inside a window, and refuse the move with a message if they do not.

Can berths and cranes share one time axis?

Yes. SchedulerPanes from super-scheduler/panes stacks several schedulers with shared horizontal scroll, zoom and row-header width, and independent vertical scroll. Moves between panes are supported, and handlers report the source and target pane.

How many vessel calls can the timeline handle?

Rendering is always virtualized, so only what is in view is drawn. For long horizons, load events by range with createRangeLoader rather than all at once, and measure with your own data, since the practical limit depends on events, rows and devices.

See the Harborworks demo

Harborworks, a fictional terminal, moves a berth window and reorganizes the operations linked to it, with a computed occupancy summary alongside the plan.

Working examples