This is a practical manual rather than a specification. It tells you what each control does to the numbers, how to read every tile and chart without misinterpreting it, and which comparisons are safe to make. Every figure quoted comes from the committed engines or from calibration runs against them.
The platform holds six agent-based models of pre-salt operations. Each one represents a decision problem where the outcome is produced by interaction — between vessels and weather, aircraft and disruption, vehicles and a communication channel, responders and a drift field, bidders and each other, suppliers and a capital plan. In every case the aggregate behaviour is not a simple sum of the parts, which is why a spreadsheet or a single-objective optimiser gives the wrong answer.
It is built for three audiences. A logistics or aviation planner uses it to size a fleet and defend the number. An HSE or licensing team uses it to quantify exposure under seasonal forcing and to show what a response capability actually buys. A strategy or supply-chain team uses it to test policy — a bidding posture, a local-content target — before committing to it.
Nothing here requires code. Choose an engine, set parameters or apply a named scenario, run, and read the tiles and charts. The rest of this guide is about doing that well.
The engine selector is the top-level choice: it decides which model runs, which parameter groups matter, and which tiles and charts appear. Switching engine also resets the horizon to that engine's natural length and unit, so set the horizon after choosing the engine rather than before.
Agents. Platforms with tanks and stochastic burn, PSVs running a five-state machine, a hub tanker, a feeder, and an AR(1) sea state.
Question it answers. How many vessels, on what supply architecture, meet the service level at least cost per well-day?
Agents. Three onshore bases with slot limits and local Jet-A1 prices, two offshore clusters generating rotation demand, and heavy and medium airframes with availability states.
Question it answers. What does a disruption cost once you account for recovery, and how sensitive is base choice to fuel price?
Agents. Autonomous vehicles with a battery, a noisy intensity sensor and an acoustic modem; targets with heterogeneous signatures and finite inspection work.
Question it answers. What communication range maximises multi-target coverage, given that too much connectivity is as damaging as too little?
Agents. Oil particles carrying volume, age and a mesoscale drift anomaly; response vessels with transit speed, skimming windows and an allocation rule.
Question it answers. Which seasons are defensible for an Equatorial Margin campaign, and what does better allocation actually buy?
Agents. International operators with budgets, hurdle rates, information quality and risk posture; Petrobras with a tighter signal; transient consortia.
Question it answers. How much does the round leave on the table, and how much of the winner's curse is structural rather than behavioural?
Agents. Suppliers with capacity, backlog, technology level and cash; a capital plan arriving as a ramp to a plateau; a compliance and credit accounting layer.
Question it answers. Does a higher local-content mandate buy local content, or does it buy penalties and schedule slippage?
Defaults are the committed values. Ranges are the intervals over which the model behaves sensibly and the results are worth interpreting — they are guidance, not hard limits. Parameters outside the engine you have selected are inert.
Applies to every engine.
| Parameter | Units | Default | Sensible range | What moving it does |
|---|---|---|---|---|
Engine engine | selector | Offshore logistics | six engines | Chooses which model runs. Switching engine also resets the horizon to that engine's natural length and unit. |
Horizon numSteps | days · steps · blocks · months | 90 d logistics · 60 d aviation · 400 steps swarm · 40 d spill · 24 blocks auction · 60 months supplier | 30–365 d · 14–180 d · 50–900 steps · 10–90 d · 4–60 blocks · 12–120 months | Length of the run and the number of emitted rows. Several KPIs are cumulative or running averages, so the horizon is not a neutral setting: it moves the tile values as well as the chart length. |
Seed seed | integer | 42 | 0 for Monte Carlo, otherwise any 32-bit integer | Seeds the Mulberry32 stream. A non-zero seed reproduces a run bit-for-bit; zero falls through to the platform RNG and gives a fresh draw every run. |
Scenario scenario | selector | Baseline | 18 named scenarios | Applies a partial configuration on top of whatever you already have. Scenarios compose with manual tuning rather than replacing it. |
Agent count numAgents | count | 20 | 5–100 | Retained for template compatibility only. Every engine sizes its own populations from its own fields; changing this does not change any result. |
Shock enabled shockEnabled | toggle | off | on / off | Turns on a mid-horizon stress event. What the event is depends on the engine: a frontal system parked over the Santos Basin, a fleet-wide airworthiness directive, an amplified cross-shelf drift anomaly, an oil-price collapse, or a demand surge on the supplier base. |
Shock magnitude shockMagnitude | multiplier | 1.5 | 1.0–3.0 | Severity of that event. In logistics it multiplies the significant-wave-height mean between 35% and 50% of the horizon; in the auction it divides Brent over the middle fifth of the block sequence. |
Each KPI tile shows the value from the final emitted row. That is exactly right for a cumulative quantity and misleading for one that is still ramping or that oscillates. The notes below say which is which.
A note on chart axes. The horizontal axis is the engine's own unit: days for logistics, aviation and spill, mission steps for the swarm, months for the supplier base, and block index for the auction. The auction series is a sequence of independent awards, so there is no time trend to read into it — only a level and a dispersion.
A note on units. Costs are USD unless the tile says USD million. Emissions intensity is kilograms of CO₂-equivalent per cubic metre delivered, not tonnes. Stockout hours are platform-hours summed across the whole fleet, so sixteen units at zero stock for one hour is sixteen hours.
Each scenario is a partial configuration applied on top of your current settings, so it composes with manual tuning rather than resetting it. That is convenient and occasionally surprising: if you have already moved a field that a scenario also sets, the scenario wins.
| Scenario | Engine | Sets | Question it answers |
|---|---|---|---|
| Baseline | Any | No overrides | What does the default configuration do before any intervention? |
| Case 1 · Direct port→platform | Logistics | hubStrategy 1, fleet 6 | What does today's shore-based milk-round architecture cost? |
| Case 2 · Fixed offshore hub | Logistics | hubStrategy 2, fleet 5 | Does a floating forward stock point pay for its own charter? |
| Case 3 · Self-propelled hub | Logistics | hubStrategy 3, fleet 5 | Is it worth moving the hub to chase demand rather than parking it? |
| Severe weather season | Logistics | weatherSeverity 1.6, hs limit 2.5 m | How much of the fleet's capacity does a bad winter consume? |
| SBMI Maricá fuel −10% | Aviation | maricaFuelIndex 0.9 | How elastic is base selection to a local fuel-price advantage? |
| Aircraft recovery disabled | Aviation | recoveryEnabled off, disruptionRate 0.12 | What is the rescheduling capability actually worth in cancellations and cost? |
| Acoustic range 90 m | Swarm | acousticRangeM 90 | What does a fragmented, effectively uncoordinated swarm look like? |
| Acoustic range 350 m | Swarm | acousticRangeM 350 | What does the niching regime deliver in coverage and sub-population structure? |
| Acoustic range 750 m | Swarm | acousticRangeM 750 | What happens when the network becomes complete and consensus becomes unanimous? |
| Hybrid optical-acoustic | Swarm | opticalEnabled on, turbidity 0.2 | Can local link quality substitute for reach? |
| JFMA · ITCZ south | Spill | season JFMA, SDS | What is the worst-credible-case shoreline exposure for a first-quarter campaign? |
| JASO · ITCZ north | Spill | season JASO, SDS | How much does a seasonal drilling window reduce that exposure? |
| MAS-CoPSO response | Spill | season JFMA, MASCOPSO | What does better fleet allocation buy when the season is already against you? |
| High-price aggressive round | Auction | Brent 95, 11 IOCs | How far do profit-oil offers move when price and competition both rise? |
| Low-price round | Auction | Brent 52, 5 IOCs | Where does the profit-oil floor start to bind, and who stops bidding? |
| No Petrobras preemption | Auction | preemptionEnabled off | Is preemption a discipline on bidding or only a mechanism for taking equity? |
| 75% LC, no UCL offset | Supplier | localContentPct 75, UCL off | What does a harder mandate cost when the supply base cannot absorb it? |
| 75% LC with PEDEFOR offset | Supplier | localContentPct 75, UCL on, PEDEFOR 240m | Can investment and credits convert that cost into capability? |
How many seeds is enough? It depends on the metric. Charter cost is deterministic given the configuration and needs one. Cost per well-day and average passenger delay are stable across three to five seeds. Stockout hours, cancellations and beaching percentages are heavy-tailed and deserve eight or more — the calibration figures in this guide use eight seeds for logistics, six for the swarm and twelve for the spill.
Quote the seed. When a number leaves the platform and goes into a deck, carry the seed and the horizon with it. A cost per well-day without a horizon is not a number anyone can reproduce.
Six exercises that between them exercise every engine and demonstrate the platform's main claims. Each states what to change and roughly what you should see. If your numbers differ materially at the same seed and horizon, something has been changed in the configuration you did not intend.
Cost per well-day falls 526k → 224k → 58k → 41k → 28k USD and stockout hours fall 9,977 → 4,146 → 930 → 565 → 240 platform-hours. Nautical miles move the other way, 28k → 60k. The knee is at five vessels; everything past six is buying insurance, not service.
Case 1 at five vessels gives 58k USD per well-day, 51k nm and 930 stockout hours; Case 2 at four gives 24k USD, 28k nm and 269 hours. The hub reaches an acceptable service level with one fewer vessel and roughly 40% fewer steamed miles, and emissions intensity drops from 41–46 to about 35 kgCO₂e/m³.
At the base cluster geometry the two are within noise of each other — 16k USD and 81 stockout hours against 18k USD and 108 hours — so Case 3's advantage is second-order. It grows with demand heterogeneity, which is what the second run demonstrates: mobile, concentrated rig demand is what a fixed hub position cannot follow.
Baseline gives 3.19 h average passenger delay, 80% utilisation, two cancellations and 3.0m USD of recovery savings. Disabling recovery under a doubled disruption rate takes cancellations from 2 to 73 and adds 0.38m USD. The fuel discount moves SBMI Maricá from 25.2% to 27.6% of movements — a real but bounded response, because affinity and slot limits also bind.
Coverage runs 25, 25, 33, 31, 22, 8% and the niching index peaks at 2.03 at 250 m. The largest component grows monotonically from 24% to 92%. The analytic connectivity threshold reported by the engine is 513 m; above it the network is effectively complete, consensus becomes unanimous, and the swarm collapses onto the loudest single target. Too much connectivity is as damaging as too little.
Shoreline oiling is 43.9% and 44.1% under JFMA against 11.6% and 11.9% under JASO — allocation barely moves it. Recovery, by contrast, goes from 0.51% to 3.31%, a factor of six and a half. Allocation strategy changes what is recovered, not where the oil goes. In Phase IV, removing preemption lifts winning profit-oil from 43.6% to 44.1% and the winner's curse from 4.5% to 6.9%; on the supplier side, a 75% mandate without credits costs 459m USD of penalties and 21.5 months of delay, while the same mandate with PEDEFOR costs nothing in penalties and 9.4 months.