A berth is not full at 100%. Vessels start queueing long before that, and every call blocks the berth for more than the cargo operation. This page explains the method, gives every formula, takes a full set of parameters, and shows what an additional jetty, ship-to-ship (STS) transfer, or a better berth schedule can do about it.
Go to parameter setupRead the method firstOccupancy is not congestion. BOR says how full the berth is. Waiting time says how much queueing it causes, and it rises steeply well before 100%.
A call blocks the berth for more than cargo work. Mooring, preparation, closing, waiting for a departure window, unmooring, and clearing the berth all count.
Variability matters as much as volume. Irregular arrivals and uneven berth times create queues even when average capacity looks adequate.
More berths change the tipping point. Two berths tolerate a higher average occupancy than one, because a free berth can take the next vessel.
STS relieves the berth, not the system. Mother vessels wait at anchorage, and lighters still need somewhere to discharge. The model loads both.
One clash becomes a chain. A late or delayed vessel pushes the next one, which pushes the one after it. The schedule view shows who waits, how long, and why.
Every number is yours. The example values are generic placeholders. Replace them with your own timestamps and vessel-call history.
Berth occupancy is usually calculated as vessel calls × berth time ÷ available berth time. At 100% the berth has no free time at all, so any figure above 100% is physically impossible. But vessels do not arrive on a perfect timetable, and they do not take identical time at the berth. Random gaps and overlaps create a queue at anchorage. That queue grows slowly at low occupancy and then sharply.
Analytical work on container terminals relates berth occupancy to the ratio of waiting time to service time, and notes that the number of berths required depends on the distributions of ship arrivals and service times, including peak factors (Radmilović and Jovanović, 2006). The tipping point depends on the number of berths, how regular the arrivals are, and how uneven berth times are. This model calculates it for your own numbers.
Two further effects are easy to miss. First, berth time is more than cargo time: the berth is blocked while the vessel moors, while it is prepared for cargo work, after cargo work finishes, while it waits for a pilot or tide window to leave, and while it unmoors. Second, many BOR figures count only port stay, from berthing to departure, so waiting at anchorage sits outside the number and a berth can report a comfortable BOR while vessels queue outside.
The bar updates as you edit the setup. Everything except the cargo operation is time the berth is blocked without moving cargo.
A phase that blocks the berth is worth the same per hour as cargo work. Moving work off the berth (documents at anchorage, pre-staged equipment, parallel tasks) raises capacity without building anything. The “value of an hour” table in the results ranks the phases.
The queue formula gives long-run averages. A schedule shows one concrete period. When two vessels clash, the second one starts late, so its berth is occupied later, so the next vessel waits longer. The Gantt shows that chain.
Shares only apply from each option’s opening year. If sJ + sS exceeds 100% for a class, both are scaled down proportionally.
“Berthing” means the vessel is alongside, at the end of a. Downtime is a share of operating time, so productive hours are grossed up by 1 ÷ (1 − Downtime). Rates are productivity while working, not averages that already include waiting.
E is the average wait for a manoeuvre that wants to start at a random time of day. In steady state the berth stays blocked or idle for that time, so it counts as capacity loss. The schedule view uses the actual clock times instead of this average.
Blocked ratio ρ is the figure to compare with a planning target. BOR alongside counts only the time the vessel is attached to the jetty, so ρ is always at least as high.
p = share of calls in each class, CV = variation of berth time inside a class, Ca² = squared variability of arrival gaps (1 = random arrivals, lower = scheduled). Wq is the Erlang C waiting time scaled by (Ca² + Cs²) ÷ 2, the Allen–Cunneen approximation. If ρ ≥ 1 the queue is unstable and wait is unbounded.
“Congestion constrains capacity” means average waiting exceeds your threshold, or the queue is unstable. The model also reports a peak-month view: ρ(peak) = ρ × PeakFactor.
The lighter-cycle helper in the setup converts lighter capacity, loading rate, sailing time, shore unloading rate, and the number of lighters into mother-vessel hours and shore berth hours.
Compare the “do nothing” cost with the plan to see what congestion costs, then set that against the cost of the option. Capex is not modeled.
Waiting at anchorage does not block the berth. A reserved block (maintenance) is a vessel with zero phases and an operating-hours override.
Each facility is its own queue. The model compares “do nothing” against your plan year by year, then finds the tipping point and the waiting cost.
Adding a berth raises the tolerable occupancy, so the capacity gain is larger than its nominal berth-days. Check its opening year against the year congestion starts, and which classes can really use it (draft, cargo gear, and berth length are not modeled).
STS relieves the jetty, not the system. Watch the anchor-spot utilization and the lighter load: lighters that discharge at the same jetty can cancel the relief. Weather stoppages beyond the availability input are not modeled.
Shorter phases, wider pilot or tide windows, steadier arrivals, and higher handling rates cost less than a new facility. The levers in section 6 and the schedule in section 7 show how far they go.
Each berth belongs to either the main facility or the additional jetty. Only active berths count. The additional jetty and STS open in the year you set, and the schedule view can include or exclude them.
A manoeuvre may only start inside an open window. Windows are fixed daily clock hours. Tidal windows must satisfy open 1 < close 1 < open 2 < close 2.
One row per class. Hours are for the main berth. Cargo operations = cargo ÷ rate, grossed up for downtime. The window flag says whether the class is limited by the window above. Leave a row empty to drop it.
Share of each class’s calls moved once the option is open. A class must be marked eligible to use STS. Lighter trips and shore hours describe the discharge ashore that STS creates.
Estimates lighter trips, mother-vessel hours, and shore berth hours for one class. It changes nothing until you press Apply.
| Lighters | Trips per call | Mother-vessel hours | Mother-vessel days | Shore berth hours per trip |
|---|
Above the last edge the label is “Over capacity”. These bands are an example policy, not a standard. The CSCP treats target utilization as a policy choice.
The page does not save anything. If you refresh, the inputs return to the example, so export the scenario first. The vessel plan in section 7 is part of the scenario file.
“Hours saved” removes time from approach, preparation, closing, and unberthing, split in proportion to each phase. The levers act on sections 6.1 to 6.8. The schedule in section 7 has its own levers on each vessel.
| Vessel class | Calls / year | Share of calls | Cargo ops incl. downtime (h) | Prep & manoeuvres alongside (h) | Gap + window idle (h) | Blocked per call (h) | Annual berth-hours | Non-productive share |
|---|
| Measure | Value | How to read it |
|---|
Congestion state: OK (wait below half the threshold), Watch (above half), Constrained (above the threshold), Unstable (blocked ratio at or above 100%). Wait is the average time a vessel waits before berthing.
| Berths | Tipping blocked ratio | Effective capacity (calls/yr) | Calls in selected year | Verdict |
|---|
Selected year, same demand and phases. First table: main berths alone, no jetty or STS. Second table: the plan with a different number of additional jetty berths.
| Main berths | Blocked ratio | Average wait (h) | Peak-month wait (h) | State |
|---|
| Additional jetty berths (with plan) | Main ratio | Main wait (h) | Jetty ratio | Jetty wait (h) | Worst state |
|---|
Sweeps the share of STS-eligible calls moved to STS in the selected year (jetty shares as planned). Feasible means both the main berth and the STS anchor spot stay stable and under the waiting threshold.
| STS share | Main ratio | Main wait (h) | STS utilization | STS wait (h) | Feasible? |
|---|
| Anchor spots | STS utilization | STS wait (h) | Main wait (h) | State |
|---|
Selected year, main berths, do nothing. Each row removes the hours you set in section 5.5 from that phase for every call, capped at the phase length, and shows what happens to planning capacity at your target ratio.
| Phase | Weighted average now (h/call) | Avg hours saved per call | New mean blocked time (h) | Calls/yr at target ratio | Gain (calls/yr) | Gain (%) |
|---|
A phase that blocks the berth is worth the same per hour as cargo work. Moving work off the berth (documents at anchorage, pre-staging, parallel tasks) raises capacity without a new jetty.
Base is the current plan. What-if adds the levers: set “In base” to No and “In what-if” to Yes to test an extra vessel; use ETA shift to slip a vessel; use extra ops delay for a breakdown or weather. A BLOCK row reserves a berth (maintenance, bunkering) for the hours in its ops override. Preferred berth “Any” picks the berth that allows the earliest mooring start. ETA is the arrival at the pilot station.
| Indicator | Base plan | What-if | Change |
|---|
| Vessel | Class | Base: berth | Base: wait (h) | What-if: berth | What-if: ETB (mooring start) | What-if: wait (h) | ETB shift (h) | Chain level | Blocking chain | Impact |
|---|
Chain level 1 = a direct clash with a vessel that did not itself wait for the berth. Level 2 or more = a snowball: the blocking vessel was already delayed by another. The blocking chain follows the vessels back to the root cause.
| CSCP idea | Where it shows up here |
|---|---|
| Utilization = hours actually used ÷ hours available | The blocked ratio is a utilization measure for a berth |
| Target utilization is a policy choice that builds in spare capacity | The planning target, status bands, and waiting threshold are policy inputs |
| The bottleneck limits the system (theory of constraints) | The berth is the constraint, and the anchorage queue is the buffer in front of it |
| Setup time reduction: turn internal work (machine stopped) into external work (machine running) | Berth phases that can move off the berth, such as documents at anchorage or pre-staged equipment (the mapping to berths is an adaptation, not CSCP text) |
| When load exceeds capacity: add capacity, change the load, or change the schedule | Additional jetty and berths, shifting load to STS, and regularizing arrivals |
| Capacity strategies (lead, lag, stepwise) | The opening year of the jetty and STS versus the year congestion starts |
| Judge changes by total cost at equal service | Waiting cost versus the cost of the option |
The CSCP has no berth-capacity or queueing formulas. The queueing layer here is standard operations research, not CSCP content.
The queue uses the Erlang C formula scaled by the Allen–Cunneen factor, valid as a planning approximation. It treats arrivals as a steady stream over the year and berths as interchangeable servers. Real berth plans, draft limits, vessel size, and cargo-specific berth restrictions make some berths unusable for some calls.
Vessels are placed first come, first served by ETA. Priorities, inserting a small vessel into a gap before an already-placed later vessel, and draft-by-tide rules are not modeled. The result is one concrete plan, not a statistical forecast.
A window limits when a manoeuvre may start. Real tide windows drift each day and depend on draft. In the steady-state view the window delay is an average per manoeuvre. STS operations are not restricted by the window.
Ca² and berth-time variability are placeholders. Small changes move the tipping point a lot. Calibrate them from your own arrival and port-stay history.
STS uses a days-based capacity and an optional lighter cycle. It ignores swell stoppages beyond the availability input, priority rules, lighter fleet sharing between mother vessels, and the berth load lighters add in the schedule view.
Vessels do not leave the queue, are not re-routed, and are never cancelled. Costs of building a jetty or running STS are not modeled. Define what counts as port stay, waiting, and available time, and use the same rule every year.