{ "scenarios": { "circuit_alpha_post_race": { "scenario_id": "circuit_alpha_post_race", "scenario_name": "Simulation 1 \u00b7 F1 Circuit Stress Test", "venue_id": "circuit_alpha", "crowd_size": 40000, "duration_s": 3600.0, "seeds": [ 42193, 1177, 90210, 31337, 8080, 5150 ], "review_interval_s": 180.0, "counterfactual_horizon_s": 240.0, "arms": [ { "id": "shortest_path", "label": "Shortest path", "description": "Baseline A \u2014 every spectator walks the shortest route; no operator action." }, { "id": "static_assignment", "label": "Static routing", "description": "Baseline B \u2014 a capacity-aware plan computed before the event and never revised." }, { "id": "flowtwin", "label": "FlowTwin", "description": "Prediction, counterfactual strategy selection and adaptive rerouting, re-evaluated on a review cycle." } ], "metrics": [ { "key": "peak_density", "label": "Peak density", "unit": "p/m\u00b2", "lower_is_better": true }, { "key": "critical_edge_seconds", "label": "Critical exposure", "unit": "corridor\u00b7s", "lower_is_better": true }, { "key": "avg_travel_time_s", "label": "Average travel time", "unit": "s", "lower_is_better": true }, { "key": "p95_travel_time_s", "label": "95th percentile travel time", "unit": "s", "lower_is_better": true }, { "key": "max_queue", "label": "Maximum queue", "unit": "people", "lower_is_better": true }, { "key": "throughput", "label": "Throughput", "unit": "people", "lower_is_better": false }, { "key": "dispersal_time_s", "label": "Dispersal time (95%)", "unit": "s", "lower_is_better": true }, { "key": "rerouted_agents", "label": "Rerouted spectators", "unit": "people", "lower_is_better": null } ], "runs": [ { "arm": "shortest_path", "seed": 42193, "wall_s": 11.71, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2342.0, "avg_travel_time_s": 837.1, "p95_travel_time_s": 1891.0, "max_queue": 4505.0, "throughput": 40000.0, "dispersal_time_s": 2399.0, "rerouted_agents": 0.0, "aggregate_risk": 9470.07 }, "interventions": [] }, { "arm": "static_assignment", "seed": 42193, "wall_s": 9.78, "metrics": { "peak_density": 3.543, "critical_edge_seconds": 1596.0, "avg_travel_time_s": 774.72, "p95_travel_time_s": 1634.0, "max_queue": 4294.0, "throughput": 40000.0, "dispersal_time_s": 2125.0, "rerouted_agents": 2033.0, "aggregate_risk": 8882.557 }, "interventions": [] }, { "arm": "flowtwin", "seed": 42193, "wall_s": 88.14, "metrics": { "peak_density": 1.585, "critical_edge_seconds": 0.0, "avg_travel_time_s": 773.67, "p95_travel_time_s": 1619.0, "max_queue": 1498.0, "throughput": 39990.0, "dispersal_time_s": 2018.0, "rerouted_agents": 5509.0, "aggregate_risk": 9212.232 }, "interventions": [ { "t_s": 420.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 3567, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2103, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 780.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 743, "bottleneck": "NE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 960.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "NE CONCOURSE \u2192 CONC E" }, { "t_s": 1140.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1320.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 31, "bottleneck": "E CONCOURSE \u2192 SE CONCOURSE" }, { "t_s": 1500.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1680.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1860.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2040.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2220.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2400.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2580.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2760.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2940.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3480.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 1177, "wall_s": 11.82, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2284.0, "avg_travel_time_s": 832.92, "p95_travel_time_s": 1871.0, "max_queue": 4483.0, "throughput": 40000.0, "dispersal_time_s": 2402.0, "rerouted_agents": 0.0, "aggregate_risk": 9351.924 }, "interventions": [] }, { "arm": "static_assignment", "seed": 1177, "wall_s": 10.07, "metrics": { "peak_density": 3.453, "critical_edge_seconds": 1334.0, "avg_travel_time_s": 772.01, "p95_travel_time_s": 1624.0, "max_queue": 4133.0, "throughput": 40000.0, "dispersal_time_s": 2128.0, "rerouted_agents": 2020.0, "aggregate_risk": 8791.614 }, "interventions": [] }, { "arm": "flowtwin", "seed": 1177, "wall_s": 93.49, "metrics": { "peak_density": 1.895, "critical_edge_seconds": 0.0, "avg_travel_time_s": 779.77, "p95_travel_time_s": 1694.0, "max_queue": 1693.0, "throughput": 39867.0, "dispersal_time_s": 2135.0, "rerouted_agents": 5746.0, "aggregate_risk": 9764.541 }, "interventions": [ { "t_s": 420.0, "strategy_id": "destination_split", "label": "Split to RAIL", "agents_affected": 3055, "bottleneck": "MAIN PLAZA \u2192 NE CONCOURSE" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2298, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 780.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1274, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 960.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1140.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1320.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 118, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1500.0, "strategy_id": "reroute_30", "label": "Redirect 30%", "agents_affected": 36, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1680.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1860.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "E CONCOURSE \u2192 NE CONCOURSE" }, { "t_s": 2040.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 30, "bottleneck": "EXIT B \u2192 COACH" }, { "t_s": 2220.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "MAIN PLAZA \u2192 N CONCOURSE" }, { "t_s": 2400.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2580.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "NE CONCOURSE \u2192 CONC E" }, { "t_s": 2760.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "EXIT A \u2192 RAIL" }, { "t_s": 2940.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "SE CONCOURSE \u2192 S CONCOURSE" }, { "t_s": 3480.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 90210, "wall_s": 10.6, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2386.0, "avg_travel_time_s": 837.81, "p95_travel_time_s": 1900.0, "max_queue": 4508.0, "throughput": 40000.0, "dispersal_time_s": 2418.05, "rerouted_agents": 0.0, "aggregate_risk": 9439.372 }, "interventions": [] }, { "arm": "static_assignment", "seed": 90210, "wall_s": 9.71, "metrics": { "peak_density": 3.5, "critical_edge_seconds": 1592.0, "avg_travel_time_s": 775.72, "p95_travel_time_s": 1649.0, "max_queue": 4260.0, "throughput": 40000.0, "dispersal_time_s": 2155.0, "rerouted_agents": 2005.0, "aggregate_risk": 8857.792 }, "interventions": [] }, { "arm": "flowtwin", "seed": 90210, "wall_s": 91.45, "metrics": { "peak_density": 2.304, "critical_edge_seconds": 0.0, "avg_travel_time_s": 774.66, "p95_travel_time_s": 1617.0, "max_queue": 2432.0, "throughput": 39665.0, "dispersal_time_s": 1979.0, "rerouted_agents": 5699.0, "aggregate_risk": 10182.851 }, "interventions": [ { "t_s": 420.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 3593, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2082, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 780.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 734, "bottleneck": "NE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 960.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "NE CONCOURSE \u2192 CONC E" }, { "t_s": 1140.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 123, "bottleneck": "E CONCOURSE \u2192 SE CONCOURSE" }, { "t_s": 1320.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 148, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1500.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1680.0, "strategy_id": "open_alternate", "label": "Open EXIT A", "agents_affected": 10, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1860.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "MAIN PLAZA \u2192 N CONCOURSE" }, { "t_s": 2040.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2220.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "NE CONCOURSE \u2192 CONC E" }, { "t_s": 2400.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2580.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "EXIT B \u2192 COACH" }, { "t_s": 2760.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2940.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "EXIT C \u2192 P SOUTH" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3480.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 31337, "wall_s": 10.52, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2318.0, "avg_travel_time_s": 833.29, "p95_travel_time_s": 1877.0, "max_queue": 4507.0, "throughput": 40000.0, "dispersal_time_s": 2399.0, "rerouted_agents": 0.0, "aggregate_risk": 9334.988 }, "interventions": [] }, { "arm": "static_assignment", "seed": 31337, "wall_s": 9.0, "metrics": { "peak_density": 3.528, "critical_edge_seconds": 1540.0, "avg_travel_time_s": 770.26, "p95_travel_time_s": 1620.0, "max_queue": 4282.0, "throughput": 40000.0, "dispersal_time_s": 2121.0, "rerouted_agents": 2078.0, "aggregate_risk": 8807.925 }, "interventions": [] }, { "arm": "flowtwin", "seed": 31337, "wall_s": 84.56, "metrics": { "peak_density": 1.995, "critical_edge_seconds": 0.0, "avg_travel_time_s": 788.57, "p95_travel_time_s": 1714.0, "max_queue": 2146.0, "throughput": 39998.0, "dispersal_time_s": 2162.0, "rerouted_agents": 6095.0, "aggregate_risk": 9283.719 }, "interventions": [ { "t_s": 420.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 3566, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1412, "bottleneck": "NE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 780.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1344, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 960.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1140.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1320.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1500.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 44, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1680.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 6, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1860.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2040.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2220.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2400.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 2580.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2760.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2940.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "EXIT C \u2192 COACH" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3480.0, "strategy_id": "destination_split", "label": "Split to RAIL", "agents_affected": 1, "bottleneck": "EXIT C \u2192 COACH" } ] }, { "arm": "shortest_path", "seed": 8080, "wall_s": 11.9, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2270.0, "avg_travel_time_s": 830.67, "p95_travel_time_s": 1860.0, "max_queue": 4489.0, "throughput": 40000.0, "dispersal_time_s": 2381.0, "rerouted_agents": 0.0, "aggregate_risk": 9416.78 }, "interventions": [] }, { "arm": "static_assignment", "seed": 8080, "wall_s": 10.48, "metrics": { "peak_density": 3.512, "critical_edge_seconds": 1480.0, "avg_travel_time_s": 768.9, "p95_travel_time_s": 1609.0, "max_queue": 4217.0, "throughput": 40000.0, "dispersal_time_s": 2106.0, "rerouted_agents": 2056.0, "aggregate_risk": 8878.157 }, "interventions": [] }, { "arm": "flowtwin", "seed": 8080, "wall_s": 131.26, "metrics": { "peak_density": 1.832, "critical_edge_seconds": 0.0, "avg_travel_time_s": 793.49, "p95_travel_time_s": 1766.0, "max_queue": 1618.0, "throughput": 39998.0, "dispersal_time_s": 2252.0, "rerouted_agents": 3523.0, "aggregate_risk": 9688.465 }, "interventions": [ { "t_s": 420.0, "strategy_id": "destination_split", "label": "Split to RAIL", "agents_affected": 3010, "bottleneck": "MAIN PLAZA \u2192 NE CONCOURSE" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2271, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 780.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1252, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 960.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 51, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1140.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 11, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1320.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 176, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1500.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1680.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 20, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1860.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2040.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "E CONCOURSE \u2192 NE CONCOURSE" }, { "t_s": 2220.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2400.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2580.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2760.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2940.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3480.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 5150, "wall_s": 10.81, "metrics": { "peak_density": 3.632, "critical_edge_seconds": 2350.0, "avg_travel_time_s": 838.77, "p95_travel_time_s": 1902.0, "max_queue": 4450.0, "throughput": 40000.0, "dispersal_time_s": 2412.05, "rerouted_agents": 0.0, "aggregate_risk": 9386.788 }, "interventions": [] }, { "arm": "static_assignment", "seed": 5150, "wall_s": 9.3, "metrics": { "peak_density": 3.543, "critical_edge_seconds": 1596.0, "avg_travel_time_s": 777.2, "p95_travel_time_s": 1646.0, "max_queue": 4289.0, "throughput": 40000.0, "dispersal_time_s": 2139.0, "rerouted_agents": 2004.0, "aggregate_risk": 8859.23 }, "interventions": [] }, { "arm": "flowtwin", "seed": 5150, "wall_s": 97.74, "metrics": { "peak_density": 1.836, "critical_edge_seconds": 0.0, "avg_travel_time_s": 741.62, "p95_travel_time_s": 1576.0, "max_queue": 1627.0, "throughput": 37940.0, "dispersal_time_s": NaN, "rerouted_agents": 3688.0, "aggregate_risk": 10741.892 }, "interventions": [ { "t_s": 420.0, "strategy_id": "destination_split", "label": "Split to RAIL", "agents_affected": 3076, "bottleneck": "MAIN PLAZA \u2192 NE CONCOURSE" }, { "t_s": 600.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2389, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 780.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1279, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 960.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 41, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1140.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 140, "bottleneck": "E CONCOURSE \u2192 SE CONCOURSE" }, { "t_s": 1320.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1500.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 1680.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 84, "bottleneck": "E CONCOURSE \u2192 EXIT B" }, { "t_s": 1860.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2040.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "NE CONCOURSE \u2192 FAN ZONE N" }, { "t_s": 2220.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2400.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2580.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2760.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2940.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3300.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3480.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] } ], "generated_utc": "2026-08-12T15:56:22+00:00", "stats": { "shortest_path": { "peak_density": { "mean": 3.632390336935791, "sd": 0.0, "n": 6, "min": 3.6323903369357913, "max": 3.6323903369357913 }, "critical_edge_seconds": { "mean": 2325.0, "sd": 39.56008088970496, "n": 6, "min": 2270.0, "max": 2386.0 }, "avg_travel_time_s": { "mean": 835.0933333333332, "sd": 2.957085652387433, "n": 6, "min": 830.67, "max": 838.77 }, "p95_travel_time_s": { "mean": 1883.5, "sd": 15.392097539538485, "n": 6, "min": 1860.0, "max": 1902.0 }, "max_queue": { "mean": 4490.333333333333, "sd": 20.360637405433938, "n": 6, "min": 4450.0, "max": 4508.0 }, "throughput": { "mean": 40000.0, "sd": 0.0, "n": 6, "min": 40000.0, "max": 40000.0 }, "dispersal_time_s": { "mean": 2401.8500162760415, "sd": 11.672421757631525, "n": 6, "min": 2381.0, "max": 2418.050048828125 }, "rerouted_agents": { "mean": 0.0, "sd": 0.0, "n": 6, "min": 0.0, "max": 0.0 } }, "static_assignment": { "peak_density": { "mean": 3.5131913541004445, "sd": 0.031001921810443707, "n": 6, "min": 3.4527972027972025, "max": 3.542593769866497 }, "critical_edge_seconds": { "mean": 1523.0, "sd": 94.23198324702004, "n": 6, "min": 1334.0, "max": 1596.0 }, "avg_travel_time_s": { "mean": 773.1350000000001, "sd": 2.977279238947333, "n": 6, "min": 768.9, "max": 777.2 }, "p95_travel_time_s": { "mean": 1630.3333333333333, "sd": 14.197026292697903, "n": 6, "min": 1609.0, "max": 1649.0 }, "max_queue": { "mean": 4245.833333333333, "sd": 56.649262033047606, "n": 6, "min": 4133.0, "max": 4294.0 }, "throughput": { "mean": 40000.0, "sd": 0.0, "n": 6, "min": 40000.0, "max": 40000.0 }, "dispersal_time_s": { "mean": 2129.0, "sd": 15.198684153570664, "n": 6, "min": 2106.0, "max": 2155.0 }, "rerouted_agents": { "mean": 2032.6666666666667, "sd": 26.91756964429656, "n": 6, "min": 2004.0, "max": 2078.0 } }, "flowtwin": { "peak_density": { "mean": 1.907845941936851, "sd": 0.21600400156834812, "n": 6, "min": 1.584551811824539, "max": 2.3037190082644625 }, "critical_edge_seconds": { "mean": 0.0, "sd": 0.0, "n": 6, "min": 0.0, "max": 0.0 }, "avg_travel_time_s": { "mean": 775.2966666666666, "sd": 16.655123002314408, "n": 6, "min": 741.62, "max": 793.49 }, "p95_travel_time_s": { "mean": 1664.3333333333333, "sd": 65.55065895083656, "n": 6, "min": 1576.0, "max": 1766.0 }, "max_queue": { "mean": 1835.6666666666667, "sd": 335.9596536622945, "n": 6, "min": 1498.0, "max": 2432.0 }, "throughput": { "mean": 39576.333333333336, "sd": 741.2445990059931, "n": 6, "min": 37940.0, "max": 39998.0 }, "dispersal_time_s": { "mean": 2109.2, "sd": 99.11084703502438, "n": 5, "min": 1979.0, "max": 2252.0 }, "rerouted_agents": { "mean": 5043.333333333333, "sd": 1032.3782683149084, "n": 6, "min": 3523.0, "max": 6095.0 } } }, "deltas_vs_shortest_path_pct": { "static_assignment": { "peak_density": -3.2815576460293125, "critical_edge_seconds": -34.494623655913976, "avg_travel_time_s": -7.419330374249562, "p95_travel_time_s": -13.441288381559158, "max_queue": -5.445030064583179, "throughput": 0.0, "dispersal_time_s": -11.359993939133759 }, "flowtwin": { "peak_density": -47.47684678771968, "critical_edge_seconds": -100.0, "avg_travel_time_s": -7.160477072423038, "p95_travel_time_s": -11.63613839483232, "max_queue": -59.1195902308663, "throughput": -1.0591666666666606, "dispersal_time_s": -12.184358485871744 } } }, "barcelona_2022_egress": { "scenario_id": "barcelona_2022_egress", "scenario_name": "Simulation 2 \u00b7 Barcelona 2022 Counterfactual", "venue_id": "barcelona_2022", "crowd_size": 78000, "duration_s": 6000.0, "seeds": [ 42193, 1177, 90210, 31337 ], "review_interval_s": 300.0, "counterfactual_horizon_s": 180.0, "arms": [ { "id": "shortest_path", "label": "Shortest path", "description": "Baseline A \u2014 every spectator walks the shortest route; no operator action." }, { "id": "static_assignment", "label": "Static routing", "description": "Baseline B \u2014 a capacity-aware plan computed before the event and never revised." }, { "id": "flowtwin", "label": "FlowTwin", "description": "Prediction, counterfactual strategy selection and adaptive rerouting, re-evaluated on a review cycle." } ], "metrics": [ { "key": "peak_density", "label": "Peak density", "unit": "p/m\u00b2", "lower_is_better": true }, { "key": "critical_edge_seconds", "label": "Critical exposure", "unit": "corridor\u00b7s", "lower_is_better": true }, { "key": "avg_travel_time_s", "label": "Average travel time", "unit": "s", "lower_is_better": true }, { "key": "p95_travel_time_s", "label": "95th percentile travel time", "unit": "s", "lower_is_better": true }, { "key": "max_queue", "label": "Maximum queue", "unit": "people", "lower_is_better": true }, { "key": "throughput", "label": "Throughput", "unit": "people", "lower_is_better": false }, { "key": "dispersal_time_s", "label": "Dispersal time (95%)", "unit": "s", "lower_is_better": true }, { "key": "rerouted_agents", "label": "Rerouted spectators", "unit": "people", "lower_is_better": null } ], "runs": [ { "arm": "shortest_path", "seed": 42193, "wall_s": 17.3, "metrics": { "peak_density": 3.293, "critical_edge_seconds": 1434.0, "avg_travel_time_s": 725.31, "p95_travel_time_s": 1328.0, "max_queue": 3821.0, "throughput": 78000.0, "dispersal_time_s": 2520.0, "rerouted_agents": 0.0, "aggregate_risk": 14728.712 }, "interventions": [] }, { "arm": "static_assignment", "seed": 42193, "wall_s": 17.34, "metrics": { "peak_density": 3.293, "critical_edge_seconds": 1434.0, "avg_travel_time_s": 725.31, "p95_travel_time_s": 1328.0, "max_queue": 3821.0, "throughput": 78000.0, "dispersal_time_s": 2520.0, "rerouted_agents": 0.0, "aggregate_risk": 14728.712 }, "interventions": [] }, { "arm": "flowtwin", "seed": 42193, "wall_s": 98.92, "metrics": { "peak_density": 1.791, "critical_edge_seconds": 0.0, "avg_travel_time_s": 737.19, "p95_travel_time_s": 1413.0, "max_queue": 1564.0, "throughput": 78000.0, "dispersal_time_s": 2620.0, "rerouted_agents": 3955.0, "aggregate_risk": 15419.141 }, "interventions": [ { "t_s": 420.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 11336, "bottleneck": "MAIN CONCOURSE \u2192 FAN ZONE" }, { "t_s": 720.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 8683, "bottleneck": "EXIT W \u2192 P WEST / C-17" }, { "t_s": 1020.0, "strategy_id": "destination_split", "label": "Split to COACH", "agents_affected": 2573, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1320.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1544, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1620.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 1456, "bottleneck": "EXIT W \u2192 P WEST / C-17" }, { "t_s": 1920.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 342, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2220.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 94, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2520.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 37, "bottleneck": "E CONCOURSE \u2192 SE CONCOURSE" }, { "t_s": 2820.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 1, "bottleneck": "COACH \u2192 EXIT S" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3420.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3720.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4020.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4320.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4620.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4920.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 1177, "wall_s": 16.05, "metrics": { "peak_density": 3.379, "critical_edge_seconds": 1506.0, "avg_travel_time_s": 726.08, "p95_travel_time_s": 1332.0, "max_queue": 3947.0, "throughput": 78000.0, "dispersal_time_s": 2529.0, "rerouted_agents": 0.0, "aggregate_risk": 14673.831 }, "interventions": [] }, { "arm": "static_assignment", "seed": 1177, "wall_s": 17.11, "metrics": { "peak_density": 3.379, "critical_edge_seconds": 1506.0, "avg_travel_time_s": 726.08, "p95_travel_time_s": 1332.0, "max_queue": 3947.0, "throughput": 78000.0, "dispersal_time_s": 2529.0, "rerouted_agents": 0.0, "aggregate_risk": 14673.831 }, "interventions": [] }, { "arm": "flowtwin", "seed": 1177, "wall_s": 95.99, "metrics": { "peak_density": 1.986, "critical_edge_seconds": 0.0, "avg_travel_time_s": 751.67, "p95_travel_time_s": 1474.0, "max_queue": 1989.0, "throughput": 78000.0, "dispersal_time_s": 2674.0, "rerouted_agents": 5507.0, "aggregate_risk": 15919.515 }, "interventions": [ { "t_s": 420.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 11358, "bottleneck": "FAN ZONE \u2192 E CONCOURSE" }, { "t_s": 720.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2328, "bottleneck": "SE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 1020.0, "strategy_id": "destination_split", "label": "Split to COACH", "agents_affected": 2607, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1320.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 1540, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1620.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 1079, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1920.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 360, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2220.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 112, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2520.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 20, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2820.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 3, "bottleneck": "EXIT E \u2192 COACH" }, { "t_s": 3420.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3720.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 0, "bottleneck": "SE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 4020.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4320.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4620.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4920.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 90210, "wall_s": 15.17, "metrics": { "peak_density": 3.169, "critical_edge_seconds": 1206.0, "avg_travel_time_s": 717.66, "p95_travel_time_s": 1316.0, "max_queue": 3606.0, "throughput": 78000.0, "dispersal_time_s": 2507.0, "rerouted_agents": 0.0, "aggregate_risk": 14689.821 }, "interventions": [] }, { "arm": "static_assignment", "seed": 90210, "wall_s": 15.28, "metrics": { "peak_density": 3.169, "critical_edge_seconds": 1206.0, "avg_travel_time_s": 717.66, "p95_travel_time_s": 1316.0, "max_queue": 3606.0, "throughput": 78000.0, "dispersal_time_s": 2507.0, "rerouted_agents": 0.0, "aggregate_risk": 14689.821 }, "interventions": [] }, { "arm": "flowtwin", "seed": 90210, "wall_s": 84.28, "metrics": { "peak_density": 1.962, "critical_edge_seconds": 0.0, "avg_travel_time_s": 752.4, "p95_travel_time_s": 1481.0, "max_queue": 1996.0, "throughput": 78000.0, "dispersal_time_s": 2662.0, "rerouted_agents": 7591.0, "aggregate_risk": 15894.032 }, "interventions": [ { "t_s": 420.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 4013, "bottleneck": "MAIN CONCOURSE \u2192 FAN ZONE" }, { "t_s": 720.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2327, "bottleneck": "SE CONCOURSE \u2192 E CONCOURSE" }, { "t_s": 1020.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 2636, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1320.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 2515, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1620.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 1203, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1920.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 418, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2220.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 183, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2520.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 2820.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3420.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3720.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4020.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] }, { "arm": "shortest_path", "seed": 31337, "wall_s": 14.68, "metrics": { "peak_density": 3.162, "critical_edge_seconds": 1230.0, "avg_travel_time_s": 721.15, "p95_travel_time_s": 1322.0, "max_queue": 3580.0, "throughput": 78000.0, "dispersal_time_s": 2511.0, "rerouted_agents": 0.0, "aggregate_risk": 14579.01 }, "interventions": [] }, { "arm": "static_assignment", "seed": 31337, "wall_s": 38.65, "metrics": { "peak_density": 3.162, "critical_edge_seconds": 1230.0, "avg_travel_time_s": 721.15, "p95_travel_time_s": 1322.0, "max_queue": 3580.0, "throughput": 78000.0, "dispersal_time_s": 2511.0, "rerouted_agents": 0.0, "aggregate_risk": 14579.01 }, "interventions": [] }, { "arm": "flowtwin", "seed": 31337, "wall_s": 97.03, "metrics": { "peak_density": 1.721, "critical_edge_seconds": 0.0, "avg_travel_time_s": 758.64, "p95_travel_time_s": 1608.0, "max_queue": 1689.0, "throughput": 78000.0, "dispersal_time_s": 2752.0, "rerouted_agents": 5559.0, "aggregate_risk": 15696.5 }, "interventions": [ { "t_s": 420.0, "strategy_id": "reroute_40", "label": "Redirect 40%", "agents_affected": 3974, "bottleneck": "MAIN CONCOURSE \u2192 FAN ZONE" }, { "t_s": 720.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 7271, "bottleneck": "FAN ZONE \u2192 E CONCOURSE" }, { "t_s": 1020.0, "strategy_id": "destination_split", "label": "Split to COACH", "agents_affected": 2474, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1320.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 3021, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1620.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 1201, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 1920.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 394, "bottleneck": "EXIT N \u2192 RAIL MONTMEL\u00d3" }, { "t_s": 2220.0, "strategy_id": "combined", "label": "Redirect 25% + stagger", "agents_affected": 49, "bottleneck": "EXIT S \u2192 COACH" }, { "t_s": 2520.0, "strategy_id": "gate_stagger", "label": "Stagger release", "agents_affected": 9, "bottleneck": "COACH \u2192 EXIT E" }, { "t_s": 2820.0, "strategy_id": "reroute_20", "label": "Redirect 20%", "agents_affected": 18, "bottleneck": "E CONCOURSE \u2192 EXIT E" }, { "t_s": 3120.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3420.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 3720.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4020.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" }, { "t_s": 4320.0, "strategy_id": "no_action", "note": "no intervention beat doing nothing" } ] } ], "generated_utc": "2026-08-12T16:05:13+00:00", "stats": { "shortest_path": { "peak_density": { "mean": 3.2507861635220126, "sd": 0.09034866051224848, "n": 4, "min": 3.16203243958954, "max": 3.378848063555114 }, "critical_edge_seconds": { "mean": 1344.0, "sd": 128.82546332150332, "n": 4, "min": 1206.0, "max": 1506.0 }, "avg_travel_time_s": { "mean": 722.55, "sd": 3.3893435942671983, "n": 4, "min": 717.66, "max": 726.08 }, "p95_travel_time_s": { "mean": 1324.5, "sd": 6.06217782649107, "n": 4, "min": 1316.0, "max": 1332.0 }, "max_queue": { "mean": 3738.5, "sd": 152.4442521054828, "n": 4, "min": 3580.0, "max": 3947.0 }, "throughput": { "mean": 78000.0, "sd": 0.0, "n": 4, "min": 78000.0, "max": 78000.0 }, "dispersal_time_s": { "mean": 2516.75, "sd": 8.496322733983215, "n": 4, "min": 2507.0, "max": 2529.0 }, "rerouted_agents": { "mean": 0.0, "sd": 0.0, "n": 4, "min": 0.0, "max": 0.0 } }, "static_assignment": { "peak_density": { "mean": 3.2507861635220126, "sd": 0.09034866051224848, "n": 4, "min": 3.16203243958954, "max": 3.378848063555114 }, "critical_edge_seconds": { "mean": 1344.0, "sd": 128.82546332150332, "n": 4, "min": 1206.0, "max": 1506.0 }, "avg_travel_time_s": { "mean": 722.55, "sd": 3.3893435942671983, "n": 4, "min": 717.66, "max": 726.08 }, "p95_travel_time_s": { "mean": 1324.5, "sd": 6.06217782649107, "n": 4, "min": 1316.0, "max": 1332.0 }, "max_queue": { "mean": 3738.5, "sd": 152.4442521054828, "n": 4, "min": 3580.0, "max": 3947.0 }, "throughput": { "mean": 78000.0, "sd": 0.0, "n": 4, "min": 78000.0, "max": 78000.0 }, "dispersal_time_s": { "mean": 2516.75, "sd": 8.496322733983215, "n": 4, "min": 2507.0, "max": 2529.0 }, "rerouted_agents": { "mean": 0.0, "sd": 0.0, "n": 4, "min": 0.0, "max": 0.0 } }, "flowtwin": { "peak_density": { "mean": 1.8650695134061568, "sd": 0.11208573933713847, "n": 4, "min": 1.7212843429328035, "max": 1.9860973187686195 }, "critical_edge_seconds": { "mean": 0.0, "sd": 0.0, "n": 4, "min": 0.0, "max": 0.0 }, "avg_travel_time_s": { "mean": 749.975, "sd": 7.862761919325774, "n": 4, "min": 737.19, "max": 758.64 }, "p95_travel_time_s": { "mean": 1494.0, "sd": 70.93306704210667, "n": 4, "min": 1413.0, "max": 1608.0 }, "max_queue": { "mean": 1809.5, "sd": 188.2770564885695, "n": 4, "min": 1564.0, "max": 1996.0 }, "throughput": { "mean": 78000.0, "sd": 0.0, "n": 4, "min": 78000.0, "max": 78000.0 }, "dispersal_time_s": { "mean": 2677.0, "sd": 47.7179211617606, "n": 4, "min": 2620.0, "max": 2752.0 }, "rerouted_agents": { "mean": 5653.0, "sd": 1291.2397143830422, "n": 4, "min": 3955.0, "max": 7591.0 } } }, "deltas_vs_shortest_path_pct": { "static_assignment": { "peak_density": 0.0, "critical_edge_seconds": 0.0, "avg_travel_time_s": 0.0, "p95_travel_time_s": 0.0, "max_queue": 0.0, "throughput": 0.0, "dispersal_time_s": 0.0 }, "flowtwin": { "peak_density": -42.62712403742125, "critical_edge_seconds": -100.0, "avg_travel_time_s": 3.795585080617268, "p95_travel_time_s": 12.797281993204983, "max_queue": -51.59823458606393, "throughput": 0.0, "dispersal_time_s": 6.3673388298400715 } } } }, "default_scenario": "barcelona_2022_egress", "seed_count": 4 }