Test 1: Pre-evacuation time assignment
PASS1. Definition
An 8 m by 5 m room has a 1 m exit. Ten occupants are placed at random positions in the room. A pre-evacuation time distribution (for example uniform, normal or log-normal) is imposed through the model’s own input facility, and the run is repeated for every distribution family the model embeds. The test checks that each occupant starts to move at the assigned time. The tester chooses a statistical method that suits the distribution and repeats the scenario several times.
Source: ISO 20414:2020, Test 1, Table 2, pp. 11-12. This is a paraphrase, not the text of the standard.
Reference: ISO (2020). ISO 20414:2020, Fire safety engineering - Verification and validation protocol for building fire evacuation models. First edition. International Organization for Standardization, Geneva. https://www.iso.org/standard/78348.html (Page numbers are the printed page numbers of ISO 20414:2020 (the copy read is a proof, so numbers can differ by a page in the published edition). ISO states that its tests are examples and that a tester may use different tests that verify the same component equivalently.)
2. Scenario

Scenario figure from the executed notebook.
3. What to expect
Each occupant starts moving at the appropriate time, and the pre-evacuation times of the whole population fall within the specified range. ISO sets no numeric tolerance.
Our criterion: Start times fit the assigned distribution (two-sample KS, alpha=0.05)
4. Our result
Status: PASS
Test cases of this row
| Case | Status | Result | Run |
|---|---|---|---|
test_ | PASS | — | — |
test_ | PASS | premovement_ks_pvalue = 0.8824 accepted ≥ 0.05 | n = 60 · seed 42, 43, 44, 45, 46, 47 |
test_ | PASS | premovement_ks_pvalue = 0.8909 accepted ≥ 0.05 | n = 60 · seed 42, 43, 44, 45, 46, 47 |
test_ | PASS | premovement_ks_pvalue = 0.5462 accepted ≥ 0.05 | n = 60 · seed 42, 43, 44, 45, 46, 47 |
test_: bound: measured > 0.05 (two-sample Kolmogorov-Smirnov, lognormal distribution, pooled over 6 seeds)distribution_ fits[lognormal] test_: bound: measured > 0.05 (two-sample Kolmogorov-Smirnov, normal distribution, pooled over 6 seeds)distribution_ fits[normal] test_: bound: measured > 0.05 (two-sample Kolmogorov-Smirnov, uniform distribution, pooled over 6 seeds)distribution_ fits[uniform]

Result figure from the executed notebook.
5. Our implementation
Deviations from the standard:
- The pass rule is the suite’s own: the start times of 6 seeded runs (60 samples per case) are compared with 10 000 draws of the assigned distribution by a two-sample Kolmogorov-Smirnov test at alpha = 0.05. The start of movement is the first frame at which an agent has moved more than 0.05 m from its spawn point.
- Three families are tested: uniform U(10, 100) s, normal N(60, 20) s and log-normal (mu = 4.586, sigma = 0.967). The scenario harness also embeds gamma and Weibull, which the suite does not test, although ISO asks for every embedded family.
- The test compares the population with the distribution. It does not check each occupant’s realised start time against that occupant’s own assigned time.
- Occupants walk at a constant 1.2 m/s. The exit is a 1 m wide, 0.3 m deep strip on the 5 m wall.
Model: CollisionFreeSpeedModel
- Test function: tests/vv/test_iso.py::test_base_zip_loads
- Scenario file: Iso-01-premovement.zip