Sequence Variables: A Constraint Programming Computational Domain for Routing and Sequencing
Augustin Delecluse, Pierre Schaus, Pascal Van Hentenryck
TL;DR
Sequence Variables introduce a Constraint Programming computational domain that enables optional visits and insertion-based search for routing and sequencing problems, addressing limitations of classical successor models. The authors formalize the domain, define update operations, and establish consistency notions, alongside an O(n^2) compact encoding and a reversible data-structure implementation. They develop global constraints (Distance, TransitionTimes, Precedence, Cumulative) tailored to sequence variables and demonstrate practical efficacy on the Dial-a-Ride Problem, including integration with Large Neighborhood Search. Experimental results show competitive performance and easier problem modeling, highlighting the approach's compatibility with CP solvers and its potential to broaden CP-based VRP solving.
Abstract
Constraint Programming (CP) offers an intuitive, declarative framework for modeling Vehicle Routing Problems (VRP), yet classical CP models based on successor variables cannot always deal with optional visits or insertion based heuristics. To address these limitations, this paper formalizes sequence variables within CP. Unlike the classical successor models, this computational domain handle optional visits and support insertion heuristics, including insertion-based Large Neighborhood Search. We provide a clear definition of their domain, update operations, and introduce consistency levels for constraints on this domain. An implementation is described with the underlying data structures required for integrating sequence variables into existing trail-based CP solvers. Furthermore, global constraints specifically designed for sequence variables and vehicle routing are introduced. Finally, the effectiveness of sequence variables is demonstrated by simplifying problem modeling and achieving competitive computational performance on the Dial-a-Ride Problem.
