获取当前节点的节点深度

时间:2013-05-23 11:18:16

标签: c++ cplex

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我正在尝试使用函数getDepth(),它将参数作为节点标识符。 但我无法弄清楚如何获取节点标识符。

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

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

答案 2 :(得分:-1)

使用可调用库:

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

对不起,我对音乐会技术了解不多。