Simulation · Three synthetic ships · Thirty days

A month in the life of a small fleet.

Three fictional general-cargo ships sail from the Black Sea, the central Mediterranean and Antwerp to Jeddah, Aqaba, Alexandria, Tunis, Sfax and Jebel Ali. Every hour has a position, every noon a report, every port call a statement of facts. This is the shape of the data a shipowner's back office lives on, and what MarOps reconciles, alerts on and turns into a voyage result.

Nothing here is real. Ships, IMO numbers, cargoes, freight rates and weather are generated by a seeded script. The hull names match the demo fleet inside MarOps so the two can be compared side by side.
Routes and positions

Scrub the month.

Lines are the hourly track, dots the noon positions, the large marker each ship at the selected day. Port stays show as the marker standing still.

—

How it was generated

A 300-line Python script walks each ship through a chain of ports and passage points at one-hour steps. Speed follows a synthetic Beaufort number, fuel follows cons = k·v³ at sea and a hotel load in port, and the noon report is cut at 12:00 UTC exactly as an officer would.

The same ships inside MarOps

The demo tenant carries the same three hulls with synthetic tracks and noon reports, next to real ships on live AIS. Fuel reconciliation, certificate alerts, publication needs per route and the voyage P&L run on exactly this data.

Laytime, properly

The laytime figures on this page are deliberately naive: commenced to completed, minus rain, against cargo ÷ rate. The real statement respects NOR notice time, SHEX and WWD exceptions, once-on-demurrage and reversible laytime. Try it on the calculator.