Получение глубины текущего узла

Я сделал обратный вызов user cut, который добавляет некоторые сокращения к модели, над которой я работаю. Это прекрасно работает. Я хочу добавить эти разрезы только в верхние узлы дерева поиска. Проблема в том, что я не могу понять, как получить глубину текущего узла. Я сделал обратный вызов узла, который увеличивает целочисленную переменную каждый раз, когда она вызывается. Это означает, что я ничего не могу сделать в обратном вызове cut, когда это целое число превышает какое-то число. Но тогда я этого не делаю, если у cplex есть fx. создаются только узлы на левых ветвях, а это означает, что к узлам на правых ветвях и наоборот не добавляются разрезы.
Ищем в документации обратные вызовы узлов
http://pic.dhe.ibm
Я вижу, что там - это метод getDepth (), который принимает в качестве аргумента идентификатор узла. Но как получить этот идентификатор, я просто не могу понять.


person Sune    schedule 23.05.2013    source источник


Ответы (3)


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_GetCurrent.htodeDD.nofollownoreferrer

person Tiago de Oliveira Januario    schedule 25.05.2020

Я пробовал то же самое на C ++.

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

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

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

person Frops    schedule 13.08.2014

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

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

Извините, я не очень разбираюсь в концертной технике.

person Gunes    schedule 17.11.2013