Skip to main content
QUICK REVIEW

[Paper Review] ACE, a generic constraint solver

Christophe Lecoutre|arXiv (Cornell University)|Jan 6, 2023
Constraint Satisfaction and Optimization4 citations
TL;DR

ACE is an open-source, Java-based constraint solver designed for integer and Boolean variables, supporting state-of-the-art table constraints, global constraints, and mono-criterion optimization via XCSP 3 format. It employs efficient filtering algorithms like VA, STR, and CT for table constraints, integrates advanced search heuristics (e.g., Wdeg, WdegOnDom), and supports optimization through branch-and-bound and dichotomic strategies, making it suitable for solving complex combinatorial problems in scheduling, bioinformatics, and data mining.

ABSTRACT

Constraint Programming (CP) is a useful technology for modeling and solving combinatorial constrained problems. On the one hand, on can use a library like PyCSP3 for easily modeling problems arising in various application fields (e.g., scheduling, planning, data-mining, cryptography, bio-informatics, organic chemistry, etc.). Problem instances can then be directly generated from specific models and data. On the other hand, for solving instances (notably, represented in XCSP3 format), one can use a constraint solver like ACE, which is presented in this paper. ACE is an open-source constraint solver, developed in Java, which focuses on integer variables (including 0/1-Boolean variables), state-of-the-art table constraints, popular global constraints, search heuristics and (mono-criterion) optimization.

Motivation & Objective

  • To develop a lightweight, maintainable, and efficient constraint solver tailored for integer and Boolean variables.
  • To support state-of-the-art filtering techniques for table and global constraints within a standardized interface.
  • To provide extensible, modular support for search heuristics and optimization strategies in constraint satisfaction and optimization problems.
  • To ensure compatibility with the XCSP 3 standard for interoperability with modeling tools like PyCSP 3.
  • To enable effective solving of real-world combinatorial problems in domains such as scheduling, data mining, and bioinformatics.

Proposed method

  • ACE implements a modular architecture with 13 core packages, separating concerns such as variables, constraints, search, and optimization.
  • Integer and symbolic variables are represented using ordered doubly linked lists backed by arrays and bit vectors to preserve domain ordering.
  • Table constraints are filtered using specialized propagators: Valid-Allowed (VA), Simple Tabular Reduction (STR), and Compact-Table (CT), including starred and hybrid variants.
  • Intensional constraints are handled via primitive-based filtering and the generic filtering scheme (G)AC3 rm for less common forms.
  • Global constraints such as AllDifferent, Cumulative, and Count are natively supported using efficient propagation algorithms.
  • Search is guided by extensible heuristics: variable ordering (e.g., Dom, WdegOnDom) and value ordering (e.g., Rand, Bivs), with configurable variants via options like -wt.
ACE, a generic constraint solver

Experimental results

Research questions

  • RQ1How can a constraint solver be designed to be both lightweight and efficient while supporting modern constraint features?
  • RQ2What filtering algorithms provide the best performance for table constraints in a generic solver?
  • RQ3How do different search heuristics impact the efficiency of solving combinatorial optimization problems?
  • RQ4Can a modular, open-source constraint solver effectively support mono-criterion optimization and integration with XCSP 3?
  • RQ5What is the role of nogood and inconsistent partial state (IPS) reasoning in improving search performance?

Key findings

  • ACE supports all core constraints defined in XCSP 3 -core, including AllDifferent, Cumulative, and Count, with efficient propagation mechanisms.
  • The solver implements advanced search heuristics such as Wdeg and WdegOnDom with multiple variants (VAR, UNIT, CACD, CHS), with CACD selected by default.
  • Table constraints are efficiently filtered using VA, STR, and CT propagators, with support for starred and hybrid table representations.
  • Optimization is supported through three strategies: decreasing bound update (branch-and-bound), increasing bound update (ramp-up), and dichotomic search.
  • Nogood and IPS reasoning are implemented via NogoodReasoner and IPsReasoner, enabling learning from restarts to improve search efficiency.
  • ACE is compatible with PyCSP 3 and XCSP 3, enabling end-to-end modeling and solving pipelines for real-world applications.

Better researchstarts right now

From reading papers to final review, dramatically reduce your research time.

No credit card · Free plan available

This review was created by AI and reviewed by human editors.