我一直在研究一个组合优化问题,它可以建模为整数线性规划。我将其作为一个c++项目在VisualStudio2017和CPLEX1271中实现。由于有大量的约束,所以我实现了延迟约束回调和用户剪裁回调。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
是什么意思。它是由用户裁剪回调和惰性约束回调添加的约束数量,还是仅由用户裁剪回调添加的约束数?
发布于 2020-06-23 14:44:51
日志中报告的“已应用的用户削减”项提供了用户裁剪回调和延迟约束回调所添加的约束数。用户裁剪和延迟约束之间的区别仅在分离阶段进行。一旦削减增加到问题,他们就不再有区别了。
发布于 2020-06-29 17:13:06
谢谢你的回答!我还想知道怎样才能分别得到这两种切割的数字。
你好。正如我所说的,一旦将削减添加到问题中,用户削减和延迟约束就没有区别了。因此,如果要区分用户削减数和延迟约束数,则在从相应的回调中将它们添加到问题中时,必须自己计算它们。但是,请注意,在某些情况下,从回调中添加的削减数可能大于日志中报告的“应用的削减”数。首先,并非用户试图添加的所有用户剪切/延迟约束都必须添加到问题中(例如,如果用户试图添加问题中已经存在的重复削减或削减,则不会添加这些限制)。其次,如果用户指定可以清除用户裁剪和/或延迟约束,则可能会将其中一些限制添加到问题中,然后再删除。换句话说,“应用的削减”指的是在优化结束时问题中存在的削减,而不是在优化过程中添加到问题中的削减总数。
https://stackoverflow.com/questions/62533474
复制相似问题