Ограничение равенства игнорируется в модели MIP - PullRequest
0 голосов
/ 23 января 2019

У меня есть модель 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);

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

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

...