获取当前节点的节点深度

问题描述 投票:0回答:3

我做了一个用户切割回调,可以在我正在处理的模型上添加一些切割。这个工作非常好。我想只在搜索树的顶部节点上添加这些切割。问题是,我不知道如何检索当前节点的深度。我做了一个节点回调,每次调用时都会增加一个整数变量。这意味着,当这个整数超过某个数字时,我可以在cut callback中什么都不做。但是我现在就不这样做了,如果cplex有fx.只在左边分支上创建了节点,也就是说没有对右边分支上的节点进行切割,或者反之亦然。在文档中寻找节点回调的方法。http:/pic.dhe.ibm.cominfocentercosinfocv12r4index.jsp?opic=%2Filog.odms.cplex.help%2Frefpythoncplex%2Fhtml%2Fcplex.callbacks.NodeCallback-class.html。 我看到有一个getDepth()方法,它以一个节点标识符作为参数。但如何获得这个标识符,我根本搞不清楚。

c++ cplex
3个回答
1
投票

CPLEX 12.10.0.0版本中,有如下方法

getCurrentNodeDepth()

你可以在你的内部调用它 ILOUSERCUTCALLBACK 方法,并将当前的节点深度作为一个 long 值。

你可以在这里查看更多细节。https:/www.ibm.comsupportknowledgecenterSSSA5P_12.10.0ilog.odms.cplex.helprefdotnetcplexhtmlM_ILOG_CPLEX_Cplex_MIPCallback_GetCurrentNodeDepth.htm。


0
投票

我在C++中也尝试着做同样的事情,我试图使用函数getDepth(),它的参数是一个节点标识符。

我试图使用函数getDepth(),它的参数是一个节点标识符,但我不知道如何获得节点标识符。

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

那么,要知道当前节点的深度,就需要用索引0作为标识符。


-1
投票

使用可调用库。

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

抱歉,我对音乐会技术不是很了解。

© www.soinside.com 2019 - 2024. All rights reserved.