2005-11-29
Composing constraint solvers
Publication
Publication
Composing constraint solvers based on tree search and constraint propagation
through generic iteration leads to efficient and flexible constraint solvers. This was
demonstrated using OpenSolver, an abstract branch-and-propagate tree search
engine that supports a wide range of relevant solver configurations. We gave an
account of the design and implementation, and of many experiments that were
performed to evaluate the approach.
The efficiency of OpenSolver-based constraint solvers compares well to that
of existing solvers, some of which are successful commercial products. Yet, the
following combination of features gives OpenSolver some unique advantages over
each of the other systems that we considered.
• OpenSolver is a branch-and-propagate constraint solving engine, and makes
configurable those aspects that are hardwired in many other systems, such
as the constraint propagation algorithm and implementation of the data
types. Modeling languages can be implemented on top of it, by means of a
compilation step.
• OpenSolver promotes the composition of complex strategies from atomic
solver “building blocks,” implemented as plug-ins. This prevents duplicate
solver code, and allows that techniques carry over to other data types and
application domains.
• While it is a white-box framework from the perspective of writing new plugins
for it, OpenSolver aims at black-box composition of solvers. This led
to an inherently linguistic approach where solvers are composed through
scripts in a simple configuration language.
• OpenSolver is designed as a stand-alone application. Compared to libraries
for constraint solving, this makes it independent of a particular programming
language. Composing constraint solvers around OpenSolver is primarily
a matter of exogenous coordination and component-based software
engineering. This is opposite to the approach taken by logic programming
systems, which provide a full development environment.
• Because of the coordination layer mechanism, OpenSolver can be adapted
to many different environments, and the solving process can be controlled
externally. In particular, it is suited for distributed constraint solving.
• In combination with the configuration language, the coordination layer
mechanism opens up new possibilities for implementing parallel search, insearch
transformation of CSPs and solver configurations, and it allows for
checkpoint mechanisms.
Thanks to the flexibility of the system, we could further achieve the following
results related to the specific research questions addressed in some of the
individual chapters.
• We demonstrated how a number of techniques that are normally hard-wired
in solvers can be realized through composition.
• We performed a comparative study of several approaches to implementing
arithmetic constraints on variables with integer interval domains. The best
performance was observed for decomposition and hierarchical scheduling of
the reduction operators. For this approach we characterized in part the
effect of constraint propagation.
• We demonstrated the technique of constraining special purpose domain
types.
• We demonstrated that several pruning techniques from various application
domains can be expressed and implemented as applications of a generic
operator for nested search.
• We evaluated a novel time-out mechanism for load balancing in parallel
search, and demonstrated that it can lead to efficient and scalable parallel
constraint solver
Additional Metadata | |
---|---|
, | |
K.R. Apt (Krzysztof) , F. Arbab (Farhad) | |
Universiteit van Amsterdam | |
Institute for Programming research and Algorithmics Dissertation Series ; 2005-18 | |
Organisation | Networks and Optimization |
Zoeteweij, P. (2005, November 29). Composing constraint solvers. IPA dissertation series. |