Home

constraintsolving

Constraint solving is a field in computer science focused on finding assignments to variables that satisfy a set of constraints. A constraint-satisfaction problem (CSP) consists of variables, each with a domain of possible values, and constraints that specify allowable combinations of values. A solution assigns to every variable a value from its domain such that all constraints hold. CSPs model a wide range of problems, including scheduling, timetabling, resource allocation, and configuration.

Solving techniques combine constraint propagation and search. Constraint propagation removes values from variable domains that cannot

Problems can be solved for existence of a solution, for a complete set of solutions, or for

Languages and tools in constraint solving include MiniZinc and Essence for modeling, and solvers such as Choco,

participate
in
any
solution,
using
notions
of
local
consistency
such
as
arc
consistency
(AC-3)
and
stronger
forms.
During
search,
assignments
are
made
and
propagated;
when
conflicts
arise,
backtracking
occurs.
MAC
(maintaining
arc
consistency)
interleaves
propagation
with
search.
Global
constraints
capture
common
patterns
(for
example
allDifferent,
which
enforces
pairwise
distinct
values)
and
are
often
implemented
with
specialized
propagators
for
efficiency.
Many
CSPs
are
also
encoded
into
SAT
or
SMT
problems
or
solved
by
hybrid
methods
that
mix
different
solving
paradigms.
optimization
over
solutions
(e.g.,
minimize
cost
or
maximize
quality)
under
the
constraints.
The
general
problem
is
NP-complete,
but
modern
constraint
solvers
employ
powerful
heuristics
and
problem-specific
propagators
to
solve
large,
real-world
instances
efficiently.
Gecode,
IBM
CP
Optimizer,
and
Google
OR-Tools;
some
systems
integrate
CSP
techniques
with
SAT/SMT
solvers.
Constraint
solving
thus
provides
a
flexible,
declarative
framework
for
a
broad
class
of
combinatorial
problems.