【问题标题】:The meaning of "user cuts applied" reported by CPLEX?CPLEX 报告的“应用用户削减”的含义?
【发布时间】:2020-06-23 11:16:41
【问题描述】:

我一直在研究一个可以建模为整数线性规划的组合优化问题。我在 Visual Studio 2017 和 CPLEX1271 中将它实现为一个 c++ 项目。由于有成倍增加的约束,我实现了惰性约束回调和用户剪切回调。 CPLEX 报告的结果如下所示:

Clique cuts applied:  1
Cover cuts applied:  4
Mixed integer rounding cuts applied:  1
Zero-half cuts applied:  13
Lift and project cuts applied:  2
Gomory fractional cuts applied:  3
User cuts applied:  2116
Solution status         =       Optimal
Gap     =       0
Elapsed time    =       14.235
Objectvie value         =       16675
Number of nodes         =       57
Number of cuts  =       2116

我想知道条目User cuts applied 是什么意思。是用户剪切回调和惰性约束回调添加的约束数量,还是仅用户剪切回调?

【问题讨论】:

    标签: terminology cplex


    【解决方案1】:

    日志中报告的条目“已应用用户削减”给出了添加的约束数量 用户削减回调和惰性约束回调。 用户切割和惰性约束之间的区别仅在分离阶段完成。一旦削减被添加到问题中,它们就不再被区分了。

    【讨论】:

    • 感谢您的回答!我也想知道如何分别获得这两个切口的数量。
    【解决方案2】:

    感谢您的回答! 我也想知道如何分别获得这两个cut的数量

    你好。 正如我所说,一旦将削减添加到问题中,用户削减和惰性约束之间就没有区别了。因此,如果要区分用户削减的数量和惰性约束的数量,则必须在将它们从相应的回调中添加到问题时自己计算。 但是请注意,在某些情况下,您从回调中添加的削减数量可能大于日志中报告的“应用削减”数量。首先,并非用户尝试添加的所有用户剪切/惰性约束都必须添加到问题中(例如,如果用户尝试添加重复剪切或问题中已经存在的剪切,则不会添加它们)。其次,如果用户指定可以清除用户削减和/或惰性约束,则其中一些可能会添加到问题中,但随后会被删除。 换句话说,“应用的切割”的数量是指优化结束时问题中存在的切割,而不是优化期间添加到问题中的切割总数。

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多