Я реализую алгоритм ветвления и цены в c с использованием SCIP.Ветвительный механизм в B & P с использованием SCIP
Вопрос: Чтобы вызвать механизм ветвления, я использую основной механизм BRANCHEXECLP. Как SCIP знает, когда нужно разветвляться? Когда текущее релаксационное решение имеет нецелые решения, верно? Мне не нужно сообщать SCIP о вызове механизма ветвления для этого случая, правильно?
Я прошу, потому что (по большей части) мой алгоритм B & P работает хорошо. Но в какой-то момент он достигает узла, соответствующего двойному связанному решению. После решения проблемы ценообразования (и никакие столбцы не привлекательны для ввода главной проблемы) релаксационное решение на этом узле содержит нецелые решения, но механизм ветвления не вызывается. Запуск просто завершается. Любая идея о том, что здесь происходит?
Спасибо, Роб Карри
Спасибо за помощь. Да, в текущем решении LP есть дробные переменные. Да, двойная привязка в текущем узле равна глобальной двойной границе. Нет, я не ставил своей целью иметь только целые значения. Целочисленные переменные не входят в цель. Эвристика может быть проблемой. Есть ли простой способ отключить эти эвристики? –
И первичная граница не равна двойной границе? Эвристика не должна быть проблемой, они просто попытаются построить приемлемое решение. Но вы можете отключить их с помощью «set heur emph off» в интерактивной оболочке (это отключит все эвристики). Но я бы не рекомендовал этого. – Gerald
Вы говорите, что бег просто уходит, что вы имеете в виду? Это требует оптимальности? Это прерывается? Если он прерывается, вы запустили режим отладки (скомпилируйте с OPT = dbg), и есть ли какие-либо утверждения? – Gerald