Three consumables — oxygen, water and food — drain independently at real per-crew-member rates (O2 ≈ 0.84 kg/person/day, water ≈ 3.6 kg/person/day, food ≈ 1.8 kg/person/day):
dS/dt = −N·r_i (kg/day, per consumable i)
Reserve remaining_i = S_i / (N·r_i) (days)
Each resupply shipment is sized to cover one full interval T plus a safety buffer m, exactly like the safety-stock / reorder-point model used in real supply-chain inventory theory:
Shipment_i = N·r_i·T·(1 + m/100)
But the vehicle doesn't launch on the dot — every cycle draws a random delay up to the chosen uncertainty fraction of T, and daily consumption itself wobbles ±12% from crew activity, just like real ISS resupply slips (Cygnus, Dragon, Progress all fly on windows, not guarantees). A stockout is flagged the instant any stock level hits zero before its delayed shipment docks.
The Monte-Carlo panel doesn't just watch the live run — it independently re-simulates 5,000 full resupply cycles at the current slider settings every time you move a slider, drawing a fresh random delay and consumption wobble each trial, and reports the fraction that stocked out. Raise the safety buffer and re-check: the measured probability drops every time, because a bigger buffer absorbs a bigger worst-case delay before the shipment lands.
- Crew size — sets the daily burn rate N·r for all three consumables at once.
- Resupply interval — how far apart cargo missions are scheduled.
- Launch-delay uncertainty — the maximum launch slip, as a fraction of the interval; a real random draw is taken every cycle.
- Safety stock buffer — extra shipment mass that absorbs delay risk; this is the lever that trades launch cost against measured stockout probability.