我做了一个用户切割回调,可以在我正在处理的模型上添加一些切割。这个工作非常好。我想只在搜索树的顶部节点上添加这些切割。问题是,我不知道如何检索当前节点的深度。我做了一个节点回调,每次调用时都会增加一个整数变量。这意味着,当这个整数超过某个数字时,我可以在cut callback中什么都不做。但是我现在就不这样做了,如果cplex有fx.只在左边分支上创建了节点,也就是说没有对右边分支上的节点进行切割,或者反之亦然。在文档中寻找节点回调的方法。http:/pic.dhe.ibm.cominfocentercosinfocv12r4index.jsp?opic=%2Filog.odms.cplex.help%2Frefpythoncplex%2Fhtml%2Fcplex.callbacks.NodeCallback-class.html。 我看到有一个getDepth()方法,它以一个节点标识符作为参数。但如何获得这个标识符,我根本搞不清楚。
CPLEX 12.10.0.0版本中,有如下方法
getCurrentNodeDepth()
你可以在你的内部调用它 ILOUSERCUTCALLBACK
方法,并将当前的节点深度作为一个 long
值。
我在C++中也尝试着做同样的事情,我试图使用函数getDepth(),它的参数是一个节点标识符。
我试图使用函数getDepth(),它的参数是一个节点标识符,但我不知道如何获得节点标识符。
从文档中看不清楚,但是:当调用节点回调时,下一个要处理的节点是索引0的节点。
那么,要知道当前节点的深度,就需要用索引0作为标识符。
使用可调用库。
CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_DEPTH, &depth);
抱歉,我对音乐会技术不是很了解。