Specifications PyCSP3 Tools Instances Competitions About


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.
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

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
More than 23,000 instances
Parsers developped in Java and C++
PyCSP3: Python Library for modeling

Last News

August 2022
Forthcoming: XCSP3 Competition, held with FLoC 2022; the call is available here. Deadline 16th of May, 2022.
December 15, 2021
PySCP3 2.0 , Version 2 of the Python library PyCSP3.
December 15, 2021
ACE 2.0 , Version 2 of the generic constraint solver ACE (written in Java).
January 16, 2021
Specifications of XCSP3, Version 3.0.7

Here, we present two XCSP3 instances for two well-known problems:

Knapsack problem

<instance format="XCSP3" type="COP">
    <array id="x" size="[5]"> 0 1 </array>
      <list> x[] </list>
      <coeffs> 11 24 5 23 16 </coeffs>
      <condition> (le,100) </condition>
    <maximize type="sum">
      <list> x[] </list>
      <coeffs> 46 46 38 88 3 </coeffs>

All Interval problem

<instance format="XCSP3" type="CSP">
    <array id="x" size="[5]" note="x[i] is the ith value of the series">
    <array id="y" size="[4]" note="y[i] is the distance between x[i] and x[i+1]">
    <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>

Some Features


  • Download the full documentation of XCSP3
  • Download the documentation of XCSP3-core

 Series of Instances

This website contains many <a href=/series>series</a> of XCSP3 problem instances.


  • A Java 8 Parser as well as a C++ 11 Parser are available
  • A Java 8 Solution Checker is available


  • A Python Library for modeling and compiling problems: PyCSP3
  • A Java API for modeling and compiling problems: JvCSP3

Related Sites