Murjani/ttpd-benchmarks
TTP-D benchmarks, datasets and results Problem instances, behaviour-cloning datasets, and solver result tables for the study Fly, Pack, Drive: the Travelling Thief Problem with Drone. Paper: Drive, Pack, Fly: The Travelling Thief Problem with Drone A capacitated truck and a single-package drone operate from a common depot on a collection route. The truck's velocity decreases affinely with its accumulated load, so an early pickup penalises every subsequent arc. The drone launches… See the full description on the dataset page: https://huggingface.co/datasets/Murjani/ttpd-benchmarks.
TTP-D benchmarks, datasets and results
Problem instances, behaviour-cloning datasets, and solver result tables for the study Fly, Pack, Drive: the Travelling Thief Problem with Drone.
Paper: Drive, Pack, Fly: The Travelling Thief Problem with Drone
A capacitated truck and a single-package drone operate from a common depot on a collection route. The truck's velocity decreases affinely with its accumulated load, so an early pickup penalises every subsequent arc. The drone launches from a node at which the truck is present, retrieves one item at an outlying customer, and rejoins the truck at a later rendezvous node; whichever vehicle arrives first waits, while the rental clock continues to run. The objective is to maximise collected profit net of a rental cost proportional to the makespan.
Code: <https://github.com/corbit-lab/ttpd>. Trained policy checkpoints are in the companion model repository `Murjani/ttpd-weights`.
Layout
instances/a280/ instances sampled from a280 (bench_<n>_<i>.txt)
instances/ttd300/ endurance-controlled instances
behaviour_cloning_datasets/ expert demonstrations for LISA (.jsonl)
results/a280/ per-solver result tables
results/ttd300/ likewise for the endurance studyInstance files follow the TTP text format — tab-separated, CRLF — extended with a DRONE ENDURANCE header field.
Benchmark families
a280. Customers sampled from the TSPLIB a280 TTP instance, preserving the spatial structure and item economics of the classical configuration. The depot is fixed at node 1, each remaining city contributes its single highest-profit item, and five instances are drawn per size for N ∈ {5, 10, 15, 20, 30, 40, 50, 100}. Capacity scales with size at the a280 per-city rate, W = 637,010·N/280, with a renting ratio of R = 72.70 and a drone speed of twice the maximum truck speed. Sortie length is unbounded.
ttd300. Introduced in this study. Uniform integer coordinates on a [0,300]² box under CEIL_2D distances, N ∈ {10, 20, 30, 40, 50, 75, 100} with five layouts each. Five items per customer with w ~ U[1000,1009] and p ~ U[1,1000], the a280 "uncorrelated, similar weights" class. Capacity retains the a280 per-city rate at W = round(2275.0357·N), fixed per size and shared across layouts, with R = 50.
Each ttd300 layout is instantiated at four endurance fractions, ED = round(f · dmax) for f ∈ {0.25, 0.5, 0.75, 1.0}, where dmax is the instance's own maximum pairwise distance, yielding 140 instances. Filenames carry the fraction (`f025, f050`, `f075, f100`) and the absolute endurance appears in the header; the bare `ttd300n<N>_L<L>.txt` file, which has no endurance header, is the unbounded reference.
The endurance limit is specified relatively because an absolute budget carries a different physical meaning at different sizes under non-uniform geometry, and the a280 layout is strongly non-uniform. A fixed-size uniform domain combined with a fraction of d_max gives the endurance radius a consistent interpretation across instances, which is what makes it a clean axis to sweep.
Behaviour-cloning datasets
Expert demonstrations produced by running the full-budget simulated annealer on a corpus of instances, inverting each solution into the composite action sequence of the underlying MDP, and replaying it through the simulator to verify that it reproduces the expert objective. Only certified state–action pairs are retained.
Datasets are named for their coverage: sampled_n<N>.jsonl is drawn from randomly sampled instances and benchmark_n5_to_n100.jsonl from the benchmark instances themselves. They are regenerable from the repository code.
Instance labelling
Thirteen a280 files are labelled one seed offset: bench_<n>_<k>.txt contains the instance whose internal PROBLEM NAME is bench_<n>_<k+1>, affecting bench_10_{2,3,4}, bench_20_{3,4}, bench_30_{1,2,3,4} and bench_40_{1,2,3,4}. No comparison is affected, as every solver reads the same file for a given label and all methods therefore solved identical instances. The issue concerns provenance only, and implies that these thirteen files will not regenerate under their current names.
Loading
from huggingface_hub import hf_hub_download, snapshot_download
one = hf_hub_download("Murjani/ttpd-benchmarks",
"instances/a280/bench_20_5.txt", repo_type="dataset")
family = snapshot_download("Murjani/ttpd-benchmarks", repo_type="dataset",
allow_patterns=["instances/a280/*"])The repository code resolves these paths automatically through ttpd.hub.ensure_local and ttpd.hub.ensure_bench_dir, which return existing local files unchanged and download otherwise.
manifest.json records, for every file, the path from which it was published together with its SHA-256 digest.
Citation
Please cite the accompanying paper. Reported results are given there; the tables under results/ are the raw per-run outputs from which they were computed.
