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

afd*_*dez 1 linear-programming constraint-satisfaction minizinc mixed-integer-programming

前段时间我正在写一篇与 OR 相关的文章以供发表。在这篇文章中,展示了使用 MiniZinc 解决某个优化问题的 MILP 模型。我在 10 个实例中以最佳方式解析了 10 个实例。

顾问对其进行审查并提到以下 2 条评论:

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

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

  1. 由于 MiniZinc 不是最著名的 MILP 求解器之一,因此您应该避免在摘要中提及它的名称。

出于什么原因,您不建议在摘要中提及它?

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

Dek*_*er1 5

为了证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时非常固定他们的方式,通常会考虑两件事:

  1. 哪组线性方程可以编码您的问题?
  2. 使用什么求解过程来得出解决方案?

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

关于为什么使用 MiniZinc 而不是 JuMP 或 PyOpt 的一个很好的论据是 MiniZinc 通常可以基于高级模型结构在编码中应用优化。已经发表了多篇关于自动线性化的问题的论文,这些问题在求解器上提供了出色/新颖的性能。论文“Improved Linearization of Constraint Programming Models”甚至表明,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 是一个很好的工具,可以创建一个人类可读的问题模型,该模型被转换为顶级求解器的有效规范。