XCSP3
XCSP3 is an XML-based format designed to represent instances of combinatorial constrained problems from the angle of Constraint Programming (CP). XCSP3 is an intermediate integrated format that can represent each instance separately while preserving its structure. Important:
- for only dealing with the most popular constraints and frameworks, use XCSP3-core;
- for modeling problems declaratively, and compiling them into XCSP3 instances, use the Python library PyCSP3.
Constraint Programming Format
XCSP3 allows you to deal with:
- Decision Problems encoded as CSP (Constraint Satisfaction Problem)
- Optimization Problems encoded as COP (Constrained Optimization Problem)
Comprehensive Format
Many supported frameworks: CSP, COP, WCSP, QCSP, DisCSP, ...
Many types of variables and constraints
Many variations of popular constraints
Reification and Relaxation
Annotations
Structure-Preserving Format
Natural mechanisms to keep structure:
- Arrays of variables
- Groups of constraints
- Blocks of constraints
- Meta-constraints
Resources and Tools
Well-documented specifications
Parsers developped in Java, C++, Rust and Python
PyCSP3: Python Library for modeling
More than 23,000 instances
Last News
- September 5, 2024
- Results of the 2024 XCSP3 Competition (at CP'24).
- August 28, 2024
- Specifications 3.2 of XCSP3. Version 2.4 of PyCSP3.
- December 10, 2023
- PySCP3 2.2 , Version 2.2 of the Python library PyCSP3.
- August 30, 2023
- Results of the 2023 XCSP3 Competition; held with CP 2023.
- August 3, 2022
- Results of the 2022 XCSP3 Competition, held with FLoC 2022 (Olympic Games).
Here, we present two XCSP3 instances for two well-known problems:
Knapsack problem
<instance format="XCSP3" type="COP">
<variables>
<array id="x" size="[5]"> 0 1 </array>
</variables>
<constraints>
<sum>
<list> x[] </list>
<coeffs> 11 24 5 23 16 </coeffs>
<condition> (le,100) </condition>
</sum>
</constraints>
<objectives>
<maximize type="sum">
<list> x[] </list>
<coeffs> 46 46 38 88 3 </coeffs>
</maximize>
</objectives>
</instance>
All Interval problem
<instance format="XCSP3" type="CSP">
<variables>
<array id="x" size="[5]" note="x[i] is the ith value of the series">
0..4
</array>
<array id="y" size="[4]" note="y[i] is the distance between x[i] and x[i+1]">
1..4
</array>
</variables>
<constraints>
<allDifferent> x[] </allDifferent>
<allDifferent> y[] </allDifferent>
<group class="channeling">
<intension> eq(%0,dist(%1,%2)) </intension>
<args> y[0] x[0] x[1] </args>
<args> y[1] x[1] x[2] </args>
<args> y[2] x[2] x[3] </args>
<args> y[3] x[3] x[4] </args>
</group>
</constraints>
</instance>
Some Features
Specifications
- Download the full documentation of XCSP3
- Download the documentation of XCSP3-core
Series of Instances
This website contains many series of XCSP3 problem instances.Tools
- A Java 8 Parser, a C++ 11 Parser, a Rust and a Python parser are available
- A Java 8 Solution Checker is available
Modeling
- A Python Library for modeling and compiling problems: PyCSP3
Related Sites
- Many useful information about global constraints in the Global Constraint Catalog
- Many useful information about problems and models at CSPLib - a problem libary for constraints