Choco Solver

Constraint-Programming in Java

A robust and efficient constraint solver

Choco Solver is an Open Source Java library for Constraint Programming that has been used for more than 20 years by many companies and universities. Choco is among the most efficient solvers available and has a high code quality. Being a Java library, it can be integrated very easily to develop innovative web-services for decision making. Cosling develops Choco Solver together with IMT Atlantique.

choco-solver logo

Constraint-Programming Microservices

model icon
Problem Formalization

Variables, constraints, objectives

analysis icon
Performance optimisation

Profiling, reformulations, meta-heuristics

software development icon
Software development

Imports/Exports, business processing

API packaging icon
Rest API Packaging

Microservices architecture

scaling icon

Docker, Kubernetes

support icon
Long-term support

Functional evolutions, technical updates

As a major contributor of Choco Solver, COSLING is your best partner for constraint programming

Contact us


Modeling Language

CSP Formalism

A Constraint Satisfaction Problem (CSP) is defined by a set of variables, each with a domain of values, and a set of constraints defining the allowed value combinations. Solving a CSP consists of assigning each variable a value in its domain such that all constraints are satisfied. This is referred to as Constraint-Programming (CP) as the problem to be solved is described declaratively by its set of constraints.

From constraint satisfaction to constraint optimization

When the problem has, in addition to the constraints to satisfy, one or more functions to optimize, it is referred to as a Constraint Optimization Problem (COP). Such criteria may arise from economic considerations (minimizing solution cost), organizational concerns (maximizing workload balance), or technical requirements (maximizing constraint satisfaction when not all can be satisfied - then called soft constraints). While academic scientific literature often focuses on constraint satisfaction problems, almost all industrial problems tackled by Cosling are multi-objective optimization problems.

A declarative approach

CP is a declarative programming paradigm: instead of giving a procedure to follow to obtain a solution, we simply specify the properties that characterize the desired solution. This clear separation between functional and technical aspects goes far beyond computer programming; it is a different way of thinking that greatly facilitates exchanges with business stakeholders in industrial projects. Learn more.

Solving the model

Solver mechanisms

Once the CP model has been established, it can be solved using a generic CP solver, such as Choco Solver. Constraint filtering algorithms will remove inconsistent values from the domains using logic and advanced algorithms, while search heuristics will intelligently explore the residual search space through a set of refutable hypotheses. The solving process of a constraint-programming solver thus relies on the alternation of these two fundamental concepts, filtering and exploration, until finding a feasible solution or proving that none exist.

Reducing computation time

Industrial problems are often both very complex and large in size, so computation time can quickly become a significant issue. To increase solver performance, it is often wise to enrich the model with advanced components, such as global constraints, search heuristics incorporating domain expertise, or local search. This activity requires expertise in Constraint Programming and a good knowledge of the solver. Rely on our experts to effectively solve your complex problems!

Choco Solver Tutorials