Efficient Decoder Scaling Strategy for Neural Routing Solvers
Organizations: Guangdong Provincial Key Laboratory of Fully Actuated System Control Theory and Technology, School of Automation and Intelligent Manufacturing, Southern University of Science and Technology, Shenzhen, China. · Department of Computer Science, City University of Hong Kong, Hong Kong SAR, China.
Abstract
Construction-based neural routing solvers, typically composed of an encoder and a decoder, have emerged as a promising approach for solving vehicle routing problems. While recent studies suggest that shifting parameters from the encoder to the decoder enhances performance, most works restrict the decoder size to 1-3M parameters, leaving the effects of scaling largely unexplored. To address this gap, we conduct a systematic study comparing two distinct strategies: scaling depth versus scaling width. We synthesize these strategies to construct a suite of 12 model configurations, spanning a parameter range from 1M to ~150M, and extensively evaluate their scaling behaviors across three critical dimensions: parameter efficiency, data efficiency, and compute efficiency. Our empirical results reveal that parameter count is insufficient to accurately predict the model performance, highlighting the critical and distinct roles of model depth (layer count) and width (embedding dimension). Crucially, we demonstrate that scaling depth yields superior performance gains to scaling width. Based on these findings, we provide and experimentally validate a set of design principles for the efficient allocation of parameters and compute resources to enhance the model performance.
Figures & tables
| Depth | Width | Head Num | QKV Dim | FFN Dim | Parameters |
|---|---|---|---|---|---|
| 128 | 8 | 16 | 512 | 1.32M | |
| 6 | 256 | 16 | 16 | 1024 | 5.26M |
| 512 | 16 | 32 | 2048 | 21.00M | |
| 128 | 8 | 16 | 512 | 2.60M | |
| 12 | 256 | 16 | 16 | 1024 | 10.38M |
| 512 | 16 | 32 | 2048 | 41.46M |
| Model | Parameters | TSP100 | TSP200 | TSP500 | TSP1000 |
|---|---|---|---|---|---|
| 1.32M | 0.464% | 0.669% | 1.559% | 2.172% | |
| 1.29M | 0.297% | 0.449% | 0.857% | 1.259% | |
| 1.30M | 0.184% | 0.307% | 0.678% | 0.991% |
| Model (Parameters) | Training Data Size | TSP100 | TSP1000 |
|---|---|---|---|
| (1.32M) | 0.1M | 1.715% | 5.678% |
| (21.0M) | 0.1M | 0.949% | 3.871% |
| (9.02M) | 0.1M | 0.547% | 2.572% |
| (Depth,Width,Params) | Limited Budget | Sufficient Budget ( 1h) | ||||
|---|---|---|---|---|---|---|
| bs | Gap (%) | Time | bs | Gap (%) | Time | |
| (6, 128, 1.3M) | 32 | 0.0127 | 12m | 512 | 0.0059 | 2.75h |
| (6, 512, 21.0M) | 8 | 0.0138 | 12m | 128 | 0.0007 | 3.24h |
| (24, 128, 5.2M) | 10 | 0.0044 | 12m | 128 | 0.0002 | 2.60h |
| (42, 128, 9.0M) | 6 | 0.0056 | 12m | 64 | 0.0001 | 2.29h |
| TSP 100 | TSP 1000 | |||
| Gap | Time | Gap | Time | |
| LEHD greedy | 0.577% | 0.29m | 3.168% | 1.17m |
| LEHD bs16 | 0.038% | 4.4m | 1.874% | 22m |
| BQ greedy | 0.348% | 1.18m | 2.274% | 1.18m |
| BQ bs16 | 0.015% | 17.6m | 1.35% | 18m |
| SIGD greedy | 0.851% | 2.4m | 2.791% | 2.71m |
| TSPLib | Baselines | Ours (Depth,Width) | |||||
|---|---|---|---|---|---|---|---|
| BQ | SIGD | LEHD | (6,128) | (6,512) | (42,128) | (42,512) | |
| 2.828% | 2.176% | 2.287% | 2.582% | 1.553% | 1.364% | 0.811% | |
| 10.288% | 10.812% | 9.720% | 7.249% | 4.127% | 3.631% | 1.942% | |
| All | 5.812% | 5.631% | 5.260% | 5.235% | 3.108% | 2.346% | 1.288% |
Appendix figures & tables20 assets
Supplementary material from the paper’s appendix.
Appendix
| TSP100 | TSP200 | TSP500 | TSP1000 | |
|---|---|---|---|---|
| Ours greedy (Depth=42,Width=128) w/ gated attention | 0.070% | 0.178% | 0.477% | 0.869% |
| Ours greedy (Depth=42,Width=128) w/o gated attention | 0.105% | 0.245% | 0.614% | 1.023% |
| Setting | Model | TSP100 | TSP200 | TSP500 | TSP1000 |
|---|---|---|---|---|---|
| w/o | Ours ( ) | 0.464% | 0.644% | 1.645% | 4.050% |
| Ours ( ) | 0.190% | 0.341% | 0.880% | 2.239% | |
| Ours ( ) | 0.070% | 0.184% | 0.532% | 1.594% | |
| w/ | Ours ( ) | 0.464% | 0.669% | 1.559% | 2.172% |
| Ours ( ) | 0.264% | 0.498% | 0.969% | 1.504% | |
| Ours ( ) | 0.070% | 0.178% | 0.477% | 0.869% |
| parameters | values |
|---|---|
| Batch size | 1024 |
| Total training steps | 60,000 |
| optimizer | AdamW |
| Weight decay | 0.01 |
| Learning rate | |
| Scheduler | Exponential |
| Configuration | Device | Configuration | Device |
|---|---|---|---|
| 4090 | 4090 | ||
| 4090 | 4090 | ||
| 4090 | 4090 | ||
| 4090 | 4090 | ||
| 4090 | 4090 | ||
| 4090 | 4090 |
| Training Dataset Size | TSP100 | TSP200 | TSP500 | TSP1000 | |
|---|---|---|---|---|---|
| Ours greedy (Depth=12,Width=128) | 1M | 0.337% | 0.615% | 1.062% | 1.606% |
| Ours greedy (Depth=12,Width=128) | 10M | 0.302% | 0.461% | 0.972% | 1.357% |
| TSP 100 | |||
| Gap | Time | ||
| Uniform | LKH3 | 0.000% | 56m |
| Ours greedy (Depth=6,Width=128) | 0.464% | 0.34m | |
| Ours greedy (Depth=6,Width=256) | 0.264% | 0.75m | |
| Ours greedy (Depth=6,Width=512) | 0.190% | 1.7m | |
| Ours greedy (Depth=12,Width=128) | 0.225% | 0.62m | |
| TSP 200 | TSP 500 | TSP 1000 | |||||
|---|---|---|---|---|---|---|---|
| Gap | Time | Gap | Time | Gap | Time | ||
| Uniform | LKH3 | 0.000% | 17m | 0.000% | 50m | 0.000% | 10h |
| Ours greedy (Depth=6,Width=128) | 0.669% | 0.035m | 1.559% | 0.23m | 2.172% | 1.6m | |
| Ours greedy (Depth=6,Width=256) | 0.498% | 0.059m | 0.969% | 0.48m | 1.504% | 3.2m | |
| Ours greedy (Depth=6,Width=512) | 0.375% | 0.1m | 0.856% | 0.75m | 1.291% | 4.2m | |
| Ours greedy (Depth=12,Width=128) | 0.550% | 0.054m | 0.803% | 0.44m | 1.357% | 3.1m | |
| TSP 100 | TSP 200 | TSP 500 | TSP 1000 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Gap | Time | Gap | Time | Gap | Time | Gap | Time | ||
| Explosion | LKH3 | 0.000% | 56m | 0.000% | 17m | 0.000% | 50m | 0.000% | 10h |
| Ours greedy (Depth=6,Width=128) | 0.496% | 0.35m | 0.767% | 0.037m | 1.905% | 0.23m | 3.819% | 1.6m | |
| Ours greedy (Depth=6,Width=256) | 0.301% | 0.75m | 0.506% | 0.059m | 1.143% | 0.48m | 2.430% | 3.2m | |
| Ours greedy (Depth=6,Width=512) | 0.222% | 1.7m | 0.403% | 0.1m | 0.974% | 0.75m | 2.029% | 4.2m | |
| Ours greedy (Depth=12,Width=128) | 0.245% | 0.64m | 0.420% | 0.055m | 1.044% | 0.44m | 1.987% | 3.1m | |
| TSP 100 | TSP 200 | TSP 500 | TSP 1000 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Gap | Time | Gap | Time | Gap | Time | Gap | Time | ||
| Implosion | LKH3 | 0.000% | 56m | 0.000% | 17m | 0.000% | 50m | 0.000% | 10h |
| Ours greedy (Depth=6,Width=128) | 0.895% | 0.35m | 1.424% | 0.035m | 2.909% | 0.23m | 3.507% | 1.7m | |
| Ours greedy (Depth=6,Width=256) | 0.529% | 0.74m | 0.646% | 0.06m | 1.660% | 0.48m | 2.580% | 3.2m | |
| Ours greedy (Depth=6,Width=512) | 0.436% | 1.7m | 0.634% | 0.1m | 1.494% | 0.75m | 2.164% | 4.2m | |
| Ours greedy (Depth=12,Width=128) | 0.491% | 0.63m | 0.824% | 0.055m | 1.725% | 0.44m | 2.246% | 3.1m | |
| TSP 100 | TSP 200 | TSP 500 | TSP 1000 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Gap | Time | Gap | Time | Gap | Time | Gap | Time | ||
| Cluster | LKH3 | 0.000% | 56m | 0.000% | 17m | 0.000% | 50m | 0.000% | 10h |
| Ours greedy (Depth=6,Width=128) | 2.742% | 0.34m | 2.440% | 0.035m | 4.018% | 0.23m | 6.639% | 1.6m | |
| Ours greedy (Depth=6,Width=256) | 1.253% | 0.74m | 1.240% | 0.063m | 2.345% | 0.48m | 4.276% | 3.2m | |
| Ours greedy (Depth=6,Width=512) | 1.377% | 1.7m | 1.164% | 0.1m | 2.002% | 0.75m | 3.542% | 4.2m | |
| Ours greedy (Depth=12,Width=128) | 1.134% | 0.63m | 1.178% | 0.055m | 1.943% | 0.44m | 3.539% | 3.1m | |
| Compute per solution | Batch size =50 | Batch size =100 | Batch size =1000 | |
|---|---|---|---|---|
| Ours greedy (Depth=12,Width=512) | 843.2 GFLOPs | 4.0m | 3.4m | 3.3m |
| Ours greedy (Depth=24,Width=256) | 434.4 GFLOPs | 4.4m | 3.2m | 2.8m |
| greedy | beam=2 | beam=4 | beam=8 | beam=16 | beam=32 | beam=64 | |
|---|---|---|---|---|---|---|---|
| Ours ( ) | 0.4640% | 0.2456% | 0.1155% | 0.0571% | 0.0269% | 0.0127% | 0.0059% |
| Ours ( ) | 0.2635% | 0.1397% | 0.0647% | 0.0289% | 0.0125% | 0.0008% | 0.0017% |
| Ours ( ) | 0.1895% | 0.0904% | 0.0359% | 0.0138% | 0.0050% | 0.0019% | 0.0007% |
| Ours ( ) | 0.2253% | 0.1122% | 0.0512% | 0.0223% | 0.0088% | 0.0032% | 0.0010% |
| Ours ( ) | 0.1149% | 0.0523% | 0.0200% | 0.0069% | 0.0024% | 0.0008% | 0.0002% |
| Ours ( ) | 0.0827% | 0.0354% | 0.0133% | 0.0044% | 0.0016% | 0.0005% | 0.0002% |
| TSP100 (1,000 instances) | Greedy | RRC 100 | RRC 200 | RRC 500 | RRC 800 | RRC 1000 |
|---|---|---|---|---|---|---|
| Ours ( ) | 0.4228% | 0.0103% | 0.0068% | 0.0040% | 0.0030% | 0.0024% |
| Ours ( ) | 0.1824% | 0.0033% | 0.0018% | 0.0007% | 0.0006% | 0.0005% |
| Ours ( ) | 0.0656% | 0.0015% | 0.0012% | 0.0004% | 0.0004% | 0.0004% |
| Ours ( ) | 0.0332% | 0.0008% | 0.0006% | 0.0003% | 0.0002% | 0.0002% |
| Model (Parameters) | TSP100 | TSP200 | TSP500 | TSP1000 |
|---|---|---|---|---|
| LEHD (1.43M) | 0.577% | 0.859% | 1.560% | 3.168% |
| LEHD (1.25M) | 0.419% | 0.597% | 1.025% | 1.844% |
Neural Combinatorial Optimization
Neural combinatorial optimization uses neural networks to find high-quality solutions to discrete problems such as routing, scheduling, and graph partitioning.
See all 138 papers