[Paper Review] ACE, a generic constraint solver
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.
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.

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.