Проблема при добавлении ограничения к модели с Gurobi

У меня есть карта м;

и я могу запустить строки кода, такие как

m[constraint_name] += x_a; or
m[constraint_name] -= x_a;

Однако, когда я хочу добавить ограничение из этой карты в модель, оно всегда терпит неудачу:

model.addConstr (m [cons_name] == 1, cons_name);

Я получаю следующий код ошибки:

Код ошибки = 20001
Не в модели

Спасибо за ваше объяснение проблемы и как я могу ее решить?

0

Решение

Для API gurobi вам нужно вызывать GRBModel.update () между временем создания переменной и временем добавления ограничения, связанного с этой переменной. Можно добавить переменные в выражения, как вы делаете с помощью оператора + = для значений ваших карт, так что вы не получите исключений там.

Вы не должны злоупотреблять методом обновления, так как это дорого. Создание выражений в картах перед обновлением, как вы делаете, является обычной идиомой.

2

Другие решения


По вопросам рекламы [email protected]