Динамически меняющиеся параметры SCIP - PullRequest
0 голосов
/ 04 июля 2019

Я хочу динамически изменять параметры, связанные с генерацией срезов и первичной эвристикой, в зависимости от состояния процесса решения. Это не дает мне ошибки, когда я устанавливаю параметры, такие как maxrounds после ветвления на определенном узле, но я не могу подтвердить, внесло ли оно какие-либо изменения в бэкэнд-процессы.

Может ли кто-нибудь подтвердить, что при изменении параметров на полпути в процессе решения эти параметры будут установлены на новое значение для дальнейшего решения проблемы?

1 Ответ

3 голосов
/ 04 июля 2019

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

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

Если определенный параметр «безопасно» изменить во время процесса решения, это зависит от конкретной реализации параметра. Всегда должно быть безопасно настраивать, например, separating/maxrounds или другие параметры ядра, независимо от конкретного плагина. Однако отдельные плагины могут работать или не работать должным образом, если они включены динамически во время поиска, поскольку они пропускают этап инициализации.

Вы можете взглянуть на src/scip/event_solvingphases.c, который настраивает пару параметров, изменяя настройки выделения. Эти параметры, безусловно, можно корректировать во время поиска.

...