Replication package: Flight Authorization and Emissions Abatement in Truck-Drone Last-Mile Delivery: An Optimization-Based Counterfactual Analysis
Description
Code and results supporting the article "Flight Authorization and Emissions Abatement in Truck-Drone Last-Mile Delivery: An Optimization-Based Counterfactual Analysis", on how airspace flight authorization limits the emissions abatement achievable by hybrid truck-drone last-mile delivery. The code implements a multi-objective truck-UAV routing model in which emissions are an output of the routing decision rather than an assumption about it: a momentum-theory energy model with payload dependence in place of a distance proxy, well-to-wheel emissions accounting, an explicit truck-only counterfactual solved on the same instances, and SORA-derived authorization limits entering as arc eligibility. Twelve operating scenarios vary the authorization ceiling, population density and whether a sheltering mitigation is claimed, repeated across five independently generated service areas. Solutions come from NSGA-II and MOPSO over a shared random-key encoding, validated against proven optima from a mixed-integer program on small instances; a no-aerial control scenario measures the resolution of the comparison. CONTENTS. code/ holds the model package (tdrp/) and the scripts that produce every reported result: run_multigeo.py for the main experiment, run_evan.py for the electric-van counterfactual, seed_scaling.py for the measurement-resolution diagnostic, run_validation.py and test_validation.py for validation against exact optima, run_algorithms.py for the algorithm comparison, run_tuning.py with the tuned parameter files, and make_figs_multigeo.py, make_figs_converged.py and make_fronts.py for the figures. results/ holds the result files behind every table and figure, including same-code Linux re-runs cited as such in the article. logs/ holds the output logs against which each reported value can be checked; two of them regenerate byte-for-byte from the result files. figures/ holds the figure files, sources/ the submitted manuscript, title page, supplementary material and bibliography. ASSUMPTIONS_REGISTER.md documents each modelling choice and its provenance; DEPOSIT_CONTENTS.md is the file inventory. The reported emissions results are in results/results_multigeo_50seed.json: five service areas, twelve scenarios each, 2000 generations, 50 seeds, with the truck-only counterfactual solved once per seed and selected on minimum cost. Reproduction requires Python 3.10 or newer with NumPy pinned to 2.4.4 (code/requirements.txt); NumPy gives no guarantee that its random streams are stable across versions, so a different version changes every seeded run. code/HOW_TO_RUN.md gives the commands, the expected output at each stage and the values to check against. Instances are determined entirely by customer count, scenario and random seed, so any result regenerates exactly on a matching environment. Version 2 replaces the sources with the submitted versions and adds requirements.txt, HOW_TO_RUN.md, the Linux re-run files and the regenerated figures.
Files
Steps to reproduce
All commands run from the code/ directory of the deposit, with results/ and logs/ alongside it as supplied. ENVIRONMENT. Python 3.10 or newer. python -m venv .venv source .venv/bin/activate (Windows: ..venv\Scripts\Activate.ps1) python -m pip install -r requirements.txt Installs numpy 2.4.4, scipy, pulp, highspy, matplotlib. NumPy is pinned: its random streams are not stable across versions, so another version changes every seeded run. CHECK THE ENVIRONMENT before anything long: python fingerprint.py SOLVER_CHECK should read 107.6309 km and NUMPY 2.4.4. A different SOLVER_CHECK usually means a different NumPy version. Reference values: logs/log_environment_fingerprint.txt. INSPECT THE REPORTED RESULTS (supplied; no re-solving): python run_multigeo.py --summarise Expect five service areas with mean abatement 39.5 +/- 4.9 percent, ceiling means 56.3 +/- 3.0, 40.3 +/- 6.9 and 21.8 +/- 6.5 percent, a permissive-restrictive gap of 34.5 +/- 5.8 percentage points positive in 5 of 5, and correlations of 0.946 +/- 0.042. The reporting logs regenerate byte-for-byte from the result files: python multigeo_numbers.py ../results/results_multigeo_50seed.json (compare with logs/log_multigeo_numbers.txt) python manuscript_numbers.py ../results/results_singlegeo_50seed.json (compare with logs/log_manuscript_numbers.txt) REGENERATE FROM SCRATCH (several hours per service area). Each geography writes its own file; completed ones are skipped on re-run: python run_multigeo.py --geographies 20260803 --generations 2000 --seeds 50 (repeat for 20260804, 20260805, 20260806, 20260807) python run_multigeo.py --merge THE OTHER ANALYSES: python run_evan.py --sweep (electric-van counterfactual) python seed_scaling.py --report (measurement-resolution diagnostic) python run_algorithms.py --report (algorithm comparison statistics) python run_validation.py --tuned --time-limit 1800 (validation against exact optima) python test_validation.py (regression checks; expect 19 passed, 0 failed) python make_figs_multigeo.py (figure07 to figure11 = article Figures 6, 7, 8, 9, S2) cd .. then python code/make_figs_converged.py (figure04 to figure06 = Figures 4 and 5; figure05 unused) python make_fronts.py (figureS1 = Figure S1; re-solves one instance) Each analysis has its log in logs/; the figure-number map is in figures/README_FIGURES.txt. The reported validation used a 1800-second limit, at which the n = 8 service-time optimum is proved; an instance not proved in time is reported as excluded. REPRODUCIBILITY. Instances are determined entirely by customer count, scenario and random seed, and regenerate exactly. Seeded metaheuristic runs regenerate exactly only on a matching NumPy version. Same-code Linux re-runs of the algorithm comparison and validation are supplied alongside the reported macOS files and cited as such in the article (results/*_rerun.json, results/results_validation_library.json and their logs). Details: code/HOW_TO_RUN.md.
Institutions
- California State University, FullertonCalifornia, Fullerton
- Toronto Metropolitan UniversityOntario, Toronto
- Chapman UniversityCalifornia, Orange
- Aston UniversityEngland, Birmingham