我已经制定了一个灵活的车间问题作为CP模型,就像CPLEX Optimization Studio中建议的那样。该问题正在运行,并创建正确的计划。因此,我的问题是是否还有可能让CPLEX-Engine解决此问题而不将其转换为MIP。这样我就可以比较两个引擎的结果。因此,总的来说,是否有可能在CP制定的模型上运行CPLEX-Engine,或者是否必须为此创建单独的MIP?
答案 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中的模型将有所不同,但是您仍然可以通过热启动来混合这两种公式
致谢