Я знаю, что в гуроби я могу начать с исходного решения. т.е. после решения в LP, используяВыполняет ли gurobi минимальные изменения (минимальное возмущение), начиная с частичного решения?
m.optimize()
для модели м, я могу изменить некоторые ограничения и использовать либо
m.reset()
m.optimize()
найти новое решение для LP с нуля или просто позвонить
m.optimize()
, чтобы найти новое решение из исходного решения.
Вопрос в том, что, когда gurobi начинается с исходного решения, он делает минимальные изменения (переменные), необходимые для получения нового решения?
Я думаю, что это минимальная проблема с возмущением. Если gurobi не делает этого по умолчанию, есть ли способ сообщить gurobi о минимальных изменениях?
ДАЛЬНЕЙШАЯ КОММЕНТАРИИ: Я понимаю, что теплый старт может быть быстрее, но изменения переменных будут минимальными. Например, целевая функция
maximize(i1+i2+i3+i4)
и начальный набор ограничений такова, что только
i1,i2 can be set as 1 and i3,i4 as 0.
Теперь ограничения меняются и новое решение (все еще только две переменные могут быть установлены как 1) может быть либо
i1, i3 as 1 (or) i3, i4 as 1.
Может ли оптимизатор gurobi в конечном итоге выбрать решение с минимальным изменением i1, i3 как 1?
Кроме того, если другое решение было
i1,i2 as 1
будет gurobi выбрать то, что, как это решение точно так же, как и существующие?
Спасибо. Я понимаю, что теплый старт может быть быстрее, но изменения в переменных будут минимальными. Например, целевой функцией является «максимизировать (i1 + i2 + i3 + i4)», а начальный набор ограничений таков, что только «i1, i2» можно установить как 1 и «i3, i4» как 0. Теперь изменения ограничений и новое решение (все еще только 2 переменные могут быть установлены как 1) могут быть либо i1, i3, либо 1 (или) 'i3, i4', как 1. Может ли оптимизатор gurobi в конечном итоге выбрать решение с минимальным изменением' i1, i3' как 1? Также, если другое решение было 'i1, i2', как 1, gurobi выбирает это, поскольку это решение точно такое же, как и существующее? – brokendreams
Это будет зависеть от того, как построена модель.Если вы просто меняете коэффициенты в матрице, вы автоматически начнете теплый старт. Если вы добавляете новые ограничения, вы можете или не получить теплый старт. Если вы этого не сделаете, вы всегда можете указать атрибут 'Start' для переменных. –
Но действительно ли теплый старт обеспечивает минимальное возмущение? Даже если я предполагаю, что теплое начало происходит точно, есть ли все равно, чтобы сообщить решателю, что я хочу, чтобы новое решение было как можно ближе к первоначальному решению? Или теплое начало вообще создает новое решение как можно ближе к существующему решению? – brokendreams