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
Recommended IDE: IntelliJ IDEA¶
Clone the repository (see above).
Launch IntelliJ IDEA, choose File → Open, navigate to the
maxicpfolder, and openpom.xmlas a new project.To run all tests: right-click on
src/test/java→ Run ‘All Tests’.
Getting Help¶
File a bug report or feature request on the GitHub issue tracker.
Contact the authors by email.
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.