top | item 31255312

(no title)

ceceron | 3 years ago

I am a big fan of the Constraint Programming paradigm. Still, there are several distinguishable approaches:

1) Constraint Logic Programming — quite cool as long as you have experience in Prolog, but choice of underlying solvers is limited: Prolog runtime has built-in solver.

2) Answer Set Programming - syntactically similar to Prolog, but later compiled (grounded) to elementary logic solvable with SAT techniques — very efficient.

3) Constraint Programming via Solver API — there are many solvers: Choco, Oscar, OR-tools that are usable programmatically. This approach is advertised in the article.

4) common API - there are libraries, e.g. Numberjack, that generalize API over several solvers

5) Constraint Programming via Modelling Language: there exist languages designed just to define Constraint Programming models. MiniZinc is at the moment the most mature and has the most extensive support from industry.

6) related techniques: SAT, SMT

Normally I start with 5) as it allows me to quickly prototype a solution for the problem. Only when it's not enough, I switch to 3).

discuss

order

No comments yet.