{
 "name": "Crowds against real pedestrians in four fresh Jülich experiments: counterflow, crossing at 120 degrees, a corner and a bottleneck",
 "registered": "2026-10-10",
 "why": "The Jülich test (protocol-peds-juelich.json, results e70103f) missed and stays a miss. This is a new study with a new crowd, scored once on Jülich experiments no run here has opened.",
 "data": "Jülich Pedestrian Dynamics Data Archive, CC BY 4.0, txt trajectories downloaded 2026-10-10 to [host name redacted] [path redacted] (sha256 in this file): 2013crossing_120 (DOI 10.34735/ped.2013.3, 16 files), 2009bidirectional symmetric and asymmetric (10.34735/ped.2009.10-12; 13 + 5 files, boa-300-frei excluded because it is free walking, not counterflow), 2009corner open (10.34735/ped.2009.8-9, 13 files), 2009bottleneck (10.34735/ped.2009.6, 5 files). Before registration only the dataset pages and the zip listings were read; no trajectory file was opened.",
 "sha256": {
  "2013crossing_120_trajectories_txt.zip": "ecbfc07399c4ff5a84f0b4496a764822410301368fe17c59f8655c2494cf9f34",
  "2009bidirectional_symmetric_trajectories_txt.zip": "c540ee12c6f1f9b98bba802ef0a54a5965d39b3f3a88bfa804c46c0c0417e0d7",
  "2009bidirectional_asymmetric_trajectories_txt.zip": "733889922956acbaf11cbfb28b6e5f3b57b26ef87448e3ef72b9e0774eb5e68a",
  "2009corner_open_trajectories_txt.zip": "86d66e5f6db67da51f6761d551182eee8b6ae0d34d8ff6611a773074f91e32f6",
  "2009bottleneck_trajectories_txt.zip": "b77d92badc9a1de6d7981786c2580b8ce0bbaf38092f6f6273c385027def1a36"
 },
 "conversion": "experiment/crowds/juelich_convert2.py at this commit: 16 fps and centimetres from the dataset pages, overridden by a file's own header where it states frame rate or units, and centimetres read as metres where the median absolute coordinate is under 20; one sample every 0.4 s; walkable area by the rule of juelich_convert.py.",
 "crowds": {
  "jupedsim (candidate)": "experiment/crowds/crowdsim.py at this commit, JuPedSim 1.4.2, arguments: --model avm --radius 0.12 --radius-sparse 0.22 --rho0 0.5 --time-gap 0.45 --anticipation 0.75 --reaction 0.3 --strength 8 --range 0.2 --look 1.0 --vmax 1.5 --grace 10 --stand 0 --wall-slack 0.2 --dt 0.02 --seed 1 (holdout.sh). The anticipation velocity model; each person enters at their real first position and time and steers toward where their own timetable puts them one second ahead (the shortest walkable path from their real first to last position, walked at constant speed over their real time span); personal space 0.22 m radius where nobody is near, shrinking to 0.12 m as local density rises. Inputs per person are those of the straight walkers.",
  "socialforce": "livingworlds/render 398957f pedreplay.py (copied byte for byte as experiment/crowds/pedreplay_398957f.py, sha256 9db67325...) via opp.py: use_groups, spring, density_aware and walls on, walkable = the run's WKT, the configuration of protocol-peds-juelich.json; re-running it on [host name redacted] reproduces the recorded Jülich outputs exactly (checked on four runs, maximum difference 0)",
  "orca": "the same set-up with ORCA",
  "straight": "experiment/peds/peds_straight.py unchanged"
 },
 "measures": "experiment/peds/peds_score.py and peds_realism.py unchanged (sha256 d4b6fe32..., 21426a04...): rank sum over speed, nearest distance, straightness and contact against the real run; the jupedsim slot holds the candidate, which is a JuPedSim model",
 "primary": "in each of the four experiments, the candidate's rank sum is lower than both socialforce's and straight's in more than half of its runs (crossing120 9 of 16, bidirectional2009 10 of 18, corner2009 7 of 13, bottleneck2009 3 of 5)",
 "failures": "a run in which any of the four crowds produces no output counts as not won by the candidate; nothing is re-run",
 "secondary": "candidate against orca; each measure",
 "development": "only runs already read: the four Jülich experiments of protocol-peds-juelich.json and the eight ETH/UCY scenes against their recorded comparison crowds, and the ATC day 2012-11-14 (20 windows of 3 minutes). Candidate wins (seed 1; seed 2 in brackets): bidirectional 11/15 (11), bottleneck 40/40 (40), crossing90 21/24 on the centimetre files (21), tjunction 10/11 (9), ETH/UCY 7/8 (7), ATC 19/19. dev-results.json. The 19 crossing90 files d to g are in metres by their own headers and were read as centimetres by juelich_convert.py, so in the registered Jülich test they were scored at one hundredth scale; they are left out of development decisions here and that result is not re-scored.",
 "order": "after this commit, on [host name redacted] as one capped unit: experiment/crowds/holdout.sh juelich (conversion, the four crowds on every run, combine.py once); then results-crowds-juelich.json is committed whatever it says",
 "publish": "results-crowds-juelich.json whatever the outcome",
 "limits": "controlled experiments with instructed participants; the crowd knows each person's real first and last position and time, as the straight walkers do"
}