Как реализовать макроузел обратного вызова в C ++ против CPLEX - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь реализовать обратный вызов макроса для получения объективного значения на каждом узле.Я написал этот код:

ILONODECALLBACK0(mycali) {
for (int i = 0; i < getNnodes(); i++) {
cout << "getObjValue"<< getObjValue(i) << endl;
}
}

Когда я запускаю код, он просто показывает объективное значение в корневом узле, в то время как в файле журнала CPLEX есть 10 узлов.Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 10 июля 2019

Насколько я могу судить, код выглядит правильно.Однако обратите внимание, что обратный вызов узла может быть неправильным обратным вызовом для использования здесь.Обратный вызов узла вызывается при выборе следующего обрабатываемого узла.Печать цели всех открытых узлов в данный момент времени может быть не тем, что вы хотите.

Вы можете использовать обратный вызов решения и захватить значение релаксации узла из этого обратного вызова.

В случае, если выЕсли вам нужна дополнительная помощь, вам придется обновить свой вопрос, указав полный вывод журнала, включая вывод вашего обратного вызова.

...