GLPK Timeout (tm_lim) возвращает лучшее найденное решение?

Мои эксперименты (используя непосредственно библиотеку C) предполагают, что использование параметра tm_lim для ограничения времени, затрачиваемого GLPK на задачу смешанного целочисленного программирования, приводит к указателю задачи, который содержит лучшее найденное решение. Однако я не могу найти подтверждения этому в документации. Всегда ли вычисление с истекшим временем ожидания оставляет лучшее обнаруженное решение в буфере задач?

Спасибо!


person John Clements    schedule 12.02.2019    source источник


Ответы (1)


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

glpk повторяет цикл, обновляя решение на месте до тех пор, пока не будет удовлетворен один из четырех критериев завершения (оптимальное решение, неограниченное решение, ограничение по времени, ограничение по итерации). Как только это происходит, glpk прекращает обновление решения и возвращает значение, указывающее на выполнение критерия.

Вы можете проверить это в функции ssx_phase_II в src/glpssx02.c в https://ftp.gnu.org/gnu/glpk/glpk-4.35.tar.gz. Посмотрите ссылки на tm_lim.

Последним обоснованием является документация для параметра командной строки --tmlim:

--tmlim nnn limit solution time to nnn seconds (--tmlim 0 allows
            obtaining solution at initial point)

Передача --tmlim 0 вернет исходное решение.

person justinpc    schedule 12.02.2019