GOAL: A Generalist Combinatorial Optimization Agent Learner

Darko Drakulic, Sofia Michel, Jean-Marc Andreoli
6/21/2024
cs.LG

Official code: naver/goal-co (53 stars, last commit 2025-05-14).

Abstract

Machine Learning-based heuristics have recently shown impressive performance in solving a variety of hard combinatorial optimization problems (COPs). However, they generally rely on a separate neural model, specialized and trained for each single problem. Any variation of a problem requires adjustment of its model and re-training from scratch. In this paper, we propose GOAL (for Generalist combinatorial Optimization Agent Learner), a generalist model capable of efficiently solving multiple COPs and which can be fine-tuned to solve new COPs. GOAL consists of a single backbone plus light-weight problem-specific adapters for input and output processing. The backbone is based on a new form of mixed-attention blocks which allows to handle problems defined on graphs with arbitrary combinations of node, edge and instance-level features. Additionally, problems which involve heterogeneous types of nodes or edges are handled through a novel multi-type transformer architecture, where the attention blocks are duplicated to attend the meaningful combinations of types while relying on the same shared parameters. We train GOAL on a set of routing, scheduling and classic graph problems and show that it is only slightly inferior to the specialized baselines while being the first multi-task model that solves a wide range of COPs. Finally we showcase the strong transfer learning capacity of GOAL by fine-tuning it on several new problems. Our code is available at https://github.com/naver/goal-co/.

View on arXivView PDF

Code Implementations(1)

naver/goal-coOfficial100%
539PythonOct 24, 20241 years agoNOASSERTION

Similar Papers

Cite this paper

@article{drakulic2024goal,
  title  = {GOAL: A Generalist Combinatorial Optimization Agent Learner},
  author = {Darko Drakulic and Sofia Michel and Jean-Marc Andreoli},
  year   = {2024},
  eprint = {2406.15079},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2406.15079v3},
  journal = {ICLR 2024 2024}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2406.15079.svg)](https://codeofpaper.com/paper/2406.15079)

Discussion