不久前,我正在写一篇或相关的文章以供发表。本文利用MiniZinc给出了一个求解某一优化问题的MILP模型。我从10个实例中最优地解决10个实例。
一位顾问对此进行了回顾,并提到了以下2条评论:
我一直使用MiniZinc,它对我来说很有效。我如何展示MiniZinc所具有的多功能性?是否有参考书目或证明这一点的方法?
出于什么原因,你不建议在摘要中提及它?
使用MiniZinc的有效理由是什么?
发布于 2020-04-28 23:56:57
要证明使用MiniZinc是正确的,最重要的是澄清MiniZinc的功能。运筹学界有时非常固步自封,通常看两件事:
然而,MiniZinc应该被看作是这个过程中的一个早期步骤。它允许用户编写问题的高级模型,该模型被编译成求解者可以理解的规范(在MILP求解器的情况下,这将是一组线性方程组)。因此,在OR世界中,它比库(如跳和PyOpt )要好于像Gurobi或CPlex这样的求解者。然而,与这些库不同的是,MiniZinc语言是在更高的层次上编写的,并且打算是解决技术不可知论的,这意味着,除了MILP解决程序之外,您还可以尝试CP、LCG、SMT和SAT解决程序。
关于为什么使用MiniZinc而不是JuMP或PyOpt的一个很好的论点是,MiniZinc通常可以在基于高层模型结构的编码中应用优化。已经发表了多篇关于自动线性化的问题的论文,这些问题在求解器上提供了很好的/新颖的性能。论文约束规划模型的改进线性化甚至表明,MiniZinc有时比该领域的专家创建更有效的线性模型。
最后,应该注意的是,MiniZinc实际上使用了您的顾问所提到的求解器。Gurobi和CPlex可能是线性化良好的问题的最佳MiniZinc求解者。尽管如此,如果您正在使用MiniZinc的一些其他解决程序,那么您可能仍在使用一种最先进的解决方法: Gecode是目前速度最快的约束编程解决程序之一;Gecode在MiniZinc挑战中多次击败它的所有竞争对手,是一种新颖的惰性子句生成求解器;还有更多来自不同解决程序技术的求解器可以与MiniZinc一起使用。
因此,直截了当地回答问题:
您如何比较MiniZinc与其他最新一代的MILP解决方案,如CPLEX或Gurobi在性能方面?
我们不把MiniZinc和Gurobi或CPlex作比较,因为MiniZinc不是一个解决者。然而,MiniZinc将为新的求解者创建模型,如Gurobi和CPlex。
由于MiniZinc不是最著名的MILP求解者之一,所以您应该避免在摘要中提到它的名称。(出于什么原因,你不建议在摘要中提到它?)
如果MiniZinc为您的应用程序做出了很大贡献,那么我认为提到它是公平的;但是,最好将它与使用过的解决程序结合起来。如果您在论文中描述了MiniZinc的过程或它为您所做的工作,它会有所帮助。
使用MiniZinc的有效理由是什么?
MiniZinc是一个很好的工具,可以创建一个人类可读的问题模型,该模型被转换成一个高效的线求解器的规范。
https://stackoverflow.com/questions/61481869
复制相似问题