Delay by cargo class
Hours from release at the pad to delivery. Bars are means over the seeds; whiskers are 95% confidence intervals. Deferrable bulk lots are held on purpose under the marketplace.
Items of the first seed
Each dot is one delivered item at its release day and delay (log scale). Grey bands are nights, orange ticks are landings.
Per-seed results
All four dispatch rules on the same seeds
Common random numbers: every rule sees the same landings, manifests and faults for a given seed, so the differences are paired. The comparison takes about four times as long as a single run.
Urgent cargo: 90th-percentile delay (h)
Urgent cargo delivered within 24 h
Landed cargo mass that is immovable (%)
Vehicles caught by the night (per year)
Table
One simulated year on the base map
Replays the first seed of the last run, or any lunarsim-trace v1 file (the Python lunarsim trace output or a trace exported here). Vehicles move along the site graph; a ring around a site shows cargo waiting there; the shaded overlay is the lunar night. Filled markers are loaded vehicles; the label gives the load.
Engine
Optional. Start the reference engine locally with lunarsim serve (port 8765) and connect: the cross-implementation check can then run the Python side live on the same seeds, and the Run tab gets a Run in Python button. Without a server the page works exactly as before.
Verification checks
Each check compares the simulator with an independent reference: an analytic formula, a published measurement or a conservation identity. The same checks run in the Python test-suite of the research repository.
Cross-implementation check
Python reference results for the Phase-2 default fleet (30 seeds, from the paper's E1 suite) against this browser implementation on its own seeds. The two use different random-number generators, so agreement is statistical: means should lie within each other's 95% confidence intervals.
What is simulated
Landers arrive as Poisson processes (CLPS-class 100–500 kg, Blue Moon MK1-class 2–3 t, large landers 12–30 t) at one of two pads more than 1 km from the base. Each landing draws a manifest from five cargo classes with NASA's published mass ranges; items become available after an offload delay. Bulk regolith lots and return items (trash, samples) add recurring flows. Vehicles belong to owners and have a capacity, speed, night capability, autonomy level, fault process and other duties. Travel time follows the slope-weighted site graph; teleoperated speed follows NASA's JSC trial table (3.24, 2.56, 2.03, 1.76 km/h at 0, 4, 6, 8 s round trip).
Dispatch rules
In-house: each cargo owner is served by one contracted carrier, oldest item first, nearest vehicle. Pooled greedy: any vehicle may serve any item. Batched assignment: every hour, a minimum-cost assignment of free vehicles to waiting items. Marketplace: a sequential single-item auction on generalised cost (vehicle wear, operator time and the shipper's value of delivery time, minus an urgency credit), with bundling of same-pad items, consolidation of bulk lots to a 70% load or 24 h, team lifts for items heavier than any one vehicle, backhaul of return items, refusal of jobs that would be caught by the night, and anticipatory staging of an idle vehicle at the pad before a published landing.
Reading the numbers
The primary metric is the 90th-percentile delay of urgent (priority-1) cargo and the share delivered within 24 h. Immovable mass is landed cargo heavier than any vehicle or team in the fleet. Costs are the fleet's amortised capital plus operator time, per kilogram of all mass moved, and per kilogram of landed cargo alone. Confidence intervals are 1.96 standard errors across seeds; the precision mode adds seeds until the 99% interval of the mean urgent delay is within 2% of the mean.
Relation to the paper and the code
This page is a line-by-line port of the Python package lunarsim used for the preprint Who Hauls the Habitat? The Verification tab runs the same analytic checks as the Python test-suite and compares the two implementations on the paper's Phase-2 cells. Scenarios can be exported as JSON and run from the command line with lunarsim run --scenario file.json. Parameters marked as assumptions in the paper (hauler cost, bulk flows, operator cost, value of time) are the defaults here and can be changed in the rail.