README - var-elim-idxs

This repository contains the source code of var-elim-idxs, an implementation of a new approach to eliminate auxiliary variables in flattened constraint-based models through the automated and online generation of new propagators. For more information, feel free to contact Jean-Noël Monette. This implementation of var-elim-idxs is based on Gecode and MiniZinc. Internally, it uses the indexical compiler, as well as the FlatZinc parser of the OscaR project.

Reproducing experiments.

The directory experiments/cp2015 contains (almost) all things necessary for easily reproducing experiments.

Get Started

To get started, follow these instructions:

  • Clone this repository.
  • Install Virtualbox and vagrant.
  • In the experiments/cp2015/vagrant directory, type vagrant up. This will install a virtual machine with everything that is needed. Note that download and installation can take some time.
  • Add the MiniZinc models that you want to solve in the experiments/cp2015/data directory, in two levels of subdirectories. For instance, one can clone the MiniZinc-benchmark repository or download the instances from any or all of the MiniZinc Challenges. As an example, the instances from the MiniZinc Challenge 2014 are already downloaded.
  • In the experiments/cp2015/vagrant directory, type vagrant ssh -c /test/ to run the experiments. Note that the current time limit of 10 minutes per instance yields potentially long runtimes, depending on the instances that have been added to the data directory.
  • The results of the experiments are written as they are produced to a file resultDATE_TIMELIMIT.txt in experiments/cp2015/test, where DATE is the date when the experiment starts and TIMELIMIT is the time limit per instance.

Some additional information:

  • The virtual machine runs Ubuntu 14.04 LTS 32-bit.
  • The experiments/cp2015/test and experiments/cp2015/data directories are mounted inside the virtual machine as /test and /data, respectively.
  • All the scripts are located in experiments/cp2015/test. For instance, to modify the time limit, one needs to change experiments/cp2015/test/
  • The virtual machine can be stopped with vagrant halt or destroyed with vagrant destroy. In the first case, a subsequent vagrant up will simply boot the still existing virtual machine. In the second case, vagrant up needs to reinstall the virtual machine.


The directory experiments/cp2015 contains the following files:

  • The particular jar files of var-elim-idxs, the indexical compiler, and the OscaR parser that have been used in our experiments.
  • All the scripts to run the experiments.
  • A c++ source file and its header used to extend slightly the API of the Gecode-FlatZinc interpreter.


The source code and the bash scripts inside this repository are copyright Jean-Noël Monette and released under the modified 3-clauses BSD license (see the LICENSE file). You are most welcome to reuse any part of this code (according to the terms of the license) and I would be happy to hear from you if you do. The jar of the OscaR parser is distributed under the terms of the LGPL version 3, and the jar of the indexical compiler under the terms of the modified 3-clauses BSD license.


For any help or feedback, please contact Jean-Noël Monette. I will be happy to hear from you.