Elevator Parking Simulator

Apartment elevator parking — fixed passenger scenarios, regime Batch evidence, and clear limits of a synthetic ops lab.

July 27, 2026 (2mo ago)

Demo

GitHub · Full demo · Insights

Pick a regime preset (Evening / Morning / High arrival) → Stay → Start, then Compare all and Batch N=100. Prefer Open full screen if the embed feels tight.

Elevator Parking Simulator — fixed scenario compare

Open full screen

Problem

Where should idle elevators wait in an apartment bank? Parking placement is a policy choice; rankings depend on traffic regime.

StrategyIdle cars go to…
StayLast stop
LobbyFloor 1
MidMid-building
SpreadEven homes along the shaft
DemandRecent call-heat floors

Approach

  1. Traffic knobs + scenario seed define one passenger stream
  2. Replay / Compare all hold that stream fixed so only parking policy changes
  3. Batch N=100 (seeds 42…141) ranks strategies with sticky hall dispatch
  4. Change one Policy knob; re-run Batch before claiming a win

Metrics: avg / max wait (ticks), empty travel (floors), IdleFrac (parking-sensitive / mixed / saturated), ticks, completed. Rank-by picks the objective — there is no single score.

Results

Evening default vs morning vs saturated high-arrival (REGIME):

RegimeIdleFrac1st by avgWaitStay−best gap
Evening (arr 15%, target 80)54%Lobby 1.604.63
Morning (arr 15%, target 80)50%Spread 4.364.16
High arrival (arr 90%, target 200)5%Mid ≈ pack ~34–350.90

Pick parking by regime (Lobby for evening ingress; Spread for morning egress). When IdleFrac is saturated, stop tuning parking — next lever is zoning (documented, not coded). Do not ship a “global best” from one Replay. Parking needs idle time; parking policy is not the same as hall dispatch.

Limitations

Synthetic lab: Bernoulli arrivals, tick time, distance+load hall cost (not group ETA), no real-building calibration. Use for lever separation and fair A/B — not as a vendor-controller replacement study. Batch winRate can exceed 100% on ties.

Stack

Vanilla HTML · CSS · JavaScript · /elevator/

Notes

Takeaways, sticky vs reassign, traffic model

Takeaways

  1. No universal best parking policy — evening Lobby, morning Spread; gaps collapse when saturated
  2. IdleFrac diagnoses parking-sensitive vs saturated regimes
  3. Sticky orphans vs reassign thrash (Mid worse on N=100 sticky vs reassign A/B)
  4. Re-run Batch N=100 before/after one Policy change

Full tree + interview Q&A: /elevator/INSIGHTS.md · 한국어.

Sticky vs reassign: Sticky keeps the first car; Reassign rescores each tick.

E1: MOVING  load 4/8   pickup #76 @16→L1
E3: IDLE @ 20
E4: IDLE @ 20

Evening sticky vs reassign A/B: Stay max wait improves under reassign; Mid mean wait worsens (4.17→5.02) — myopic idle steal.

Traffic model (apartment default): Passenger OD is generated once from the seed + traffic knobs, then reused for Replay / Compare all.

PeriodOrigin mix (approx.)Story
Morning egress~90% upper, ~10% lobbyLeaving
Evening ingress~90% lobby, ~10% upperComing home
Midday / off-peak~45% lobby, ~55% upperMixed

Arrival rate = per-tick Bernoulli (default 15%). Interfloor % = upper→upper chance (default 10%).