1

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

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

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

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

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

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

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

4

1 回答 1

5

为了证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时会非常固执己见,通常会关注两件事:

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

然而,MiniZinc 应被视为该过程中的较早步骤。它允许用户编写问题的高级模型,该模型被编译成求解器可以理解的规范(在 MILP 求解器的情况下将是一组线性方程)。因此,在 OR 世界中,与像JuMPPyOpt这样的库相比,它比像 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 是一个很好的工具,可以创建一个人类可读的问题模型,该模型可以转换为顶级求解器的有效规范。

于 2020-04-28T23:56:57.440 回答