Model & Methodology

What is decided, what is minimized, and which rules every plan must satisfy.

Business problem

FAL2, FAL3, and FAL5 were selected as representative CMA CGM Asia–North Europe liner services to demonstrate how Red Sea routing disruptions affect fleet allocation, sailing speeds, and operating costs.

Each service keeps a weekly departure, and all three share one limited pool of company-owned, identical vessels. More ships on a loop allow slower, cheaper sailing; fewer ships force faster sailing and higher fuel burn.

Primary decision
Vessels per service
x[s] ∈ {1,…,F}

How many vessels each service operates — an integer, chosen by the solver.

Derived, not decided
Sailing speed
v[s] = v(x[s])

Follows from the fleet size: the cheapest speed that still keeps weekly departures.

Objective
Minimum weekly cost
min Σ (fuel + h·x)

Fuel plus incremental vessel operating cost, in USD per week.

Essential rules
Every plan must
  • use at most the available fleet F
  • keep a departure every 7 days on every service
  • sail within the speed range

The dashboard compares three operating plans: Baseline (A, mixed-routing optimum) · Unchanged Fleet (B1, full Cape with the Baseline vessel counts, speeds recomputed) · Optimized Fleet (B2, full Cape, fleet and speeds re-optimized).

Key assumptions

  • Identical, company-owned vessels in one shared fleet — treating the three loops' vessels as a homogeneous, jointly allocatable pool is an illustrative modeling assumption, not a claim about CMA CGM's actual vessel ownership or deployment flexibility
  • Fixed port rotation and distance per scenario
  • One average sailing speed per service
  • Weekly departures on every service
  • Medium-term steady state (no transition)
  • Fuel per day ∝ speed³ (per nautical mile ∝ speed²)
  • Unused vessels may stay idle
  • No cargo demand, capacity, repositioning, canal tolls or AIS data in v1
Owned fleet: why ownership cost is left out. Each vessel's weekly cost splits into an unavoidable part and an activity-dependent part, h = h_active − h_idle. The unavoidable part is the same for every allocation, so dropping it does not change the optimal plan. h covers extra maintenance, consumables and operating expenses, plus the opportunity cost of using the vessel instead of keeping it in reserve — excluding fuel.

Constraints

C1
One fleet size per serviceexactly one integer option is chosen
Σ_n y = 1mandatory
C2
Shared fleet poolcouples the services
Σ n·y ≤ Fmandatory
C3
Binary optionsinteger vessel counts
y ∈ {0,1}mandatory
C4
Weekly frequencysailing + port (+ buffer) fits 7n days
Σ (sail+P+B−7n)·y ≤ 0mandatory
C5
Speed rangephysical operating limits
v_min ≤ Σ v·y ≤ v_maxmandatory
C6
Max fleet per servicebusiness cap per loop
Σ n·y ≤ Moptional
C7
Minimum schedule bufferrecovery margin in the rotation
B > 0 in C4optional
C8
Max round-trip timeactive ship cycle, not cargo transit
Σ sail·y + P ≤ Tmaxoptional
Full mathematical formulation
Solver variable (binary option)
y[s,n] ∈ {0,1}, x[s] = Σ n·y[s,n]
Round-trip distance per scenario
D[s] = D_westbound + D_eastbound
Required speed of option (s, n)
v_req = max(v_min, D/(24(7n−P−B)), D/(24(Tmax−P)))

Last term only when C8 is on; B = buffer when C7 is on, else 0. A non-positive denominator means no speed works.

Option speed and sailing time
v = min(v_max, v_req), sail = D/(24v)

If the required speed exceeds the maximum, the option sails at vmax, no longer fits 7n days, and C4 rules it out.

Fuel coefficient
c = f_ref / (24·v_ref³)
Weekly cost of option (s, n) and objective
C[s,n] = p·c·D·v² + h·n; min Σ C·y

One round trip departs per service per week, so weekly fuel is c·D·v² — not multiplied by n.

Why this is an exact 0–1 MILP. Speed enters the cost through v² and the frequency rule through 1/v. Rather than making speed a variable (a mixed-integer nonlinear program), every integer fleet size n is enumerated as an option. For a fixed n, speed, sailing time and cost are constants, so all constraints and the objective are linear in the binaries y. C1 forces exactly one y = 1 per service, so each summed row equals the chosen option's value — an exact reformulation, not an approximation.
How each constraint is implemented
#Implementation in the solver
C1, C2, C6Explicit linear rows over y (C6 only when enabled).
C3Variable domain (BoolVar).
C4 (+ C7)Explicit row using precomputed sailing days; the buffer B enters the same row and the option speed.
C5Satisfied in preprocessing (speed clamped to the range); kept as visible, non-binding rows.
C8Explicit row using precomputed sailing days; also raises the option speed.

The solver decides feasibility; if it reports INFEASIBLE, the app explains why afterwards (minimum fleet per service, binding rule).

Optimization workflow
Business inputsfleet, fuel, cost, routes, rules
→
Optionsn = 1…F per service: speed, time, cost
→
0–1 MILPy[s,n], C1–C8, min cost
→
OR-Tools / SCIPstatus & plan
→
Independent verificationre-derive all rules & costs
→
ResultsA · B1 · B2
Limitations and data sources
  • The two routing scenarios are hypothetical planning cases, not a claim about today's actual maritime routing.
  • Results compare separate steady states; not a transition or repositioning plan, and cost differences are not guaranteed cash savings.
  • Single average speed per service; weather, congestion and canal waiting are not modeled.
  • Leg distances come from authored sea-lane waypoints (validated against a published reference), not navigation software.
  • Port time = port calls × average berth days; economic inputs are illustrative, not CMA CGM data.

Data sources

    Scenario Configuration

    Planning inputs for both routing scenarios. Any change marks the dashboard as out of date until you rerun.

    Fleet & vessel characteristics (identical, company-owned)

    Derived fuel coefficient c t / (nm·kn²)

    Economics

    Default economic parameters are illustrative and are not CMA CGM financial data.

    Service and routing data

    Westbound = Asia → Europe Eastbound = Europe → Asia Round trip = westbound leg + eastbound leg of the scenario's route

    Default distances are the lengths of the authored sea-lane paths shown on the map. Hover a service name to see its port rotation.

    Business constraints

    Optional settings

    Always applied

    • One Fleet Allocation per ServiceEach service must be assigned a whole number of vessels.
    • Fleet AvailabilityThe total number of vessels assigned across all services cannot exceed the available fleet.
    • Weekly DeparturesEach service must maintain one departure every week.
    • Sailing Speed LimitsVessels must operate within the minimum and maximum sailing speeds specified above.

    Decision Dashboard

    Fleet allocation and sailing-speed plan for Asia–North Europe under Red Sea routing disruption.

    Preparing the first optimization run…