为了证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时会非常固执己见,通常会关注两件事:
- 哪组线性方程可以编码您的问题?
- 使用什么解决过程来得出解决方案?
然而,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 是一个很好的工具,可以创建一个人类可读的问题模型,该模型可以转换为顶级求解器的有效规范。