Гуроби возобновляет оптимизацию после модификации модели

Насколько мне известно, Gurobi возобновляет оптимизацию с того места, где он оставался после вызова Model.Terminate(), а затем повторного вызова Model.Optimize(). Итак, я могу завершить работу и получить лучшее решение, а затем продолжить. Теперь я хочу сделать то же самое, но поскольку я хочу использовать части неоптимального решения, мне нужно установить некоторые переменные на фиксированные значения, прежде чем я снова вызову Model.Optimize() и оптимизирую в остальном модель. Как это сделать, чтобы гуроби не начинался заново?


person MrWoffle    schedule 07.08.2017    source источник


Ответы (1)


Во-первых, это похоже на то, что вы описываете программу со смешанными целыми числами (MIP); модификация модели отличается от непрерывной оптимизации (линейное программирование, квадратичное программирование).

Когда вы изменяете модель MIP, информация о дереве перестает быть полезной. Вместо этого вы должны разрешить непрерывную (LP) релаксацию и создать новое дерево ветвей и разрезов. Однако предыдущее решение все же можно использовать в качестве начала MIP, что может сократить время решения для второй модели.

Однако ваш метод может быть избыточным с RINS алгоритм, который является автоматической функцией Gurobi MIP. . Вы можете управлять поведением RINS с помощью параметров RINS, SubMIPNodes и Heuristics.

person Greg Glockner    schedule 07.08.2017
comment
да, вы правы, я использую MIP и хочу поближе познакомиться с RINS (я новичок в LP / IP / MIP) - спасибо за ваш ответ - person MrWoffle; 08.08.2017