Supplementary data page · Revised (FID-draw model, v2.0.0)

A Radar–Magnetometer Sensor Network with LoRa-Mediated Awareness Propagation for Wildlife-Vehicle Collision Mitigation: A Monte Carlo Simulation-Based Proof of Concept

Sergii Makovetskyi, Lars Thomsen · Submitted to MDPI Sustainability

13 sensitivity sweeps Headline 60 trials FID-draw behavioural model Open data + code
About this revision. This page reports the revised model used in the submitted manuscript, in which the flight decision is driven by an empirical flight-initiation-distance (FID) draw calibrated to the field data of Blackwell et al. (2014), replacing the earlier fixed-probability state model. Summary figures are static (300 DPI) PNGs regenerated from the data dataset; the interactive in-browser explorer is deferred. Full derivations, the complete statistical battery, and Supplementary Tables S1–S5 and Figures S1–S12 are in Appendix A of the manuscript.

01 Headline three-mode comparison

20 trials × 4 simulated hours per mode (60 trials total), at default parameters under Common Random Numbers. The two-step contrast isolates each architectural layer: Detection adds sensors + driver alerts; Aware further adds LoRa-mediated network-awareness boost.

13.22%
Control collision rate
7.89%
Detection / Aware rate
40.3%
Relative reduction
p = 0.062
Poisson GLM (borderline)
0.313 s
In-range latency

Per-mode statistics (collision rate per road entry)

ModenCollision rate (%)Detection rate (%)In-range latency (s)Road entries (median)
Control2013.220.00≈ 10
Detection207.8920.850.313≈ 11.5
Aware207.8920.850.313≈ 12

Pairwise comparisons (Poisson / negative-binomial GLM, log road-entry offset)

ComparisonRate ratio (95% CI)ReductionGLM pSig.
Control vs Detection0.577 [0.32, 1.03]40.3%0.062n.s.
Control vs Aware0.577 [0.32, 1.03]40.3%0.062n.s.
Detection vs Aware1.00 [0.53, 1.89]0.0%1.000n.s.

The collision rate per road entry is the headline metric: it normalises for the differing number of crossing events each mode produces. Absolute collision counts are statistically indistinguishable across modes (Welch on per-trial means t = 1.60, p = 0.118); mitigation raises the road-entry denominator (more animals cross successfully rather than retreating), an intended ecological-connectivity outcome rather than an artifact. The borderline GLM p reflects the deliberately modest 20-trial budget and per-trial overdispersion, not a weak effect: at low traffic the same architecture reaches p = 0.003 (§02).

Headline three-mode comparison
Figure 1. Four-panel three-mode Monte Carlo comparison (collision rate per road entry, detection rate, in-range latency, per-trial distributions). Detection and Aware overlap at the default density; the awareness boost is implementationally active but inert at λτ = 0.125.
Headline comparison, forest corridor
Figure 1b. Headline three-mode comparison under the forest-corridor configuration. Same three-mode contrast as Figure 1, confirming the effect is not specific to the open-road landscape.

02 Operating envelope: traffic-volume regime

Traffic volume is the only swept parameter for which the safety effect depends strongly on the parameter value (treatment × traffic interaction χ² = 32.5, p = 7.7 × 10⁻⁵). This sweep bounds the deployment claim.

Per-cell results (15 trials × 2 h per cell)

Traffic (veh/dir/hr)Aware collision rate (%)Reduction vs ControlGLM pRegime
10.4496.2%0.003Strongly beneficial **
21.6785.7%0.023Beneficial *
49.9015.2%0.728Beneficial (n.s.)
89.0122.9%0.636Regime boundary
1620.01−71.3%0.147Directional reversal

The architecture delivers high-confidence reduction in rural low-volume corridors (v ≤ 2 veh/dir/hr), retains directional benefit at v = 4–8 with declining resolution, and approaches a regime where the broadcast-alert architecture is no longer well-matched to the traffic density at v ≥ 16 (alert-window aggregation under multi-vehicle convoys; reported as a directional signal, not a confirmed harm).

Traffic-volume sweep
Figure 2. Collision rate and reduction vs traffic volume (log axis), with significance markers at v = 1 and v = 2; sensor detection rate and latency by volume.

03 Robustness across the parameter space

