MARCO: Memory-Augmented Reinforcement framework for Combinatorial Optimization

October 8, 2025 · View on GitHub

Static Badge Static Badge

Overview

MARCO offers an innovative approach to neural combinatorial optimization (NCO). It integrates a memory module that prevents redundant exploration and promotes the discovery of diverse, high-quality solutions across various problem domains. We include implementations of improvement methods for the maximum cut (MC) and maximum independent set (MIS), and constructive method for the traveling salesman problem (TSP).

marco

Supplementary material

Access the supplementary material here

Requirements

  • PyTorch

Usage

To train a model, run the following command inside a problem folder:

python train.py

To test a model, run:

python eval.py

Configuration

To adjust training and evaluation settings, modify the parameters in:

  • options/train_options.py
  • options/eval_options.py

MC Performance Table

The best results overall and the best results among learning-based methods are highlighted in bold.

MethodER700-800 Obj. ↑TimeRB200-300 Obj. ↑TimeRB800-1200 Obj. ↑Time
GUROBI23420.171m2024.551m20290.081m
GUROBI_long24048.9310m2286.4810m23729.4410m
BURER24235.931.0m2519.471.0m29791.521.0m
ECO-DQN24114.062.1m2518.7629s29638.783.0m
NIM24037.6645s2517.011.5s29752.922.0m
Op-NIM24081.1847s2518.341.6s29751.872.1m
MARCO-ind24203.1152s2519.462.3s29778.842.7m
MARCO24205.9749s2519.472.2s29780.712.5m

MIS Performance Table

The best results overall and the best results among learning-based methods are highlighted in bold.

MethodER700-800 Obj. ↑TimeRB200-300 Obj. ↑TimeRB800-1200 Obj. ↑Time
GUROBI43.471m19.981m40.901m
GUROBI_long43.6410m20.0310m41.3410m
KAMIS44.981m20.101m43.151m
Greedy38.8550ms18.414ms37.7854ms
DGL38.7111s19.012s32.323s
LwD41.174s17.361s34.501s
FlowNet41.142s19.180.1s37.480.5s
NIM40.162s19.260.5s37.801s
Op-NIM40.664s19.701.2s38.594s
MARCO-ind43.7219s19.771.5s39.947s
MARCO43.7817s19.871.4s40.136s

TSP Performance Table

The best results overall and the best results among learning-based methods are highlighted in bold.

Methodnn = 100 Obj. ↓Timenn = 200 Obj. ↓Timenn = 500 Obj. ↓Time
Concorde7.761m10.721m16.591m
LKH-37.761m10.721m16.591m
NN9.691ms13.452ms20.805ms
POMO7.810.1s11.731s21.882s
LEHD7.762m10.724m16.6310m
DACT7.773m14.235m145.7811m
NeuOPT7.772m10.734m39.198m
NCM7.760.1s10.751s16.902s
MARCO-ind7.763s10.7311s16.8122s
MARCO7.763s10.7211s16.7821s

NCOLib

Explore our new PyTorch-based library, NCOLib, designed to simplify the application of neural network models and deep learning algorithms to solve combinatorial optimization problems. Learn more here.

Contributing

We welcome contributions! If you'd like to improve MARCO or report an issue, please open an issue on our repository.

Citation

If you find MARCO useful in your research or projects, we kindly request that you cite our article: