« Gecode version 3.1 released | Main | MiniZinc Challenge 2009 »

Report from SweConsNet2009, including my presentation

This Wednesday I attended SweConsNet2009 (SweConsNet is the Network for Sweden-based researchers and practitioners of Constraint programming), co located with SAIS Worksshop 2009 (SAIS, Swedish AI Society, which was held both Wednesday and Thursday).

Since this is a blog about constraint programming I will just focus on the SweConsNet part. But first I want to thank the arrangers of the workshops for two very well organized and interesting days. I'm looking forward to the next year.

SweConsNet2009

It was great fun to actually meet and talk to persons I only have had mail communication with before, e.g. Mikael Zayenz Lagerkvist (KTH, Gecode), Christian Schulte (KTH, Gecode), Justin Pearson (Uppsala), Andreas Launila (Gecode/R), Magnus Ågren (SICS, SICStus Prolog), Krzysztof Kuchcinski (Lund, JaCoP) and others I've only read about. All very nice people and helpful to a newcomber of this field like me. It was - of course - also very interesting to listen to the talks (some where somewhat over my head, though). The workshop was held in an informal environment that I really like.

My talk

As blogged before in My talk at SweConsNet Workshop 2009: "Learning Constraint Programming (MiniZinc, JaCoP, Choco, Gecode/R, Comet, Gecode): Some Lessons Learned", I was one of the talkers. The talk was about my experience and the findings after programmed the same (about) 17 models in the following six systems (a lot more models in some systems though): MiniZinc, JaCoP, Choco, Gecode/R, Comet, Gecode, and was focused on learning these systems. See My Constraint Programming Page for more information about each systems.

The Powerpoint of the talk is here: Learning Constraint Programming: Some lessons learned (PPT).

Some comments:
* The slides for the actual talk is from slide #1 to the "Thank You" slide (#15). The slides after that are from earlier drafts; I kept them in case of time shortage (which was not likely) or for the Q/A part of the talk. The talk was about 20 minutes and 10 minutes Q/A.

* I originally planned to do show a comparison of two small implementations: decompositions of the global constraint all_different_except_0 and one example of how to implement Element for a integer variables matrix in the Word square problem, but these simply took too long time so I skipped them.

* Much of the talk was about comparing different features of the systems (in regard of learning the systems). Slide 14 is a comparison table of the features I talked about.

* Slide 22 "Introduction in Constraint Programming: Books" was in the context of me missing a general introduction book of modelling in constraints programming (and not just about the theory of constraints and search trees). The listed publications are examples of approaches I have liked, for either a specific system (Mozart/Oz and OPL) or in operations research.

"Single missed feature"

During the Q/A-part Christian asked me to name one thing that I considered the biggest hurdle/problem etc for each system, and the following (very subjectively) list where presented. I realize that different systems has very different goal of what is important to pursue, but these where the obstacles I had when learning and using the systems:
  • MiniZinc: That it is "closed", i.e. there is not possible to extend it with one owns search strategies, propagators etc, except in Mercury (which I don't know and can't even compile on my computer).
  • Comet: Shortage of documentation of the language. The constraints are shortly documented but not the language itself. Fortunately I have the OPL book which is of great help, but the object model (very C++ like) etc is not documented. Possible more examples would help this. Update 2009-09-05: Version 2.0 (released 2009-09-02) includes a very good tutorial explaining (with full examples) both Comet and the three different modeling paradigms of Comet: constraint programming, constraint-based local search, and mathematical programming.
  • Choco: One of the biggest problem I have with Choco is its class structure which makes it very hard to find constraints or other functions.
  • JaCoP: Shortage of documentation. (I respect the "minimalistic approach" of not want to implement a lot of convenience constraints etc, and even if it can make the code more verbose I very much respect this decision.) Update: With version 2.4 (released 2009-09-16) there is an good tutorial describing the constraints and search heuristice.
  • Gecode: Make it possible to state Element for matrices of integer variables more easy. I have blogged about this for example in Learning constraint programming - part II: Modeling with the Element constraint. Update 2009-10-13: Version 3.2 (released 2009-10-05) has now support for this.
  • Gecode/R: For Gecode/R I regard the biggest problem that some of the Gecode constraint (e.g. global cardinality) was not implemented.

Full presentation

The early drafts was actually done as a "full sentenced" version and I plan to publish that version as well, but first after some serious reworking. This will cover all (or at least some) of the parts I skipped.