1

我做了一个用户剪切回调,为我正在处理的模型添加了一些剪切。这工作得很好。我想将这些剪切添加到搜索树的顶部节点。问题是,我无法弄清楚如何检索当前节点的深度。我做了一个节点回调,每次调用它时都会增加一个整数变量。这意味着当这个整数超过某个数字时,我不能在 cut 回调中做任何事情。但是,如果 cplex 有 fx,我现在没有。仅在左分支上创建节点,这意味着不向右分支上的节点添加任何剪切,反之亦然。
查看节点回调的文档
http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r4/index.jsp?opic=%2Filog.odms.cplex.help%2Frefpythoncplex%2Fhtml%2Fcplex.callbacks.NodeCallback-类.html
我看到有一个 getDepth() 方法,它将节点标识符作为参数。但是如何获得这个标识符,我根本想不通。

4

3 回答 3

2

CPLEX 版本 12.10.0.0 有方法

getCurrentNodeDepth()

您可以在您的ILOUSERCUTCALLBACK方法中调用它,它会将当前节点深度作为一个long值。

您可以在此处查看更多详细信息: https ://www.ibm.com/support/knowledgecenter/SSSA5P_12.10.0/ilog.odms.cplex.help/refdotnetcplex/html/M_ILOG_CPLEX_Cplex_MIPCallback_GetCurrentNodeDepth.htm

于 2020-05-25T21:33:03.197 回答
0

我在 C++ 中尝试了同样的事情。

我试图使用函数 getDepth(),它将节点标识符作为参数。但我不知道如何获取节点标识符。

从文档中并不清楚,但是:当调用节点回调时,下一个要处理的节点是索引 0 处的节点。

然后,要知道当前节点的深度,需要使用索引 0 作为标识符。

于 2014-08-13T09:43:43.393 回答
-1

使用可调用库:

CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_DEPTH, &depth);

抱歉,我对演唱会技术了解不多。

于 2013-11-17T16:22:12.097 回答