Design, Implementation, and Evaluation of the Constraint Language cc(FD)

This paper describes the design, implementation, and applications of the constraint logic language cc(FD). cc(FD) is a declarative nondeterministic constraint logic language over finite domains based on the cc framework [33], an extension of the Constraint Logic Programming (CLP) scheme [21]. Its constraint solver includes (nonlinear) arithmetic constraints over natural numbers which are approximated using domain and interval consistency. The main novelty of cc (FD) is the inclusion of a number of general-purpose combinators, in particular cardinality, constructive disjunction, and blocking implication, in conjunction with new constraint operations such as constraint entailment and generalization. These combinators significantly improve the operational expressiveness, extensibility, and flexibility of CLP languages and allow issues such as the definition of nonprimitive constraints and disjunctions to be tackled at the language level. The implementation of cc (FD) (about 40,000 lines of C) includes a WAM-based engine [44], optimal are-consistency algorithms based on AC-5 [40], and incremental implementation of the combinators. Results on numerous problems, including scheduling, resource allocation, sequencing, packing, and hamiltonian paths are reported and indicate that cc(FD) comes close to procedural languages on a number of combinatorial problems. In addition, a small cc(FD) program was able to find the optimal solution and prove optimality to a famous 10/10 disjunctive scheduling problem [29], which was left open for more than 20 years and finally solved in 1986. (C) 1998 Elsevier Science Inc. All rights reserved.

[1]  Thom W. Frühwirth,et al.  Constraint Handling Rules , 2009, Constraint Programming.

[2]  Prakash Panangaden,et al.  The semantic foundations of concurrent constraint programming , 1991, POPL '91.

[3]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[4]  Chris Moss,et al.  An introduction to Prolog , 1990 .

[5]  Jacques Carlier,et al.  Ordonnancements à contraintes disjonctives , 1978 .

[6]  Pascal Van Hentenryck,et al.  A Generic Arc-Consistency Algorithm and its Specializations , 1992, Artif. Intell..

[7]  Mark S. Boddy,et al.  An Analysis of Time-Dependent Planning , 1988, AAAI.

[8]  E. Kay,et al.  Graph Theory. An Algorithmic Approach , 1975 .

[9]  Harvey M. Salkin Letter to the Editor - On the Merit of the Generalized Origin and Restarts in Implicit Enumeration , 1970, Oper. Res..

[10]  Jianyang Zhou,et al.  A Constraint Program for Solving the Job-Shop Problem , 1996, CP.

[11]  Pascal Van Hentenryck,et al.  Numerica: A Modeling Language for Global Optimization , 1997, IJCAI.

[12]  Bruce Parrello,et al.  Car wars: (almost) birth of an expert system , 1988 .

[13]  Pascal Van Hentenryck,et al.  The Constraint Logic Programming Language CHIP , 1988, FGCS.

[14]  Martin Bartusch,et al.  Optimierung von Netzplänen mit Anordnungsbeziehungen bei knappen Betriebsmitteln , 1983 .

[15]  M. C. Costa Une étude pratique de découpes de panneaux de bois , 1984 .

[16]  Mats Carlsson,et al.  Freeze, Indexing, and Other Implementation Issues in the WAM , 1987, ICLP.

[17]  Wolfram Büttner,et al.  Embedding Boolean Expressions into Logic Programming , 1987, J. Symb. Comput..

[18]  G. Ding Discrete optimization , 1977 .

[19]  Philippe Codognet,et al.  A Minimal Extension of the WAM for clp(FD) , 1993, ICLP.

[20]  Mark Wallace,et al.  Generalized Constraint Propagation over the CLP Scheme , 1993, J. Log. Program..

[21]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[22]  Pascal Van Hentenryck,et al.  The Cardinality Operator: A New Logical Connective for Constraint Logic Programming , 1990, WCLP.

[23]  William J. Cook,et al.  A Computational Study of the Job-Shop Scheduling Problem , 1991, INFORMS Journal on Computing.

[24]  Marek Kubale,et al.  A generalized implicit enumeration algorithm for graph coloring , 1985, CACM.

[25]  Alan K. Mackworth Consistency in Networks of Relations , 1977, Artif. Intell..

[26]  Pascal Van Hentenryck,et al.  Solving Large Combinatorial Problems in Logic Programming , 1990, J. Log. Program..

[27]  Thomas C. Henderson,et al.  Arc and Path Consistency Revisited , 1986, Artif. Intell..

[28]  Pascal Van Hentenryck Constraint satisfaction in logic programming , 1989, Logic programming.

[29]  Pascal Van Hentenryck,et al.  Solving the Car-Sequencing Problem in Constraint Logic Programming , 1988, ECAI.

[30]  Alain Colmerauer,et al.  An introduction to Prolog III , 1989, CACM.

[31]  Pascal Van Hentenryck,et al.  Newton - Constraint Programming over Nonlinear Constraints , 1998, Sci. Comput. Program..

[32]  Pascal Van Hentenryck Scheduling and Packing in the Constraint Language cc(FD) , 1992 .

[33]  Pascal Van Hentenryck,et al.  Simulation of Hybrid Circuits in Constraint Logic Programming , 1989, IJCAI.

[34]  Joxan Jaffar,et al.  Methodology and Implementation of a CLP System , 1987, ICLP.

[35]  Yves Colombani Constraint Programming: an Efficient and Practical Approach to Solving the Job-Shop Problem , 1996, CP.

[36]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[37]  Michael J. Maher Logic Semantics for a Class of Committed-Choice Programs , 1987, ICLP.

[38]  ButtnerWolfram,et al.  Embedding boolean expressions into logic programming , 1987 .

[39]  Arabellastrasse,et al.  Constraint Handling Rules ? , 1995 .

[40]  Nicolas Beldiceanu,et al.  Constraint Logic Programming , 1997 .