Ограничение равенства игнорируется в модели MIP

У меня есть модель MIP ( Gurobi), которая содержит следующее ограничение:

model.addConstr(rawOutputVar == rawInputVar * edge->getMultiplicator());

rawOutputVar а также rawInputVar обе непрерывные переменные. edge->getMultiplicator() возвращает маленький дубль.

После запуска модели я увидел, что ограничение было "проигнорировано". Значение rawInputVar был установлен на 0, в то время как rawOutputVar было огромное количество, с edge->getMultiplicator() являющийся 0.0000346, Таким образом, уравнение стало:

100000000 == 0 * 0.0000346

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

model.addConstr(rawOutputVar <= rawInputVar * edge->getMultiplicator());
model.addConstr(rawInputVar * edge->getMultiplicator() <= rawOutputVar);

что в основном то же самое. Теперь это работает правильно.

Мне интересно, почему моя первая попытка не сработала правильно. Я делаю что-то в корне неправильно?

0 ответов

Другие вопросы по тегам