是否可以使用CPLEX-Engine解决CP制定的问题而无需转换模型?

时间:2019-05-14 07:47:37

标签: cplex constraint-programming opl cp-optimizer

我已经制定了一个灵活的车间问题作为CP模型,就像CPLEX Optimization Studio中建议的那样。该问题正在运行,并创建正确的计划。因此,我的问题是是否还有可能让CPLEX-Engine解决此问题而不将其转换为MIP。这样我就可以比较两个引擎的结果。因此,总的来说,是否有可能在CP制定的模型上运行CPLEX-Engine,或者是否必须为此创建单独的MIP?

3 个答案:

答案 0 :(得分:4)

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

using CP;

.mod的开头使用CP优化器或CPLEX。

但是,两个引擎中的每一个都有其支持和不支持的modelong构造。例如,CP优化器不支持连续变量,而CPLEX不支持alldiff约束,区间变量等。如果遇到“无法提取”异常或类似情况,则您的模型将使用仅受以下情况之一支持的建模构造:引擎。

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

所有这些,总是值得一试,看看会发生什么。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

例如,在颜色示例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中的模型将有所不同,但是您仍然可以通过热启动来混合这两种公式

致谢