Spaces:
Runtime error
Runtime error
Invalid JSON:Unexpected token 'N', ..."_time_s": NaN,
"... is not valid JSON
| { | |
| "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 | |
| } |