Thirteen one-dimensional sweeps across four parameter families. Each was tested for a treatment × parameter interaction on the safety metric. A high interaction p indicates the 40%-class reduction is statistically indistinguishable across the swept range (i.e. robust); traffic volume is the sole exception (§02).

Treatment × parameter interaction p-values (collision rate)

Parameter familySweep (range)Interaction pInterpretation
Deployment geometryRadar spacing (5–40 m)0.977Robust
Radar range R_det (8–20 m)0.976Robust
Animal & sensorSize scaling σ (0.25–3.0)0.999Size-invariant
Detection rate κ (0.3–5.0 s⁻¹)0.894Sensing saturates by κ ≥ 0.5
AwarenessBoost β (1.0–1.5×)1.000Boost inert at λτ ≪ 1
Persistence τ (5–60 s)0.995τ ≥ 10 s sufficient
BehaviouralHesitation dwell (0.5–3 s)0.894Robust
Mid-crossing freeze (0–0.5)1.000CRN-perfect null
Driver reaction (0.5–3 s)0.765Robust (compliance proxy)
Operating scopeCruise speed (60–120 km/h)0.972Robust
Caution speed (15–90 km/h)1.000Robust (compliance proxy)
Animal density λ (5–240/hr)0.949Robust; sensing layer activates
Traffic volume (1–16 veh/dir)7.7×10⁻⁵Strong interaction (§02)

Twelve of the 13 sweeps return interaction p > 0.7. Per-sweep collision-rate and reduction panels are Supplementary Figures S1–S11 (Appendix A). Three representative sweeps are shown below; the radar-spacing sweep motivates the 15 m alternating-spacing baseline.

Radar spacing sweep
Figure 3. Radar same-side spacing sweep {5–40 m}. Effect concentrated in the 5–25 m band; coverage gaps grow geometrically beyond s = 2·R_det = 20 m (interaction p = 0.977).
Animal size sweep
Figure 4. Animal RCS-scale sweep {0.25–3.0×}. Detection size-invariant; relative collision-rate reduction statistically indistinguishable across sizes (interaction p = 0.999). Residual-collision severity remains asymmetric for large ungulates (see manuscript §4.1).
Detection-rate sweep
Figure 5. Per-second detection-rate κ sweep {0.3–5.0 s⁻¹}. Sensing saturates by κ ≥ 0.5 because animal exposure time, not per-frame probability, is the binding limit (interaction p = 0.894).

Remaining sweep panels (Supplementary Figures S4–S11)

figure_S4_awareness_beta
Figure S4. Awareness boost factor β {1.0–1.5×} — CRN-perfect null on col_rate (p = 1.000); boost inert at λτ = 0.125.
figure_S5_awareness_tau
Figure S5. Awareness persistence τ {5–60 s} — flat once τ bridges a typical approach (≈ 10 s); interaction p = 0.995.
figure_S6_hesitate_dwell
Figure S6. Maximum HESITATING dwell {0.5–3 s} — robust to this animal-side timing parameter (p = 0.894).
figure_S7_freeze_mid_cross
Figure S7. Mid-crossing freeze base rate {0–0.5} — second CRN-perfect null (p = 1.000).
figure_S8_driver_reaction
Figure S8. Driver perception–reaction time {0.5–3 s} — robust across the compliance proxy range (p = 0.765).
figure_S9_cruise_speed
Figure S9. Free-flow cruise speed {60–120 km/h} — reduction robust across speeds (p = 0.972).
figure_S10_caution_speed
Figure S10. Alerted caution-speed setpoint {15–90 km/h} — robust (p = 1.000).
figure_S11_radar_range
Figure S11. Baseline radar detection range R_det {8–20 m} — insensitive to the hard-cutoff radius assumption (p = 0.976).

04 The awareness layer: active but not propagating

The animal-density sweep (λ ∈ {5…240}/hr, spanning λτ = 0.042–2.0) resolves when the LoRa boost does measurable work and on which metrics.

Treatment × density interaction (animal-density sweep)

MetricInteraction pDirection at high density
col_rate (safety)0.949Null — Aware ≈ Detection at every λ
det_rate (sensing)6.6×10⁻¹⁸Aware 28.7% > Detection 20.7% at λ=120; 40.2% vs 22.5% at λ=240
in-range latency1.07×10⁻³Aware latency higher than Detection (boost catches edge animals)

