afd*_*dez 1 linear-programming constraint-satisfaction minizinc mixed-integer-programming
前段时间我正在写一篇与 OR 相关的文章以供发表。在这篇文章中,展示了使用 MiniZinc 解决某个优化问题的 MILP 模型。我在 10 个实例中以最佳方式解析了 10 个实例。
顾问对其进行审查并提到以下 2 条评论:
我一直在使用 MiniZinc,它对我很有效。我如何展示 MiniZinc 的多功能性?是否有参考书目或证明其合理性的方法?
出于什么原因,您不建议在摘要中提及它?
使用 MiniZinc 的有效理由是什么?
为了证明使用 MiniZinc 的合理性,最重要的是阐明 MiniZinc 的功能。运筹学社区有时非常固定他们的方式,通常会考虑两件事:
然而,MiniZinc 应该被视为该过程的早期步骤。它允许用户编写问题的高级模型,该模型被编译成求解器可以理解的规范(在 MILP 求解器的情况下,它将是一组线性方程)。因此,在 OR 世界中,与JuMP和PyOpt等库相比,它比 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 是一个很好的工具,可以创建一个人类可读的问题模型,该模型被转换为顶级求解器的有效规范。