我有一张 map m;
并且我能够运行诸如
之类的代码行m[constraint_name] += x_a; or
m[constraint_name] -= x_a;
但是,当我想从这个映射向模型添加约束时,它总是失败:
model.addConstr(m[cons_name] == 1, cons_name);
我得到以下错误代码:
错误代码 = 20001 不在模型中
感谢您对问题的解释以及我该如何解决?
最佳答案
使用 gurobi api,您需要在创建变量和添加涉及该变量的约束之间调用 GRBModel.update()。可以像在映射值上使用 += 运算符一样将变量添加到表达式中,这样就不会出现异常。
您不应该过度使用更新方法,因为它很昂贵。在更新之前在 map 中构建表达式(就像您正在做的那样)是一种常见的习惯用法。
关于c++ - 使用 Gurobi 向模型添加约束时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533363/