Eight regions sit on a ring around a central supply hub. Each region i runs its own SIR compartmental model, coupled to its two ring neighbours by a travel term that carries infection between regions:
dS_i/dt = -β·S_i·I_i/N - τ·(S_i - avg S of neighbours)
dI_i/dt = β·S_i·I_i/N + τ·(I_j + I_k - 2·I_i) - γ·I_i
dR_i/dt = γ·I_i
τ (the travel-coupling rate) is scaled by 1 − quarantine strength, so tighter travel restriction slows how fast an outbreak in one region seeds its neighbours — at the cost of nothing else; this sim treats it as a free dial exactly like the source article's containment layer.
Demand at region i is proportional to its currently-infected population:
D_i(t) = c · I_i(t) (c = supply units consumed per active case per day)
stock_i(t+1) = max(0, stock_i(t) + shipment_i − D_i(t))
Each day the hub has a fixed shipping capacity to distribute across all eight regions using the selected strategy:
- Equal split — capacity divided evenly regardless of need.
- Proportional to demand — each region gets capacity × (D_i / ΣD), so bigger outbreaks get bigger shipments.
- Greedy — highest need first — regions are ranked by stock/demand ratio (most starved first) and filled to a healthy buffer until capacity runs out, exactly the triage rule a real logistics cell would use under scarcity.
A region enters stockout whenever demand exceeds stock + shipment for that day; the readout counts stockout-days summed across all regions and all time, which is the single number a strategy is trying to minimise.
This 2D redraw keeps the exact same coupled-SIR + logistics engine as the 3D version (same equations, same Euler step, same three allocation rules) but replaces the orbit-camera scene with a genuine top-down network graph you can pan and zoom, plus two scrolling time-series strips — a view a real epidemiological ops dashboard would actually use, not a flattened 3D render.