Frequently Asked Questions (FAQ)

  1. What is all this?
  2. What is Essence'?
  3. What is Minion?
  4. Why should I use TAILOR?
  5. How can I run TAILOR?
  6. How can I compile TAILOR?
  7. I found a bug...again! Where can I report it?
  8. Where can I find the grammar of Essence'?
  9. How do I model problems with Essence'?
  10. Where can I find Essence' Examples?
  11. How does TAILOR work?
  12. I have a question that has not been answered here. What can I do?


1. What is all this?

Essence' is a solver-independent constraint modelling language and MINION is a fast constraint solver. MINION's input language is very simple and restricted and therefore problem modelling is a challenging task. This translator creates (mostly very effective) MINION input instance from an Essence' problem model. Please note that TAILOR and this manual are still under developement.

2. What is Essence'?

Essence' is a solver-independent Constraint modelling language. It allows to express a lot of Constraint problems rather easily and on a rather abstract level. It is solver-independent because it is no input language for a specific Constraint solver, but is on a level that most Constraint Solvers support. Furthermore, Essence' is a subset of the more abstract problem specification language Essence. Here you can find out more about Essence and Essence' and its related research. If you want to see some examples of Essence', click here.

3. What is Minion?

Minion is a very fast Constraint solver which is available for free under the GNU GPL licence over sourceforge at http://sourceforge.net/projects/minion/. Its input language is very simple and therefore modelling efficiently is rather difficult (and not very pleasant). Here you can find out more about Minion.

4. Why should I use TAILOR?

TAILOR allows you to formulate your Constraint problem in Essence' and can then
  1. translate the problem instance into an effective Minion input file (by applying several model-enhancing reformulations) and gives you an overview of the translation steps
  2. run the generated Minion instance in Minion (provided you have a version of Minion installed)
  3. return the results of your problem instance (if there are any) together with some statistical data in Essence' format.
Hence you have a pleasant environment for modelling, are sure to get an efficient Minion instance without having to interfere with Minion at all. More experienced Constraint modellers can also adapt features for the solving process such as branching strategies or variable orderings.

5. How can I compile TAILOR?

Compiling TAILOR is not necessary since it comes with an executable .jar file but you are still welcome to modify the code. TAILOR is written in Java, so you will need a current version (>= 1.5.0) of Java for compilation. Run the script compile.sh on the root directory. If you want to rebuild the Essence' parser, run build.sh instead of compile.sh (please note, that you will need the Lexer Generator jflex and the parser generator java-cup installed in order to do that).

6. How can I run TAILOR?

TAILOR is packed in an executable .jar file, tailor.jar, so you will need Java's jar that comes with Sun's JDK which is available here. To execute tailor.jar you can either double-click the jar-file (possible on most platforms) or change to the root directory of TAILOR and execute tailor.jar with:

java -jar tailor.jar

which will start the graphical user interface of TAILOR. If you want to use the command-line version, then type

java -jar tailor.jar problemFile.eprime

to translate a problem file (without parameter values) to Minion input. The resulting Minion input file will be stored in the same directory as the problem file and is named after the problem file with an additional .minion extension.
If you have an additional parameter file for the problem class, type

java -jar tailor.jar problemFile.eprime parameterFile.param

which will generate a Minion input file (stored in the same directory as the parameter file) that is named after the parameter file with an additional .minion extension. For more information type

java -jar tailor.jar -help

7. I found a bug...again! Where should I report it?

Thanks for finding that bug! Please report it to Andrea.

8. Where can I find Essence' Examples?

There are several Essence' examples in the examples/ directory and overview with example descriptions can be found here.

9. Where can I find the grammar of Essence'?

You can find the grammar of Essence' here.

10. How do I model problems with Essence'?

You can find a little introduction into modelling with Essence' here.

12. How does TAILOR work?

The translation consists of the following steps:
  1. Parse input
  2. Map the syntax tree to an advanced representation
  3. Insert parameter values and constant values
  4. Normalise model (ordering, evaluation and restructuring of expressions)
  5. Flatten model
  6. Tailor flat model to solver constraints
If you want to learn more about the structure of the Translator, then please consult the API of the translator.

13. I have a question that has not been answered here. What can I do?

If you have any questions or comments concerning the Translator then please feel free to contact Andrea Rendl.