There is a description at http://en.wikipedia.org/wiki/Natural_Constraint_Language. Some CSP problems are easily solved by the language, eg. Soduku, Queen, TSP, VRP... I want to learn and use the language, but the references about it on the net are very poor. Can anybody help me? who has any references? pls? |

Drools Planner already supports a natural constraint language, through DSL (domain specific language) support in Drools Expert. We even have a webapp (Guvnor) to edit those constraints by end-users and also an Eclipse plugin for the developers among us. Basically, we allow constraint to be shown and written (*) in a human language. So we can leave up to the domain expert (head nurse, ...) to define the score function. (*) Not 100% free form, but by selecting sentence parts. Once I have some time, I 'll create a good example and link it here.
answered
Geoffrey De ... ♦ |

NCL (Natural Constraint Language) is a description language for solving constraint satisfaction problems. If you are interested, there exists an industrialized software POEM for the language. A trial version of POEM can be downloaded at: http://www.enginest.com/en/product2.asp?NID=90
answered
Josline |

This is to present the NCL Natural Constraint Language. A paper on an old NCL prototype was published in Journal of Logic Programming (2000). Recently a book "The NCL Natural Constraint Language" was published by Springer (2012)(www.springer.com/computer/swe/book/978-3-642-23844-4). NCL is a description language in conventional mathematical logic for modeling and solving constraint satisfaction problems. It models problems naturally in a simplified form of first-order logic with quantifiers, Boolean logic, numeric constraints, set reasoning, logical functions, and date/time operations; it solves problems by mixed set programming over the mixed domain of real numbers, integers, Booleans, dates/times, references, and in particular sets. In addition to intelligent parsing and mixed set programming, NCL uses search rules to specify a solution strategy in a straightforward way; this facilitates the use of heuristics and business rules. Another feature of NCL is its logical function in addition to sub-model and included file. Programmer can define user functions and use them like conventional functions such as cosine. Logical function not only enables recursive definition, but can also encapsulate controls such as input, output, query and even a whole solver in a logical manner, which is especially useful in local optimization and iterative optimization. As a practical programming language, NCL still contains: a message system, debugging facilities (expectation constraints, programmed break, custom messages), embedded SQL, etc. Furthermore, it allows low-level access to a variable's partial information and jump at input/output state. By "simplified first-order logic", NCL differs from other declarative languages: It is different from Prolog (predicate logic), CLP (Prolog + constraints), CHIP (Prolog + constraints, in particular global constraints), AMPL (modeling language, MP), OPL (algebraic modeling, MP+CP), and Oz (functional constraint programming), just to name a few. Compared to (algebraic) modeling languages, NCL adopts quantifier logic instead of loop, mixed domain instead of mainly numeric domain, and logical function instead of procedure. The grammar of NCL conforms to mathematical logic conventions (coding formulas in TeX); typing in NCL is implicit though NCL also supports explicit typing; mixed set programming highlights the expressive and algorithmic power of set theoretic reasoning; types and operations of date/time make planning and scheduling more natural. Compared to constraint programming systems, another difference is worth being noted: CP uses global constraints in an explicit way. NCL also uses efficient algorithms like those in global constraints, but in an implicit way. NCL solves problems depending neither on global constraints nor on combining different solvers, but mainly on mixed set programming which cooperates all algorithms (either global or local) in one solver.
answered
Sophie |