Preface

This document is the user guide for MaxiCP. It covers installation, core concepts, and a tour of all major features through annotated code examples. Readers looking for an introduction to constraint programming in general are referred to the MiniCP paper and related literature.

What is MaxiCP?

MaxiCP is an open-source (MIT licence) Java-based Constraint Programming (CP) solver for solving scheduling and vehicle routing problems. It is an extended version of MiniCP, a lightweight, open-source CP solver mostly used for teaching constraint programming.

The key features of MaxiCP are:

  • Improved performances (support for delta-based propagation, more efficient data structures, etc.).

  • Symbolic modeling layer also enabling search declaration.

  • Support for Embarrassingly Parallel Search.

  • More global constraints (e.g., bin-packing, gcc, soft-gcc, etc.).

  • Sequence variables with optional visits for modeling complex vehicle routing and insertion-based search heuristics, including LNS.

  • Conditional task interval variables including support for modeling with cumulative function expressions for scheduling problems.

MaxiCP is simultaneously well-suited for education, research, and practical deployment.

If you use MaxiCP in your research, please cite:

@misc{maxicp,
  title        = {{MaxiCP: A Not So Mini Constraint Programming Solver}},
  author       = {Pierre Schaus and Guillaume Derval and Augustin Delecluse and Laurent Michel and Pascal Van Hentenryck},
  year         = {2026},
  howpublished = {\url{http://www.maxicp.org/}},
}

Other people having contributed to the project are: Hélène Verhaeghe, Charles Thomas, Roger Kameugne, Emma Legrand, Alice Burlats, Margaux Schmied, Amaury Guichard.

Javadoc

Tech Report

A detailed description of MaxiCP’s architecture, features, and design decisions is available as a downloadable tech report:

MaxiCP: A Not So Mini Constraint Programming Solver (PDF)

The tech report covers state management, the propagation engine, all variable types (integer, interval, sequence), global constraints, search strategies, scheduling, routing, and the symbolic modeling layer.

Install MaxiCP

MaxiCP source code is available on GitHub.

Using MaxiCP as a Maven Dependency

Stable releases are published on Maven Central. Add the following to your pom.xml:

<dependency>
    <groupId>org.maxicp</groupId>
    <artifactId>maxicp</artifactId>
    <version>0.0.2</version>
</dependency>

If you need the latest development version from the main branch, use JitPack.

Cloning and Building from Source

git clone https://github.com/aia-uclouvain/maxicp.git
cd maxicp
mvn compile   # compile the project
mvn test      # run the full test suite

Useful Maven commands:

mvn jacoco:report       # coverage report → target/site/jacoco/index.html
mvn javadoc:javadoc     # javadoc        → target/site/apidocs/index.html

Getting Help

Who Uses MaxiCP?

If you use MaxiCP for teaching or research, please let us know and we will add you to this list.

  • UCLouvain, AIA — Researchers in the group of Pierre Schaus and Hélène Verhaeghe.