The boost is implementationally correct and active (measurable sensing-side gain to extreme confidence), yet the safety outcome is null across the same sweep. The binding constraint is the safety channel, not the sensor layer: the corridor-wide DMS alert saturates once any detection fires, so additional detections cannot change an already-active caution state. This is the central architectural finding (manuscript §4.2).

Animal-density sweep
Figure 4. Animal-density sweep (λ ∈ {5…240}/hr). Detection and Aware collision-rate curves overlap (interaction p = 0.949), while the Aware detection rate and latency diverge upward at high density — the boost catches additional animals at the edge of the expanded coverage.

05 Magnetometer vehicle-sensing ablation

Does magnetometer-gated vehicle confirmation carry the signal the system needs, or is the safety outcome inflated by imperfect vehicle knowledge? Two ablations (20 trials × 2 h per condition).

Vehicle-model substitution (default 0.75 m offset)

ModeVehicle modelCollisions/trialcol_rate (%)Reduction vs Control
Control(n/a)0.65 ± 0.7513.76(reference)
DetectionPerfect0.40 ± 0.687.4346.0%
DetectionMagnetometer0.35 ± 0.596.0156.3%
AwarePerfect0.40 ± 0.687.4346.0%
AwareMagnetometer0.35 ± 0.596.0156.3%

Aware Perfect vs Aware Magnetometer: Welch t = +0.25 (collisions/trial), +0.38 (col_rate) — both an order of magnitude below significance. Magnetometer-gated knowledge is statistically indistinguishable from a perfect-knowledge oracle.

Magnetometer offset geometry sweep (Aware mode)

Offset (m)Present-known (%)col_rate (%)Reduction vs Control
(perfect)100.07.4346.0%
0.7593.26.0156.3%
1.5084.98.5138.2%
2.5069.610.1526.2%
4.0032.411.1918.7%

Deployment guidance: offset ≤ 1.5 m, with 0.75 m delivering the full magnetometer benefit. col_rate stays below the 13.76% control rate across the full range, retaining a 19% reduction even at 4 m.

06 Methods summary

All results were generated by a single Python simulator, wvc_simulator.py, using a discrete-time Monte Carlo framework (Δt = 0.1 s) on a 1 km test corridor.

System architecture

Alternating-side Doppler radar nodes at same-side spacing s = 15 m (7.5 m alternating offset; 134 nodes/km across both shoulders), baseline detection radius R_det = 10 m; three-axis magnetometer sites every 200 m; dynamic message signs (DMS) every 250 m. Sensors communicate over an LVDS + LoRa hybrid backbone. On any detection, an awareness notification propagates over LoRa to radars within 1500 m, applying a sensitivity boost β = 1.5× to the effective detection range for τ = 30 s; the DMS simultaneously displays a caution speed.

Sensor network road topology
Figure M1. Sensor-network topology along a representative 1 km corridor: alternating-side radar nodes (s = 15 m, 7.5 m offset), magnetometer sites at 200 m, and DMS at 250 m intervals, with one active detection event and its LoRa awareness broadcast.

Animal behaviour (FID-draw)

Each animal occupies one of six behavioural states (FORAGING, APPROACHING, HESITATING, CROSSING, FLEEING, FROZEN, with MOVES AWAY absorbing). The flight decision is governed by an empirical flight-initiation-distance (FID) draw rather than fixed transition probabilities. Each responding animal draws an FID and a detection-ceiling cap from log-normal distributions fitted to the white-tailed-deer field data of Blackwell et al. (2014): fitted log-normal median FID 72 m (empirical median 69.1 m, truncated at 400 m); cap median 183 m, truncated to [50, 500] m. A fixed fraction of non-responders (0.188, FID = 0) never flee and consequently cross — the probability mass of the fitted distribution at or below the field non-response threshold. The effective trigger distance is min(FID, cap). Dwell times, locomotion speeds, and the mid-crossing freeze base rate (0.15) are assumed (Tier 3) and bounded by sensitivity sweeps. As an untuned cross-check, the emergent control-mode flee fraction (0.83) matches the field response rate (≈ 0.81).

FID-draw behavioural model
Figure M2. FID-draw behavioural model. Each animal draws a flight-initiation distance and a detection-ceiling cap from log-normal distributions fitted to Blackwell et al. (2014); a continuous FID monitor triggers FLEEING when an approaching vehicle enters min(FID, cap).

Vehicle dynamics

