使用Gurobi向模型添加约束时出现问题

时间:2015-09-11 23:09:43

标签: c++ stl constraints mathematical-optimization gurobi

我有一张地图m;

我可以运行代码行,例如

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

但是,当我想从此贴图向模型添加约束时,它总是会失败:

  

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

我获得以下错误代码:

错误代码= 20001 不在模型中

感谢您对该问题的解释以及我如何解决它?

1 个答案:

答案 0 :(得分:2)

使用gurobi api,您需要在创建变量的时间和添加涉及该变量的约束的时间之间调用GRBModel.update()。可以将变量添加到表达式中,就像在地图上使用+ =运算符一样,因此您不会在那里获得异常。

您不应该过度使用更新方法,因为它很昂贵。在更新之前在地图中构建表达式,就像你正在做的那样,是一种常见的习语。