| --- |
| license: mit |
| pipeline_tag: reinforcement-learning |
| tags: |
| - operations-research |
| - vehicle-routing |
| - reinforcement-learning |
| - combinatorial-optimization |
| --- |
| |
| # TTP-D solver weights |
|
|
| Paper: [Drive, Pack, Fly: The Travelling Thief Problem with Drone](https://huggingface.co/papers/2608.16435) |
|
|
| Trained policy checkpoints for the study *Fly, Pack, Drive: 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. |
|
|
| These checkpoints are the learned construction policies: an encoder–decoder |
| model that embeds the instance once and emits a composite action at each node |
| the truck reaches, trained offline with Proximal Policy Optimisation under a |
| POMO group baseline. |
|
|
| Code: <https://github.com/corbit-lab/ttpd>. Benchmark instances, result tables, |
| and behaviour-cloning datasets are in the companion dataset repository |
| [`Murjani/ttpd-benchmarks`](https://huggingface.co/datasets/Murjani/ttpd-benchmarks). |
|
|
| ## Layout |
|
|
| ``` |
| <variant>/<model>/<family>/n<N>/best.pt |
| ``` |
|
|
| **Variant** is `a280` (fixed drone endurance) or `ttd300` (endurance-conditioned). |
| **Model** is `gat` (attention encoder), `mlp` (the encoder ablation), or `lisa` |
| (behaviour cloning). **Family** denotes the distribution the policy was trained |
| on, which determines its applicability: |
|
|
| | Family | Training distribution | Intended use | |
| |---|---|---| |
| | `benchmark-tuned/` | The five benchmark instances of that size | The reported headline results | |
| | `sampled/` | Randomly sampled a280 subsets | Generalisation; warm start for the above | |
| | `specialists/` | Early small-N runs | The N ≤ 20 rows, using dedicated small models | |
|
|
| The `benchmark-tuned` policies warm-start from `sampled/n20` of the same model |
| family, as training from scratch does not converge within the budget at the |
| larger sizes. Within a run, `best.pt` is the deliverable, selected by held-out |
| beam evaluation; `last.pt` supports resumption; and `best_milp.pt` is selected |
| by MILP gap rather than evaluation return. |
|
|
| Behaviour-cloned policies are stored at |
| `<variant>/lisa/behaviour_cloning/n<N>.pt`, with |
| `a280/lisa/behaviour_cloning_initial/` and `a280/lisa/gat-n50/` retained for |
| provenance. |
|
|
| ## Deliverable checkpoint per model and size |
|
|
| | Model and size | Checkpoint | |
| |---|---| |
| | a280 GAT, N = 5, 10 | `a280/gat/specialists/n5.pt`, `n10.pt` | |
| | a280 GAT, N = 15, 20 | `a280/gat/sampled/n<N>/best.pt` | |
| | a280 GAT, N = 30–100 | `a280/gat/benchmark-tuned/n<N>/best.pt` | |
| | a280 MLP, N = 20 | `a280/mlp/sampled/n20/best.pt` | |
| | a280 MLP, remaining sizes | `a280/mlp/benchmark-tuned/n<N>/best.pt` | |
| | ttd300 GAT | `ttd300/gat/benchmark-tuned/n<N>/best.pt` | |
| | LISA | `<variant>/lisa/behaviour_cloning/n<N>.pt` | |
|
|
| The `benchmark-tuned` family also carries the smaller sizes so that a |
| directory-based checkpoint argument resolves uniformly. |
|
|
| ## Loading |
|
|
| Checkpoints are `torch.save` payloads keyed under `"policy"`: |
|
|
| ```python |
| import torch |
| from huggingface_hub import hf_hub_download |
| |
| path = hf_hub_download("Murjani/ttpd-weights", "a280/gat/benchmark-tuned/n30/best.pt") |
| payload = torch.load(path, map_location="cpu", weights_only=False) |
| policy.load_state_dict(payload["policy"]) |
| ``` |
|
|
| The repository code resolves these paths automatically through |
| `ttpd.hub.ensure_local`, which returns an existing local file unchanged and |
| downloads otherwise, so a machine that already holds the tree performs no |
| network access. |
|
|
| `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, including the comparison |
| against the exact solver and the metaheuristics, are given there. |
|
|
| ```bibtex |
| @inproceedings{murjani2026ttpd, |
| title={Drive, Pack, Fly: The Travelling Thief Problem with Drone}, |
| author={Murjani, Kabir and Sobhanan, Abhay}, |
| year={2026}, |
| eprint={2608.16435}, |
| archivePrefix={arXiv}, |
| primaryClass={cs.AI}, |
| url={https://arxiv.org/abs/2608.16435}, |
| } |
| ``` |