CP 优化器与其他约束规划求解器相比如何/.



In 最近使用 CP 优化器(CPLEX 约束规划求解器(解决了几个调度项目,并能够用它获得一些非常好的结果。然而,与Cplex相比,CP优化器对我来说仍然是一个大黑匣子。通常可以用不同的方式表述问题,微小的更改可能会对性能产生巨大差异。在我看来,缺乏文档和示例,这使得使用它变得困难。也没有所有约束编程求解器共享的标准化约束集,甚至没有导出格式可以让我解决CP优化器和替代求解器(例如Xpress Kalis或Gecode等开源替代方案(所述的问题。

虽然我知道商业 MIP 求解器比开源替代方案强大得多,但我还没有看到任何比较不同约束规划求解器的研究。

我想知道其他约束规划求解器与 CP 优化器相比如何。我对调度应用程序特别感兴趣,CP Optimizer 具有一组特殊的变量(间隔和序列(和许多有用的约束(优先级、无重叠等(。我不介意使用整数变量而不是区间变量并以更复杂的方式制定约束,但我想知道是否有任何开源约束编程求解器可以与商业求解器竞争。

实际上有多个问题。作为CP优化器开发人员,我尝试回答一些与CP直接相关的问题 优化。

在CP优化器之前,有ILOG求解器和ILOG调度器。调度问题由 调度程序,由几个整数变量组成的活动。调度程序是成功的,但越来越难 紧跟客户需求。工业问题通常包含某种替代配方,替代 资源、可选目标等。很难使用活动对它们进行建模(例如,未执行的活动的长度是多少? 解决这些模型也很难。

因此,ILOG 调度程序已停产。相反,我们创建了具有可选间隔变量的 CP 优化器。 我们为调度问题设计了全新的语言,我们认为,这些语言可以描述调度问题。 以更简单的方式。它为求解器提供了更有效地解决问题所需的信息。如果你愿意 了解更多 我推荐以下论文:

  • Laborie, Rogerie:Reasoning with Condition Time-intervals
  • Laborie, Rogerie, Shaw, Vilim:Reasoning with Conditional Time-intervals, Part II: a Algebraical Model for Resources

因此,与其他求解器相比,调度语言大多不同。如果你来自不同的 求解器,您必须从头开始编写(调度(模型。但我们相信这是有回报的,因为替代方案是 "类似调度程序"的模型。这就是没有通用导出格式的原因。

关于CP优化器的效率。是的,没有直接比较。恐怕你必须尝试 你自己。并编写两次模型,因为语言不同。如果我可以给出一个理由,为什么值得尝试,那么CP Optimizer能够解决几十年来开放的数量调度问题:

  • Vilim, Laborie, Shaw:Failure-direction search for Constraint-based Schedule(英语:Failure-direction Search for Constraint-Based Schedule(

最后,关于模型的微小变化会对性能产生巨大影响的事实。是的,它是 通常。而且我不认为只有CP优化器会受到影响。它有助于在某种程度上理解 求解器有效。有时我也无法提前猜测哪种方法是最好的。所以我的建议是 实验。通常较短的型号表现更好。幸运的是,尝试不同版本的模型并不是 那么贵。

最新更新