如何在研究中展示MiniZinc的效率



不久前,我正在写一篇与OR相关的文章以供发表。本文用MiniZinc给出了一个求解某优化问题的MILP模型。我在10个实例中以最佳方式解决了10个实例。

一位顾问审查了它,并提到了以下2条评论:

  1. 在性能方面,您如何将MiniZinc与其他最新一代MILP解算器(如CPLEX或Gurobi(进行比较

我一直在使用MiniZinc,它对我来说非常有效。我如何证明MiniZinc的多功能性?是否有参考书目或证明其合理性的方法?

  1. 由于MiniZinc不是最知名的MILP解算器之一,因此应避免在摘要中提及其名称

你为什么不建议在摘要中提及它?

使用MiniZinc的有效理由是什么?

要证明使用MiniZinc是合理的,最重要的是澄清MiniZinc的功能。运筹学界有时会非常固定地看待两件事:

  1. 哪组线性方程对您的问题进行编码
  2. 使用什么解决过程来得出解决方案

MiniZinc应被视为该过程的早期步骤。它允许用户编写问题的高级模型,该模型被编译为求解器能够理解的规范(在MILP求解器的情况下,该规范将是一组线性方程(。因此,在OR世界中,与JuMP和PyOpt等库相比,它比Gurobi或CPlex等解算器更好。然而,与这些库不同的是,MiniZinc语言是在更高的级别上编写的,并且打算与求解器技术无关,这意味着,除了MILP求解器之外,您还可以尝试CP、LCG、SMT和SAT求解器。

关于为什么使用MiniZinc而不是JuMP或PyOpt,一个很好的论点是MiniZinc通常可以在基于高级模型结构的编码中应用优化。已经发表了多篇关于自动线性化问题的论文,这些问题在求解器上提供了出色/新颖的性能。论文"约束规划模型的改进线性化"甚至表明,MiniZinc有时可以创建比该领域专家更有效的线性模型。

最后,需要注意的是,MiniZinc实际上使用了您的顾问提到的求解器。对于线性化良好的问题,Gurobi和CPlex(可能(是最好的MiniZinc解决方案。话虽如此,如果你正在使用MiniZinc的一些其他求解器,那么你可能仍然在使用最先进的求解器:Gecode是目前最快的约束编程求解器之一;Chuffed在MiniZinc挑战赛中多次击败所有竞争对手,是一个新颖的懒惰子句生成解决方案;还有更多来自不同求解器技术的求解器可以与MiniZinc一起使用,这是一流的。

因此,直截了当地回答这些问题:

您如何将MiniZinc与其他最新一代MILP解算器(如CPLEX或Gurobi(在性能方面进行比较?

我们不将MiniZinc与Gurobi或CPlex进行比较,因为MiniZinc不是求解器。然而,MiniZinc将为Gurobi和CPlex等新型求解器创建模型。

由于MiniZinc不是最著名的MILP求解器之一,因此您应避免在摘要中提及其名称。(你为什么不建议在摘要中提及它?(

如果MiniZinc对您的申请做出了重大贡献,那么我认为提及它是公平的;但是,最好将其与所使用的解算器结合使用。如果你在论文中描述MiniZinc的工艺或它为你所做的工作,这会有所帮助。

使用MiniZinc的有效理由是什么?

MiniZinc是一个很好的工具,可以创建一个人类可读的问题模型,该模型可以转换为顶级求解器的有效规范。

最新更新