是否可以在不转换模型的情况下使用 CPLEX 引擎解决 CP 公式化问题?

Is it possible to solve a CP formulated problem with the CPLEX-Engine without transforming the model?

我已经制定了一个灵活的作业车间问题作为 CP 模型,就像 CPLEX Optimization Studio 中建议的那样。问题是 运行ning 并创建了正确的时间表。所以我的问题是,是否有可能在不将其转换为 MIP 的情况下使用 CPLEX 引擎解决此问题。这样我就可以比较两个引擎的结果。所以一般来说,如果可以 运行 CP 公式化模型上的 CPLEX 引擎,或者我是否必须为此创建一个单独的 MIP?

如果您使用了 CP Optimizer 特定的构造(例如 interval 变量),那么 CPLEX 将无法理解您的模型。

只要你使用基本约束和整数决策变量,就可以。

例如,在颜色示例 https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.ide.help/examples/html/opl/color/color.mod.html 中,您可以删除 using CP;,然后删除 运行 CPLEX。

对于调度示例,CPO 和 CPLEX 中的模型会有所不同,但您仍然可以通过 warmstart 混合这两种公式。

是的,这是可能的。在 OPL 中,这很容易尝试。只需添加或删除一行

using CP;

在您开始时 .mod 使用 CP 优化器或 CPLEX。

但是,这两个引擎中的每一个都有它支持和不支持的模型结构。例如,CP 优化器不支持连续变量,而 CPLEX 不支持 alldiff 约束、区间变量等。如果您遇到 "cannot extract" 异常或类似异常,则您的模型使用仅受以下之一支持的建模构造引擎。

此外,即使您没有得到异常,您的比较也可能仍然存在偏差:求解器引擎的性能不仅取决于模型类型和数据,还取决于实际模型 制定。对于大量问题,可以通过对 CP 有利但对 CPLEX 不利的方式来表述它们,反之亦然。因此,如果两个引擎中的一个被证明速度较慢,您还必须考虑您的配方是否适合该特定引擎。

综上所述,总是值得一试,看看会发生什么。