2013-05-23 7 views
0

Я сделал обратный вызов пользователя, который добавляет некоторые сокращения к модели, над которой я работаю. Это прекрасно работает. Я хочу добавить эти сокращения, только в верхние узлы дерева поиска. Проблема в том, что я не могу понять, как получить глубину текущего узла. Я выполнил обратный вызов узла, который при каждом вызове увеличивает целочисленную переменную. Это означает, что я могу просто ничего не делать в обратном вызове cut, когда это целое число превышает некоторое число. Но тогда я не сейчас, если 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(), который принимает в качестве аргумента идентификатор узла. Но как получить этот идентификатор, я просто не могу понять.Получение глубины узла текущего узла

ответ

-1

Использования вызываемых библиотек:

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

К сожалению, я не знаю много о концертной технологии.

0

Я пытался использовать то же самое в C++.

Я пытался работать с функцией getDepth(), которая принимает в качестве аргумента идентификатор узла. Но я не мог понять, как получить идентификатор узла.

Это не ясно из документации, но: Когда обратный вызов узла вызывается, следующий узел для обработки является узел с индексом 0.

Затем, чтобы узнать глубину текущего узла, вам нужно использовать индекс 0 в качестве идентификатора.

Смежные вопросы