Search combinators

The ability to model search in a constraint solver can be an essential asset for solving combinatorial problems. However, existing infrastructure for defining search heuristics is often inadequate. Either modeling capabilities are extremely limited or users are faced with a general-purpose programming language whose features are not tailored towards writing search heuristics. As a result, major improvements in performance may remain unexplored. This article introduces search combinators, a lightweight and solver-independent method that bridges the gap between a conceptually simple modeling language for search (high-level, functional and naturally compositional) and an efficient implementation (low-level, imperative and highly non-modular). By allowing the user to define application-tailored search strategies from a small set of primitives, search combinators effectively provide a rich domain-specific language (DSL) for modeling search to the user. Remarkably, this DSL comes at a low implementation cost to the developer of a constraint solver. The article discusses two modular implementation approaches and shows, by empirical evaluation, that search combinators can be implemented without overhead compared to a native, direct implementation in a constraint solver.

[1]  Peter J. Stuckey,et al.  CP and IP approaches to cancer radiotherapy delivery optimization , 2011, Constraints.

[2]  F. Pfenning Theory and Practice of Logic Programming , 2014 .

[3]  Pascal Van Hentenryck,et al.  Nondeterministic Control for Hybrid Search , 2006, Constraints.

[4]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[5]  Peter J. Stuckey,et al.  Search Combinators , 2011, CP.

[6]  Lakhdar Sais,et al.  Boosting Systematic Search by Weighting Constraints , 2004, ECAI.

[7]  Gert Smolka,et al.  The Oz Programming Model , 1996, Computer Science Today.

[8]  Kish Shen,et al.  Under consideration for publication in Theory and Practice of Logic Programming , 2003 .

[9]  Serdar Kadioglu,et al.  Dichotomic Search Protocols for Constrained Optimization , 2008, CP.

[10]  Eric Monfroy,et al.  Autonomous Search , 2012, Springer Berlin Heidelberg.

[11]  Martin Odersky,et al.  A Core Calculus for Scala Type Checking , 2006, MFCS.

[12]  Philippe Refalo,et al.  Impact-Based Search Strategies for Constraint Programming , 2004, CP.

[13]  Jean-francois Puget,et al.  A C++ implementation of CLP , 1997 .

[14]  Pascal Van Hentenryck,et al.  Search and strategies in OPL , 2000, TOCL.

[15]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

[16]  François Laburthe,et al.  SALSA: A Language for Search Algorithms , 1998, Constraints.

[17]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[18]  Tom Schrijvers,et al.  Under Consideration for Publication in Theory and Practice of Logic Programming Swi-prolog , 2022 .

[19]  Laurent Perron Search Procedures and Parallelism in Constraint Programming , 1999, CP.

[20]  Pascal Van Hentenryck The OPL optimization programming language , 1999 .

[21]  Matthew L. Ginsberg,et al.  Limited Discrepancy Search , 1995, IJCAI.

[22]  Kim Marriott,et al.  Adding Search to Zinc , 2008, CP.

[23]  Peter James Stuckey,et al.  Towards a Lightweight Standard Search Language , 2010 .

[24]  Neng-Fa Zhou,et al.  The language features and architecture of B-Prolog , 2011, Theory and Practice of Logic Programming.

[25]  Christian Schulte,et al.  Programming Constraint Inference Engines , 1997, CP.

[26]  Peter J. Stuckey,et al.  MiniZinc: Towards a Standard CP Modelling Language , 2007, CP.

[27]  Peter J. Stuckey,et al.  Monadic constraint programming , 2009, Journal of Functional Programming.

[28]  Richard E. Korf,et al.  Depth-First Iterative-Deepening: An Optimal Admissible Tree Search , 1985, Artif. Intell..

[29]  Bart Demoen,et al.  Tor: extensible search with hookable disjunction , 2012, PPDP.

[30]  Krzysztof Kuchcinski,et al.  JaCoP - Java Constraint Programming Solver , 2013, CP 2013.

[31]  V. S. Costa,et al.  Theory and Practice of Logic Programming , 2010 .

[32]  Peter J. Stuckey,et al.  The Design of the Zinc Modelling Language , 2008, Constraints.