【问题标题】:Is it possible to solve a CP formulated problem with the CPLEX-Engine without transforming the model?是否可以在不转换模型的情况下使用 CPLEX-Engine 解决 CP 公式化问题?
【发布时间】:2019-10-01 04:23:05
【问题描述】:

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

【问题讨论】:

    标签: cplex constraint-programming opl cp-optimizer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        using CP;
        

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

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

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

        说了这么多,总是值得一试,看看会发生什么。

        【讨论】:

          猜你喜欢
          • 2020-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-11
          • 1970-01-01
          • 2020-08-17
          相关资源
          最近更新 更多