Imperfect Is Perfect: Learned Column Prefilling for Branch-Price-and-Cut
Organizations: Department of Industrial Systems Engineering, University of Florida, Florida, United States
Abstract
Column generation folklore warns that initial columns hurt: a warm start may bias the dual and slow the root of branch-price-and-cut. We show the opposite once the columns are imperfect in the right way. Preloading the support of the optimal root LP, the best columns one could know in advance, fails to finish on half of our hardest instances; a pool of ordinary routes that need not belong to any optimal solution, held outside the master and priced at the current smoothed dual, speeds the root up. Because the columns need not be optimal, producing them becomes a learning task: a neural edge scorer guides a constructive generator that builds the pool in seconds. A second network predicts the initial center of Wentges smoothing from the instance file, and with it the direction of the smoothed pricing queries; the solver's own updates run unchanged. With prefill and center in place, exact pricing dominates root pricing time, so we rebuild bucket-graph labeling around its dominance test for the GPU and certify on the CPU. Inside RouteOpt, the state-of-the-art exact solver for capacitated vehicle routing, the pipeline reaches the same certified root bound in 13.2% of vanilla RouteOpt's root pricing time over 95 instances with 300 to 1000 customers, prefill alone in 26.1%, and 17.5 times faster in the best case. In an exact branch-price-and-cut solver for unrelated parallel machine scheduling, prefill with smoothing and the learned center certifies all 25 benchmark instances, 12 times faster than the solver's own column generation, which certifies 20 of them.
Figures & tables
| Set | Class | Inst. | Prefill | Center | GPU | Prefill+Center | Full pipeline |
|---|---|---|---|---|---|---|---|
| X | short | 5 | 0.149 (5/5) | 0.686 (5/5) | 1.002 (3/5) | 0.193 (5/5) | 0.125 (5/5) |
| X | medium | 5 | 0.154 (5/5) | 0.671 (5/5) | 0.925 (5/5) | 0.173 (5/5) | 0.100 (5/5) |
| X | long | 5 | 0.269 (5/5) | 0.587 (5/5) | 0.886 (5/5) | 0.258 (5/5) | 0.101 (5/5) |
| X | very long | 5 | 0.318 (5/5) | 0.689 (5/5) | 0.870 (5/5) | 0.292 (5/5) | 0.133 (5/5) |
| X | all | 20 | 0.210 (20/20) | 0.657 (20/20) | 0.919 (18/20) | 0.224 (20/20) | 0.114 (20/20) |
| XML300 | short | 5 | 0.203 (5/5) | 0.710 (5/5) | 0.969 (5/5) | 0.234 (5/5) | 0.136 (5/5) |
| CPU (one thread) | L4 | RTX PRO 6000 | B200 | |
| Seconds per exact call | 15.84 | 4.02 | 1.30 | 1.21 |
| all | ||||||
|---|---|---|---|---|---|---|
| Their CG | 3.1 (5) | 1800 ∗ (0) | 1.4 (5) | 403.4 (5) | 197.8 (5) | 57.1 (20) |
| Their transformer pricing | 17.7 (5) | 1800 ∗ (0) | 12.2 (5) | 866.4 (5) | 434.6 (5) | 171.2 (20) |
| Prefill | 1.3 (5) | 1800 ∗ (0) | 0.2 (5) | 6.6 (5) | 1.8 (5) | 5.4 (20) |
| Wentges | 1.6 (5) | 1489 ∗ (2) | 1.1 (5) | 275.7 (5) | 154.1 (5) | 40.9 (22) |
| Wentges + Prefill | 0.6 (5) | 1047 ∗ (4) | 0.2 (5) | 7.6 (5) | 2.9 (5) | 5.1 (24) |
| Wentges + Prefill + Center | 0.7 (5) | 628 (5) | 0.2 (5) | 7.6 (5) | 3.3 (5) | 4.8 (25) |
Appendix figures & tables11 assets
Supplementary material from the paper’s appendix.
Appendix
| constant | ||||||
|---|---|---|---|---|---|---|
| value |
| item | value |
|---|---|
| graph | -NN candidate graph plus depot edges, built from the instance file; identical at training and at generation time |
| node inputs | relative position and depot distance in units of the mean depot distance, , candidate degree , depot flag |
| edge inputs | the instance-only edge features |
| message passing | three rounds at width ; messages from , , ; edge head; no dropout |
| parameters | |
| target and loss | on , squared error |
| item | value |
|---|---|
| time budget | ten seconds per instance, shared by the seeds |
| seeds | independent seeds in parallel, merged by customer set; random seed |
| neighborhood | edges of the -NN graph among the highest-scoring candidates at either endpoint |
| floors and exponents | on the depot heat, on the walk weights, coverage exponent |
| tour sampling | uniform on per tour; multiplicative noise , , per step; nearest-unvisited fallback may leave |
| tour to routes | neighbor-list 2-opt on the giant tour; optimal split ( Prins, 2004 ) under capacity and a route-length bound of customers; intra-route 2-opt (Polish); split-and-search twice per tour |
| item | value |
|---|---|
| inputs | per-customer features plus an instance-context token, all computable from the instance file |
| set transformer ( Cn ) | three pre-layer-norm blocks, , eight heads, geometric additive attention bias, dropout ; per-customer softplus direction head; scalar log-magnitude head; parameters |
| labels | for the direction; for the magnitude |
| loss | ( 7 ) with |
| optimizer | AdamW, learning rate , weight decay , batch , ten warm-up epochs then a cosine schedule, cap epochs, patience , seed ; best epoch |
| selection | validation cosine after the box projection, out of runs of the same family |
| kernel | self % | level | calls | s / call | predicates / call |
|---|---|---|---|---|---|
| in-bucket dominance loop | 18.4 | LIGHT | 862 | 0.05 | |
| dominance core (load, ng subset) | 12.5 | HEAVY | 201 | 0.10 | |
| cut-state dominance | 9.4 | EXACT | 125 | 12.0 | |
| cross-bucket dominance | 5.3 | ||||
| dominance, total | 45.6 | ||||
| label extension | 5.0 |
| instance | EXACT calls | CPU (s) | L4 (s) | CPU / L4 | end-to-end (est.) |
|---|---|---|---|---|---|
| X-n303-k21 | 9 | 11.8 | 3.0 | 3.9 | 1.12 |
| X-n327-k20 | 13 | 11.4 | 2.6 | 4.4 | 1.14 |
| X-n449-k29 | 11 | 63.6 | 15.9 | 4.0 | 1.11 |
| X-n459-k26 | 25 | 107.3 | 30.6 | 3.5 | 1.18 |
| X-n561-k42 | 14 | 25.3 | 6.0 | 4.2 | 1.05 |
| instance | calls | CPU (s) | L4 (s) | B200 (s) | RTX (s) | B200/L4 | RTX/L4 | L4/CPU |
|---|---|---|---|---|---|---|---|---|
| X-n1001-k43 | 41 | 15.838 | 4.015 | 1.205 | 1.298 | 0.30 | 0.32 | 0.25 |
| X-n367-k17 | 74 | 3.321 | 0.691 | 0.358 | 0.357 | 0.52 | 0.52 | 0.21 |
| X-n936-k151 | 37 | 5.233 | 1.239 | 0.594 | 0.575 | 0.48 | 0.46 | 0.24 |
| X-n261-k13 | 18 | 2.252 | 0.491 | 0.272 | 0.259 | 0.55 | 0.53 | 0.22 |
| X-n561-k42 | 14 | 2.036 | 0.422 | 0.231 | 0.222 | 0.55 | 0.53 | 0.21 |
| X-n957-k87 | 20 | 1.101 | 0.324 | 0.218 | 0.176 | 0.67 | 0.54 | 0.29 |
| instance | vanilla | Pn | Ph | Pdump | Pconv | Psupp | ||
|---|---|---|---|---|---|---|---|---|
| X-n327-k20 | 326 | 20 | 112.6 | 31.5 | 48.8 | 34.9 | 12.6 | 77.9 |
| X-n367-k17 | 366 | 17 | 453.2 | 184.3 | 201.3 | 167.6 | 108.2 | 955.4 |
| X-n449-k29 | 448 | 29 | 611.3 | 200.2 | 253.0 | 200.7 | 85.2 | 317.4 |
| X-n513-k21 | 512 | 21 | 955.8 | 325.2 | 368.3 | 461.4 | 308.2 | 1672 |
| X-n561-k42 | 560 | 42 | 438.7 | 74.5 | 100.1 | 80.5 | 61.7 | 347.1 |
| X-n641-k35 | 640 | 35 | 1251 | 524.5 | 661.9 | 579.5 | 187.2 | 879.0 |
| instance | vanilla | S | Crand | Cn | ||
|---|---|---|---|---|---|---|
| X-n327-k20 | 326 | 20 | 112.6 | 115.1 | 93.8 | 73.2 |
| X-n367-k17 | 366 | 17 | 453.2 | 343.2 | 312.8 | 368.9 |
| X-n449-k29 | 448 | 29 | 611.3 | 487.7 | 430.0 | 340.1 |
| X-n513-k21 | 512 | 21 | 955.8 | 817.8 | 686.2 | 542.7 |
| X-n561-k42 | 560 | 42 | 438.7 | 397.0 | 333.1 | 260.2 |
| X-n641-k35 | 640 | 35 | 1251 | 1119 | 856.5 | 774.3 |
| class | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| name | very short | short | medium | long | very long | ultra long |
| Set | Inst. | Prefill | Center | GPU | Prefill+Center |
|---|---|---|---|---|---|
| X | 5 | 0.108 (5/5) | 0.764 (5/5) | 0.985 (3/5) | 0.117 (5/5) |
| XML300 | 5 | 0.159 (5/5) | 0.793 (5/5) | 1.019 (1/5) | 0.209 (5/5) |
| XML400 | 5 | 0.127 (5/5) | 0.785 (5/5) | 1.001 (1/5) | 0.162 (5/5) |
| XML500 | 5 | 0.115 (5/5) | 0.781 (5/5) | 1.010 (3/5) | 0.229 (4/5) |
| all | 20 | 0.126 (20/20) | 0.781 (20/20) | 1.003 (8/20) | 0.173 (19/20) |
Learning to Optimize
Learning to Optimize uses data to adapt algorithms, solver decisions, and solution maps for faster or better optimization.
See all 139 papers