Search code examples
linear-programmingminizincmixed-integer-programmingconstraint-satisfaction

How to present the efficiency of MiniZinc in a research


Some time ago I am writing an OR related article for publication. In the article a MILP model is show for a certain Optimization problem using MiniZinc. I resolve 10 instances optimally out of 10 instances.

An advisor reviews it and mentions the following 2 comments:

  1. How do you compare MiniZinc with other latest generation MILP solvers like CPLEX or Gurobi in terms of performance?

I have always used MiniZinc and it has worked efficiently for me. How can I demonstrate the versatility that MiniZinc can have? Is there a bibliographical reference or a way to justify it?

  1. Since MiniZinc is not one of the best known MILP solvers, you should avoid mentioning its name in the summary.

For what reason would you not recommend mentioning it in the abstract?

What can be an efficient justification for the use of MiniZinc?


Solution

  • To justify using MiniZinc, it is most important to clarify the functionality of MiniZinc. The Operational Research community is sometimes very set in their ways and generally looks at two things:

    1. Which set of linear equations that encodes your problem?
    2. What solving process is used to arrive at a solution?

    MiniZinc, however, should be seen as an earlier step in the process. It allows the user to write a high level model of the problem which is compiled into a specification which the solver can understand (which in the case of a MILP solver will be a set of linear equations). In the OR world it is thus better compared to libraries, like JuMP and PyOpt, than to solvers like Gurobi or CPlex. However, unlike these libraries, the MiniZinc language is written at a higher level and intends to be solver technology agnostic, meaning, in addition to MILP solvers, you can also try CP, LCG, SMT, and SAT solvers.

    A good argument as to why use MiniZinc over JuMP or PyOpt is that MiniZinc can often apply optimisations in the encoding based on the high-level model structure. Multiple papers have been published on problems that have been automatically linearised that offer great/novel performance on the solvers. The paper "Improved Linearization of Constraint Programming Models" even shows that MiniZinc can sometimes create more efficient linear models than experts in the field.

    Finally, it should be noted that MiniZinc actually uses the solvers to which your advisor referred. Gurobi and CPlex are (probably) the best MiniZinc solvers for problem that linearise well. That being said, if you are using some of MiniZinc's other solvers, then you might still be using a state of the art solver: Gecode is one of the fastest constraint programming solvers out there; Chuffed repeatedly beats all its competition in the MiniZinc challenge and is a novel lazy clause generation solver; and there are many more solvers with from different solver technologies that can be used with MiniZinc that are top of the line.

    So to answer the questions bluntly:

    How do you compare MiniZinc with other latest generation MILP solvers like CPLEX or Gurobi in terms of performance?

    We don't compare MiniZinc with Gurobi or CPlex since MiniZinc isn't a solver. MiniZinc will, however, create models for novel solvers, like Gurobi and CPlex.

    Since MiniZinc is not one of the best known MILP solvers, you should avoid mentioning its name in the summary. (For what reason would you not recommend mentioning it in the abstract?)

    If MiniZinc has significantly contributed to your application, then I think mentioning it is fair; however, it is probably best to mention it in combination with the used solver. It can help if, in your paper, you describe the process of MiniZinc or the work that it does for you.

    What can be an efficient justification for the use of MiniZinc?

    MiniZinc is a great tool to create a human readable model of a problem that is transformed into an efficient specification for a top of the line solver.