1

Я не могу найти способ эффективного использования запуска MIP в API-интерфейсе CPLEX.Использование MIP запускается в ILOG CPLEX Optimizer java API

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

Так что для этого, после первого раза, я решаю проблему, я сохраняю все переменные в массиве IloNumVar и удваиваю, чтобы передать свои другие объекты cplex с помощью cplex.addMIPStart.

Проблема заключается в том, что не ускоряет все, что он делает это медленнее и дает мне это сообщение:

Предупреждение: Нет найденное решение с 1 MIP начинается.

Так что, возможно, я не должен давать MIP начинать все переменные, но как узнать, какие переменные дать?

Я также попытался изменить начальную MIP усилий, но это, кажется, не имеет никакого значения ...

Почему это не делает вычисления быстрее? Есть ли лучший способ решить многие проблемы, которые имеют только несколько отличий?

+0

Вы должны отметить, что вы перекрестно разместили это на OR-exchange. – raoulcousins

ответ

2

Это сообщение обычно означает, что вы либо не указали значения для достаточного количества переменных решения в своей модели, либо значения, которые вы дали cplex, нецелесообразны. Вы можете проверить выполнимость, используя IloNumVar.setBounds для переменных, а затем попытаться решить эту модель. Если это окажется неосуществимым, тогда вы можете написать файл iis. CPLEX пытается, но не может использовать ваш mipstart, поэтому он работает медленнее. Хороший запуск MIP может значительно улучшить время решения, особенно если cplex с трудом находит решение с первой степенью приемлемости, а ваш запуск MIP имеет целевое значение функции, близкое к оптимальному, но для многих случаев оно не делает разница. Теплые стартовые MIP намного сложнее, чем теплые стартовые пластинки.