我做了一个用户剪切回调,为我正在处理的模型添加了一些剪切。这完全没问题。我想将这些剪切添加到搜索树的顶部节点。问题是,我无法弄清楚如何检索当前节点的深度。我做了一个节点回调,每次调用它时都会增加一个整数变量。这意味着当整数超过某个数字时,我只能在剪切回调中做任何事情。但是现在我不知道,如果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()方法,它将节点标识符作为参数。但是如何获得这个标识符,我根本想不出来。
答案 0 :(得分:1)
CPLEX 12.10.0.0版具有方法
getCurrentNodeDepth()
您可以在ILOUSERCUTCALLBACK
方法中调用它,它将以long
值的形式给出当前节点深度。
答案 1 :(得分:0)
我在C ++中尝试过同样的事情。
我正在尝试使用函数getDepth(),它将参数作为节点标识符。 但我无法弄清楚如何获取节点标识符。
从文档中不清楚,但是: 调用节点回调时,要处理的下一个节点是索引0处的节点。
然后,要知道当前节点的深度,您需要使用索引0作为标识符。
答案 2 :(得分:-1)
使用可调用库:
CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_DEPTH, &depth);
对不起,我对音乐会技术了解不多。