Murjani commited on
Commit
1f63fd2
·
verified ·
1 Parent(s): b45f0fe
Files changed (1) hide show
  1. README.md +64 -21
README.md CHANGED
@@ -9,10 +9,25 @@ tags:
9
 
10
  # TTP-D solver weights
11
 
12
- Trained checkpoints for the Travelling Thief Problem with Drone (TTP-D) study.
13
- Benchmark instances and result tables live in the companion dataset repo
14
- [`Murjani/ttpd-benchmarks`](https://huggingface.co/datasets/Murjani/ttpd-benchmarks); the code is at
15
- https://github.com/Kcbir/ttpd.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
  ## Layout
18
 
@@ -20,37 +35,65 @@ https://github.com/Kcbir/ttpd.
20
  <variant>/<model>/<family>/n<N>/best.pt
21
  ```
22
 
23
- - **variant** `a280` (fixed drone endurance) or `ttd300` (endurance-conditioned)
24
- - **model** `gat` (attention encoder), `mlp` (the encoder ablation), `lisa`
25
- (behaviour cloning)
26
- - **family** what the policy was trained on:
27
 
28
- | family | trained on | use it for |
29
  |---|---|---|
30
- | `benchmark-tuned/` | the five benchmark instances of that size | the headline results |
31
- | `sampled/` | randomly sampled a280 subsets | generalisation; warm start for the above |
32
- | `specialists/` | early small-n runs | the n<=20 rows using a dedicated small model |
 
 
 
 
 
 
33
 
34
- LISA weights live at `<variant>/lisa/bc/n<N>.pt`, with
35
- `a280/lisa/bc-initial/` and `a280/lisa/gat-n50/` kept for provenance.
 
 
36
 
37
- `best.pt` is the deliverable (best held-out beam evaluation); `last.pt` is a
38
- resume artifact; `best_milp.pt` is selected by MILP gap instead of eval return.
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  ## Loading
41
 
42
- Checkpoints are `torch.save` payloads with a `"policy"` state-dict key:
43
 
44
  ```python
45
  import torch
46
  from huggingface_hub import hf_hub_download
47
 
48
- path = hf_hub_download("Murjani/ttpd-weights", "a280/gat/bench-tuned/n30/best.pt")
49
  payload = torch.load(path, map_location="cpu", weights_only=False)
50
  policy.load_state_dict(payload["policy"])
51
  ```
52
 
53
- The repo code resolves these automatically -- see `ttpd_hub.ensure_local`.
 
 
 
 
 
 
 
 
54
 
55
- `manifest.json` records, for every file, the path it was published from and its
56
- sha256.
 
9
 
10
  # TTP-D solver weights
11
 
12
+ Trained policy checkpoints for the study *Fly, Pack, Drive: the Travelling Thief
13
+ Problem with Drone*.
14
+
15
+ A capacitated truck and a single-package drone operate from a common depot on a
16
+ collection route. The truck's velocity decreases affinely with its accumulated
17
+ load, so an early pickup penalises every subsequent arc. The drone launches from
18
+ a node at which the truck is present, retrieves one item at an outlying
19
+ customer, and rejoins the truck at a later rendezvous node; whichever vehicle
20
+ arrives first waits, while the rental clock continues to run. The objective is
21
+ to maximise collected profit net of a rental cost proportional to the makespan.
22
+
23
+ These checkpoints are the learned construction policies: an encoder–decoder
24
+ model that embeds the instance once and emits a composite action at each node
25
+ the truck reaches, trained offline with Proximal Policy Optimisation under a
26
+ POMO group baseline.
27
+
28
+ Code: <https://github.com/corbit-lab/ttpd>. Benchmark instances, result tables,
29
+ and behaviour-cloning datasets are in the companion dataset repository
30
+ [`Murjani/ttpd-benchmarks`](https://huggingface.co/datasets/Murjani/ttpd-benchmarks).
31
 
32
  ## Layout
33
 
 
35
  <variant>/<model>/<family>/n<N>/best.pt
36
  ```
37
 
38
+ **Variant** is `a280` (fixed drone endurance) or `ttd300` (endurance-conditioned).
39
+ **Model** is `gat` (attention encoder), `mlp` (the encoder ablation), or `lisa`
40
+ (behaviour cloning). **Family** denotes the distribution the policy was trained
41
+ on, which determines its applicability:
42
 
43
+ | Family | Training distribution | Intended use |
44
  |---|---|---|
45
+ | `benchmark-tuned/` | The five benchmark instances of that size | The reported headline results |
46
+ | `sampled/` | Randomly sampled a280 subsets | Generalisation; warm start for the above |
47
+ | `specialists/` | Early small-N runs | The N ≤ 20 rows, using dedicated small models |
48
+
49
+ The `benchmark-tuned` policies warm-start from `sampled/n20` of the same model
50
+ family, as training from scratch does not converge within the budget at the
51
+ larger sizes. Within a run, `best.pt` is the deliverable, selected by held-out
52
+ beam evaluation; `last.pt` supports resumption; and `best_milp.pt` is selected
53
+ by MILP gap rather than evaluation return.
54
 
55
+ Behaviour-cloned policies are stored at
56
+ `<variant>/lisa/behaviour_cloning/n<N>.pt`, with
57
+ `a280/lisa/behaviour_cloning_initial/` and `a280/lisa/gat-n50/` retained for
58
+ provenance.
59
 
60
+ ## Deliverable checkpoint per model and size
61
+
62
+ | Model and size | Checkpoint |
63
+ |---|---|
64
+ | a280 GAT, N = 5, 10 | `a280/gat/specialists/n5.pt`, `n10.pt` |
65
+ | a280 GAT, N = 15, 20 | `a280/gat/sampled/n<N>/best.pt` |
66
+ | a280 GAT, N = 30–100 | `a280/gat/benchmark-tuned/n<N>/best.pt` |
67
+ | a280 MLP, N = 20 | `a280/mlp/sampled/n20/best.pt` |
68
+ | a280 MLP, remaining sizes | `a280/mlp/benchmark-tuned/n<N>/best.pt` |
69
+ | ttd300 GAT | `ttd300/gat/benchmark-tuned/n<N>/best.pt` |
70
+ | LISA | `<variant>/lisa/behaviour_cloning/n<N>.pt` |
71
+
72
+ The `benchmark-tuned` family also carries the smaller sizes so that a
73
+ directory-based checkpoint argument resolves uniformly.
74
 
75
  ## Loading
76
 
77
+ Checkpoints are `torch.save` payloads keyed under `"policy"`:
78
 
79
  ```python
80
  import torch
81
  from huggingface_hub import hf_hub_download
82
 
83
+ path = hf_hub_download("Murjani/ttpd-weights", "a280/gat/benchmark-tuned/n30/best.pt")
84
  payload = torch.load(path, map_location="cpu", weights_only=False)
85
  policy.load_state_dict(payload["policy"])
86
  ```
87
 
88
+ The repository code resolves these paths automatically through
89
+ `ttpd.hub.ensure_local`, which returns an existing local file unchanged and
90
+ downloads otherwise, so a machine that already holds the tree performs no
91
+ network access.
92
+
93
+ `manifest.json` records, for every file, the path from which it was published
94
+ together with its SHA-256 digest.
95
+
96
+ ## Citation
97
 
98
+ Please cite the accompanying paper. Reported results, including the comparison
99
+ against the exact solver and the metaheuristics, are given there.