如何在研究中展示 MiniZinc 的效率
How to present the efficiency of MiniZinc in a research
前段时间正在写一篇OR相关的文章发表。在文章中,使用 MiniZinc 展示了针对特定优化问题的 MILP 模型。我在 10 个实例中最优地解决了 10 个实例。
一位顾问评论了它并提到了以下 2 条评论:
- 您如何比较 MiniZinc 与其他最新一代 MILP 求解器(如 CPLEX 或 Gurobi)的性能?
我一直使用 MiniZinc,它对我来说非常有效。我如何展示 MiniZinc 的多功能性?是否有参考书目或证明其合理性的方法?
- 由于 MiniZinc 不是最著名的 MILP 求解器之一,您应该避免在摘要中提及它的名称。
为什么不建议在摘要中提及它?
使用 MiniZinc 的有效理由是什么?
要证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时非常固定,通常会关注两件事:
- 哪一组线性方程可以解决您的问题?
- 通过什么求解过程得出一个解?
然而,MiniZinc 应该被视为该过程中的较早步骤。它允许用户编写问题的高级模型,该模型被编译成求解器可以理解的规范(在 MILP 求解器的情况下,它将是一组线性方程)。因此,在 OR 世界中,与 JuMP and PyOpt 等库相比,它比 Gurobi 或 CPlex 等求解器更好。然而,与这些库不同,MiniZinc 语言是在更高层次上编写的,并且打算与求解器技术无关,这意味着,除了 MILP 求解器,您还可以尝试 CP、LCG、SMT 和 SAT 求解器。
关于为什么使用 MiniZinc 而不是 JuMP 或 PyOpt 的一个很好的论据是 MiniZinc 通常可以在基于高级模型结构的编码中应用优化。已经发表了多篇关于自动线性化问题的论文,这些问题在求解器上提供 great/novel 性能。论文 "Improved Linearization of Constraint Programming Models" 甚至表明 MiniZinc 有时可以创建比该领域的专家更高效的线性模型。
最后,应该注意的是,MiniZinc 实际上使用了您的顾问提到的求解器。 Gurobi 和 CPlex(可能)是解决线性化问题的最佳 MiniZinc 求解器。也就是说,如果您正在使用 MiniZinc 的一些其他求解器,那么您可能仍在使用最先进的求解器:Gecode 是目前最快的约束编程求解器之一; Chuffed 在 MiniZinc 挑战中多次击败所有竞争对手,是一种新颖的惰性子句生成求解器;并且有更多的求解器采用不同的求解器技术,可以与顶级的 MiniZinc 一起使用。
所以直截了当地回答问题:
How do you compare MiniZinc with other latest generation MILP solvers like CPLEX or Gurobi in terms of performance?
我们不会将 MiniZinc 与 Gurobi 或 CPlex 进行比较,因为 MiniZinc 不是求解器。然而,MiniZinc 将为新型求解器创建模型,例如 Gurobi 和 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?)
如果MiniZinc对您的应用做出了重大贡献,那么我认为提及它是公平的;但是,最好结合使用的求解器来提及它。如果在您的论文中描述 MiniZinc 的过程或它为您所做的工作,它会有所帮助。
What can be an efficient justification for the use of MiniZinc?
MiniZinc 是一个很好的工具,可以创建人类可读的问题模型,并将其转化为顶级求解器的有效规范。
前段时间正在写一篇OR相关的文章发表。在文章中,使用 MiniZinc 展示了针对特定优化问题的 MILP 模型。我在 10 个实例中最优地解决了 10 个实例。
一位顾问评论了它并提到了以下 2 条评论:
- 您如何比较 MiniZinc 与其他最新一代 MILP 求解器(如 CPLEX 或 Gurobi)的性能?
我一直使用 MiniZinc,它对我来说非常有效。我如何展示 MiniZinc 的多功能性?是否有参考书目或证明其合理性的方法?
- 由于 MiniZinc 不是最著名的 MILP 求解器之一,您应该避免在摘要中提及它的名称。
为什么不建议在摘要中提及它?
使用 MiniZinc 的有效理由是什么?
要证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时非常固定,通常会关注两件事:
- 哪一组线性方程可以解决您的问题?
- 通过什么求解过程得出一个解?
然而,MiniZinc 应该被视为该过程中的较早步骤。它允许用户编写问题的高级模型,该模型被编译成求解器可以理解的规范(在 MILP 求解器的情况下,它将是一组线性方程)。因此,在 OR 世界中,与 JuMP and PyOpt 等库相比,它比 Gurobi 或 CPlex 等求解器更好。然而,与这些库不同,MiniZinc 语言是在更高层次上编写的,并且打算与求解器技术无关,这意味着,除了 MILP 求解器,您还可以尝试 CP、LCG、SMT 和 SAT 求解器。
关于为什么使用 MiniZinc 而不是 JuMP 或 PyOpt 的一个很好的论据是 MiniZinc 通常可以在基于高级模型结构的编码中应用优化。已经发表了多篇关于自动线性化问题的论文,这些问题在求解器上提供 great/novel 性能。论文 "Improved Linearization of Constraint Programming Models" 甚至表明 MiniZinc 有时可以创建比该领域的专家更高效的线性模型。
最后,应该注意的是,MiniZinc 实际上使用了您的顾问提到的求解器。 Gurobi 和 CPlex(可能)是解决线性化问题的最佳 MiniZinc 求解器。也就是说,如果您正在使用 MiniZinc 的一些其他求解器,那么您可能仍在使用最先进的求解器:Gecode 是目前最快的约束编程求解器之一; Chuffed 在 MiniZinc 挑战中多次击败所有竞争对手,是一种新颖的惰性子句生成求解器;并且有更多的求解器采用不同的求解器技术,可以与顶级的 MiniZinc 一起使用。
所以直截了当地回答问题:
How do you compare MiniZinc with other latest generation MILP solvers like CPLEX or Gurobi in terms of performance?
我们不会将 MiniZinc 与 Gurobi 或 CPlex 进行比较,因为 MiniZinc 不是求解器。然而,MiniZinc 将为新型求解器创建模型,例如 Gurobi 和 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?)
如果MiniZinc对您的应用做出了重大贡献,那么我认为提及它是公平的;但是,最好结合使用的求解器来提及它。如果在您的论文中描述 MiniZinc 的过程或它为您所做的工作,它会有所帮助。
What can be an efficient justification for the use of MiniZinc?
MiniZinc 是一个很好的工具,可以创建人类可读的问题模型,并将其转化为顶级求解器的有效规范。