我有一个使用 Benders 分解分解的优化问题。我实现了一个 Cplex 通用回调(在 JAVA 中),其中包括 Lazy、User 和 Heuristic 回调。现在,我需要添加一些切割管理策略,例如,限制树中每个节点的切割数量。问题是我不知道如何访问当前候选人的节点 ID。如果有人可以提供帮助,我将不胜感激。
问问题
250 次
1 回答
1
此答案适用于刚刚发布的 12.10 版:
在松弛上下文中,您可以使用CPXXcallbackgetinfolong()
withCPXCALLBACKINFO_NODEUID
和询问节点的 UID 和深度CPXCALLBACKINFO_NODEDEPTH
。
但是,在候选上下文中,您目前无法获得此信息。原因是上下文可能不会在节点的上下文中被调用(例如,当候选者来自启发式时)。我们已经在进行一项改进,以使这些信息至少在节点上下文中调用回调的情况下可用。另一方面,除非 CPLEX 疯狂地找到候选者,否则可能没有必要限制分离的惰性约束的数量。
于 2019-12-13T10:07:47.643 回答