Treiber–Hennecke–Helbing Intelligent Driver Model (IDM). Free-flow cruise v₀ = 100 km/h; under an active alert with driver response, the target speed reduces to v₁ = 30 km/h after a perception–reaction lag t_react = 1.5 s (Green 2000); maximum emergency deceleration a_emerg = 8.0 m/s² (dry-asphalt traction ceiling, Lorenčič 2023).

Three operating modes

Statistical analysis

For each metric and pairwise mode comparison: Welch's two-sample t-test on per-trial values (primary cell-level test); Poisson GLM with log-exposure offset (negative-binomial fallback when Pearson dispersion > 1.5) for count-based rates, reporting rate ratios and 95% Wald intervals; a 10,000-replicate non-parametric bootstrap; and, per sweep, a pooled mode × sweep interaction test (likelihood-ratio on nested GLMs for counts; two-way OLS ANOVA for latency). Significance markers: *** p < 0.001, ** p < 0.01, * p < 0.05, n.s. otherwise. Modes within a trial share one seed (Common Random Numbers) for matched-pair precision. The headline metric is the collision rate per road entry.

07 Data and reproducibility

All figures and tables are generated directly from the CSVs by this repository's analysis script. Re-running the script on the raw data reproduces every number on this page.

Source data

The complete dataset is in the repository's data/ folder. Every figure and table on this page is derived from it. Published figures are the 300 DPI PNGs in /docs.

Raw per-trial results (one row per trial):

Computed statistics (wvc_stats_*), per experiment and metric — collision rate, _det_rate, and _latency — each with a matching _interaction file holding the treatment × parameter test:

The magnetometer vehicle-sensing ablation (§05) is a separate run; its CSVs are not part of this data/ sweep set. To offer one-click downloads from this page instead of linking to the repository, copy data/ into docs/data/ and point the links at data/….

Requirements

git clone https://github.com/Gnacode/WILDLIFE-VEHICLE-COLLISION-MONTECARLO.git
cd WILDLIFE-VEHICLE-COLLISION-MONTECARLO
python -m pip install numpy pandas scipy statsmodels matplotlib seaborn

Full reproduction (data → stats → figures)

The whole tool is the single script wvc.py, driven by subcommands and a global --workdir (the folder it reads CSVs from and writes outputs to). One command runs the entire pipeline:

python wvc.py --workdir data pipeline --jobs 8

Or run the stages individually

python wvc.py --workdir data data --jobs 8        # raw per-trial CSVs (~30-60 min)
python wvc.py --workdir data data --skip-sweeps   # headline experiment only (~5 min)
python wvc.py --workdir data stats                # wvc_stats_*.csv (Welch, Poisson/NB GLM, bootstrap, interaction)
python wvc.py --workdir data figures --dpi 300    # publication PNGs (figures 3-6, S1-S11)
python wvc.py --workdir data ablation             # magnetometer vehicle-model ablation (sec 05)

The figures stage writes the PNGs (figure_3_headline.pngfigure_S11_radar_range.png) into the working directory; copy them into docs/ to publish, since this page references them by relative path.

Standalone statistics (as referenced in the manuscript)

python compute_stats.py --csv-dir data

Interactive local console (optional)

A browser-based control panel for running wvc.py locally:

python wvc_web.py --workdir data        # serves http://127.0.0.1:8753

Appendix A and supplementary materials

Appendix A (Extended Methods and Results) contains the full coverage-geometry and FID-distribution derivations, the statistical-analysis battery, per-sweep robustness narratives, Supplementary Tables S1–S5, and Supplementary Figures S1–S12.

Citation

If you use these results, please cite the accompanying paper and the archived software release:

Makovetskyi, S. & Thomsen, L. (2026).
    A Radar-Magnetometer Sensor Network with LoRa-Mediated Awareness Propagation
    for Wildlife-Vehicle Collision Mitigation: A Monte Carlo Simulation-Based
    Proof of Concept. Submitted to MDPI Sustainability.

Software (this release): Zenodo, v2.0.0.
    Concept DOI (always latest): 10.5281/zenodo.[CONCEPT_ID]
    This version:               10.5281/zenodo.[NEW_VERSION_ID]

Replace the two DOI placeholders with the values Zenodo mints after the v2.0.0 GitHub release (the concept DOI is in the “Cite all versions” box on the Zenodo record).